···7070 */7171int sis_apic_bug = -1;72727373+int first_free_entry = NR_IRQS;7374/*7475 * # of IRQ routing registers7576 */···10099 */101100#define MAX_PLUS_SHARED_IRQS NR_IRQS102101#define PIN_MAP_SIZE (MAX_PLUS_SHARED_IRQS + NR_IRQS)102102+103103+int pin_map_size = PIN_MAP_SIZE;103104104105/*105106 * This is performance-critical, we want to do it O(1)···216213 */217214static void add_pin_to_irq(unsigned int irq, int apic, int pin)218215{219219- static int first_free_entry = NR_IRQS;220216 struct irq_pin_list *entry = irq_2_pin + irq;221217222218 while (entry->next)···224222 if (entry->pin != -1) {225223 entry->next = first_free_entry;226224 entry = irq_2_pin + entry->next;227227- if (++first_free_entry >= PIN_MAP_SIZE)225225+ if (++first_free_entry >= pin_map_size)228226 panic("io_apic.c: whoops");229227 }230228 entry->apic = apic;···459457 int i, j;460458461459 for_each_online_cpu(i) {462462- for (j = 0; j < NR_IRQS; j++) {460460+ for (j = 0; j < nr_irqs; j++) {463461 if (!irq_desc[j].action)464462 continue;465463 /* Is it a significant load ? */···494492 if (!cpu_online(i))495493 continue;496494 package_index = CPU_TO_PACKAGEINDEX(i);497497- for (j = 0; j < NR_IRQS; j++) {495495+ for (j = 0; j < nr_irqs; j++) {498496 unsigned long value_now, delta;499497 /* Is this an active IRQ or balancing disabled ? */500498 if (!irq_desc[j].action || irq_balancing_disabled(j))···589587 */590588 move_this_load = 0;591589 selected_irq = -1;592592- for (j = 0; j < NR_IRQS; j++) {590590+ for (j = 0; j < nr_irqs; j++) {593591 /* Is this an active IRQ? */594592 if (!irq_desc[j].action)595593 continue;···666664 long time_remaining = balanced_irq_interval;667665668666 /* push everything to CPU 0 to give us a starting point. */669669- for (i = 0 ; i < NR_IRQS ; i++) {667667+ for (i = 0 ; i < nr_irqs ; i++) {670668 irq_desc[i].pending_mask = cpumask_of_cpu(0);671669 set_pending_irq(i, cpumask_of_cpu(0));672670 }···714712 physical_balance = 1;715713716714 for_each_online_cpu(i) {717717- irq_cpu_data[i].irq_delta = kzalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL);718718- irq_cpu_data[i].last_irq = kzalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL);715715+ irq_cpu_data[i].irq_delta = kzalloc(sizeof(unsigned long) * nr_irqs, GFP_KERNEL);716716+ irq_cpu_data[i].last_irq = kzalloc(sizeof(unsigned long) * nr_irqs, GFP_KERNEL);719717 if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) {720718 printk(KERN_ERR "balanced_irq_init: out of memory");721719 goto failed;···14431441 }14441442 }14451443 printk(KERN_DEBUG "IRQ to pin mappings:\n");14461446- for (i = 0; i < NR_IRQS; i++) {14441444+ for (i = 0; i < nr_irqs; i++) {14471445 struct irq_pin_list *entry = irq_2_pin + i;14481446 if (entry->pin < 0)14491447 continue;···16231621 int i, apic;16241622 unsigned long flags;1625162316261626- for (i = 0; i < PIN_MAP_SIZE; i++) {16241624+ for (i = 0; i < pin_map_size; i++) {16271625 irq_2_pin[i].pin = -1;16281626 irq_2_pin[i].next = 0;16291627 }···20072005 * Also, we've got to be careful not to trash gate20082006 * 0x80, because int 0x80 is hm, kind of importantish. ;)20092007 */20102010- for (irq = 0; irq < NR_IRQS ; irq++) {20082008+ for (irq = 0; irq < nr_irqs ; irq++) {20112009 if (IO_APIC_IRQ(irq) && !irq_vector[irq]) {20122010 /*20132011 * Hmm.. We don't have an entry for this,···2451244924522450 irq = -ENOSPC;24532451 spin_lock_irqsave(&vector_lock, flags);24542454- for (new = (NR_IRQS - 1); new >= 0; new--) {24522452+ for (new = (nr_irqs - 1); new >= 0; new--) {24552453 if (platform_legacy_irq(new))24562454 continue;24572455 if (irq_vector[new] != 0)
+17-16
arch/x86/kernel/io_apic_64.c
···132132#define MAX_PLUS_SHARED_IRQS NR_IRQS133133#define PIN_MAP_SIZE (MAX_PLUS_SHARED_IRQS + NR_IRQS)134134135135+int pin_map_size = PIN_MAP_SIZE;135136/*136137 * This is performance-critical, we want to do it O(1)137138 *···225224 int pin; \226225 struct irq_pin_list *entry = irq_2_pin + irq; \227226 \228228- BUG_ON(irq >= NR_IRQS); \227227+ BUG_ON(irq >= nr_irqs); \229228 for (;;) { \230229 unsigned int reg; \231230 pin = entry->pin; \···302301 int apic, pin;303302 struct irq_pin_list *entry = irq_2_pin + irq;304303305305- BUG_ON(irq >= NR_IRQS);304304+ BUG_ON(irq >= nr_irqs);306305 for (;;) {307306 unsigned int reg;308307 apic = entry->apic;···359358 * shared ISA-space IRQs, so we have to support them. We are super360359 * fast in the common case, and fast for shared ISA-space IRQs.361360 */361361+int first_free_entry = NR_IRQS;362362static void add_pin_to_irq(unsigned int irq, int apic, int pin)363363{364364- static int first_free_entry = NR_IRQS;365364 struct irq_pin_list *entry = irq_2_pin + irq;366365367367- BUG_ON(irq >= NR_IRQS);366366+ BUG_ON(irq >= nr_irqs);368367 while (entry->next)369368 entry = irq_2_pin + entry->next;370369371370 if (entry->pin != -1) {372371 entry->next = first_free_entry;373372 entry = irq_2_pin + entry->next;374374- if (++first_free_entry >= PIN_MAP_SIZE)373373+ if (++first_free_entry >= pin_map_size)375374 panic("io_apic.c: ran out of irq_2_pin entries!");376375 }377376 entry->apic = apic;···635634 best_guess = irq;636635 }637636 }638638- BUG_ON(best_guess >= NR_IRQS);637637+ BUG_ON(best_guess >= nr_irqs);639638 return best_guess;640639}641640···767766 irq += nr_ioapic_registers[i++];768767 irq += pin;769768 }770770- BUG_ON(irq >= NR_IRQS);769769+ BUG_ON(irq >= nr_irqs);771770 return irq;772771}773772···802801 int cpu;803802 struct irq_cfg *cfg;804803805805- BUG_ON((unsigned)irq >= NR_IRQS);804804+ BUG_ON((unsigned)irq >= nr_irqs);806805 cfg = &irq_cfg[irq];807806808807 /* Only try and allocate irqs on cpus that are present */···876875 cpumask_t mask;877876 int cpu, vector;878877879879- BUG_ON((unsigned)irq >= NR_IRQS);878878+ BUG_ON((unsigned)irq >= nr_irqs);880879 cfg = &irq_cfg[irq];881880 BUG_ON(!cfg->vector);882881···896895 int irq, vector;897896898897 /* Mark the inuse vectors */899899- for (irq = 0; irq < NR_IRQS; ++irq) {898898+ for (irq = 0; irq < nr_irqs; ++irq) {900899 if (!cpu_isset(cpu, irq_cfg[irq].domain))901900 continue;902901 vector = irq_cfg[irq].vector;···11941193 }11951194 }11961195 printk(KERN_DEBUG "IRQ to pin mappings:\n");11971197- for (i = 0; i < NR_IRQS; i++) {11961196+ for (i = 0; i < nr_irqs; i++) {11981197 struct irq_pin_list *entry = irq_2_pin + i;11991198 if (entry->pin < 0)12001199 continue;···13671366 int i, apic;13681367 unsigned long flags;1369136813701370- for (i = 0; i < PIN_MAP_SIZE; i++) {13691369+ for (i = 0; i < pin_map_size; i++) {13711370 irq_2_pin[i].pin = -1;13721371 irq_2_pin[i].next = 0;13731372 }···16591658{16601659 int irq;1661166016621662- for (irq = 0; irq < NR_IRQS; irq++) {16611661+ for (irq = 0; irq < nr_irqs; irq++) {16631662 struct irq_desc *desc = irq_desc + irq;16641663 if (desc->status & IRQ_MOVE_PENDING) {16651664 unsigned long flags;···17081707 struct irq_desc *desc;17091708 struct irq_cfg *cfg;17101709 irq = __get_cpu_var(vector_irq)[vector];17111711- if (irq >= NR_IRQS)17101710+ if (irq >= nr_irqs)17121711 continue;1713171217141713 desc = irq_desc + irq;···18661865 * Also, we've got to be careful not to trash gate18671866 * 0x80, because int 0x80 is hm, kind of importantish. ;)18681867 */18691869- for (irq = 0; irq < NR_IRQS ; irq++) {18681868+ for (irq = 0; irq < nr_irqs ; irq++) {18701869 if (IO_APIC_IRQ(irq) && !irq_cfg[irq].vector) {18711870 /*18721871 * Hmm.. We don't have an entry for this,···2280227922812280 irq = -ENOSPC;22822281 spin_lock_irqsave(&vector_lock, flags);22832283- for (new = (NR_IRQS - 1); new >= 0; new--) {22822282+ for (new = (nr_irqs - 1); new >= 0; new--) {22842283 if (platform_legacy_irq(new))22852284 continue;22862285 if (irq_cfg[new].vector != 0)
+4-4
arch/x86/kernel/irq_32.c
···226226 int overflow, irq = ~regs->orig_ax;227227 struct irq_desc *desc = irq_desc + irq;228228229229- if (unlikely((unsigned)irq >= NR_IRQS)) {229229+ if (unlikely((unsigned)irq >= nr_irqs)) {230230 printk(KERN_EMERG "%s: cannot handle IRQ %d\n",231231 __func__, irq);232232 BUG();···271271 seq_putc(p, '\n');272272 }273273274274- if (i < NR_IRQS) {274274+ if (i < nr_irqs) {275275 unsigned any_count = 0;276276277277 spin_lock_irqsave(&irq_desc[i].lock, flags);···303303 seq_putc(p, '\n');304304skip:305305 spin_unlock_irqrestore(&irq_desc[i].lock, flags);306306- } else if (i == NR_IRQS) {306306+ } else if (i == nr_irqs) {307307 seq_printf(p, "NMI: ");308308 for_each_online_cpu(j)309309 seq_printf(p, "%10u ", nmi_count(j));···396396 unsigned int irq;397397 static int warned;398398399399- for (irq = 0; irq < NR_IRQS; irq++) {399399+ for (irq = 0; irq < nr_irqs; irq++) {400400 cpumask_t mask;401401 if (irq == 2)402402 continue;
+4-4
arch/x86/kernel/irq_64.c
···8181 seq_putc(p, '\n');8282 }83838484- if (i < NR_IRQS) {8484+ if (i < nr_irqs) {8585 unsigned any_count = 0;86868787 spin_lock_irqsave(&irq_desc[i].lock, flags);···112112 seq_putc(p, '\n');113113skip:114114 spin_unlock_irqrestore(&irq_desc[i].lock, flags);115115- } else if (i == NR_IRQS) {115115+ } else if (i == nr_irqs) {116116 seq_printf(p, "NMI: ");117117 for_each_online_cpu(j)118118 seq_printf(p, "%10u ", cpu_pda(j)->__nmi_count);···201201 stack_overflow_check(regs);202202#endif203203204204- if (likely(irq < NR_IRQS))204204+ if (likely(irq < nr_irqs))205205 generic_handle_irq(irq);206206 else {207207 if (!disable_apic)···224224 unsigned int irq;225225 static int warned;226226227227- for (irq = 0; irq < NR_IRQS; irq++) {227227+ for (irq = 0; irq < nr_irqs; irq++) {228228 cpumask_t mask;229229 int break_affinity = 0;230230 int set_affinity = 1;
+1-1
arch/x86/kernel/irqinit_32.c
···100100 */101101 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {102102 int vector = FIRST_EXTERNAL_VECTOR + i;103103- if (i >= NR_IRQS)103103+ if (i >= nr_irqs)104104 break;105105 /* SYSCALL_VECTOR was reserved in trap_init. */106106 if (!test_bit(vector, used_vectors))
+1-1
arch/x86/kernel/irqinit_64.c
···142142 init_bsp_APIC();143143 init_8259A(0);144144145145- for (i = 0; i < NR_IRQS; i++) {145145+ for (i = 0; i < nr_irqs; i++) {146146 irq_desc[i].status = IRQ_DISABLED;147147 irq_desc[i].action = NULL;148148 irq_desc[i].depth = 1;
+3
include/asm-x86/irq.h
···1010#include <asm/apicdef.h>1111#include <asm/irq_vectors.h>12121313+extern int pin_map_size;1414+extern int first_free_entry;1515+1316static inline int irq_canonicalize(int irq)1417{1518 return ((irq == 2) ? 9 : irq);