[PATCH] watchdog: Fix watchdog enablement in SPL and TPL

Stefan Roese sr at denx.de
Thu Sep 2 09:49:59 CEST 2021


On 02.09.21 09:30, Marcel Ziswiler wrote:
> On Tue, 2021-08-31 at 11:17 +0200, Marek Vasut wrote:
>> On 8/31/21 8:49 AM, Marcel Ziswiler wrote:
>>> Hi Marek
>>>
>>> On Tue, 2021-08-31 at 00:03 +0200, Marek Vasut wrote:
>>>> Commit 830d29ac372 ("watchdog: Allow to use CONFIG_WDT without starting watchdog")
>>>> completely broke WDT operation in both SPL and TPL, in either case those
>>>> WDTs are never enabled. Fix it by filling in the missing Kconfig options
>>>> for SPL and TPL.
>>>>
>>>> Fixes: 830d29ac372 ("watchdog: Allow to use CONFIG_WDT without starting watchdog")
>>>> Signed-off-by: Marek Vasut <marex at denx.de>
>>>> Cc: Pali Rohar <pali at kernel.org>
>>>> Cc: Stefan Roese <sr at denx.de>
>>>> ---
>>>>    drivers/watchdog/Kconfig | 20 ++++++++++++++++++++
>>>>    1 file changed, 20 insertions(+)
>>>>
>>>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>>>> index f0ff2612a6b..65d974c4dd5 100644
>>>> --- a/drivers/watchdog/Kconfig
>>>> +++ b/drivers/watchdog/Kconfig
>>>> @@ -273,4 +273,24 @@ config SPL_WDT
>>>>             Enable driver model for watchdog timer in SPL.
>>>>             This is similar to CONFIG_WDT in U-Boot.
>>>>    
>>>> +config SPL_WATCHDOG_AUTOSTART
>>>> +       bool "Automatically start watchdog timer in SPL"
>>>> +       depends on SPL && WDT
>>>> +       default y
>>>> +       help
>>>> +         Automatically start watchdog timer and start servicing it during
>>>> +         SPL phase. Enabled by default. Disable this option if you want
>>>> +         to compile U-Boot with CONFIG_WDT support but do not want to
>>>> +         activate watchdog, like when CONFIG_WDT option is disabled.
>>>> +
>>>> +config TPL_WATCHDOG_AUTOSTART
>>>> +       bool "Automatically start watchdog timer in TPL"
>>>> +       depends on TPL && WDT
>>>> +       default y
>>>> +       help
>>>> +         Automatically start watchdog timer and start servicing it during
>>>> +         TPL phase. Enabled by default. Disable this option if you want
>>>> +         to compile U-Boot with CONFIG_WDT support but do not want to
>>>> +         activate watchdog, like when CONFIG_WDT option is disabled.
>>>> +
>>>>    endmenu
>>>
>>> Those Kconfig entries look fine. However, I am wondering where exactly they get used. Am I missing
>>> anything?
>>
>> Have a look at the patch this Fixes:, if those Kconfig entries are not
>> present, the WDT is disabled in SPL and TPL unconditionally.
> 
> Yes, I did. But I guess I was not aware of how exactly that
> CONFIG_IS_ENABLED(WATCHDOG_AUTOSTART) behaves.
> While I have not really found this documented or the implementation
> thereof I assume it pre-fixes config stuff
> with SPL_ resp. TPL_ when building those flavors, correct?

Yes.

> I am wondering how many others are unaware of this (just like the
> author of the patch this fixes). Maybe we
> should at least document this properly somewhere, not?

If this is not the case (I did not check this), then yes. A
documentation for these CONFIG_IS_ENABLED() and IS_ENABLED()
helpers would be very good.

>> It could be that if you're using some non-free or proprietary preloader
>> instead of SPL, you won't run into this problem.
> 
> No, don't worry. I am not running anything evil (;-p).

You won't run into any issues with this problem, as it is fixed in
a different way in master already, as Rasmus already pointed out:

https://lore.kernel.org/u-boot/f015f55e-3225-655e-2e8b-672e058a8ae5@denx.de/

$ git describe --contains 5fc094351381c4254098a25404d8712324b6918e
v2021.10-rc1~19^2

commit 5fc094351381c4254098a25404d8712324b6918e
Author: Teresa Remmet <t.remmet at phytec.de>
Date:   Thu Jul 15 13:26:32 2021 +0200

     drivers: watchdog: wdt-uclass: Use IS_ENABLED for WATCHDOG_AUTOSTART

     There is no separate SPL/TPL config for WATCHDOG_AUTOSTART.
     So use IS_ENABLED instead of CONFIG_IS_ENABLED to make watchdog
     working in SPL again.

     Fixes: 830d29ac3721 ("watchdog: Allow to use CONFIG_WDT without 
starting watchdog")
     Signed-off-by: Teresa Remmet <t.remmet at phytec.de>
     Reviewed-by: Stefan Roese <sr at denx.de>

diff --git a/drivers/watchdog/wdt-uclass.c b/drivers/watchdog/wdt-uclass.c
index a0c2429e5a43..17334dbda6c9 100644
--- a/drivers/watchdog/wdt-uclass.c
+++ b/drivers/watchdog/wdt-uclass.c
@@ -53,7 +53,7 @@ int initr_watchdog(void)
                                                     4 * reset_period) / 4;
         }

-       if (!CONFIG_IS_ENABLED(WATCHDOG_AUTOSTART)) {
+       if (!IS_ENABLED(CONFIG_WATCHDOG_AUTOSTART)) {
                 printf("WDT:   Not starting\n");
                 return 0;
         }


More information about the U-Boot mailing list