From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Guenter Roeck <linux@roeck-us.net>
Cc: linux-watchdog@vger.kernel.org, Wim Van Sebroeck <wim@iguana.be>,
linux-kernel@vger.kernel.org,
Timo Kokkonen <timo.kokkonen@offcode.fi>,
linux-doc@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
kernel@pengutronix.de
Subject: Re: [PATCH 2/8] watchdog: Introduce hardware maximum timeout in watchdog core
Date: Tue, 4 Aug 2015 17:52:20 +0200 [thread overview]
Message-ID: <20150804155220.GV9999@pengutronix.de> (raw)
In-Reply-To: <55C0DADF.9050505@roeck-us.net>
On Tue, Aug 04, 2015 at 08:31:43AM -0700, Guenter Roeck wrote:
> Hi Uwe,
>
> On 08/04/2015 05:18 AM, Uwe Kleine-König wrote:
> >On Mon, Aug 03, 2015 at 07:13:28PM -0700, Guenter Roeck wrote:
> >>Introduce an optional hardware maximum timeout in the watchdog core.
> >>The hardware maximum timeout can be lower than the maximum timeout.
> >Is this only until all drivers are converted to make use of the central
> >worker? Otherwise this doesn't make sense, right?
> >
> >>Drivers can set the maximum hardare timeout value in the watchdog data
> >s/hardare/hardware/
> >
> Always those fat fingers ;-)
>
> >>structure. If the configured timeout exceeds half the value of the
> >>maximum hardware timeout, the watchdog core enables a timer function
> >>to assist sending keepalive requests to the watchdog driver.
> >I don't understand why you want to halve the maximum hw-timeout. If my
> >watchdog has hw-max-timeout = 5s and userspace sets it to 3s there
> >should be no need for assistance?! I think the implementation is the
> >other way round?
> >
> It is supposed to reflect the _maximum_ timeout. That is different to
> the time between heartbeats, which is supposed to be less; using half
> the value of the maximum hardware timeout seemed to be a safe number.
Right, I got that. With hw-max-timeout = 5s the machine resets after 5s
not caring for the device. And so pinging repeatedly after 2.5s is fine.
But if userspace sets a timeout of 3s (probably with the intention to
ping with a frequency of 1/1.5s) there is no need for worker-assistance,
because the pings coming in each 1.5s provided by userspace are good
enough.
> >>+static inline bool watchdog_need_worker(struct watchdog_device *wdd)
> >>+{
> >>+ unsigned int hm = wdd->max_hw_timeout_ms;
> >>+ unsigned int m = wdd->max_timeout * 1000;
> >>+
> >>+ return watchdog_active(wdd) && hm && hm != m &&
> >>+ wdd->timeout * 500 > hm;
> >
> >I don't understand what max_timeout is now that there is max_hw_timeout.
> >So I don't understand why you need hm != m either.
> >
>
> Backward compatibility. A driver which does not set max_hw_timeout_ms,
> or sets both to the same value, by definition expects to handle everything
> internally, and thus no worker is configured.
And a driver that does
max_timeout = 5
max_hw_timeout = 5125
falls through the cracks.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
next prev parent reply other threads:[~2015-08-04 15:52 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-04 2:13 [PATCH 0/8] watchdog: Add support for keepalives triggered by infrastructure Guenter Roeck
2015-08-04 2:13 ` [PATCH 1/8] watchdog: watchdog_dev: Use single variable name for struct watchdog_device Guenter Roeck
2015-08-04 11:26 ` Uwe Kleine-König
2015-08-04 2:13 ` [PATCH 2/8] watchdog: Introduce hardware maximum timeout in watchdog core Guenter Roeck
2015-08-04 12:18 ` Uwe Kleine-König
2015-08-04 15:31 ` Guenter Roeck
2015-08-04 15:31 ` Guenter Roeck
2015-08-04 15:52 ` Uwe Kleine-König [this message]
2015-08-04 16:03 ` Guenter Roeck
2015-08-05 8:22 ` Uwe Kleine-König
2015-08-05 9:14 ` Guenter Roeck
2015-08-04 2:13 ` [PATCH 3/8] watchdog: Introduce WDOG_RUNNING flag Guenter Roeck
2015-08-04 12:25 ` Uwe Kleine-König
2015-08-04 15:41 ` Uwe Kleine-König
2015-08-04 15:56 ` Guenter Roeck
2015-08-04 2:13 ` [PATCH 4/8] watchdog: Make set_timeout function optional Guenter Roeck
2015-08-04 15:38 ` Uwe Kleine-König
2015-08-04 16:43 ` Guenter Roeck
2015-08-04 2:13 ` [PATCH 5/8] watchdog: imx2: Convert to use infrastructure triggered keepalives Guenter Roeck
2015-08-04 15:44 ` Uwe Kleine-König
2015-08-04 2:13 ` [PATCH 6/8] watchdog: retu: " Guenter Roeck
2015-08-04 2:13 ` [PATCH 7/8] watchdog: gpio_wdt: " Guenter Roeck
2015-08-04 2:13 ` [PATCH 8/8] watchdog: at91sam9: " Guenter Roeck
2015-08-04 11:24 ` [PATCH 0/8] watchdog: Add support for keepalives triggered by infrastructure Uwe Kleine-König
2015-08-04 15:01 ` Guenter Roeck
2015-08-04 23:43 ` Pádraig Brady
2015-08-05 0:49 ` Guenter Roeck
2015-08-05 7:36 ` Uwe Kleine-König
2015-08-05 7:50 ` Guenter Roeck
2015-08-05 7:50 ` Guenter Roeck
2015-08-05 8:27 ` Uwe Kleine-König
2015-08-05 17:13 ` David Teigland
2015-08-05 17:41 ` Guenter Roeck
2015-08-05 17:51 ` David Teigland
2015-08-05 19:01 ` Guenter Roeck
2015-08-05 19:51 ` David Teigland
2015-08-05 20:21 ` 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=20150804155220.GV9999@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=corbet@lwn.net \
--cc=kernel@pengutronix.de \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=timo.kokkonen@offcode.fi \
--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.