From: Guenter Roeck <linux@roeck-us.net>
To: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: linux-watchdog@vger.kernel.org,
linux-renesas-soc@vger.kernel.org,
Geert Uytterhoeven <geert@linux-m68k.org>
Subject: Re: [RFC PATCH] watchdog: renesas_wdt: support handover from bootloader
Date: Wed, 17 Apr 2019 11:05:56 -0700 [thread overview]
Message-ID: <20190417180556.GA18401@roeck-us.net> (raw)
In-Reply-To: <20190415105201.2078-1-wsa+renesas@sang-engineering.com>
On Mon, Apr 15, 2019 at 12:52:01PM +0200, Wolfram Sang wrote:
> Support an already running watchdog by checking its enable bit and set
> up the status accordingly before registering the device.
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
>
> This patch was tested using a Renesas Salvator XS board (R-Car M3N). It works.
> However, there is a small window where the watchdog clock is disabled, namely
> after the MSSR clock driver initializes it until RuntimePM of the watchdog
> driver takes over. If the system hangs in this window, bad luck. So, I'd think
> it makes sense to have this clock either always-on or to keep the state which
> came from the firmware. Geert, what do you think?
>
> drivers/watchdog/renesas_wdt.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/watchdog/renesas_wdt.c b/drivers/watchdog/renesas_wdt.c
> index 565dbc1ec638..37d757288b22 100644
> --- a/drivers/watchdog/renesas_wdt.c
> +++ b/drivers/watchdog/renesas_wdt.c
> @@ -179,6 +179,7 @@ static int rwdt_probe(struct platform_device *pdev)
> struct clk *clk;
> unsigned long clks_per_sec;
> int ret, i;
> + u8 csra;
>
> if (rwdt_blacklisted(&pdev->dev))
> return -ENODEV;
> @@ -198,8 +199,8 @@ static int rwdt_probe(struct platform_device *pdev)
> pm_runtime_enable(&pdev->dev);
> pm_runtime_get_sync(&pdev->dev);
> priv->clk_rate = clk_get_rate(clk);
> - priv->wdev.bootstatus = (readb_relaxed(priv->base + RWTCSRA) &
> - RWTCSRA_WOVF) ? WDIOF_CARDRESET : 0;
> + csra = readb_relaxed(priv->base + RWTCSRA);
> + priv->wdev.bootstatus = csra & RWTCSRA_WOVF ? WDIOF_CARDRESET : 0;
> pm_runtime_put(&pdev->dev);
>
> if (!priv->clk_rate) {
> @@ -237,6 +238,16 @@ static int rwdt_probe(struct platform_device *pdev)
> /* This overrides the default timeout only if DT configuration was found */
> watchdog_init_timeout(&priv->wdev, 0, &pdev->dev);
>
> + if (csra & RWTCSRA_TME) {
> + /* Ensure properly initialized dividers */
> + rwdt_start(&priv->wdev);
> + set_bit(WDOG_HW_RUNNING, &priv->wdev.status);
> + //FIXME: We are missing pm_runtime_put in some code paths to
> + // to balance PM calls. We first need to decide if we maybe
> + // should have the RWDT clock always-on or if using RPM for
> + // clock management is OK.
Maybe I am missing something, but ..
Is handover even possible if the clock is controlled by clock management ?
Seems to me the clock would then be turned off through pm, which effectively
turns off the watchdog. So it will be off between clock/pm initialization
and the above code, meaning wdt handover from the boot loader is for all
practical purposes useless if the kernel gets stuck in between.
Thanks,
Guenter
> + }
> +
> ret = watchdog_register_device(&priv->wdev);
> if (ret < 0)
> goto out_pm_disable;
> --
> 2.11.0
>
next prev parent reply other threads:[~2019-04-17 18:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-15 10:52 [RFC PATCH] watchdog: renesas_wdt: support handover from bootloader Wolfram Sang
2019-04-17 18:05 ` Guenter Roeck [this message]
2019-04-17 19:01 ` Wolfram Sang
2019-05-09 7:38 ` Geert Uytterhoeven
2019-05-24 13:52 ` Wolfram Sang
2019-06-07 20:41 ` Guenter Roeck
2019-06-07 20:55 ` Wolfram Sang
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=20190417180556.GA18401@roeck-us.net \
--to=linux@roeck-us.net \
--cc=geert@linux-m68k.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=wsa+renesas@sang-engineering.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).