Commit 87a5b745 authored by Linus Torvalds's avatar Linus Torvalds

Revert 8259 timer ack workaround

This patch was trying to work around buggy SMM bios but causes problems
by not deasserting NMI irq line (reported by Thomas Schlicht) for some
integrated local apic.

This patch was written originally as an optimization (with the side
effect to fix those bugged bios) but was never applied to 2.4 tree.

The rational was: fix your bios instead. 

Cset exclude: akpm@osdl.org|ChangeSet|20040219045328|16041
parent 4eedca38
...@@ -2152,10 +2152,6 @@ static inline void check_timer(void) ...@@ -2152,10 +2152,6 @@ static inline void check_timer(void)
{ {
int pin1, pin2; int pin1, pin2;
int vector; int vector;
unsigned int ver;
ver = apic_read(APIC_LVR);
ver = GET_APIC_VERSION(ver);
/* /*
* get/set the timer IRQ vector: * get/set the timer IRQ vector:
...@@ -2169,17 +2165,11 @@ static inline void check_timer(void) ...@@ -2169,17 +2165,11 @@ static inline void check_timer(void)
* mode for the 8259A whenever interrupts are routed * mode for the 8259A whenever interrupts are routed
* through I/O APICs. Also IRQ0 has to be enabled in * through I/O APICs. Also IRQ0 has to be enabled in
* the 8259A which implies the virtual wire has to be * the 8259A which implies the virtual wire has to be
* disabled in the local APIC. Finally timer interrupts * disabled in the local APIC.
* need to be acknowledged manually in the 8259A for
* do_slow_timeoffset() and for the i82489DX when using
* the NMI watchdog.
*/ */
apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
init_8259A(1); init_8259A(1);
if (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver)) timer_ack = 1;
timer_ack = 1;
else
timer_ack = !cpu_has_tsc;
enable_8259A_irq(0); enable_8259A_irq(0);
pin1 = find_isa_irq_pin(0, mp_INT); pin1 = find_isa_irq_pin(0, mp_INT);
...@@ -2197,8 +2187,7 @@ static inline void check_timer(void) ...@@ -2197,8 +2187,7 @@ static inline void check_timer(void)
disable_8259A_irq(0); disable_8259A_irq(0);
setup_nmi(); setup_nmi();
enable_8259A_irq(0); enable_8259A_irq(0);
if (check_nmi_watchdog() < 0); check_nmi_watchdog();
timer_ack = !cpu_has_tsc;
} }
return; return;
} }
...@@ -2221,8 +2210,7 @@ static inline void check_timer(void) ...@@ -2221,8 +2210,7 @@ static inline void check_timer(void)
add_pin_to_irq(0, 0, pin2); add_pin_to_irq(0, 0, pin2);
if (nmi_watchdog == NMI_IO_APIC) { if (nmi_watchdog == NMI_IO_APIC) {
setup_nmi(); setup_nmi();
if (check_nmi_watchdog() < 0); check_nmi_watchdog();
timer_ack = !cpu_has_tsc;
} }
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment