cvs commit: src/share/man/man4 Makefile watchdog.4 src/share/man/man9 watchdog.9 src/sys/arm/xscale/i80321 i80321_wdog.c src/sys/dev/ichwd ichwd.c src/sys/dev/ipmi ipmi.c src/sys/dev/mk48txx mk48txx.c src/sys/dev/watchdog watchdog.c ...

Mike Tancsa mike at sentex.net
Tue Mar 13 15:24:29 UTC 2007


At 05:42 PM 3/9/2007, Mike Tancsa wrote:

>Hi,
>         The commit below to ichwd.c, breaks the watchdog on a 
> number of Intel boards I tried it against. (ICH5 and ICH7)  The 
> module loads, but the box never reboots after sending a sig 11 to watchdogd
>
>ichwd module loaded
>ichwd0: <Intel 82801EB/ER watchdog timer> on isa0
>
>
>Reverting to the version of ichwd.c prior to your commit unbreaks it 
>and the watchdog works once again in that the box reboots after 
>killing watchdogd.

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


--- 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 at freebsd.org mailing list
>>http://lists.freebsd.org/mailman/listinfo/cvs-all
>>To unsubscribe, send any mail to "cvs-all-unsubscribe at freebsd.org"
>
>_______________________________________________
>freebsd-stable at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-stable
>To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"



More information about the freebsd-stable mailing list