BUG_ON(irq >= NR_IRQS); 
static int pin_2_irq(int idx, int apic, int pin){	int irq, i;	int bus = mp_irqs[idx].mpc_srcbus;	/*	 * Debugging check, we are in big trouble if this message pops up!	 */	if (mp_irqs[idx].mpc_dstirq != pin)		printk(KERN_ERR "broken BIOS or MPTABLE parser, ayiee!!\n");	switch (mp_bus_id_to_type[bus])	{		case MP_BUS_ISA: /* ISA pin */		case MP_BUS_EISA:		case MP_BUS_MCA:		{			irq = mp_irqs[idx].mpc_srcbusirq;			break;		}		case MP_BUS_PCI: /* PCI pin */		{			/*			 * PCI IRQs are mapped in order			 */			i = irq = 0;			while (i < apic)				irq += nr_ioapic_registers[i++];			irq += pin;			break;		}		default:		{			printk(KERN_ERR "unknown bus type %d.\n",bus); 			irq = 0;			break;		}	}	/*	 * PCI IRQ command line redirection. Yes, limits are hardcoded.	 */	if ((pin >= 16) && (pin <= 23)) {		if (pirq_entries[pin-16] != -1) {			if (!pirq_entries[pin-16]) {				apic_printk(APIC_VERBOSE, "disabling PIRQ%d\n", pin-16);			} else {				irq = pirq_entries[pin-16];				apic_printk(APIC_VERBOSE, "using PIRQ%d -> IRQ %d\n",						pin-16, irq);			}		}	}	return irq;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6004e1b7effcbb385a6b7c790e4b8008682cf679/io_apic.c/clean/arch/x86_64/kernel/io_apic.c