Hi, On 17.01.22 23:19, Jules Maselbas wrote: > From: Louis Morhet <lmorhet@xxxxxxxxx> > > As the watchdog may be set by a lower stage in the boot chain, and for > a good reason (precisely to ensure reliable update when something > unexpected happens during the boot chain), it is a bad idea to always > disable it during probe. > > We should either have a mechanism to refresh it on a regular basis in > barebox itself and set it to something bigger for Linux, or handle it > transparently and let the previous stage set the global watchdog up to > Linux. This patch assumes for now the latter. The latter is preferable, because barebox execution time should be bound and the watchdog ensures that in face of spurious bugs. There's an autopoll mechanism that tries to ensure forward progress by polling the watchdog in is_timeout. The idea is that loops checking for is_timeout will either see forward progress or propagate an error. This is more robust than explicitly littering around WATCHDOG_PING()s, but it's not immune to all bugs, so turning on the watchdog very early is IMO the best course of action. For development use, you can always do wd 0 or wd -x which I just sent out and CC'd you on. wd -x will disable all watchdogs either by wd 0 if supported by the hardware and driver or by enabling autopolling. It's a strict development feature (like wd in general. There's global.boot.watchdog_timeout for normal use during booting). > Signed-off-by: Louis Morhet <lmorhet@xxxxxxxxx> > Signed-off-by: Jules Maselbas <jmaselbas@xxxxxxxxx> For this patch, Reviewed-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> Cheers, Ahmad > --- > drivers/watchdog/kvx_wdt.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/watchdog/kvx_wdt.c b/drivers/watchdog/kvx_wdt.c > index da19136fda..df9430769b 100644 > --- a/drivers/watchdog/kvx_wdt.c > +++ b/drivers/watchdog/kvx_wdt.c > @@ -73,11 +73,9 @@ static int kvx_wdt_drv_probe(struct device_d *dev) > wdd->hwdev = dev; > wdd->set_timeout = kvx_wdt_set_timeout; > > - /* Be sure that interrupt are disable */ > + /* Be sure that interrupt are disabled */ > kvx_sfr_set_field(TCR, WIE, 0); > > - kvx_watchdog_disable(); > - > return watchdog_register(wdd); > } > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox