aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/io_apic_32.c26
-rw-r--r--arch/x86/kernel/io_apic_64.c33
-rw-r--r--arch/x86/kernel/irq_32.c8
-rw-r--r--arch/x86/kernel/irq_64.c8
-rw-r--r--arch/x86/kernel/irqinit_32.c2
-rw-r--r--arch/x86/kernel/irqinit_64.c2
-rw-r--r--include/asm-x86/irq.h3
7 files changed, 44 insertions, 38 deletions
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c
index e710289f673e..d382990244f0 100644
--- a/arch/x86/kernel/io_apic_32.c
+++ b/arch/x86/kernel/io_apic_32.c
@@ -70,6 +70,7 @@ int timer_through_8259 __initdata;
70 */ 70 */
71int sis_apic_bug = -1; 71int sis_apic_bug = -1;
72 72
73int first_free_entry = NR_IRQS;
73/* 74/*
74 * # of IRQ routing registers 75 * # of IRQ routing registers
75 */ 76 */
@@ -100,6 +101,8 @@ static int disable_timer_pin_1 __initdata;
100#define MAX_PLUS_SHARED_IRQS NR_IRQS 101#define MAX_PLUS_SHARED_IRQS NR_IRQS
101#define PIN_MAP_SIZE (MAX_PLUS_SHARED_IRQS + NR_IRQS) 102#define PIN_MAP_SIZE (MAX_PLUS_SHARED_IRQS + NR_IRQS)
102 103
104int pin_map_size = PIN_MAP_SIZE;
105
103/* 106/*
104 * This is performance-critical, we want to do it O(1) 107 * This is performance-critical, we want to do it O(1)
105 * 108 *
@@ -213,7 +216,6 @@ static void ioapic_mask_entry(int apic, int pin)
213 */ 216 */
214static void add_pin_to_irq(unsigned int irq, int apic, int pin) 217static void add_pin_to_irq(unsigned int irq, int apic, int pin)
215{ 218{
216 static int first_free_entry = NR_IRQS;
217 struct irq_pin_list *entry = irq_2_pin + irq; 219 struct irq_pin_list *entry = irq_2_pin + irq;
218 220
219 while (entry->next) 221 while (entry->next)
@@ -222,7 +224,7 @@ static void add_pin_to_irq(unsigned int irq, int apic, int pin)
222 if (entry->pin != -1) { 224 if (entry->pin != -1) {
223 entry->next = first_free_entry; 225 entry->next = first_free_entry;
224 entry = irq_2_pin + entry->next; 226 entry = irq_2_pin + entry->next;
225 if (++first_free_entry >= PIN_MAP_SIZE) 227 if (++first_free_entry >= pin_map_size)
226 panic("io_apic.c: whoops"); 228 panic("io_apic.c: whoops");
227 } 229 }
228 entry->apic = apic; 230 entry->apic = apic;
@@ -457,7 +459,7 @@ static inline void rotate_irqs_among_cpus(unsigned long useful_load_threshold)
457 int i, j; 459 int i, j;
458 460
459 for_each_online_cpu(i) { 461 for_each_online_cpu(i) {
460 for (j = 0; j < NR_IRQS; j++) { 462 for (j = 0; j < nr_irqs; j++) {
461 if (!irq_desc[j].action) 463 if (!irq_desc[j].action)
462 continue; 464 continue;
463 /* Is it a significant load ? */ 465 /* Is it a significant load ? */
@@ -492,7 +494,7 @@ static void do_irq_balance(void)
492 if (!cpu_online(i)) 494 if (!cpu_online(i))
493 continue; 495 continue;
494 package_index = CPU_TO_PACKAGEINDEX(i); 496 package_index = CPU_TO_PACKAGEINDEX(i);
495 for (j = 0; j < NR_IRQS; j++) { 497 for (j = 0; j < nr_irqs; j++) {
496 unsigned long value_now, delta; 498 unsigned long value_now, delta;
497 /* Is this an active IRQ or balancing disabled ? */ 499 /* Is this an active IRQ or balancing disabled ? */
498 if (!irq_desc[j].action || irq_balancing_disabled(j)) 500 if (!irq_desc[j].action || irq_balancing_disabled(j))
@@ -587,7 +589,7 @@ tryanotherirq:
587 */ 589 */
588 move_this_load = 0; 590 move_this_load = 0;
589 selected_irq = -1; 591 selected_irq = -1;
590 for (j = 0; j < NR_IRQS; j++) { 592 for (j = 0; j < nr_irqs; j++) {
591 /* Is this an active IRQ? */ 593 /* Is this an active IRQ? */
592 if (!irq_desc[j].action) 594 if (!irq_desc[j].action)
593 continue; 595 continue;
@@ -664,7 +666,7 @@ static int balanced_irq(void *unused)
664 long time_remaining = balanced_irq_interval; 666 long time_remaining = balanced_irq_interval;
665 667
666 /* push everything to CPU 0 to give us a starting point. */ 668 /* push everything to CPU 0 to give us a starting point. */
667 for (i = 0 ; i < NR_IRQS ; i++) { 669 for (i = 0 ; i < nr_irqs ; i++) {
668 irq_desc[i].pending_mask = cpumask_of_cpu(0); 670 irq_desc[i].pending_mask = cpumask_of_cpu(0);
669 set_pending_irq(i, cpumask_of_cpu(0)); 671 set_pending_irq(i, cpumask_of_cpu(0));
670 } 672 }
@@ -712,8 +714,8 @@ static int __init balanced_irq_init(void)
712 physical_balance = 1; 714 physical_balance = 1;
713 715
714 for_each_online_cpu(i) { 716 for_each_online_cpu(i) {
715 irq_cpu_data[i].irq_delta = kzalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); 717 irq_cpu_data[i].irq_delta = kzalloc(sizeof(unsigned long) * nr_irqs, GFP_KERNEL);
716 irq_cpu_data[i].last_irq = kzalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); 718 irq_cpu_data[i].last_irq = kzalloc(sizeof(unsigned long) * nr_irqs, GFP_KERNEL);
717 if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) { 719 if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) {
718 printk(KERN_ERR "balanced_irq_init: out of memory"); 720 printk(KERN_ERR "balanced_irq_init: out of memory");
719 goto failed; 721 goto failed;
@@ -1441,7 +1443,7 @@ __apicdebuginit(void) print_IO_APIC(void)
1441 } 1443 }
1442 } 1444 }
1443 printk(KERN_DEBUG "IRQ to pin mappings:\n"); 1445 printk(KERN_DEBUG "IRQ to pin mappings:\n");
1444 for (i = 0; i < NR_IRQS; i++) { 1446 for (i = 0; i < nr_irqs; i++) {
1445 struct irq_pin_list *entry = irq_2_pin + i; 1447 struct irq_pin_list *entry = irq_2_pin + i;
1446 if (entry->pin < 0) 1448 if (entry->pin < 0)
1447 continue; 1449 continue;
@@ -1621,7 +1623,7 @@ static void __init enable_IO_APIC(void)
1621 int i, apic; 1623 int i, apic;
1622 unsigned long flags; 1624 unsigned long flags;
1623 1625
1624 for (i = 0; i < PIN_MAP_SIZE; i++) { 1626 for (i = 0; i < pin_map_size; i++) {
1625 irq_2_pin[i].pin = -1; 1627 irq_2_pin[i].pin = -1;
1626 irq_2_pin[i].next = 0; 1628 irq_2_pin[i].next = 0;
1627 } 1629 }
@@ -2005,7 +2007,7 @@ static inline void init_IO_APIC_traps(void)
2005 * Also, we've got to be careful not to trash gate 2007 * Also, we've got to be careful not to trash gate
2006 * 0x80, because int 0x80 is hm, kind of importantish. ;) 2008 * 0x80, because int 0x80 is hm, kind of importantish. ;)
2007 */ 2009 */
2008 for (irq = 0; irq < NR_IRQS ; irq++) { 2010 for (irq = 0; irq < nr_irqs ; irq++) {
2009 if (IO_APIC_IRQ(irq) && !irq_vector[irq]) { 2011 if (IO_APIC_IRQ(irq) && !irq_vector[irq]) {
2010 /* 2012 /*
2011 * Hmm.. We don't have an entry for this, 2013 * Hmm.. We don't have an entry for this,
@@ -2449,7 +2451,7 @@ int create_irq(void)
2449 2451
2450 irq = -ENOSPC; 2452 irq = -ENOSPC;
2451 spin_lock_irqsave(&vector_lock, flags); 2453 spin_lock_irqsave(&vector_lock, flags);
2452 for (new = (NR_IRQS - 1); new >= 0; new--) { 2454 for (new = (nr_irqs - 1); new >= 0; new--) {
2453 if (platform_legacy_irq(new)) 2455 if (platform_legacy_irq(new))
2454 continue; 2456 continue;
2455 if (irq_vector[new] != 0) 2457 if (irq_vector[new] != 0)
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 02063ae042f7..448384c7c1e8 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -132,6 +132,7 @@ DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES);
132#define MAX_PLUS_SHARED_IRQS NR_IRQS 132#define MAX_PLUS_SHARED_IRQS NR_IRQS
133#define PIN_MAP_SIZE (MAX_PLUS_SHARED_IRQS + NR_IRQS) 133#define PIN_MAP_SIZE (MAX_PLUS_SHARED_IRQS + NR_IRQS)
134 134
135int pin_map_size = PIN_MAP_SIZE;
135/* 136/*
136 * This is performance-critical, we want to do it O(1) 137 * This is performance-critical, we want to do it O(1)
137 * 138 *
@@ -224,7 +225,7 @@ static inline void io_apic_sync(unsigned int apic)
224 int pin; \ 225 int pin; \
225 struct irq_pin_list *entry = irq_2_pin + irq; \ 226 struct irq_pin_list *entry = irq_2_pin + irq; \
226 \ 227 \
227 BUG_ON(irq >= NR_IRQS); \ 228 BUG_ON(irq >= nr_irqs); \
228 for (;;) { \ 229 for (;;) { \
229 unsigned int reg; \ 230 unsigned int reg; \
230 pin = entry->pin; \ 231 pin = entry->pin; \
@@ -301,7 +302,7 @@ static void __target_IO_APIC_irq(unsigned int irq, unsigned int dest, u8 vector)
301 int apic, pin; 302 int apic, pin;
302 struct irq_pin_list *entry = irq_2_pin + irq; 303 struct irq_pin_list *entry = irq_2_pin + irq;
303 304
304 BUG_ON(irq >= NR_IRQS); 305 BUG_ON(irq >= nr_irqs);
305 for (;;) { 306 for (;;) {
306 unsigned int reg; 307 unsigned int reg;
307 apic = entry->apic; 308 apic = entry->apic;
@@ -358,19 +359,19 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t mask)
358 * shared ISA-space IRQs, so we have to support them. We are super 359 * shared ISA-space IRQs, so we have to support them. We are super
359 * fast in the common case, and fast for shared ISA-space IRQs. 360 * fast in the common case, and fast for shared ISA-space IRQs.
360 */ 361 */
362int first_free_entry = NR_IRQS;
361static void add_pin_to_irq(unsigned int irq, int apic, int pin) 363static void add_pin_to_irq(unsigned int irq, int apic, int pin)
362{ 364{
363 static int first_free_entry = NR_IRQS;
364 struct irq_pin_list *entry = irq_2_pin + irq; 365 struct irq_pin_list *entry = irq_2_pin + irq;
365 366
366 BUG_ON(irq >= NR_IRQS); 367 BUG_ON(irq >= nr_irqs);
367 while (entry->next) 368 while (entry->next)
368 entry = irq_2_pin + entry->next; 369 entry = irq_2_pin + entry->next;
369 370
370 if (entry->pin != -1) { 371 if (entry->pin != -1) {
371 entry->next = first_free_entry; 372 entry->next = first_free_entry;
372 entry = irq_2_pin + entry->next; 373 entry = irq_2_pin + entry->next;
373 if (++first_free_entry >= PIN_MAP_SIZE) 374 if (++first_free_entry >= pin_map_size)
374 panic("io_apic.c: ran out of irq_2_pin entries!"); 375 panic("io_apic.c: ran out of irq_2_pin entries!");
375 } 376 }
376 entry->apic = apic; 377 entry->apic = apic;
@@ -634,7 +635,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin)
634 best_guess = irq; 635 best_guess = irq;
635 } 636 }
636 } 637 }
637 BUG_ON(best_guess >= NR_IRQS); 638 BUG_ON(best_guess >= nr_irqs);
638 return best_guess; 639 return best_guess;
639} 640}
640 641
@@ -766,7 +767,7 @@ static int pin_2_irq(int idx, int apic, int pin)
766 irq += nr_ioapic_registers[i++]; 767 irq += nr_ioapic_registers[i++];
767 irq += pin; 768 irq += pin;
768 } 769 }
769 BUG_ON(irq >= NR_IRQS); 770 BUG_ON(irq >= nr_irqs);
770 return irq; 771 return irq;
771} 772}
772 773
@@ -801,7 +802,7 @@ static int __assign_irq_vector(int irq, cpumask_t mask)
801 int cpu; 802 int cpu;
802 struct irq_cfg *cfg; 803 struct irq_cfg *cfg;
803 804
804 BUG_ON((unsigned)irq >= NR_IRQS); 805 BUG_ON((unsigned)irq >= nr_irqs);
805 cfg = &irq_cfg[irq]; 806 cfg = &irq_cfg[irq];
806 807
807 /* Only try and allocate irqs on cpus that are present */ 808 /* Only try and allocate irqs on cpus that are present */
@@ -875,7 +876,7 @@ static void __clear_irq_vector(int irq)
875 cpumask_t mask; 876 cpumask_t mask;
876 int cpu, vector; 877 int cpu, vector;
877 878
878 BUG_ON((unsigned)irq >= NR_IRQS); 879 BUG_ON((unsigned)irq >= nr_irqs);
879 cfg = &irq_cfg[irq]; 880 cfg = &irq_cfg[irq];
880 BUG_ON(!cfg->vector); 881 BUG_ON(!cfg->vector);
881 882
@@ -895,7 +896,7 @@ void __setup_vector_irq(int cpu)
895 int irq, vector; 896 int irq, vector;
896 897
897 /* Mark the inuse vectors */ 898 /* Mark the inuse vectors */
898 for (irq = 0; irq < NR_IRQS; ++irq) { 899 for (irq = 0; irq < nr_irqs; ++irq) {
899 if (!cpu_isset(cpu, irq_cfg[irq].domain)) 900 if (!cpu_isset(cpu, irq_cfg[irq].domain))
900 continue; 901 continue;
901 vector = irq_cfg[irq].vector; 902 vector = irq_cfg[irq].vector;
@@ -1193,7 +1194,7 @@ __apicdebuginit(void) print_IO_APIC(void)
1193 } 1194 }
1194 } 1195 }
1195 printk(KERN_DEBUG "IRQ to pin mappings:\n"); 1196 printk(KERN_DEBUG "IRQ to pin mappings:\n");
1196 for (i = 0; i < NR_IRQS; i++) { 1197 for (i = 0; i < nr_irqs; i++) {
1197 struct irq_pin_list *entry = irq_2_pin + i; 1198 struct irq_pin_list *entry = irq_2_pin + i;
1198 if (entry->pin < 0) 1199 if (entry->pin < 0)
1199 continue; 1200 continue;
@@ -1366,7 +1367,7 @@ void __init enable_IO_APIC(void)
1366 int i, apic; 1367 int i, apic;
1367 unsigned long flags; 1368 unsigned long flags;
1368 1369
1369 for (i = 0; i < PIN_MAP_SIZE; i++) { 1370 for (i = 0; i < pin_map_size; i++) {
1370 irq_2_pin[i].pin = -1; 1371 irq_2_pin[i].pin = -1;
1371 irq_2_pin[i].next = 0; 1372 irq_2_pin[i].next = 0;
1372 } 1373 }
@@ -1658,7 +1659,7 @@ static void ir_irq_migration(struct work_struct *work)
1658{ 1659{
1659 int irq; 1660 int irq;
1660 1661
1661 for (irq = 0; irq < NR_IRQS; irq++) { 1662 for (irq = 0; irq < nr_irqs; irq++) {
1662 struct irq_desc *desc = irq_desc + irq; 1663 struct irq_desc *desc = irq_desc + irq;
1663 if (desc->status & IRQ_MOVE_PENDING) { 1664 if (desc->status & IRQ_MOVE_PENDING) {
1664 unsigned long flags; 1665 unsigned long flags;
@@ -1707,7 +1708,7 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void)
1707 struct irq_desc *desc; 1708 struct irq_desc *desc;
1708 struct irq_cfg *cfg; 1709 struct irq_cfg *cfg;
1709 irq = __get_cpu_var(vector_irq)[vector]; 1710 irq = __get_cpu_var(vector_irq)[vector];
1710 if (irq >= NR_IRQS) 1711 if (irq >= nr_irqs)
1711 continue; 1712 continue;
1712 1713
1713 desc = irq_desc + irq; 1714 desc = irq_desc + irq;
@@ -1865,7 +1866,7 @@ static inline void init_IO_APIC_traps(void)
1865 * Also, we've got to be careful not to trash gate 1866 * Also, we've got to be careful not to trash gate
1866 * 0x80, because int 0x80 is hm, kind of importantish. ;) 1867 * 0x80, because int 0x80 is hm, kind of importantish. ;)
1867 */ 1868 */
1868 for (irq = 0; irq < NR_IRQS ; irq++) { 1869 for (irq = 0; irq < nr_irqs ; irq++) {
1869 if (IO_APIC_IRQ(irq) && !irq_cfg[irq].vector) { 1870 if (IO_APIC_IRQ(irq) && !irq_cfg[irq].vector) {
1870 /* 1871 /*
1871 * Hmm.. We don't have an entry for this, 1872 * Hmm.. We don't have an entry for this,
@@ -2279,7 +2280,7 @@ int create_irq(void)
2279 2280
2280 irq = -ENOSPC; 2281 irq = -ENOSPC;
2281 spin_lock_irqsave(&vector_lock, flags); 2282 spin_lock_irqsave(&vector_lock, flags);
2282 for (new = (NR_IRQS - 1); new >= 0; new--) { 2283 for (new = (nr_irqs - 1); new >= 0; new--) {
2283 if (platform_legacy_irq(new)) 2284 if (platform_legacy_irq(new))
2284 continue; 2285 continue;
2285 if (irq_cfg[new].vector != 0) 2286 if (irq_cfg[new].vector != 0)
diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
index b71e02d42f4f..4c7ffb32854c 100644
--- a/arch/x86/kernel/irq_32.c
+++ b/arch/x86/kernel/irq_32.c
@@ -226,7 +226,7 @@ unsigned int do_IRQ(struct pt_regs *regs)
226 int overflow, irq = ~regs->orig_ax; 226 int overflow, irq = ~regs->orig_ax;
227 struct irq_desc *desc = irq_desc + irq; 227 struct irq_desc *desc = irq_desc + irq;
228 228
229 if (unlikely((unsigned)irq >= NR_IRQS)) { 229 if (unlikely((unsigned)irq >= nr_irqs)) {
230 printk(KERN_EMERG "%s: cannot handle IRQ %d\n", 230 printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
231 __func__, irq); 231 __func__, irq);
232 BUG(); 232 BUG();
@@ -271,7 +271,7 @@ int show_interrupts(struct seq_file *p, void *v)
271 seq_putc(p, '\n'); 271 seq_putc(p, '\n');
272 } 272 }
273 273
274 if (i < NR_IRQS) { 274 if (i < nr_irqs) {
275 unsigned any_count = 0; 275 unsigned any_count = 0;
276 276
277 spin_lock_irqsave(&irq_desc[i].lock, flags); 277 spin_lock_irqsave(&irq_desc[i].lock, flags);
@@ -303,7 +303,7 @@ int show_interrupts(struct seq_file *p, void *v)
303 seq_putc(p, '\n'); 303 seq_putc(p, '\n');
304skip: 304skip:
305 spin_unlock_irqrestore(&irq_desc[i].lock, flags); 305 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
306 } else if (i == NR_IRQS) { 306 } else if (i == nr_irqs) {
307 seq_printf(p, "NMI: "); 307 seq_printf(p, "NMI: ");
308 for_each_online_cpu(j) 308 for_each_online_cpu(j)
309 seq_printf(p, "%10u ", nmi_count(j)); 309 seq_printf(p, "%10u ", nmi_count(j));
@@ -396,7 +396,7 @@ void fixup_irqs(cpumask_t map)
396 unsigned int irq; 396 unsigned int irq;
397 static int warned; 397 static int warned;
398 398
399 for (irq = 0; irq < NR_IRQS; irq++) { 399 for (irq = 0; irq < nr_irqs; irq++) {
400 cpumask_t mask; 400 cpumask_t mask;
401 if (irq == 2) 401 if (irq == 2)
402 continue; 402 continue;
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index f065fe9071b9..e1f0839430d2 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -81,7 +81,7 @@ int show_interrupts(struct seq_file *p, void *v)
81 seq_putc(p, '\n'); 81 seq_putc(p, '\n');
82 } 82 }
83 83
84 if (i < NR_IRQS) { 84 if (i < nr_irqs) {
85 unsigned any_count = 0; 85 unsigned any_count = 0;
86 86
87 spin_lock_irqsave(&irq_desc[i].lock, flags); 87 spin_lock_irqsave(&irq_desc[i].lock, flags);
@@ -112,7 +112,7 @@ int show_interrupts(struct seq_file *p, void *v)
112 seq_putc(p, '\n'); 112 seq_putc(p, '\n');
113skip: 113skip:
114 spin_unlock_irqrestore(&irq_desc[i].lock, flags); 114 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
115 } else if (i == NR_IRQS) { 115 } else if (i == nr_irqs) {
116 seq_printf(p, "NMI: "); 116 seq_printf(p, "NMI: ");
117 for_each_online_cpu(j) 117 for_each_online_cpu(j)
118 seq_printf(p, "%10u ", cpu_pda(j)->__nmi_count); 118 seq_printf(p, "%10u ", cpu_pda(j)->__nmi_count);
@@ -201,7 +201,7 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
201 stack_overflow_check(regs); 201 stack_overflow_check(regs);
202#endif 202#endif
203 203
204 if (likely(irq < NR_IRQS)) 204 if (likely(irq < nr_irqs))
205 generic_handle_irq(irq); 205 generic_handle_irq(irq);
206 else { 206 else {
207 if (!disable_apic) 207 if (!disable_apic)
@@ -224,7 +224,7 @@ void fixup_irqs(cpumask_t map)
224 unsigned int irq; 224 unsigned int irq;
225 static int warned; 225 static int warned;
226 226
227 for (irq = 0; irq < NR_IRQS; irq++) { 227 for (irq = 0; irq < nr_irqs; irq++) {
228 cpumask_t mask; 228 cpumask_t mask;
229 int break_affinity = 0; 229 int break_affinity = 0;
230 int set_affinity = 1; 230 int set_affinity = 1;
diff --git a/arch/x86/kernel/irqinit_32.c b/arch/x86/kernel/irqinit_32.c
index 9200a1e2752d..65c1c9507707 100644
--- a/arch/x86/kernel/irqinit_32.c
+++ b/arch/x86/kernel/irqinit_32.c
@@ -100,7 +100,7 @@ void __init native_init_IRQ(void)
100 */ 100 */
101 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) { 101 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
102 int vector = FIRST_EXTERNAL_VECTOR + i; 102 int vector = FIRST_EXTERNAL_VECTOR + i;
103 if (i >= NR_IRQS) 103 if (i >= nr_irqs)
104 break; 104 break;
105 /* SYSCALL_VECTOR was reserved in trap_init. */ 105 /* SYSCALL_VECTOR was reserved in trap_init. */
106 if (!test_bit(vector, used_vectors)) 106 if (!test_bit(vector, used_vectors))
diff --git a/arch/x86/kernel/irqinit_64.c b/arch/x86/kernel/irqinit_64.c
index 5b5be9d43c2a..165c5d9b0d1a 100644
--- a/arch/x86/kernel/irqinit_64.c
+++ b/arch/x86/kernel/irqinit_64.c
@@ -142,7 +142,7 @@ void __init init_ISA_irqs(void)
142 init_bsp_APIC(); 142 init_bsp_APIC();
143 init_8259A(0); 143 init_8259A(0);
144 144
145 for (i = 0; i < NR_IRQS; i++) { 145 for (i = 0; i < nr_irqs; i++) {
146 irq_desc[i].status = IRQ_DISABLED; 146 irq_desc[i].status = IRQ_DISABLED;
147 irq_desc[i].action = NULL; 147 irq_desc[i].action = NULL;
148 irq_desc[i].depth = 1; 148 irq_desc[i].depth = 1;
diff --git a/include/asm-x86/irq.h b/include/asm-x86/irq.h
index 1e5f2909c1db..2a130c44f5de 100644
--- a/include/asm-x86/irq.h
+++ b/include/asm-x86/irq.h
@@ -10,6 +10,9 @@
10#include <asm/apicdef.h> 10#include <asm/apicdef.h>
11#include <asm/irq_vectors.h> 11#include <asm/irq_vectors.h>
12 12
13extern int pin_map_size;
14extern int first_free_entry;
15
13static inline int irq_canonicalize(int irq) 16static inline int irq_canonicalize(int irq)
14{ 17{
15 return ((irq == 2) ? 9 : irq); 18 return ((irq == 2) ? 9 : irq);