BUG_ON(best_guess >= NR_IRQS); 
int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin){	int apic, i, best_guess = -1;	apic_printk(APIC_DEBUG, "querying PCI -> IRQ mapping bus:%d, slot:%d, pin:%d.\n",		bus, slot, pin);	if (mp_bus_id_to_pci_bus[bus] == -1) {		apic_printk(APIC_VERBOSE, "PCI BIOS passed nonexistent PCI bus %d!\n", bus);		return -1;	}	for (i = 0; i < mp_irq_entries; i++) {		int lbus = mp_irqs[i].mpc_srcbus;		for (apic = 0; apic < nr_ioapics; apic++)			if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic ||			    mp_irqs[i].mpc_dstapic == MP_APIC_ALL)				break;		if ((mp_bus_id_to_type[lbus] == MP_BUS_PCI) &&		    !mp_irqs[i].mpc_irqtype &&		    (bus == lbus) &&		    (slot == ((mp_irqs[i].mpc_srcbusirq >> 2) & 0x1f))) {			int irq = pin_2_irq(i,apic,mp_irqs[i].mpc_dstirq);			if (!(apic || IO_APIC_IRQ(irq)))				continue;			if (pin == (mp_irqs[i].mpc_srcbusirq & 3))				return irq;			/*			 * Use the first all-but-pin matching entry as a			 * best-guess fuzzy result for broken mptables.			 */			if (best_guess < 0)				best_guess = irq;		}	}	return best_guess;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6004e1b7effcbb385a6b7c790e4b8008682cf679/io_apic.c/clean/arch/x86_64/kernel/io_apic.c