qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PULL 07/10] watchdog/diag288: don't reset for action=none|


From: Cornelia Huck
Subject: [Qemu-devel] [PULL 07/10] watchdog/diag288: don't reset for action=none|debug|pause
Date: Thu, 28 Jan 2016 12:09:08 +0100

From: Bo Tu <address@hidden>

If the watchdog expires and the guest is not notified (NONE, DEBUG, PAUSE),
we must not reset the watchdog device, otherwise watchdog_ping() and
watchdog_stop() will fail when triggered by the guest. This reset behavior
matches to the z/VM behavior when a custom command is to be executed
on expiry.

Reviewed-by: David Hildenbrand <address@hidden>
Signed-off-by: Bo Tu <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
 hw/watchdog/wdt_diag288.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/hw/watchdog/wdt_diag288.c b/hw/watchdog/wdt_diag288.c
index 2a885a4..ddda723 100644
--- a/hw/watchdog/wdt_diag288.c
+++ b/hw/watchdog/wdt_diag288.c
@@ -51,6 +51,13 @@ static void diag288_timer_expired(void *dev)
 {
     qemu_log_mask(CPU_LOG_RESET, "Watchdog timer expired.\n");
     watchdog_perform_action();
+    /* Reset the watchdog only if the guest was notified about expiry. */
+    switch (get_watchdog_action()) {
+    case WDT_DEBUG:
+    case WDT_NONE:
+    case WDT_PAUSE:
+         return;
+    }
     wdt_diag288_reset(dev);
 }
 
-- 
2.7.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]