Commit 0d098587cec70048336a3809bcde8044c7e9aa08

Authored by Wim Van Sebroeck
1 parent e67d668e14

watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing (part 2)

Redhat Bugzilla: Bug 727875 - TCO_EN bit is disabled by TCO driver

The previous patch breaks reset watchdog behaviour on the older hardware.
It is therefor better to make sure that the behaviour for older hardware (<=ICH5 or
6300ESB) is preserved and that the behaviour for newer hardware is changed.
We therefor use the iTCO_version to see if we need the clearing of the SMI_TCO_EN
bit in the SMI_EN register.

So the new behaviour becomes:
turn_SMI_watchdog_clear_off=0 -> Do not turn off SMI clearing watchdog.
turn_SMI_watchdog_clear_off=1 -> Turn off SMI clearing watchdog when iTCO_version=1
				 (ICHO till ICH5 + 6300ESB only)
turn_SMI_watchdog_clear_off=2 -> Turn off SMI clearing watchdog.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>

Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff

drivers/watchdog/iTCO_wdt.c
... ... @@ -384,10 +384,10 @@
384 384 "Watchdog cannot be stopped once started (default="
385 385 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
386 386  
387   -static int turn_SMI_watchdog_clear_off = 0;
  387 +static int turn_SMI_watchdog_clear_off = 1;
388 388 module_param(turn_SMI_watchdog_clear_off, int, 0);
389 389 MODULE_PARM_DESC(turn_SMI_watchdog_clear_off,
390   - "Turn off SMI clearing watchdog (default=0)");
  390 + "Turn off SMI clearing watchdog (depends on TCO-version)(default=1)");
391 391  
392 392 /*
393 393 * Some TCO specific functions
... ... @@ -813,7 +813,7 @@
813 813 ret = -EIO;
814 814 goto out_unmap;
815 815 }
816   - if (turn_SMI_watchdog_clear_off) {
  816 + if (turn_SMI_watchdog_clear_off >= iTCO_wdt_private.iTCO_version) {
817 817 /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
818 818 val32 = inl(SMI_EN);
819 819 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */