Re: [RFC PATCH 1/5] watchdog: Add API to trigger reboots

From: Maxime Ripard
Date: Mon May 05 2014 - 00:35:18 EST


On Fri, May 02, 2014 at 09:29:25PM -0700, Guenter Roeck wrote:
> > > + if (wdd->ops->reboot)
> > > + wdd_reboot_dev = wdd;
> > > +
> >
> > Overall, it looks really great, but I guess we can make it a
> > list. Otherwise, we might end up in a situation where we could not
> > reboot anymore, like this one for example:
> > - a first watchdog is probed, registers a reboot function
> > - a second watchdog is probed, registers a reboot function that
> > overwrites the first one.
> > - then, the second watchdog disappears for some reason, and the
> > reboot is set to NULL
> >
> I thought about that, but how likely (or unlikely) is that to ever happen ?
> So I figured it is not worth the effort, and would just add complexity without
> real gain. We could always add the list later if we ever encounter a situation
> where two watchdogs in the same system provide a reboot callback.

The A31 we were discussing about in the other thread that doesn't have
a watchdog driver yet has four, identical, watchogs. I'm not really
concerned about the mentionned issue, since they will never be
removed, but the situation might happen with an on-SoC watchdog and an
i2c one (if that even exists).

But yes, right, that can be postponed.

> > Or maybe we can just use the start callback, with the min timeout already
> > registered, and prevent the user to kick the watchdog.
> >
> Doesn't always work, unfortunately, even now. The moxart driver causes
> an explicit and immediate reset. Also, some watchdogs don't reset the system
> directly but get an interrupt, which then calls the reset handler. Which,
> in our case, would call the start callback again, and you would have an endless
> loop.

Ok. You have my Acked-by then.

Thanks!
Maxime

--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

Attachment: signature.asc
Description: Digital signature