Re: [PATCH v2 3/3] watchdog: pm8916_wdt: Handle watchdog enabled by bootloader

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 29 Jun 2022 at 10:48, Stephan Gerhold
<stephan.gerhold@xxxxxxxxxxxxxxx> wrote:
>
> The bootloader might already enable the watchdog to catch hangs
> during the boot process. In that case the kernel needs to ping
> the watchdog temporarily until userspace is fully started.
>
> Add a check for this in the probe() function and set the WDOG_HW_RUNNING
> flag to make the watchdog core handle this automatically.
>
> Signed-off-by: Stephan Gerhold <stephan.gerhold@xxxxxxxxxxxxxxx>

Reviewed-by: Loic Poulain <loic.poulain@xxxxxxxxxx>

> ---
> Changes in v2: Improve error handling (suggested by Guenter)
> ---
>  drivers/watchdog/pm8916_wdt.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/drivers/watchdog/pm8916_wdt.c b/drivers/watchdog/pm8916_wdt.c
> index 49f1a5204526..f4bfbffaf49c 100644
> --- a/drivers/watchdog/pm8916_wdt.c
> +++ b/drivers/watchdog/pm8916_wdt.c
> @@ -142,6 +142,7 @@ static int pm8916_wdt_probe(struct platform_device *pdev)
>         struct device *dev = &pdev->dev;
>         struct pm8916_wdt *wdt;
>         struct device *parent;
> +       unsigned int val;
>         int err, irq;
>         u8 poff[2];
>
> @@ -199,6 +200,15 @@ static int pm8916_wdt_probe(struct platform_device *pdev)
>         if (poff[1] & PON_POFF_REASON2_OTST3)
>                 wdt->wdev.bootstatus |= WDIOF_OVERHEAT;
>
> +       err = regmap_read(wdt->regmap, wdt->baseaddr + PON_PMIC_WD_RESET_S2_CTL2,
> +                         &val);
> +       if (err)  {
> +               dev_err(dev, "failed to check if watchdog is active: %d\n", err);
> +               return err;
> +       }
> +       if (val & S2_RESET_EN_BIT)
> +               set_bit(WDOG_HW_RUNNING, &wdt->wdev.status);
> +
>         /* Configure watchdog to hard-reset mode */
>         err = regmap_write(wdt->regmap,
>                            wdt->baseaddr + PON_PMIC_WD_RESET_S2_CTL,
> --
> 2.30.2
>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux