]> git.baikalelectronics.ru Git - kernel.git/commit
iTCO_wdt: fix typo when setting TCO_EN bit
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Dec 2008 00:20:19 +0000 (16:20 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Dec 2008 00:20:19 +0000 (16:20 -0800)
commitfb9a36841c6bda9aca3d552e47ff554517d7aebf
tree80bfc353a60ccdd78a0f6683b0f0f132e9195ee2
parentb34f663fc02bd08678644305ed278dcd00c975e5
iTCO_wdt: fix typo when setting TCO_EN bit

The code used '&= 0x00002000' when it tried to set the TCO_EN bit, which
obviously didn't set that bit at all, but instead just reset all the
other bits in the SMI_EN register.

This bug seemingly caused various random behavior, with Frans Pop
reporting that X.org just silently hung at startup and Rafael Wysocki
reports the fan spinning with full speed.

See
http://lkml.org/lkml/2008/12/3/178
http://bugzilla.kernel.org/show_bug.cgi?id=12162

The problem seems to have been triggered by "[WATCHDOG] iTCO_wdt :
problem with rebooting on new ICH9 based motherboards" (commit
d1652322b5515d16bcf1660568f05f2f84697541), but the bogus code existed
before that too (in the "supermicro_old_pre_stop()" function), it just
apparently never showed up due to different logic.

In that commit the broken code got moved around and now gets executed
much more.

Reported-by: Rafael J. Wysocki <rjw@sisk.pl>
Tested-by: Frans Pop <elendil@planet.nl>
Cc: Wim Van Sebroeck <wim@iguana.be>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/watchdog/iTCO_wdt.c