svn commit: r215868 - head/sys/dev/ichwd
Attilio Rao
attilio at FreeBSD.org
Fri Nov 26 15:35:09 UTC 2010
Author: attilio
Date: Fri Nov 26 15:35:08 2010
New Revision: 215868
URL: http://svn.freebsd.org/changeset/base/215868
Log:
- Advertise when the reboot came from a watchdog-induced reset.
- Fix a bug where TCO_BOOT_STS was supposed to be cleared after
TCO_SECOND_TO_STS and not before.
Sponsored by: Sandvine Incorporated
Submitted by: Mark Johnston <mjohnston at sandvine dot com>
Reviewed by: des
MFC after: 10 days
Modified:
head/sys/dev/ichwd/ichwd.c
Modified: head/sys/dev/ichwd/ichwd.c
==============================================================================
--- head/sys/dev/ichwd/ichwd.c Fri Nov 26 15:33:09 2010 (r215867)
+++ head/sys/dev/ichwd/ichwd.c Fri Nov 26 15:35:08 2010 (r215868)
@@ -225,12 +225,12 @@ ichwd_sts_reset(struct ichwd_softc *sc)
* by writing a 1, not a 0.
*/
ichwd_write_tco_2(sc, TCO1_STS, TCO_TIMEOUT);
- /*
- * XXX The datasheet says that TCO_SECOND_TO_STS must be cleared
- * before TCO_BOOT_STS, not the other way around.
+ /*
+ * According to Intel's docs, clearing SECOND_TO_STS and BOOT_STS must
+ * be done in two separate operations.
*/
- ichwd_write_tco_2(sc, TCO2_STS, TCO_BOOT_STS);
ichwd_write_tco_2(sc, TCO2_STS, TCO_SECOND_TO_STS);
+ ichwd_write_tco_2(sc, TCO2_STS, TCO_BOOT_STS);
}
/*
@@ -520,11 +520,12 @@ ichwd_attach(device_t dev)
device_get_desc(dev), sc->ich_version);
/*
- * XXX we should check the status registers (specifically, the
- * TCO_SECOND_TO_STS bit in the TCO2_STS register) to see if we
- * just came back from a watchdog-induced reset, and let the user
- * know.
+ * Determine if we are coming up after a watchdog-induced reset.
+ * This bit is cleared in ichwd_sts_reset().
*/
+ if ((ich_read_tco_2(sc, TCO2_STS) & TCO_SECOND_TO_STS) != 0)
+ device_printf(dev,
+ "resuming after hardware watchdog timeout\n");
/* reset the watchdog status registers */
ichwd_sts_reset(sc);
More information about the svn-src-head
mailing list