Hi Günter and Geert, Catching up on the subject (because I was sleeping here in the US...) On Friday, February 17, 2017, Geert Uytterhoeven wrote: > > FWIW, the watchdog subsystem should support that easily, even with 125 > > ms hardware timeout. We added that capability for that very purpose. > > That would only fail if the system is stuck with interrupts disabled > > for more than 125 ms, which seems unlikely. I think the gpio watchdog > > on some systems has a similar low hardware timeout. > > I also thought 125ms was a bit short, but I'm happy to be proven wrong! > Let's make a real watchdog driver instead ;-) OK, I'll see about switching over to a real watchdog driver. As long as I can get my reset handler, I'll be happy. Besides, if I get the 8-bit counter register changed to 16-bit (a useful WDT), then I already have a WDT made. The good thing is that the DT binding will stay exactly the same, I just need a new driver. FWIW, if I was making a real product I would always have a WDT running (but with a 1-3 second timeout just to make sure I was completely dead). # side note, I tell people to set up a DMA with a timer trigger and automatically feed the WDT that way, then they can set the DMA count to whatever failsafe timeout they want. Not sure if I could submit that kind of hackery in an upstream driver. > >>> I know Geert's suggestion was in reference to saving power...but in > >>> reality it's probably negligible when we are talking about 7.7us. > >>> The reboot is going to automatically shut off all the peripherals > >>> clocks as well. > >> > >> Maybe udelay(10); would have been more acceptable (and appropriate). > > > > Inside the while (1) loop? That's the same as a plain "while (1) ;" > > ;-) Or just udelay(10) and return, with the latter never happening if > > everything goes well? Then the next restart handler will be tried, if > available. > > > > That is what I meant. Or use udelay(20) to be on the safe side. OK. Sounds like we agree on: /* Start timer */ writew(WTCSR_MAGIC | WTSCR_WT | WTSCR_TME, base + WTCSR); /* Wait for WDT overflow (reset) */ Udelay(20); return NOTIFY_DONE; } FYI, I'll be at ELC next week, so I might not get to this until after then. Thanks for the discussion. Cheers Chris