From: sashiko-bot@kernel.org
To: "Paul Louvel" <paul.louvel@bootlin.com>
Cc: linux-watchdog@vger.kernel.org
Subject: Re: [PATCH v4 6/6] watchdog: w83627hf_wdt: Add minute mode counting
Date: Tue, 13 Oct 2026 14:08:04 +0000 [thread overview]
Message-ID: <sashiko-outbox-169886@kernel.org> (raw)
In-Reply-To: <20261013-w83627hf_wdt-improvements-v4-6-b6f6b60a9566@bootlin.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] watchdog: spurious hardware reboot during timeout mode transition
--
commit e9913194bed75434ff662763db21c93683fc01dc
Author: Paul Louvel <paul.louvel@bootlin.com>
watchdog: w83627hf_wdt: Add minute mode counting
All of the chips supported by the driver can be set to minute mode,
allowing timeout value up to 255 minutes. Add it to the driver.
> diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c
> index 0b9195e7e95ef..8f78fe64acde9 100644
> --- a/drivers/watchdog/w83627hf_wdt.c
> +++ b/drivers/watchdog/w83627hf_wdt.c
[ ... ]
> @@ -290,6 +284,7 @@ static int w83627hf_init(struct watchdog_device *wdog, enum chips chip)
> static int wdt_set_time(struct watchdog_device *wdog, unsigned int timeout)
> {
> struct w83627hf_data *data = watchdog_get_drvdata(wdog);
> + unsigned char ctrl;
> int ret;
>
> ret = superio_enter(data->sio->addr, data->sio->cfg_enter);
> @@ -297,6 +292,15 @@ static int wdt_set_time(struct watchdog_device *wdog, unsigned int timeout)
> return ret;
>
> superio_select(data->sio->addr, W83627HF_LD_WDT);
> +
> + ctrl = superio_inb(data->sio->addr, data->reg->control);
> +
> + if (data->minute_mode)
> + ctrl |= WDT_CTRL_MINUTE_MODE;
> + else
> + ctrl &= ~WDT_CTRL_MINUTE_MODE;
> +
> + superio_outb(data->sio->addr, data->reg->control, ctrl);
> superio_outb(data->sio->addr, data->reg->timeout, timeout);
[Severity: High]
Can this sequence trigger a spurious hardware reboot during a timeout mode
transition?
In wdt_set_time(), the hardware control register is updated first to change
between minute and second modes, immediately followed by the timeout register:
superio_outb(data->sio->addr, data->reg->control, ctrl);
superio_outb(data->sio->addr, data->reg->timeout, timeout);
When transitioning from minute mode to second mode (for example, from 1 minute
to 10 seconds), the hardware control register is updated first. The hardware
timer momentarily retains its old value (1) but interprets it under the new
unit (seconds), meaning it evaluates that only 1 second is left.
If the thread is preempted (e.g., by an SMI or a hypervisor) between these two
superio_outb() calls for longer than this intermediate duration, will the
hardware watchdog fire and spuriously reboot the system?
Would it be safer to temporarily disable the watchdog (by writing 0 to the
timeout register) before modifying the control register's mode bit?
> superio_exit(data->sio->addr, data->sio->cfg_leave);
>
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261013-w83627hf_wdt-improvements-v4-0-b6f6b60a9566@bootlin.com?part=6
next prev parent reply other threads:[~2026-10-13 14:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 13:58 [PATCH v4 0/6] watchdog: w83627hf_wdt: Convert driver to the driver model and add minute support Paul Louvel
2026-10-13 13:58 ` [PATCH v4 1/6] watchdog: w83627hf_wdt: Fix watchdog identity truncation Paul Louvel
2026-10-13 13:58 ` [PATCH v4 2/6] watchdog: w83627hf_wdt: Replace magic numbers with descriptive macros Paul Louvel
2026-10-13 13:58 ` [PATCH v4 3/6] watchdog: w83627hf_wdt: Convert to platform driver model Paul Louvel
2026-10-13 13:58 ` [PATCH v4 4/6] watchdog: w83627hf_wdt: Move register offsets into driver data Paul Louvel
2026-10-13 13:58 ` [PATCH v4 5/6] watchdog: w83627hf_wdt: Store Super I/O configurations in platform data Paul Louvel
2026-10-13 13:58 ` [PATCH v4 6/6] watchdog: w83627hf_wdt: Add minute mode counting Paul Louvel
2026-10-13 14:08 ` sashiko-bot [this message]
2026-10-13 14:22 ` Paul Louvel
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=sashiko-outbox-169886@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=paul.louvel@bootlin.com \
--cc=sashiko-reviews@lists.linux.dev \
/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.