Date: Wed, 14 Mar 2007 15:52:40 -0400 From: John Baldwin <jhb@freebsd.org> To: Nick Hibma <n_hibma@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: 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 ... Message-ID: <200703141552.40936.jhb@freebsd.org> In-Reply-To: <200702202256.l1KMuTPN046797@repoman.freebsd.org> References: <200702202256.l1KMuTPN046797@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 20 February 2007 17:56, 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 Why is the ipmi watchdog function different in current and 6.x after this change? HEAD: static void ipmi_wd_event(void *arg, unsigned int cmd, int *error) { struct ipmi_softc *sc = arg; unsigned int timeout; cmd &= WD_INTERVAL; if (cmd > 0 && cmd <= 63) { timeout = ((uint64_t)1 << cmd) / 1800000000; ipmi_set_watchdog(sc, timeout); *error = 0; } else { ipmi_set_watchdog(sc, 0); if (cmd > 0) *error = 0; } } RELENG_6: static void ipmi_wd_event(void *arg, unsigned int cmd, int *error) { struct ipmi_softc *sc = arg; unsigned int timeout; cmd &= WD_INTERVAL; if (cmd > 0 && cmd <= 63) { timeout = ((uint64_t)1 << cmd) / 1800000000; ipmi_set_watchdog(sc, timeout); *error = 0; } else { ipmi_set_watchdog(sc, 0); } } Also, the watchdog(9) manpage still says: If the watchdog cannot be configured to the proposed timeout, it must be disabled and the error argument set to EINVAL. If the watchdog cannot be disabled, the error argument must be set to EOPNOTSUPP. Which would lead me to believe that the HEAD version should be setting *error to EINVAL in that last case? -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703141552.40936.jhb>