Ask help about pre_init_apic_IRQ0()

Jiang Liu
2014-09-11T08:45:32Z

Hi Thomas,

When converting IOAPIC to hierarchy irqdomain, I ran into trouble when
dealing with pre_init_apic_IRQ0(). Currently pre_init_apic_IRQ0() is
only used by intel-mid platform and is called before initializing of
IOAPIC irqdomains. That really causes headache when converting to
hierarchy irqdomain. So could we delay
io_apic_setup_irq_pin(0, 0, &attr);
irq_set_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq,
"edge");
to the point of "check_timer()"?

I have no MID hardware at handle so can't experiment with it. Could
you please refer someone for help?

/* Enable IOAPIC early just for system timer */
void __init pre_init_apic_IRQ0(void)
{
struct io_apic_irq_attr attr = { 0, 0, 0, 0 };

printk(KERN_INFO "Early APIC setup for system timer0\n");
#ifndef CONFIG_SMP
physid_set_mask_of_physid(boot_cpu_physical_apicid,
&phys_cpu_present_map);
#endif
setup_local_APIC();

io_apic_setup_irq_pin(0, 0, &attr);
irq_set_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq,
"edge");
}

Regards!
Gerry