aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/io_apic_64.c
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2008-05-21 17:10:22 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-08 03:12:59 -0400
commit35542c5ebced864776d90d83d1e255016fd4c084 (patch)
tree2d190b468fbd76286762a25656452492b89acb9e /arch/x86/kernel/io_apic_64.c
parenta1133d8e4ffc2db751eb987a2f3cf8ead67927c3 (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.c2
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 aa45a85c4d1..2a60bfb7446 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
91static int disable_timer_pin_1 __initdata; 91static int disable_timer_pin_1 __initdata;
92 92
93int 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 */
95static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; 96static 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);