diff -ur linux-2.6.35-predag/arch/x86/kernel/apic/io_apic.c linux-2.6.35/arch/x86/kernel/apic/io_apic.c --- linux-2.6.35-predag/arch/x86/kernel/apic/io_apic.c 2010-07-14 01:40:23.000000000 +0100 +++ linux-2.6.35/arch/x86/kernel/apic/io_apic.c 2010-07-15 20:18:05.759598004 +0100 @@ -3013,8 +3013,20 @@ clear_IO_APIC_pin(0, pin1); goto out; } - if (intr_remapping_enabled) - panic("timer doesn't work through Interrupt-remapped IO-APIC"); + if (intr_remapping_enabled) { + apic_printk(APIC_QUIET, KERN_WARNING "timer doesn't work " + "through Interrupt-remapped IO-APIC - disabling!\n"); + /* DANGER! Voodoo coding linux@treblig.org */ + disable_intr_remapping(); + + apic_printk(APIC_QUIET, KERN_INFO "Interrupt remapping disabled\n"); + + /* Ahem, needs proper call - I'm guessing we're probably supposed to do + some other stuff as well */ + intr_remapping_enabled = 0; + + } + local_irq_disable(); clear_IO_APIC_pin(apic1, pin1); if (!no_pin1) Only in linux-2.6.35-predag/arch/x86/kernel/apic: .io_apic.c.swp