| From: Valentin Vidic <Valentin.Vidic@CARNet.hr> |
| Date: Fri, 5 May 2017 21:07:33 +0200 |
| Subject: [PATCH] ipmi/watchdog: fix watchdog timeout set on reboot |
| References: bnc#1060662 |
| Patch-mainline: v4.12.5 |
| Git-commit: 860f01e96981a68553f3ca49f574ff14fe955e72 |
| |
| commit 860f01e96981a68553f3ca49f574ff14fe955e72 upstream. |
| |
| systemd by default starts watchdog on reboot and sets the timer to |
| ShutdownWatchdogSec=10min. Reboot handler in ipmi_watchdog than reduces |
| the timer to 120s which is not enough time to boot a Xen machine with |
| a lot of RAM. As a result the machine is rebooted the second time |
| during the long run of (XEN) Scrubbing Free RAM..... |
| |
| Fix this by setting the timer to 120s only if it was previously |
| set to a low value. |
| |
| Signed-off-by: Valentin Vidic <Valentin.Vidic@CARNet.hr> |
| Signed-off-by: Corey Minyard <cminyard@mvista.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Jiri Slaby <jslaby@suse.cz> |
| |
| drivers/char/ipmi/ipmi_watchdog.c | 7 ++++--- |
| 1 file changed, 4 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c |
| index d165af8abe36..4161d9961a24 100644 |
| |
| |
| @@ -1163,10 +1163,11 @@ static int wdog_reboot_handler(struct notifier_block *this, |
| ipmi_watchdog_state = WDOG_TIMEOUT_NONE; |
| ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB); |
| } else if (ipmi_watchdog_state != WDOG_TIMEOUT_NONE) { |
| - /* Set a long timer to let the reboot happens, but |
| - reboot if it hangs, but only if the watchdog |
| + /* Set a long timer to let the reboot happen or |
| + reset if it hangs, but only if the watchdog |
| timer was already running. */ |
| - timeout = 120; |
| + if (timeout < 120) |
| + timeout = 120; |
| pretimeout = 0; |
| ipmi_watchdog_state = WDOG_TIMEOUT_RESET; |
| ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB); |
| -- |
| 2.14.2 |
| |