From: Guenter Roeck <linux@roeck-us.net>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Alexander Stein <alexander.stein@systec-electronic.com>,
Wim Van Sebroeck <wim@iguana.be>,
linux-watchdog@vger.kernel.org
Subject: Re: [PATCH 2/2] watchdog: gpio-wdt: Add panic notifier
Date: Mon, 9 Nov 2015 15:19:48 -0800 [thread overview]
Message-ID: <56412A14.60800@roeck-us.net> (raw)
In-Reply-To: <20151109190249.GG4931@pengutronix.de>
Hi Uwe,
On 11/09/2015 11:02 AM, Uwe Kleine-König wrote:
> Hello,
>
> On Mon, Nov 09, 2015 at 07:19:09AM -0800, Guenter Roeck wrote:
>> On 11/09/2015 01:55 AM, Alexander Stein wrote:
>>> This notifier is required when the watchdog is configured as always running
>>> because in this case the watchdog will be triggered when the kernel panics
>>> at boot before any application could open the device, e.g. because the
>>> rootfs is broken. This should result in a resetting system. Thus we
>>> register a panic notifier which stops triggering the watchdog.
>>>
>>
>> Shouldn't the timer be stopped instead ?
>
> What do you mean saying "timer"? The hardware? This might or might not
> be possible.
>
I meant the timer referenced with the variable 'timer' in struct gpio_wdt_priv,
and "stop timer' would translate to somoething like 'mod_timer(&priv->timer, 0);'.
Sorry for not being more specific.
> I think this depends on policy what you want. There are people that just
> want to calm the watchdog such that it doesn't interfere with the
> system. For these it might be right to stop the timer. If however the
> watchdog is responsible to bring a non-responding system back into
> operation it sounds right to stop petting the watchdog and let it reset
> the machine. (There are a few things that might complicate the logic,
> i.e. with panic=5 on the kernel command line it might make sense to keep
> the timer until the 5 seconds after panic are over.)
>
For my part I don't really want or suggest anything. I copied you on the patch
since you were involved in improving the driver, and I thought you might have
valuable input.
Having said that, I agree - since this is dealing with a panic, it may well
be that manipulating it may not be possible. So maybe it is best left alone
at this point.
Overall this might be a generic problem, not specifically related to the gpio
watchdog - what should be done with a watchdog if the system panics ?
Should the watchdog be disabled, or should it time out and force-reboot the
system ?
Up to now, the watchdog is left running, and will cause a hard reset after
it times out. This will be the first exception to this rule. As a result,
if the soft reboot caused by the panic() fails to reboot the system, the
system may be left in an unusable state. Is this ok / acceptable ?
>>> diff --git a/drivers/watchdog/gpio_wdt.c b/drivers/watchdog/gpio_wdt.c
>>> index c7b8a06..aaa0815 100644
>>> --- a/drivers/watchdog/gpio_wdt.c
>>> +++ b/drivers/watchdog/gpio_wdt.c
>>> @@ -233,11 +245,19 @@ static int gpio_wdt_probe(struct platform_device *pdev)
>>> if (ret)
>>> goto error_unregister;
>>>
>>> + priv->panic_notifier.notifier_call = gpio_wdt_notify_panic;
>>> + ret = atomic_notifier_chain_register(&panic_notifier_list,
>>> + &priv->panic_notifier);
>>> + if (ret)
>>> + goto error_unregister_notify;
>>> +
>>> if (priv->always_running)
>>> gpio_wdt_start_impl(priv);
>>>
>>> return 0;
>>>
>>> +error_unregister_notify:
>>> + unregister_reboot_notifier(&priv->reboot_notifier);
>
> The logic is wrong here. If atomic_notifier_chain_register failed you
> shouldn't call unregister_reboot_notifier.
>
I tend to agree - all but to calls to register a panic notifier don't
check the return value from atomic_notifier_chain_register().
Thanks,
Guenter
next prev parent reply other threads:[~2015-11-09 23:19 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-09 9:55 [PATCH 1/2] watchdog: gpio-wdt: Rename notifier to reboot_notifier Alexander Stein
2015-11-09 9:55 ` [PATCH 2/2] watchdog: gpio-wdt: Add panic notifier Alexander Stein
2015-11-09 15:19 ` Guenter Roeck
2015-11-09 15:46 ` Alexander Stein
2015-11-09 19:02 ` Uwe Kleine-König
2015-11-09 23:19 ` Guenter Roeck [this message]
2015-11-10 7:20 ` Uwe Kleine-König
2015-11-13 18:44 ` Guenter Roeck
2015-11-09 15:12 ` [PATCH 1/2] watchdog: gpio-wdt: Rename notifier to reboot_notifier Guenter Roeck
2015-11-23 5:33 ` Guenter Roeck
2015-11-23 13:29 ` Alexander Stein
2015-11-23 16:02 ` Guenter Roeck
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=56412A14.60800@roeck-us.net \
--to=linux@roeck-us.net \
--cc=alexander.stein@systec-electronic.com \
--cc=linux-watchdog@vger.kernel.org \
--cc=u.kleine-koenig@pengutronix.de \
--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.