From: Damien Riegel <damien.riegel@savoirfairelinux.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Mike Looijmans <mike.looijmans@topic.nl>,
linux-watchdog@vger.kernel.org, Wim Van Sebroeck <wim@iguana.be>,
Vivien Didelot <vivien.didelot@savoirfairelinux.com>,
kernel@savoirfairelinux.com
Subject: Re: [PATCH 5/7] watchdog: gpio_wdt: use core reboot notifier
Date: Fri, 20 Nov 2015 10:54:16 -0500 [thread overview]
Message-ID: <20151120155416.GA14407@localhost> (raw)
In-Reply-To: <564F3DD3.4080400@roeck-us.net>
On Fri, Nov 20, 2015 at 07:35:47AM -0800, Guenter Roeck wrote:
> On 11/20/2015 07:21 AM, Damien Riegel wrote:
> >On Fri, Nov 20, 2015 at 08:15:33AM +0100, Mike Looijmans wrote:
> >>On 20-11-15 04:27, Guenter Roeck wrote:
> >>>On 11/18/2015 01:02 PM, Damien Riegel wrote:
> >>>>Get rid of the custom reboot notifier block registration and use
> >>>>the one provided by the watchdog core.
> >>>>
> >>>>Signed-off-by: Damien Riegel <damien.riegel@savoirfairelinux.com>
> >>>>Reviewed-by: Vivien Didelot <vivien.didelot@savoirlinux.com> ---
> >>>>drivers/watchdog/gpio_wdt.c | 35
> >>>>++--------------------------------- 1 file changed, 2
> >>>>insertions(+), 33 deletions(-)
> >>>>
> >>>>diff --git a/drivers/watchdog/gpio_wdt.c
> >>>>b/drivers/watchdog/gpio_wdt.c index 1a3c6e8..035c238 100644 ---
> >>>>a/drivers/watchdog/gpio_wdt.c +++ b/drivers/watchdog/gpio_wdt.c @@
> >>>>-12,10 +12,8 @@ #include <linux/err.h> #include <linux/delay.h>
> >>>>#include <linux/module.h> -#include <linux/notifier.h> #include
> >>>><linux/of_gpio.h> #include <linux/platform_device.h> -#include
> >>>><linux/reboot.h> #include <linux/watchdog.h>
> >>>>
> >>>> #define SOFT_TIMEOUT_MIN 1
> >>>>@@ -36,7 +34,6 @@ struct gpio_wdt_priv { unsigned int hw_algo;
> >>>>unsigned int hw_margin; unsigned long last_jiffies; -
> >>>>struct notifier_block notifier; struct timer_list timer;
> >>>>struct watchdog_device wdd; }; @@ -126,26 +123,6 @@ static int
> >>>>gpio_wdt_set_timeout(struct watchdog_device *wdd, unsigned int t)
> >>>>return gpio_wdt_ping(wdd); }
> >>>>
> >>>>-static int gpio_wdt_notify_sys(struct notifier_block *nb,
> >>>>unsigned long code, - void *unused) -{ - struct
> >>>>gpio_wdt_priv *priv = container_of(nb, struct gpio_wdt_priv, -
> >>>>notifier); - - mod_timer(&priv->timer, 0); - - switch (code) {
> >>>>- case SYS_HALT: - case SYS_DOWN: - gpio_wdt_disable(priv);
> >>>>- break; - default: - break; - } -
> >>>Slight difference in semantics here: The stop function only stops
> >>>the watchdog if the 'always_running' flag is not set. The notifier
> >>>here always stops it, or at least tries to stop it. Not really sure
> >>>what that means, since the always_running flag is supposed to mean
> >>>"the watchdog can not be stopped".
> >>>
> >>>Copying Mike Looijmans, who added the always-running flag, for
> >>>input.
> >>
> >>Okay, I don't know quite what the "core" will do.
> >>
> >>If the system wants to reboot, and the watchdog is in
> >>"always_running" mode, it must NOT stop the watchdog. You have to
> >>keep kicking the dog until the system reboots and the bootloader can
> >>take over. Otherwise, the watchdog may turn off the mains power (I
> >>developed this for a medical device, which had to completely shut
> >>down in case of trouble) or do something else that wasn't supposed
> >>to happen yet.
> >>
> >>When shutting down, the assumption is that either the power-down has
> >>already occured before the watchdog might kick in, or that the
> >>watchdog will shut down the system because the kernel stopped
> >>kicking it. So no special case here, it doesn't really matter
> >>whether you kick it once more or not.
> >>
> >>If the external watchdog reboots the system rather than shuts down
> >>power, the above scenario won't hurt.
> >>
> >>Hope this answers your question, if not, feel free to ask for more
> >>information.
> >>
> >
> >The core calls ops->stop on SYS_HALT and SYS_DOWN if the watchdog
> >called watchdog_stop_on_reboot during initialization.
> >
> >In the previous patch of this serie, I change the condition on which
> >gpio_wdt_disable is called in gpio_wdt_notify_sys, replacing
> >SYS_POWER_OFF by SYS_DOWN. Regarding what you just said, not stopping
> >on SYS_DOWN was a deliberate choice, so we should not modify this
> >watchdog's behaviour.
> >
> Yes, or not stop it if it is configured for "always enabled", which
> this patch does.
>
Right. Should I squash together the two commits which modify the gpio
watchdog ? That way, we would keep the same behaviour all along the
patchset.
> >But actually, I don't understand why the notifier is registered in the
> >first place in that case.
> >
>
> Good question. Either case I think we are good, because the new behavior will
> be to not stop the watchdog on shutdown if it is configured to "always enabled".
>
> Thanks,
> Guenter
>
next prev parent reply other threads:[~2015-11-20 15:54 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-18 21:02 [PATCH 0/7] watchdog: factorize reboot notifier registration Damien Riegel
2015-11-18 21:02 ` [PATCH 1/7] watchdog: core: add reboot notifier support Damien Riegel
2015-11-20 3:18 ` Guenter Roeck
2015-11-18 21:02 ` [PATCH 2/7] watchdog: bcm47xx_wdt: use core reboot notifier Damien Riegel
2015-11-20 4:13 ` Guenter Roeck
2015-11-18 21:02 ` [PATCH 3/7] watchdog: cadence_wdt: " Damien Riegel
2015-11-20 4:15 ` Guenter Roeck
2015-11-18 21:02 ` [PATCH 4/7] watchdog: gpio_wdt: stop on SYS_DOWN instead of SYS_POWER_OFF Damien Riegel
2015-11-20 4:16 ` Guenter Roeck
2015-11-18 21:02 ` [PATCH 5/7] watchdog: gpio_wdt: use core reboot notifier Damien Riegel
2015-11-20 3:27 ` Guenter Roeck
2015-11-20 7:15 ` Mike Looijmans
2015-11-20 15:21 ` Damien Riegel
2015-11-20 15:35 ` Guenter Roeck
2015-11-20 15:54 ` Damien Riegel [this message]
2015-11-20 16:09 ` Guenter Roeck
2015-11-18 21:02 ` [PATCH 6/7] watchdog: softdog: " Damien Riegel
2015-11-20 4:16 ` Guenter Roeck
2015-11-18 21:02 ` [PATCH 7/7] watchdog: w83627hf_wdt: " Damien Riegel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151120155416.GA14407@localhost \
--to=damien.riegel@savoirfairelinux.com \
--cc=kernel@savoirfairelinux.com \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mike.looijmans@topic.nl \
--cc=vivien.didelot@savoirfairelinux.com \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.