| @@ -140,14 +140,14 @@ static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node, · 139 unmodified lines |
| 140 | desc_smp_init(desc, node, affinity); | 140 | desc_smp_init(desc, node, affinity); |
| 141 | } | 141 | } |
| 142 | | 142 | |
| 143 | static unsigned int nr_irqs = NR_IRQS; | 143 | unsigned int total_nr_irqs __read_mostly = NR_IRQS; |
| 144 | | 144 | |
| 145 | /** | 145 | /** |
| 146 | * irq_get_nr_irqs() - Number of interrupts supported by the system. | 146 | * irq_get_nr_irqs() - Number of interrupts supported by the system. |
| 147 | */ | 147 | */ |
| 148 | unsigned int irq_get_nr_irqs(void) | 148 | unsigned int irq_get_nr_irqs(void) |
| 149 | { | 149 | { |
| 150 | return nr_irqs; | 150 | return total_nr_irqs; |
| 151 | } | 151 | } |
| 152 | EXPORT_SYMBOL_GPL(irq_get_nr_irqs); | 152 | EXPORT_SYMBOL_GPL(irq_get_nr_irqs); |
| 153 | | 153 | |
| @@ -159,7 +159,7 @@ EXPORT_SYMBOL_GPL(irq_get_nr_irqs); · 5 unmodified lines |
| 159 | */ | 159 | */ |
| 160 | unsigned int irq_set_nr_irqs(unsigned int nr) | 160 | unsigned int irq_set_nr_irqs(unsigned int nr) |
| 161 | { | 161 | { |
| 162 | nr_irqs = nr; | 162 | total_nr_irqs = nr; |
| 163 | | 163 | |
| 164 | return nr; | 164 | return nr; |
| 165 | } | 165 | } |
| @@ -187,9 +187,9 @@ static unsigned int irq_find_at_or_after(unsigned int offset) · 21 unmodified lines |
| 187 | struct irq_desc *desc; | 187 | struct irq_desc *desc; |
| 188 | | 188 | |
| 189 | guard(rcu)(); | 189 | guard(rcu)(); |
| 190 | desc = mt_find(&sparse_irqs, &index, nr_irqs); | 190 | desc = mt_find(&sparse_irqs, &index, total_nr_irqs); |
| 191 | | 191 | |
| 192 | return desc ? irq_desc_get_irq(desc) : nr_irqs; | 192 | return desc ? irq_desc_get_irq(desc) : total_nr_irqs; |
| 193 | } | 193 | } |
| 194 | | 194 | |
| 195 | static void irq_insert_desc(unsigned int irq, struct irq_desc *desc) | 195 | static void irq_insert_desc(unsigned int irq, struct irq_desc *desc) |
| @@ -543,7 +543,7 @@ static bool irq_expand_nr_irqs(unsigned int nr) · 347 unmodified lines |
| 543 | { | 543 | { |
| 544 | if (nr > MAX_SPARSE_IRQS) | 544 | if (nr > MAX_SPARSE_IRQS) |
| 545 | return false; | 545 | return false; |
| 546 | nr_irqs = nr; | 546 | total_nr_irqs = nr; |
| 547 | return true; | 547 | return true; |
| 548 | } | 548 | } |
| 549 | | 549 | |
| @@ -557,16 +557,16 @@ int __init early_irq_init(void) · 7 unmodified lines |
| 557 | /* Let arch update nr_irqs and return the nr of preallocated irqs */ | 557 | /* Let arch update nr_irqs and return the nr of preallocated irqs */ |
| 558 | initcnt = arch_probe_nr_irqs(); | 558 | initcnt = arch_probe_nr_irqs(); |
| 559 | printk(KERN_INFO "NR_IRQS: %d, nr_irqs: %d, preallocated irqs: %d\n", | 559 | printk(KERN_INFO "NR_IRQS: %d, nr_irqs: %d, preallocated irqs: %d\n", |
| 560 | NR_IRQS, nr_irqs, initcnt); | 560 | NR_IRQS, total_nr_irqs, initcnt); |
| 561 | | 561 | |
| 562 | if (WARN_ON(nr_irqs > MAX_SPARSE_IRQS)) | 562 | if (WARN_ON(total_nr_irqs > MAX_SPARSE_IRQS)) |
| 563 | nr_irqs = MAX_SPARSE_IRQS; | 563 | total_nr_irqs = MAX_SPARSE_IRQS; |
| 564 | | 564 | |
| 565 | if (WARN_ON(initcnt > MAX_SPARSE_IRQS)) | 565 | if (WARN_ON(initcnt > MAX_SPARSE_IRQS)) |
| 566 | initcnt = MAX_SPARSE_IRQS; | 566 | initcnt = MAX_SPARSE_IRQS; |
| 567 | | 567 | |
| 568 | if (initcnt > nr_irqs) | 568 | if (initcnt > total_nr_irqs) |
| 569 | nr_irqs = initcnt; | 569 | total_nr_irqs = initcnt; |
| 570 | | 570 | |
| 571 | for (i = 0; i < initcnt; i++) { | 571 | for (i = 0; i < initcnt; i++) { |
| 572 | desc = alloc_desc(i, node, 0, NULL, NULL); | 572 | desc = alloc_desc(i, node, 0, NULL, NULL); |
| @@ -862,7 +862,7 @@ void irq_free_descs(unsigned int from, unsigned int cnt) · 289 unmodified lines |
| 862 | { | 862 | { |
| 863 | int i; | 863 | int i; |
| 864 | | 864 | |
| 865 | if (from >= nr_irqs || (from + cnt) > nr_irqs) | 865 | if (from >= total_nr_irqs || (from + cnt) > total_nr_irqs) |
| 866 | return; | 866 | return; |
| 867 | | 867 | |
| 868 | guard(mutex)(&sparse_irq_lock); | 868 | guard(mutex)(&sparse_irq_lock); |
| @@ -911,7 +911,7 @@ int __ref __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int no · 42 unmodified lines |
| 911 | if (irq >=0 && start != irq) | 911 | if (irq >=0 && start != irq) |
| 912 | return -EEXIST; | 912 | return -EEXIST; |
| 913 | | 913 | |
| 914 | if (start + cnt > nr_irqs) { | 914 | if (start + cnt > total_nr_irqs) { |
| 915 | if (!irq_expand_nr_irqs(start + cnt)) | 915 | if (!irq_expand_nr_irqs(start + cnt)) |
| 916 | return -ENOMEM; | 916 | return -ENOMEM; |
| 917 | } | 917 | } |
| @@ -923,7 +923,7 @@ EXPORT_SYMBOL_GPL(__irq_alloc_descs); · 5 unmodified lines |
| 923 | * irq_get_next_irq - get next allocated irq number | 923 | * irq_get_next_irq - get next allocated irq number |
| 924 | * @offset: where to start the search | 924 | * @offset: where to start the search |
| 925 | * | 925 | * |
| 926 | * Returns next irq number after offset or nr_irqs if none is found. | 926 | * Returns next irq number after offset or total_nr_irqs if none is found. |
| 927 | */ | 927 | */ |
| 928 | unsigned int irq_get_next_irq(unsigned int offset) | 928 | unsigned int irq_get_next_irq(unsigned int offset) |
| 929 | { | 929 | { |