[PATCH v2 1/6] wdt: sunxi: Move restart code to the watchdog driver
From: linux@roeck-us.net (Guenter Roeck)
Date: 2014-06-23 15:16:31
Also in:
linux-watchdog, lkml
On 06/23/2014 07:42 AM, Arnd Bergmann wrote:
On Monday 23 June 2014 07:30:56 Guenter Roeck wrote:quoted
On 06/23/2014 03:31 AM, Maxime Ripard wrote:quoted
On Thu, May 22, 2014 at 02:12:07PM -0700, Guenter Roeck wrote:quoted
On Thu, May 22, 2014 at 10:34:44PM +0200, Maxime Ripard wrote:quoted
On Mon, May 19, 2014 at 05:04:22PM +0200, Maxime Ripard wrote:The patches _are_ in my watchdog-next branch and get some coverage from both my auto-builders and from Fenguang's build robots, so while they are not in linux-next, they are not completely in the dark either.So, this patch finally didn't make it into 3.16. Great. Now, we can't even reboot the boards. Given how it's just impossible to get something merged reliably through the watchdog tree, I guess I should just start merging the patches through mine?You can not really blame Wim here. In this case, I suspect the major reason for not accepting the patch is that I tried to provide a clean method / API for "reset through watchdog subsystem", which went nowhere, in my understanding because someone objected that it would be the wrong thing to do [1] and it didn't get approval / acceptance from the arm maintainers. If it is wrong to reset the board from the watchdog subsystem in a clean way, it is for sure even more wrong to do it as you proposed in your patch. My conclusion therefore is that all board reset code should move back out of the watchdog subsystem, and that we should not accept such code in the future. This is not my personal preference, but I do believe that we should do it in a clean way or not at all.Moved to where? I certainly don't want it in the platform directories, and for arm64 we intentionally don't have a place to put this stuff.
I have no idea, but setting the arm reset function pointer from a watchdog driver doesn't seem like a good idea either. The arm code _does_ provide and expect platform code to set the reset function, so having it in the arm code would at least make more sense than expecting some unrelated driver code to set it - especially since it is inherently racy [1].
drivers/power/reset would be an option, but then we have to solve the problem of loading two drivers for one device first.
It sounds crazy and may be huge overkill, but one solution for this is would be to use mfd to bridge the gap. Guenter --- [1] https://lkml.org/lkml/2014/5/15/838