Hi All, I will test the watchdog part tonight on an ICH4 and ICH9 chipset. I indeed moved the code over from the supermicro_old_pre_stop code. And I'm sure this fix indeed needs to go in. Kind regards, Wim. > > Rafael, I'm assuming my one-liner patch fixes your problem too, since you > attached the patch to the bugzilla entry. So I committed it as such. But > if it doesn't, we'll need to do something else. > > The commit ended up being as appended.. > > Linus > --- > From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Date: Wed, 3 Dec 2008 16:20:19 -0800 > Subject: [PATCH] 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 > 7cd5b08be3c489df11b559fef210b81133764ad4), 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@xxxxxxx> > Tested-by: Frans Pop <elendil@xxxxxxxxx> > Cc: Wim Van Sebroeck <wim@xxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > --- > drivers/watchdog/iTCO_wdt.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c > index 26173a2..5b395a4 100644 > --- a/drivers/watchdog/iTCO_wdt.c > +++ b/drivers/watchdog/iTCO_wdt.c > @@ -392,7 +392,7 @@ static int iTCO_wdt_stop(void) > > /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */ > val32 = inl(SMI_EN); > - val32 &= 0x00002000; > + val32 |= 0x00002000; > outl(val32, SMI_EN); > > /* Set the NO_REBOOT bit to prevent later reboots, just for sure */ -- To unsubscribe from this list: send the line "unsubscribe kernel-testers" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html