summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/io_apic.c
diff options
context:
space:
mode:
authorIngo Molnar2009-01-28 07:17:26 +0100
committerIngo Molnar2009-01-28 23:20:22 +0100
commit33a201fac698a93d9d1ffa77030ba2ff38d1a3d1 (patch)
treec1087d996f5d83f987e83380f27aa73c7aaa0871 /arch/x86/kernel/io_apic.c
parentx86, apic: clean up ->setup_apic_routing() (diff)
downloadkernel-qcow2-linux-33a201fac698a93d9d1ffa77030ba2ff38d1a3d1.tar.gz
kernel-qcow2-linux-33a201fac698a93d9d1ffa77030ba2ff38d1a3d1.tar.xz
kernel-qcow2-linux-33a201fac698a93d9d1ffa77030ba2ff38d1a3d1.zip
x86, apic: streamline the ->multi_timer_check() quirk
only NUMAQ uses this quirk: to prevent the timer IRQ from being added on secondary nodes. All other genapic templates can have a NULL ->multi_timer_check() callback. Also, extend the generic code to treat a NULL pointer accordingly. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/io_apic.c')
-rw-r--r--arch/x86/kernel/io_apic.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index db79ad9a7646..282ea112f3cf 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -1618,10 +1618,15 @@ static void __init setup_IO_APIC_irqs(void)
}
irq = pin_2_irq(idx, apic_id, pin);
-#ifdef CONFIG_X86_32
- if (multi_timer_check(apic_id, irq))
+
+ /*
+ * Skip the timer IRQ if there's a quirk handler
+ * installed and if it returns 1:
+ */
+ if (apic->multi_timer_check &&
+ apic->multi_timer_check(apic_id, irq))
continue;
-#endif
+
desc = irq_to_desc_alloc_cpu(irq, cpu);
if (!desc) {
printk(KERN_INFO "can not get irq_desc for %d\n", irq);