Linux-Watchdog Archive on lore.kernel.org
 help / color / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Jean Delvare <jdelvare@suse.de>
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, Tom Abraham <tabraham@suse.com>
Subject: Re: [PATCH 3/3] ACPI / watchdog: Set default timeout in probe
Date: Wed, 12 Feb 2020 14:13:48 +0200
Message-ID: <20200212121348.GD2667@lahna.fi.intel.com> (raw)
In-Reply-To: <20200212130701.1682e406@endymion>

On Wed, Feb 12, 2020 at 01:07:01PM +0100, Jean Delvare wrote:
> On Wed, 12 Feb 2020 14:05:40 +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 | 24 ++++++++++++++++++++++++
> >  1 file changed, 24 insertions(+)
> > 
> > diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c
> > index 2132018f031d..7b0257163522 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)
> >  {
> > @@ -308,6 +315,7 @@ static int wdat_wdt_probe(struct platform_device *pdev)
> >  	struct device *dev = &pdev->dev;
> >  	const struct acpi_wdat_entry *entries;
> >  	const struct acpi_table_wdat *tbl;
> > +	int default_timeout = timeout;
> >  	struct wdat_wdt *wdat;
> >  	struct resource *res;
> >  	void __iomem **regs;
> > @@ -438,6 +446,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.
> > +	 */
> > +	default_timeout = timeout;
> 
> You have already done that at variable declaration time.
> 
> > +	if (timeout < wdat->wdd.min_hw_heartbeat_ms ||
> > +	    timeout > wdat->wdd.max_hw_heartbeat_ms)
> 
> Comparing seconds to milliseconds is unlikely to give the expected
> result.
> 
> > +		default_timeout = WDAT_DEFAULT_TIMEOUT;
> > +	else
> > +		default_timeout = timeout;
> 
> You have already done that twice ;-)
> 
> > +
> > +	ret = wdat_wdt_set_timeout(&wdat->wdd, timeout);
> 
> You must pass "default_timeout" here, not "timeout", else the check
> before serves no purpose. It might be less confusing to not introduce a
> separate variable and just tweak timeout in place?

Heh, looks like this whole patch series is completely broken. Thanks for
taking time to review it and spotting all those errors. I'll fix all
these up in v2.

Sorry about this mess.

  reply index

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-10 10:16 wdat_wdt: access width inconsistency Jean Delvare
2020-02-10 11:23 ` Mika Westerberg
2020-02-11 13:11   ` Jean Delvare
2020-02-11 13:59     ` Mika Westerberg
2020-02-11 16:25       ` Jean Delvare
2020-02-11 16:37         ` Mika Westerberg
2020-02-11 17:03           ` Jean Delvare
2020-02-12 11:05             ` [PATCH 1/3] ACPICA: Introduce ACPI_ACCESS_BIT_WIDTH() macro Mika Westerberg
2020-02-12 11:05               ` [PATCH 2/3] ACPI / watchdog: Fix gas->access_width usage Mika Westerberg
2020-02-12 11:56                 ` Jean Delvare
2020-02-12 12:10                   ` Mika Westerberg
2020-02-12 11:05               ` [PATCH 3/3] ACPI / watchdog: Set default timeout in probe Mika Westerberg
2020-02-12 12:07                 ` Jean Delvare
2020-02-12 12:13                   ` Mika Westerberg [this message]
2020-02-12 11:52               ` [PATCH 1/3] ACPICA: Introduce ACPI_ACCESS_BIT_WIDTH() macro Jean Delvare
2020-02-12 12:08                 ` Mika Westerberg
2020-02-11 16:45         ` wdat_wdt: access width inconsistency Guenter Roeck
2020-02-12 10:30   ` Jean Delvare
2020-02-12 10:47     ` Mika Westerberg
2020-02-12 11:05       ` Jean Delvare

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=20200212121348.GD2667@lahna.fi.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=jdelvare@suse.de \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=rjw@rjwysocki.net \
    --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