All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Guenter Roeck" <patchwork@patchwork.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, Doug Anderson <dianders@chromium.org>,
	Jonathan Corbet <corbet@lwn.net>
Subject: Re: [PATCH v7 4/9] watchdog: Add support for minimum time between heartbeats
Date: Tue, 26 Jan 2016 06:42:00 -0800	[thread overview]
Message-ID: <56A785B8.8080601@roeck-us.net> (raw)
In-Reply-To: <20160126080740.GU3338@pengutronix.de>

Hi Uwe,

On 01/26/2016 12:07 AM, Uwe Kleine-König wrote:
> Hello Guenter,
>
> On Mon, Jan 25, 2016 at 06:53:11PM -0800, Guenter Roeck wrote:
>> From: Guenter Roeck <linux@roeck-us.net>
>>
>> Some watchdogs require a minimum time between heartbeats.
>> Examples are the watchdogs in DA9062 and AT91SAM9x.
>>
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>> ---
>> v7: Rebased to v4.5-rc1
>> v6: Rebased to v4.4-rc2
>> v5: Rebased to v4.4-rc1
>>      Fixed typo in documentation.
>> v4: Added patch
>> ---
>>   Documentation/watchdog/watchdog-kernel-api.txt |  3 +++
>>   drivers/watchdog/watchdog_dev.c                | 15 +++++++++++++++
>>   include/linux/watchdog.h                       |  3 +++
>>   3 files changed, 21 insertions(+)
>>
>> diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt
>> index 62d49d6a7ff5..2221fb4f2739 100644
>> --- a/Documentation/watchdog/watchdog-kernel-api.txt
>> +++ b/Documentation/watchdog/watchdog-kernel-api.txt
>> @@ -52,6 +52,7 @@ struct watchdog_device {
>>   	unsigned int timeout;
>>   	unsigned int min_timeout;
>>   	unsigned int max_timeout;
>> +	unsigned int min_hw_heartbeat_ms;
>>   	unsigned int max_hw_timeout_ms;
>>   	struct notifier_block reboot_nb;
>>   	struct notifier_block restart_nb;
>> @@ -81,6 +82,8 @@ It contains following fields:
>>   * max_timeout: the watchdog timer's maximum timeout value (in seconds),
>>     as seen from userspace. If set, the maximum configurable value for
>>     'timeout'. Not used if max_hw_timeout_ms is non-zero.
>> +* min_hw_heartbeat_ms: Minimum time between heartbeats sent to the chip,
>> +  in milli-seconds.
>>   * max_hw_timeout_ms: Maximum hardware timeout, in milli-seconds.
>>     If set, the infrastructure will send heartbeats to the watchdog driver
>>     if 'timeout' is larger than max_hw_timeout_ms, unless WDOG_ACTIVE
>> diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
>> index 1a8f3861fe92..ff03cbc8e081 100644
>> --- a/drivers/watchdog/watchdog_dev.c
>> +++ b/drivers/watchdog/watchdog_dev.c
>> @@ -64,6 +64,7 @@ struct watchdog_core_data {
>>   	struct watchdog_device *wdd;
>>   	struct mutex lock;
>>   	unsigned long last_keepalive;
>> +	unsigned long last_hw_keepalive;
>>   	struct delayed_work work;
>>   	unsigned long status;		/* Internal status bits */
>>   #define _WDOG_DEV_OPEN		0	/* Opened ? */
>> @@ -138,8 +139,19 @@ static inline void watchdog_update_worker(struct watchdog_device *wdd,
>>
>>   static int __watchdog_ping(struct watchdog_device *wdd)
>>   {
>> +	struct watchdog_core_data *wd_data = wdd->wd_data;
>> +	unsigned long earliest_keepalive = wd_data->last_hw_keepalive +
>> +				msecs_to_jiffies(wdd->min_hw_heartbeat_ms);
>>   	int err;
>>
>> +	if (time_is_after_jiffies(earliest_keepalive)) {
>> +		mod_delayed_work(watchdog_wq, &wd_data->work,
>> +				 earliest_keepalive - jiffies);
>> +		return 0;
>> +	}
>> +
>> +	wd_data->last_hw_keepalive = jiffies;
>> +
>
> Do you need to undo this assignment when ping fails?
>

I thought about it, but decided against it. I concluded that it is better
in this situation to only try again after the minimum delay between
heartbeats.

Thanks,
Guenter


  reply	other threads:[~2016-01-26 14:42 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-26  2:53 [PATCH v7 0/9] watchdog: Add support for keepalives triggered by infrastructure Guenter Roeck
2016-01-26  2:53 ` [PATCH v7 1/9] watchdog: Introduce hardware maximum timeout in watchdog core Guenter Roeck
2016-02-28 13:18   ` Wim Van Sebroeck
2016-02-28 18:43     ` Guenter Roeck
2016-01-26  2:53 ` [PATCH v7 2/9] watchdog: Introduce WDOG_HW_RUNNING flag Guenter Roeck
2016-01-26  2:53 ` [PATCH v7 3/9] watchdog: Make set_timeout function optional Guenter Roeck
2016-01-26  2:53 ` [PATCH v7 4/9] watchdog: Add support for minimum time between heartbeats Guenter Roeck
2016-01-26  8:07   ` Uwe Kleine-König
2016-01-26 14:42     ` Guenter Roeck [this message]
2016-01-26  2:53 ` [PATCH v7 5/9] watchdog: Simplify update_worker Guenter Roeck
2016-01-26  2:53 ` [RFT PATCH v7 6/9] watchdog: imx2: Convert to use infrastructure triggered keepalives Guenter Roeck
2016-01-29 19:40   ` Guenter Roeck
2016-01-26  2:53 ` [RFT PATCH v7 7/9] watchdog: retu: " Guenter Roeck
2016-01-26  2:53 ` [RFT PATCH v7 8/9] watchdog: at91sam9: " Guenter Roeck
2016-01-26  2:53 ` [RFT PATCH v7 9/9] watchdog: dw_wdt: Convert to use watchdog infrastructure Guenter Roeck
2016-01-29 17:52   ` Doug Anderson
2016-01-29 18:24     ` Guenter Roeck
2016-01-26  8:09 ` [PATCH v7 0/9] watchdog: Add support for keepalives triggered by infrastructure Uwe Kleine-König
2016-01-26 14:43   ` 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=56A785B8.8080601@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=corbet@lwn.net \
    --cc=dianders@chromium.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=patchwork@patchwork.roeck-us.net \
    --cc=timo.kokkonen@offcode.fi \
    --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.