lkml.org 
[lkml]   [2013]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v4 2/2] watchdog: fix w83627hf_wdt clear timeout expired
Date

Observed that the Watchdog Timer Status bit can be set when the driver is
loaded. Reset it during initialization. The time-out value must be set to 0
explicitly in this case to prevent an immediate reset.

Depending on the motherboard and with watchdog disabled in the BIOS, this reset problem can easily be reproduced by the following steps:
1. reboot the system
2. wait for 5+ minutes
3. don't start any watchdog server.
4. just run "modprobe w83627hf_wdt"

If the system load the driver after 5 minutes, it rebooted immediately because of timer expired. For example, fsck could take more than 5 minutes to run,
then the computer reboot as soon as the driver was loaded.

Signed-off-by: Tony Chung <tonychung00@gmail.com>
---
drivers/watchdog/w83627hf_wdt.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c
index 8f1111d..7eaa226 100644
--- a/drivers/watchdog/w83627hf_wdt.c
+++ b/drivers/watchdog/w83627hf_wdt.c
@@ -168,14 +168,16 @@ static void w83627hf_init(void)
pr_info("Watchdog already running. Resetting timeout to %d sec\n",
wdt_get_timeout_secs(timeout));
outb_p(timeout, WDT_EFDR); /* Write back to CRF6 */
+ } else {
+ outb_p(0, WDT_EFDR); /* disable to prevent reboot */
}

w83627hf_setup_crf5();

outb_p(0xF7, WDT_EFER); /* Select CRF7 */
t = inb_p(WDT_EFDR); /* read CRF7 */
- t &= ~0xC0; /* disable keyboard & mouse turning off
- watchdog */
+ t &= ~0xD0; /* clear timeout occurred and disable keyboard
+ & mouse turning off watchdog */
outb_p(t, WDT_EFDR); /* Write back to CRF7 */

w83627hf_unselect_wd_register();
--
1.7.0.4


\
 
 \ /
  Last update: 2013-04-04 07:01    [W:0.027 / U:0.120 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site