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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to