set_native_irq_info(irq, TARGET_CPUS); 
static void __init setup_IO_APIC_irqs(void){	struct IO_APIC_route_entry entry;	int apic, pin, idx, irq, first_notcon = 1, vector;	unsigned long flags;	apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");	for (apic = 0; apic < nr_ioapics; apic++) {	for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {		/*		 * add it to the IO-APIC irq-routing table:		 */		memset(&entry,0,sizeof(entry));		entry.delivery_mode = INT_DELIVERY_MODE;		entry.dest_mode = INT_DEST_MODE;		entry.mask = 0;				/* enable IRQ */		entry.dest.logical.logical_dest = 					cpu_mask_to_apicid(TARGET_CPUS);		idx = find_irq_entry(apic,pin,mp_INT);		if (idx == -1) {			if (first_notcon) {				apic_printk(APIC_VERBOSE, KERN_DEBUG						" IO-APIC (apicid-pin) %d-%d",						mp_ioapics[apic].mpc_apicid,						pin);				first_notcon = 0;			} else				apic_printk(APIC_VERBOSE, ", %d-%d",					mp_ioapics[apic].mpc_apicid, pin);			continue;		}		entry.trigger = irq_trigger(idx);		entry.polarity = irq_polarity(idx);		if (irq_trigger(idx)) {			entry.trigger = 1;			entry.mask = 1;		}		irq = pin_2_irq(idx, apic, pin);		/*		 * skip adding the timer int on secondary nodes, which causes		 * a small but painful rift in the time-space continuum		 */		if (multi_timer_check(apic, irq))			continue;		else			add_pin_to_irq(irq, apic, pin);		if (!apic && !IO_APIC_IRQ(irq))			continue;		if (IO_APIC_IRQ(irq)) {			vector = assign_irq_vector(irq);			entry.vector = vector;			ioapic_register_intr(irq, vector, IOAPIC_AUTO);					if (!apic && (irq < 16))				disable_8259A_irq(irq);		}		spin_lock_irqsave(&ioapic_lock, flags);		io_apic_write(apic, 0x11+2*pin, *(((int *)&entry)+1));		io_apic_write(apic, 0x10+2*pin, *(((int *)&entry)+0));		spin_unlock_irqrestore(&ioapic_lock, flags);	}	}	if (!first_notcon)		apic_printk(APIC_VERBOSE, " not connected.\n");}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/54d5d42404e7705cf3804593189e963350d470e5/io_apic.c/clean/arch/i386/kernel/io_apic.c