Patch "watchdog: Revert "iTCO_wdt: all versions count down twice"" has been added to the 4.13-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
watchdog: Revert "iTCO_wdt: all versions count down twice"
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
watchdog-revert-itco_wdt-all-versions-count-down-twice.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
fc61e83a29308601e6e8a0759e24fc8fe2122692Mon Sep 17 00:00:00 2001
From: Wim Van Sebroeck <[email protected]>
Date: Sat, 9 Sep 2017 17:41:24 +0200
Subject: watchdog: Revert "iTCO_wdt: all versions count down twice"
From: Wim Van Sebroeck <[email protected]>
commit fc61e83a29308601e6e8a0759e24fc8fe2122692 upstream.
This reverts commit 1fccb73011ea8a5fa0c6d357c33fa29c695139ea. Reported as Bug 196509 - iTCO_wdt regression reboot before timeout expire
--- Documentation/watchdog/watchdog-parameters.txt | 2 +- drivers/watchdog/iTCO_wdt.c | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-)
Documentation/watchdog/watchdog-parameters.txt +1 -1
@@ -117,7 +117,7 @@ nowayout: Watchdog cannot be stopped onc ------------------------------------------------- iTCO_wdt: heartbeat: Watchdog heartbeat in seconds. - (5<=heartbeat<=74 (TCO v1) or 1226 (TCO v2), default=30) + (2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=30) nowayout: Watchdog cannot be stopped once started (default=kernel config parameter) -------------------------------------------------
drivers/watchdog/iTCO_wdt.c +12 -10
@@ -306,15 +306,16 @@ static int iTCO_wdt_ping(struct watchdogiTCO_vendor_pre_keepalive (p->smi_res, wd_dev->timeout); -/* Reset the timeout status bit so that the timer -* needs to count down twice again before rebooting */ -outw (0x0008 ,TCO1_STS (p));/* write 1 to clear bit */ -/* Reload the timer by writing to the TCO Timer Counter register */ -if (p->iTCO_version >=2 ) +if (p->iTCO_version >=2 ) {outw (0x01 ,TCO_RLD (p)); -else if (p->iTCO_version ==1 ) + }else if (p->iTCO_version ==1 ) { +/* Reset the timeout status bit so that the timer +* needs to count down twice again before rebooting */ +outw (0x0008 ,TCO1_STS (p));/* write 1 to clear bit */ +outb (0x01 ,TCO_RLD (p)); + }spin_unlock (&p->io_lock);return 0 ;
@@ -327,8 +328,11 @@ static int iTCO_wdt_set_timeout(struct wunsigned char val8;unsigned int tmrval; -/* The timer counts down twice before rebooting */ - tmrval =seconds_to_ticks (p, t) /2 ; + tmrval =seconds_to_ticks (p, t); + +/* For TCO v1 the timer counts down twice before rebooting */ +if (p->iTCO_version ==1 ) + tmrval /=2 ;/* from the specs: */ /* "Values of 0h-3h are ignored and should not be attempted" */
@@ -381,8 +385,6 @@ static unsigned int iTCO_wdt_get_timelefspin_lock (&p->io_lock); val16 =inw (TCO_RLD (p)); val16 &=0x3ff ; -if (!(inw (TCO1_STS (p)) &0x0008 )) - val16 += (inw (TCOv2_TMR (p)) &0x3ff );spin_unlock (&p->io_lock); time_left =ticks_to_seconds (p, val16);
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/watchdog-revert-itco_wdt-all-versions-count-down-twice.patch