watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing
authorWim Van Sebroeck <wim@iguana.be>
Wed, 19 Oct 2011 21:59:26 +0000 (23:59 +0200)
committerWim Van Sebroeck <wim@iguana.be>
Sat, 5 Nov 2011 20:22:06 +0000 (21:22 +0100)
commitdeb9197b7031b8f4ed311dc47a14363da4458544
treee4a10ac64b3a3617651baa8559421d09497739ba
parentc63b6d02be22899a5c8d47b8ee40e0534cd01a43
watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing

Redhat Bugzilla: Bug 727875 - TCO_EN bit is disabled by TCO driver
Jiri Slaby: 28d41f53f broke temperature sensors on a ICH10 chipset

The iTCO_wdt driver disables the SMI. This breaks good working of newer hardware.
The disabling of the SMI by the TCO logic dates back from the i810-tco driver
from Nils Faerber (around 28 July 2000). The reason for this was that some BIOSes
install handlers reset or disable the watchdog timer instead of resetting the system.
The trick to fix this was to disable the SMI (by clearing the SMI_TCO_EN bit of the
SMI_EN register) to prevent this from happening.

This however has strange effects on newer hardware. So we are in a situation that
a fix for broken old hardware affects newer hardware.

The correct solution is to make this fix an option (with the new module parameter:
turn_SMI_watchdog_clear_off) so that the default behaviour is the unfixed version.

the next patch will be to move this in the start and stop functions of the driver
and to add a new module parameter for the global_smi_en bit and to get rid of the
vendor_support code.

This fix can have an effect on old (typical ICH & ICH2 chipsets) motherboards that
have a broken BIOS implementation concerning TCO logic. In these case the module
parameter turn_SMI_watchdog_clear_off=1 will need to be added.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/iTCO_wdt.c