diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2008-05-21 17:10:22 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 03:12:59 -0400 |
commit | 35542c5ebced864776d90d83d1e255016fd4c084 (patch) | |
tree | 2d190b468fbd76286762a25656452492b89acb9e /arch/x86/kernel/io_apic_64.c | |
parent | a1133d8e4ffc2db751eb987a2f3cf8ead67927c3 (diff) |
x86: I/O APIC: clean up the 8259A on a NMI watchdog failure
There is no point in keeping the 8259A enabled if the I/O APIC NMI
watchdog has failed and the 8259A is not used to pass through regular
timer interrupts. This fixes problems with some systems where some logic
gets confused.
Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/io_apic_64.c')
-rw-r--r-- | arch/x86/kernel/io_apic_64.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c index aa45a85c4d11..2a60bfb7446f 100644 --- a/arch/x86/kernel/io_apic_64.c +++ b/arch/x86/kernel/io_apic_64.c | |||
@@ -90,6 +90,7 @@ static int no_timer_check; | |||
90 | 90 | ||
91 | static int disable_timer_pin_1 __initdata; | 91 | static int disable_timer_pin_1 __initdata; |
92 | 92 | ||
93 | int timer_through_8259 __initdata; | ||
93 | 94 | ||
94 | /* Where if anywhere is the i8259 connect in external int mode */ | 95 | /* Where if anywhere is the i8259 connect in external int mode */ |
95 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; | 96 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; |
@@ -1700,6 +1701,7 @@ static inline void __init check_timer(void) | |||
1700 | enable_8259A_irq(0); | 1701 | enable_8259A_irq(0); |
1701 | if (timer_irq_works()) { | 1702 | if (timer_irq_works()) { |
1702 | apic_printk(APIC_VERBOSE," works.\n"); | 1703 | apic_printk(APIC_VERBOSE," works.\n"); |
1704 | timer_through_8259 = 1; | ||
1703 | nmi_watchdog_default(); | 1705 | nmi_watchdog_default(); |
1704 | if (nmi_watchdog == NMI_IO_APIC) { | 1706 | if (nmi_watchdog == NMI_IO_APIC) { |
1705 | disable_8259A_irq(0); | 1707 | disable_8259A_irq(0); |