[U-Boot] OMAP watchdog timer reset on BBB

Suniel Mahesh sunil.m at techveda.org
Mon Sep 16 07:05:19 UTC 2019

Hi all,

On 14/09/19 12:55, Sam Protsenko wrote:
> Hi Grygorii,
> On Fri, Sep 13, 2019 at 8:58 PM Grygorii Strashko
> <grygorii.strashko at ti.com> wrote:
>> On 12/09/2019 19:33, Sam Protsenko wrote:
>>> Hi Stefan,
>>> On Thu, Sep 12, 2019 at 5:38 PM Stefan Roese <sr at denx.de> wrote:
>>>> Hi Sam,
>>>> On 12.09.19 15:45, Sam Protsenko wrote:
>>>>> Hi Suniel,
>>>>> After transition to DM WDT, watchdog timer on BeagleBone Black resets
>>>>> the board after 1 minute or so. I'm using this defconfig: [1]. After
>>>>> disabling CONFIG_WDT and CONFIG_WATCHDOG options the board doesn't
>>>>> reset. I guess it might be happening on other boards using
>>>>> CONFIG_WDT_OMAP3 as well. The issue can be reproduced by stopping in
>>>>> U-Boot shell (=>) and waiting for 1 minute.
>>>>> Do you know by chance why it might be happening, or maybe some fix
>>>>> already exists?
>>>>> Thanks!
>>>>> [1] https://pastebin.ubuntu.com/p/Zz5bY6cYXS/
>>>> So you have enabled the watchdog and should see something like this
>>>> upon bootup:
>>>> WDT:   Started without servicing (60s timeout)
>>>> Is this correct? Then you need to enable the U-Boot internal WDT
>>>> servicing by enabling CONFIG_WATCHDOG as well, as this will
>>>> result in the internal U-Boot servicing of the watchdog. Then
>>>> you should see this upon bootup and no reset will appear in
>>>> U-Boot:
>>>> WDT:   Started with servicing (60s timeout)
>>> I'm seeing this ("with servicing") line, and CONFIG_WATCHDOG is
>>> already enabled in am335x_evm_defconfig. So I think it's an issue,
>>> which *probably* appeared when watchdog drivers were converted to
>>> Driver Model (this defconfig is using CONFIG_WDT + CONFIG_WDT_OMAP3
>>> options). Any clues what can be wrong?
>>>> Does this help?
>> It seems logic of hw_watchdog_reset() and omap3_wdt_reset() is different.
>> Pay attention at wdt_trgr_pattern.
>> It seems that
>>         priv->wdt_trgr_pattern = 0x1234;
>> need to be moved in omap3_wdt_probe()
> Thanks a lot for the investigation. I'll check that once I have some spare time.

I have done some investigation and I am unable to conclude the behaviour(though the problem got fixed)
Here are my observations:

watchdog timer doesn't reset the board if booted via sd-card and serial.
https://paste.ubuntu.com/p/tjcPhv4FMQ/ (sd card boot)
https://pastebin.ubuntu.com/p/X4tkp4ngMK/ (serial boot)
https://pastebin.ubuntu.com/p/WvS9PZb45p/ (serial boot with print messages)

Sam was right. watchdog timer is resetting the board after conversion to DM, but only if we booted via emmc.
earlier for some reason I couldn't concentrate on emmc booting. "my bad".

analyzed the behaviour, the count is getting reset in the register when ever watchdog_reset is called but for some reason 
at around < 60s, the board gets reset (this shouldn't happen...!!). please go through the pastebin link:
https://pastebin.ubuntu.com/p/td6c4SQmnm/ (emmc boot)

As pointed by Grygorii, I just moved priv->wdt_trgr_pattern into probe and the problem disappears. didn't understand how that
change made a difference. Generally as per documentation all initializations are to be done in probe (but still). 
Why this is not happening on the other two bootmodes (sd-card and serial) ?
Can some body shed some light for this behaviour ?

The problem seems to be fixed, I will be patching u-boot in a while. Request Sam if possible to check/test/deploy the change on the 
board and acknowledge. (I have already tested the changeset and its fixed at my end)


>> --
>> Best regards,
>> grygorii

More information about the U-Boot mailing list