Linux-Watchdog Archive on lore.kernel.org
 help / color / Atom feed
From: Jean Delvare <jdelvare@suse.de>
To: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Len Brown <lenb@kernel.org>,
	linux-acpi@vger.kernel.org,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	Guenter Roeck <linux@roeck-us.net>,
	linux-watchdog@vger.kernel.org,
	Robert Moore <robert.moore@intel.com>,
	Erik Kaneda <erik.kaneda@intel.com>,
	Tom Abraham <tabraham@suse.com>
Subject: Re: [PATCH v2 3/3] ACPI / watchdog: Set default timeout in probe
Date: Wed, 12 Feb 2020 17:04:16 +0100
Message-ID: <20200212170416.3df50e15@endymion> (raw)
In-Reply-To: <20200212145941.32914-4-mika.westerberg@linux.intel.com>

On Wed, 12 Feb 2020 17:59:41 +0300, Mika Westerberg wrote:
> If the BIOS default timeout for the watchdog is too small userspace may
> not have enough time to configure new timeout after opening the device
> before the system is already reset. For this reason program default
> timeout of 30 seconds in the driver probe and allow userspace to change
> this from command line or through module parameter (wdat_wdt.timeout).
> 
> Reported-by: Jean Delvare <jdelvare@suse.de>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
>  drivers/watchdog/wdat_wdt.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c
> index e1b1fcfc02af..3065dd670a18 100644
> --- a/drivers/watchdog/wdat_wdt.c
> +++ b/drivers/watchdog/wdat_wdt.c
> @@ -54,6 +54,13 @@ module_param(nowayout, bool, 0);
>  MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
>  		 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
>  
> +#define WDAT_DEFAULT_TIMEOUT	30
> +
> +static int timeout = WDAT_DEFAULT_TIMEOUT;
> +module_param(timeout, int, 0);
> +MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds (default="
> +		 __MODULE_STRING(WDAT_DEFAULT_TIMEOUT) ")");
> +
>  static int wdat_wdt_read(struct wdat_wdt *wdat,
>  	 const struct wdat_instruction *instr, u32 *value)
>  {
> @@ -438,6 +445,22 @@ static int wdat_wdt_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, wdat);
>  
> +	/*
> +	 * Set initial timeout so that userspace has time to configure the
> +	 * watchdog properly after it has opened the device. In some cases
> +	 * the BIOS default is too short and causes immediate reboot.
> +	 */
> +	if (timeout * 1000 < wdat->wdd.min_hw_heartbeat_ms ||
> +	    timeout * 1000 > wdat->wdd.max_hw_heartbeat_ms) {
> +		dev_warn(dev, "Invalid timeout %d given, using %d\n",
> +			 timeout, WDAT_DEFAULT_TIMEOUT);
> +		timeout = WDAT_DEFAULT_TIMEOUT;
> +	}
> +
> +	ret = wdat_wdt_set_timeout(&wdat->wdd, timeout);
> +	if (ret)
> +		return ret;
> +
>  	watchdog_set_nowayout(&wdat->wdd, nowayout);
>  	return devm_watchdog_register_device(dev, &wdat->wdd);
>  }

Reviewed-by: Jean Delvare <jdelvare@suse.de>

Thanks Mika!

-- 
Jean Delvare
SUSE L3 Support

  reply index

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-12 14:59 [PATCH v2 0/3] ACPI / watchdog: Fix two reported issues Mika Westerberg
2020-02-12 14:59 ` [PATCH v2 1/3] ACPICA: Introduce ACPI_ACCESS_BYTE_WIDTH() macro Mika Westerberg
2020-02-12 21:02   ` Moore, Robert
2020-02-12 14:59 ` [PATCH v2 2/3] ACPI / watchdog: Fix gas->access_width usage Mika Westerberg
2020-02-12 15:55   ` Jean Delvare
2020-02-12 16:58     ` Mika Westerberg
2020-02-12 14:59 ` [PATCH v2 3/3] ACPI / watchdog: Set default timeout in probe Mika Westerberg
2020-02-12 16:04   ` Jean Delvare [this message]
2020-02-13 22:53 ` [PATCH v2 0/3] ACPI / watchdog: Fix two reported issues Rafael J. Wysocki

Reply instructions:

You may reply publically 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=20200212170416.3df50e15@endymion \
    --to=jdelvare@suse.de \
    --cc=erik.kaneda@intel.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rjw@rjwysocki.net \
    --cc=robert.moore@intel.com \
    --cc=tabraham@suse.com \
    --cc=wim@linux-watchdog.org \
    /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

Linux-Watchdog Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-watchdog/0 linux-watchdog/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-watchdog linux-watchdog/ https://lore.kernel.org/linux-watchdog \
		linux-watchdog@vger.kernel.org
	public-inbox-index linux-watchdog

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-watchdog


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git