diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-01-30 07:30:19 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:30:19 -0500 |
commit | 87ebecf14ca4f669cb52be46c954f3d9201394b8 (patch) | |
tree | f36b8072bc081b3f483c29e5394ab96cdf501201 /arch/x86/kernel/irq_64.c | |
parent | 3e35a0e525253837fc0ea4d0e060de3302bd9537 (diff) |
x86: move ack_bad_irq into irq code
Match i386, where we have this in the irq code. It belongs there.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/irq_64.c')
-rw-r--r-- | arch/x86/kernel/irq_64.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c index 6b5c730d67b9..6c3a3b6e5cf4 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c | |||
@@ -20,6 +20,26 @@ | |||
20 | 20 | ||
21 | atomic_t irq_err_count; | 21 | atomic_t irq_err_count; |
22 | 22 | ||
23 | /* | ||
24 | * 'what should we do if we get a hw irq event on an illegal vector'. | ||
25 | * each architecture has to answer this themselves. | ||
26 | */ | ||
27 | void ack_bad_irq(unsigned int irq) | ||
28 | { | ||
29 | printk(KERN_WARNING "unexpected IRQ trap at vector %02x\n", irq); | ||
30 | /* | ||
31 | * Currently unexpected vectors happen only on SMP and APIC. | ||
32 | * We _must_ ack these because every local APIC has only N | ||
33 | * irq slots per priority level, and a 'hanging, unacked' IRQ | ||
34 | * holds up an irq slot - in excessive cases (when multiple | ||
35 | * unexpected vectors occur) that might lock up the APIC | ||
36 | * completely. | ||
37 | * But don't ack when the APIC is disabled. -AK | ||
38 | */ | ||
39 | if (!disable_apic) | ||
40 | ack_APIC_irq(); | ||
41 | } | ||
42 | |||
23 | #ifdef CONFIG_DEBUG_STACKOVERFLOW | 43 | #ifdef CONFIG_DEBUG_STACKOVERFLOW |
24 | /* | 44 | /* |
25 | * Probabilistic stack overflow check: | 45 | * Probabilistic stack overflow check: |