Hi,
I think the issue is that in the commit you wiped out the part where the dog gets enabled ?

This diff against what you committed gets it working once again

Yes, the enable is missing. The (untested) fix should be:

--- ichwd.c~    Tue Feb 20 23:56:27 2007
+++ ichwd.c     Tue Mar 13 16:31:11 2007
@@ -183,8 +183,11 @@
        timeout = ((uint64_t)1 << cmd) / ICHWD_TICK;
        if (cmd > 0 && cmd <= 63
            && timeout >= ICHWD_MIN_TIMEOUT && timeout <= ICHWD_MAX_TIMEOUT) {
-               if (timeout != sc->timeout)
+               if (timeout != sc->timeout) {
+                       if (!sc->active)
+                               ichwd_tmr_enable(sc);
                        ichwd_tmr_set(sc, timeout);
+               }

                ichwd_tmr_reload(sc);
                *error = 0;


Nick



--- ichwd.c.old     Tue Feb 20 17:56:27 2007
+++ ichwd.c         Tue Mar 13 10:19:12 2007
@@ -178,6 +178,16 @@
       struct ichwd_softc *sc = arg;
       unsigned int timeout;

+/* disable / enable */
+        if (!(cmd & WD_ACTIVE)) {
+                if (sc->active)
+                        ichwd_tmr_disable(sc);
+                *error = 0;
+                return;
+        }
+        if (!sc->active)
+                ichwd_tmr_enable(sc);
+
       /* convert from power-of-two-ns to WDT ticks */
       cmd &= WD_INTERVAL;
       timeout = ((uint64_t)1 << cmd) / ICHWD_TICK;
@@ -189,8 +199,6 @@
               ichwd_tmr_reload(sc);
               *error = 0;
       } else {
-               if (sc->active)
-                       ichwd_tmr_disable(sc);
               if (cmd > 0)
                       *error = EINVAL;
       }




        ---Mike

At 05:56 PM 2/20/2007, Nick Hibma wrote:
n_hibma     2007-02-20 22:56:29 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_6)
    share/man/man4       Makefile watchdog.4
    share/man/man9       watchdog.9
    sys/arm/xscale/i80321 i80321_wdog.c
    sys/dev/ichwd        ichwd.c
    sys/dev/ipmi         ipmi.c
    sys/dev/mk48txx      mk48txx.c
    sys/dev/watchdog     watchdog.c
    sys/i386/i386        elan-mmcr.c
    sys/kern             kern_clock.c
    sys/sys              watchdog.h
    usr.sbin/watchdogd   watchdog.8 watchdogd.c
  Log:
  MFC the following commits:

    Align the interfaces for the various watchdogs and make the interface
    behave as expected.

    Also:
    - Return an error if WD_PASSIVE is passed in to the ioctl as only
      WD_ACTIVE is implemented at the moment. See sys/watchdog.h for an
      explanation of the difference between WD_ACTIVE and WD_PASSIVE.
    - Remove the I_HAVE_TOTALLY_LOST_MY_SENSE_OF_HUMOR define. If you've
      lost your sense of humor, than don't add a define.

    Specific changes:

    i80321_wdog.c
      Don't roll your own passive watchdog tickle as this would defeat the
      purpose of an active (userland) watchdog tickle.

    ichwd.c / ipmi.c:
WD_ACTIVE means active patting of the watchdog by a userland process,
      not whether the watchdog is active. See sys/watchdog.h.

    kern_clock.c:
(software watchdog) Remove a check for WD_ACTIVE as this does not make
      sense here. This reverts r1.181.

    Revision  Changes    Path
    1.371     +1 -0      src/share/man/man4/Makefile
    1.8       +69 -25    src/share/man/man4/watchdog.4
    1.4       +7 -1      src/share/man/man9/watchdog.9
    1.3       +15 -11    src/sys/arm/xscale/i80321/i80321_wdog.c
    1.7       +12 -30    src/sys/dev/ichwd/ichwd.c
    1.8       +8 -17     src/sys/dev/ipmi/ipmi.c
    1.8       +3 -1      src/sys/dev/mk48txx/mk48txx.c
    1.4       +4 -1      src/sys/dev/watchdog/watchdog.c
    1.33      +9 -9      src/sys/i386/i386/elan-mmcr.c
    1.193     +3 -3      src/sys/kern/kern_clock.c
    1.4       +0 -4      src/sys/sys/watchdog.h

  and

Don't exit from watchdogd on receiving a signal if we cannot stop the watchdog.
    That'll require -KILL. This avoids resetting your system on one of the
    watchdogs that you cannot disable.

    Revision  Changes    Path
    1.15      +18 -11    src/usr.sbin/watchdogd/watchdogd.c

  Reviewed by:    phk

  Revision    Changes    Path
  1.320.2.25  +1 -0      src/share/man/man4/Makefile
  1.6.8.2     +69 -25    src/share/man/man4/watchdog.4
  1.3.8.1     +7 -1      src/share/man/man9/watchdog.9
  1.2.2.1     +15 -11    src/sys/arm/xscale/i80321/i80321_wdog.c
  1.5.2.2     +12 -30    src/sys/dev/ichwd/ichwd.c
  1.3.2.5     +6 -17     src/sys/dev/ipmi/ipmi.c
  1.6.2.2     +3 -1      src/sys/dev/mk48txx/mk48txx.c
  1.2.8.1     +9 -2      src/sys/dev/watchdog/watchdog.c
  1.31.2.2    +9 -9      src/sys/i386/i386/elan-mmcr.c
  1.178.2.4   +3 -3      src/sys/kern/kern_clock.c
  1.3.8.1     +0 -4      src/sys/sys/watchdog.h
  1.6.2.1     +5 -4      src/usr.sbin/watchdogd/watchdog.8
  1.10.2.2    +19 -13    src/usr.sbin/watchdogd/watchdogd.c
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"



_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to