watchdog: dw_wdt: keepalive the watchdog at write time
authorDoug Anderson <dianders@chromium.org>
Fri, 8 May 2015 04:27:45 +0000 (21:27 -0700)
committerWim Van Sebroeck <wim@iguana.be>
Mon, 22 Jun 2015 13:54:31 +0000 (15:54 +0200)
commit04b1a62e6bb9b217847be874fe37a6b85ddff67e
tree7ab56d96da573300c4368c4e16eee13f39ae12e4
parent7fb466a7a7362de19b8f2aa07cffa79e527cf070
watchdog: dw_wdt: keepalive the watchdog at write time

If you've got code that does this in a tight loop
  1. Open watchdog
  2. Send 'expect close'
  3. Close watchdog
...you'll eventually trigger a watchdog reset.  You can reproduce this
by using daisydog (1) and running:
  while true; do daisydog -c > /dev/null; done

The problem is that each time you write to the watchdog for 'expect
close' it moves the timer .5 seconds out.  The timer thus never fires
and never pats the watchdog for you.

1: http://git.chromium.org/gitweb/?p=chromiumos/third_party/daisydog.git

Signed-off-by: Doug Anderson <dianders@chromium.org>
Tested-by: Jisheng Zhang <jszhang@marvell.com>
Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/dw_wdt.c