sysupgrade broken on imx nand targets (and maybe others too)

Lanchon lanchon at gmail.com
Tue Jan 24 14:43:26 PST 2023



On 1/24/23 18:08, Koen Vandeputte wrote:
>
> Hi,
>
> I think our previous mails overlapped a bit as  I didn't notice your
> previous response :)
>
> I'll send the data tomorrow.
> I'm also wondering if adding a sleep before ubiformat in the old way
> would influence/break it's behaviour?
possibly yes
>
>
> Piotr,
> Would you have any idea here?
>
>
> Thanks again for your efforts,
>
> Koen


if your active watchdog device is /dev/MyWatchdog, then...


just before the line:

${gz}cat "$ubi_file" | ubiformat "/dev/mtd$mtdnum" -y -f - && ubiattach 
-m "$mtdnum"

you could add this to try disable the watchdog:

echo -n V >/dev/MyWatchdog


or else you could tickle the watchdog while flashing like this:

${gz}cat "$ubi_file" | ubiformat "/dev/mtd$mtdnum" -y -f - 2>&1 | tee 
/dev/MyWatchdog && ubiattach -m "$mtdnum"

BUT... this is a hack, cause shell option pipefail would be needed to 
detect a failure of ubiformat then, as normally only the exit code of 
the last piped process gets returned from the pipe expression.


so these are just tests, not fixes.


another dirty thing you could do is doubling the watchdog timeout period 
for your platform. this at least could maybe be accepted as a stopgap 
band aid in the openwrt tree. but the race condition remains, and it 
will bite back sometime. a real fix for the race should be implemented.

BTW your watchdog seems to be:
https://www.kernelconfig.io/config_imx2_wdt


thanks!





More information about the openwrt-devel mailing list