imx8 regression: cyclic_register for watchdog at 30280000 failed

Stefan Roese sr at denx.de
Fri Oct 28 15:29:29 CEST 2022


Hi Rasmus,

On 28.10.22 14:14, Rasmus Villemoes wrote:
> On 26/10/2022 21.06, Tim Harvey wrote:
> 
>> 29caf9305b6f cyclic: Use schedule() instead of WATCHDOG_RESET()
>> ^^^ build issue resolved, boot issue on imx8mm-venice resolved, but
>> this is where we now encounter watchdog failures in both the SPL and
>> U-Boot:
>>
>> SPL:
>> cyclic_register for watchdog at 30280000 failed
>> WDT:   Failed to start watchdog at 30280000
>>
>> The failure here is 'Cyclic IF not ready yet' (which should probably
>> be an error print not a debug print). In this case the watchdog gets
>> started but never reset via cyclic. This is due to cyclic_init never
>> being called in the SPL - where is that supposed to occur?
> 
> Actually, the code both in current master and at 29caf9305b6f does
> 
>          if (!gd->cyclic->cyclic_ready) {
>                  pr_debug("Cyclic IF not ready yet\n");
>                  return NULL;
>          }
> 
> and when cyclic_init() hasn't been called, that gd->cyclic is NULL.

Ugh!

> Unfortunately, on the imx8m platforms, 0 is a perfectly valid address
> (that's where the bootrom code lives), so the fact that this even
> triggers is mostly random, AFAICT; there might as well have been a
> non-zero byte at that offset from address 0. But then things would
> probably have exploded in interesting ways when the new cyclic_info
> would be added to the garbage gd->cyclic->cyclic_list (maybe the write
> to that memory would just result in a reset or hang).
> 
> Anyway, the series I just sent removes this check entirely and should
> work in SPL as well without the cyclic_init(), but please do test.

Thanks again for working on this. I'll try to look into this very soon
(weekend or beginning of next week). Looks very promising. :)

Thanks,
Stefan


More information about the U-Boot mailing list