Hi Suniel, Grygorii, Tested eMMC boot on BBB with this patch (suggested by Grygorii):
[1] https://pastebin.ubuntu.com/p/pKhX6Jsjr9/ I can confirm that it works fine now, with patch applied, no reset occurs. Guys, please send out the patch, you can use [1] as a boilerplate. Thanks! On Mon, Sep 16, 2019 at 11:43 AM Grygorii Strashko <grygorii.stras...@ti.com> wrote: > > > > On 16/09/2019 10:05, Suniel Mahesh wrote: > > 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.stras...@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 <s...@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 ? > > It's kinda simple - non DM code defines wdt_trgr_pattern as static so it's > initialized only once. > Your code initializes it on every reset, so violates TRM. > > TRM says: > "The specific reload sequence is performed whenever the written value on the > WDT_WTGR register differs > from its previous value. In this case, reload is executed in the same way as > an overflow autoreload, but > without the generation of a reset pulse." > > > > > 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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot