/* Enable IOAPIC early just for system timer */
 void __init pre_init_apic_IRQ0(void)
 {
-       struct irq_cfg *cfg;
+       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
-       /* Make sure the irq descriptor is set up */
-       cfg = alloc_irq_and_cfg_at(0, 0);
-
        setup_local_APIC();
 
-       add_pin_to_irq_node(cfg, 0, 0, 0);
+       io_apic_setup_irq_pin(0, 0, &attr);
        set_irq_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq, "edge");
-
-       setup_ioapic_irq(0, 0, 0, cfg, 0, 0);
 }