[PATCH] board: mediatek: disable watchdog on BananaPi R2

Stefan Roese sr at denx.de
Mon Jan 11 08:48:59 CET 2021



On 11.01.21 08:17, Heinrich Schuchardt wrote:
> Am 11. Januar 2021 08:02:12 MEZ schrieb Stefan Roese <sr at denx.de>:
>> Added Heinrich to Cc.
>>
>> On 10.01.21 19:44, Matthias Brugger wrote:
>>> On 09/01/2021 15:57, Stefan Roese wrote:
>>>> On 09.01.21 03:32, Matthias Brugger wrote:
>>>>> On 08/01/2021 08:39, Stefan Roese wrote:
>>>>>> On 07.01.21 16:36, matthias.bgg at kernel.org wrote:
>>>>>>> From: Matthias Brugger <mbrugger at suse.com>
>>>>>>>
>>>>>>> Watchdog timeout comes in before we are able to load the
>>>>>>> kernel and reset the watchdog. Disable the watchdog late in the
>> boot
>>>>>>> process to be able to boot the board.
>>>>>>
>>>>>> Can't you change the WDT reset timeout instead to a higher value?
>>>>>>
>>>>>
>>>>> I tried that, but the HW has a max timeout of 15984 ms.
>> Unfortunately that's not
>>>>> enough.
>>>>
>>>> Nearly 16 seconds is not enough to boot into Linux so that the Linux
>>>> watchdog daemon can take control?
>>>>
>>>
>>> Exactly. I'm using a standard distro image. I think the main problem
>> is, that it
>>> needs 14 seconds for the EFI stub to actually boot the kernel.
>>
>> I've not much experience (yet) with the "EFI stub". But if it takes
>> this
>> long, wouldn't it make sense that this stub also supports the WDT?
> 
> efi_timer_check() calls WATCHDOG_RESET() trying to avoid that the
> hardware watchdog is triggered.

So efi_timer_check() is called quite frequently and should be enough
to reset the U-Boot WDT while residing in EFI? Not sure, why the reset
occurs in Matthias's case then.

> There is a software watchdog
> defaulting to 5 minutes in efi_watchdog.c which can be modified
> via the EFI API.
> 
> Is there a U-Boot API to disable the hardware watchdog?

Yes:

/*
  * Stop the timer, thus disabling the Watchdog. Use wdt_start to start 
it again.
  *
  * @dev: WDT Device
  * @return: 0 if OK, -ve on error
  */
int wdt_stop(struct udevice *dev);

Thanks,
Stefan

> Best regards
> 
> Heinrich
> 
> 
>>
>> Thanks,
>> Stefan
>>
>>> I've already the
>>> watchdog timer as build-in (which is not the best to do, taking into
>> account
>>> that we don't want to bloat our distro kernel with random board
>> specific drivers
>>> build-in. If we I had the watchdog driver as kernel module it would
>> take forever
>>> to get that loaded.
>>>
>>> You can find a serial log with timestamp from the moment U-Boot got
>> loaded until
>>> the kernel actually boots here:
>>> https://paste.opensuse.org/98390849
>>>
>>> Regards,
>>> Matthias
>>>
>>>> Thanks,
>>>> Stefan
>>>>
>>>>> Regards,
>>>>> Matthias
>>>>>
>>>>>> Thanks,
>>>>>> Stefan
>>>>>>
>>>>>>> Signed-off-by: Matthias Brugger <mbrugger at suse.com>
>>>>>>>
>>>>>>> ---
>>>>>>>
>>>>>>>      board/mediatek/mt7623/mt7623_rfb.c | 8 ++++++++
>>>>>>>      configs/mt7623n_bpir2_defconfig    | 1 +
>>>>>>>      2 files changed, 9 insertions(+)
>>>>>>>
>>>>>>> diff --git a/board/mediatek/mt7623/mt7623_rfb.c
>>>>>>> b/board/mediatek/mt7623/mt7623_rfb.c
>>>>>>> index 984e75ccaf..22120be412 100644
>>>>>>> --- a/board/mediatek/mt7623/mt7623_rfb.c
>>>>>>> +++ b/board/mediatek/mt7623/mt7623_rfb.c
>>>>>>> @@ -5,6 +5,7 @@
>>>>>>>        #include <common.h>
>>>>>>>      #include <mmc.h>
>>>>>>> +#include <watchdog.h>
>>>>>>>        DECLARE_GLOBAL_DATA_PTR;
>>>>>>>      @@ -40,3 +41,10 @@ int mmc_get_env_dev(void)
>>>>>>>          return mmc_get_boot_dev();
>>>>>>>      }
>>>>>>>      #endif
>>>>>>> +
>>>>>>> +#ifdef CONFIG_BOARD_LATE_INIT
>>>>>>> +int board_late_init(void)
>>>>>>> +{
>>>>>>> +    wdt_stop(gd->watchdog_dev);
>>>>>>> +}
>>>>>>> +#endif
>>>>>>> diff --git a/configs/mt7623n_bpir2_defconfig
>> b/configs/mt7623n_bpir2_defconfig
>>>>>>> index 9177c17dff..fe0b6259dd 100644
>>>>>>> --- a/configs/mt7623n_bpir2_defconfig
>>>>>>> +++ b/configs/mt7623n_bpir2_defconfig
>>>>>>> @@ -14,6 +14,7 @@ CONFIG_FIT_VERBOSE=y
>>>>>>>      CONFIG_BOOTDELAY=3
>>>>>>>      CONFIG_SYS_CONSOLE_IS_IN_ENV=y
>>>>>>>      CONFIG_DEFAULT_FDT_FILE="mt7623n-bananapi-bpi-r2.dtb"
>>>>>>> +CONFIG_BOARD_LATE_INIT=y
>>>>>>>      # CONFIG_DISPLAY_BOARDINFO is not set
>>>>>>>      CONFIG_SYS_PROMPT="U-Boot> "
>>>>>>>      CONFIG_CMD_BOOTMENU=y
>>>>>>>
>>>>>>
>>>>>>
>>>>>> Viele Grüße,
>>>>>> Stefan
>>>>>>
>>>>>
>>>>
>>>>
>>>> Viele Grüße,
>>>> Stefan
>>>>
>>>
>>
>>
>> Viele Grüße,
>> Stefan
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list