From nobody Sat May 4 14:45:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@gnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@gnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506942787172964.329971062225; Mon, 2 Oct 2017 04:13:07 -0700 (PDT) Received: from localhost ([::1]:51663 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyyej-00062G-BK for importer@patchew.org; Mon, 02 Oct 2017 07:13:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyyd3-00057T-1N for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dyyd0-0001bL-Hp for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51280) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dyyd0-0001ac-9Z for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:14 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5835D4A6E4 for ; Mon, 2 Oct 2017 11:11:13 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-91.ams2.redhat.com [10.36.116.91]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E90215C8B0; Mon, 2 Oct 2017 11:11:12 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 53525115626B; Mon, 2 Oct 2017 13:11:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5835D4A6E4 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Mon, 2 Oct 2017 13:11:09 +0200 Message-Id: <20171002111111.26932-2-armbru@redhat.com> In-Reply-To: <20171002111111.26932-1-armbru@redhat.com> References: <20171002111111.26932-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 02 Oct 2017 11:11:13 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 1/3] qapi: Rename WatchdogExpirationAction enum X-BeenThere: qemu-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Privoznik Errors-To: qemu-devel-bounces+importer=patchew.org@gnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Michal Privoznik The new name is WatchdogAction which is shorter, Signed-off-by: Michal Privoznik Message-Id: Reviewed-by: Eric Blake Reviewed-by: Markus Armbruster Reviewed-by: Daniel P. Berrange Signed-off-by: Markus Armbruster --- hw/watchdog/watchdog.c | 14 +++++++------- monitor.c | 4 ++-- qapi/run-state.json | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c index 0c5c9cde1c..358d79804d 100644 --- a/hw/watchdog/watchdog.c +++ b/hw/watchdog/watchdog.c @@ -109,17 +109,17 @@ void watchdog_perform_action(void) { switch (watchdog_action) { case WDT_RESET: /* same as 'system_reset' in monitor */ - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_RESET, &error_= abort); + qapi_event_send_watchdog(WATCHDOG_ACTION_RESET, &error_abort); qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); break; =20 case WDT_SHUTDOWN: /* same as 'system_powerdown' in monitor */ - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_SHUTDOWN, &err= or_abort); + qapi_event_send_watchdog(WATCHDOG_ACTION_SHUTDOWN, &error_abort); qemu_system_powerdown_request(); break; =20 case WDT_POWEROFF: /* same as 'quit' command in monitor */ - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_POWEROFF, &err= or_abort); + qapi_event_send_watchdog(WATCHDOG_ACTION_POWEROFF, &error_abort); exit(0); =20 case WDT_PAUSE: /* same as 'stop' command in monitor */ @@ -127,21 +127,21 @@ void watchdog_perform_action(void) * you would get a deadlock. Bypass the problem. */ qemu_system_vmstop_request_prepare(); - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_PAUSE, &error_= abort); + qapi_event_send_watchdog(WATCHDOG_ACTION_PAUSE, &error_abort); qemu_system_vmstop_request(RUN_STATE_WATCHDOG); break; =20 case WDT_DEBUG: - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_DEBUG, &error_= abort); + qapi_event_send_watchdog(WATCHDOG_ACTION_DEBUG, &error_abort); fprintf(stderr, "watchdog: timer fired\n"); break; =20 case WDT_NONE: - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_NONE, &error_a= bort); + qapi_event_send_watchdog(WATCHDOG_ACTION_NONE, &error_abort); break; =20 case WDT_NMI: - qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_INJECT_NMI, + qapi_event_send_watchdog(WATCHDOG_ACTION_INJECT_NMI, &error_abort); nmi_monitor_handle(0, NULL); break; diff --git a/monitor.c b/monitor.c index f4856b9268..94fb197c0d 100644 --- a/monitor.c +++ b/monitor.c @@ -3541,8 +3541,8 @@ void watchdog_action_completion(ReadLineState *rs, in= t nb_args, const char *str) return; } readline_set_completion_index(rs, strlen(str)); - for (i =3D 0; i < WATCHDOG_EXPIRATION_ACTION__MAX; i++) { - add_completion_option(rs, str, WatchdogExpirationAction_str(i)); + for (i =3D 0; i < WATCHDOG_ACTION__MAX; i++) { + add_completion_option(rs, str, WatchdogAction_str(i)); } } =20 diff --git a/qapi/run-state.json b/qapi/run-state.json index d36ff49834..bca46a8785 100644 --- a/qapi/run-state.json +++ b/qapi/run-state.json @@ -253,10 +253,10 @@ # ## { 'event': 'WATCHDOG', - 'data': { 'action': 'WatchdogExpirationAction' } } + 'data': { 'action': 'WatchdogAction' } } =20 ## -# @WatchdogExpirationAction: +# @WatchdogAction: # # An enumeration of the actions taken when the watchdog device's timer is # expired @@ -279,7 +279,7 @@ # # Since: 2.1 ## -{ 'enum': 'WatchdogExpirationAction', +{ 'enum': 'WatchdogAction', 'data': [ 'reset', 'shutdown', 'poweroff', 'pause', 'debug', 'none', 'inject-nmi' ] } =20 --=20 2.13.6 From nobody Sat May 4 14:45:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@gnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@gnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506942783005141.68952621300514; Mon, 2 Oct 2017 04:13:03 -0700 (PDT) Received: from localhost ([::1]:51661 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyyec-0005wo-72 for importer@patchew.org; Mon, 02 Oct 2017 07:12:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47216) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyyd3-00057U-21 for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dyyd0-0001bQ-Iq for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38896) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dyyd0-0001ab-9Q for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:14 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 507B181DFD for ; Mon, 2 Oct 2017 11:11:13 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-91.ams2.redhat.com [10.36.116.91]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E92D45C6C5; Mon, 2 Oct 2017 11:11:12 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 56F9E115626C; Mon, 2 Oct 2017 13:11:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 507B181DFD Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Mon, 2 Oct 2017 13:11:10 +0200 Message-Id: <20171002111111.26932-3-armbru@redhat.com> In-Reply-To: <20171002111111.26932-1-armbru@redhat.com> References: <20171002111111.26932-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 02 Oct 2017 11:11:13 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 2/3] watchdog.h: Drop local redefinition of actions enum X-BeenThere: qemu-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Privoznik Errors-To: qemu-devel-bounces+importer=patchew.org@gnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Michal Privoznik We already have enum that enumerates all the actions that a watchdog can take when hitting its timeout: WatchdogAction. Use that instead of inventing our own. Signed-off-by: Michal Privoznik Message-Id: Reviewed-by: Eric Blake Reviewed-by: Markus Armbruster Reviewed-by: Daniel P. Berrange Signed-off-by: Markus Armbruster --- hw/watchdog/watchdog.c | 45 ++++++++++++++++++++-----------------------= -- hw/watchdog/wdt_diag288.c | 6 +++--- include/sysemu/watchdog.h | 12 ++---------- 3 files changed, 25 insertions(+), 38 deletions(-) diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c index 358d79804d..0d3eeed187 100644 --- a/hw/watchdog/watchdog.c +++ b/hw/watchdog/watchdog.c @@ -30,7 +30,7 @@ #include "hw/nmi.h" #include "qemu/help_option.h" =20 -static int watchdog_action =3D WDT_RESET; +static WatchdogAction watchdog_action =3D WATCHDOG_ACTION_RESET; static QLIST_HEAD(watchdog_list, WatchdogTimerModel) watchdog_list; =20 void watchdog_add_model(WatchdogTimerModel *model) @@ -77,27 +77,19 @@ int select_watchdog(const char *p) =20 int select_watchdog_action(const char *p) { - if (strcasecmp(p, "reset") =3D=3D 0) - watchdog_action =3D WDT_RESET; - else if (strcasecmp(p, "shutdown") =3D=3D 0) - watchdog_action =3D WDT_SHUTDOWN; - else if (strcasecmp(p, "poweroff") =3D=3D 0) - watchdog_action =3D WDT_POWEROFF; - else if (strcasecmp(p, "pause") =3D=3D 0) - watchdog_action =3D WDT_PAUSE; - else if (strcasecmp(p, "debug") =3D=3D 0) - watchdog_action =3D WDT_DEBUG; - else if (strcasecmp(p, "none") =3D=3D 0) - watchdog_action =3D WDT_NONE; - else if (strcasecmp(p, "inject-nmi") =3D=3D 0) - watchdog_action =3D WDT_NMI; - else + int action; + char *qapi_value; + + qapi_value =3D g_ascii_strdown(p, -1); + action =3D qapi_enum_parse(&WatchdogAction_lookup, qapi_value, -1, NUL= L); + g_free(qapi_value); + if (action < 0) return -1; - + watchdog_action =3D action; return 0; } =20 -int get_watchdog_action(void) +WatchdogAction get_watchdog_action(void) { return watchdog_action; } @@ -108,21 +100,21 @@ int get_watchdog_action(void) void watchdog_perform_action(void) { switch (watchdog_action) { - case WDT_RESET: /* same as 'system_reset' in monitor */ + case WATCHDOG_ACTION_RESET: /* same as 'system_reset' in monitor */ qapi_event_send_watchdog(WATCHDOG_ACTION_RESET, &error_abort); qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); break; =20 - case WDT_SHUTDOWN: /* same as 'system_powerdown' in monitor */ + case WATCHDOG_ACTION_SHUTDOWN: /* same as 'system_powerdown' in monit= or */ qapi_event_send_watchdog(WATCHDOG_ACTION_SHUTDOWN, &error_abort); qemu_system_powerdown_request(); break; =20 - case WDT_POWEROFF: /* same as 'quit' command in monitor */ + case WATCHDOG_ACTION_POWEROFF: /* same as 'quit' command in monitor */ qapi_event_send_watchdog(WATCHDOG_ACTION_POWEROFF, &error_abort); exit(0); =20 - case WDT_PAUSE: /* same as 'stop' command in monitor */ + case WATCHDOG_ACTION_PAUSE: /* same as 'stop' command in monitor */ /* In a timer callback, when vm_stop calls qemu_clock_enable * you would get a deadlock. Bypass the problem. */ @@ -131,19 +123,22 @@ void watchdog_perform_action(void) qemu_system_vmstop_request(RUN_STATE_WATCHDOG); break; =20 - case WDT_DEBUG: + case WATCHDOG_ACTION_DEBUG: qapi_event_send_watchdog(WATCHDOG_ACTION_DEBUG, &error_abort); fprintf(stderr, "watchdog: timer fired\n"); break; =20 - case WDT_NONE: + case WATCHDOG_ACTION_NONE: qapi_event_send_watchdog(WATCHDOG_ACTION_NONE, &error_abort); break; =20 - case WDT_NMI: + case WATCHDOG_ACTION_INJECT_NMI: qapi_event_send_watchdog(WATCHDOG_ACTION_INJECT_NMI, &error_abort); nmi_monitor_handle(0, NULL); break; + + default: + assert(0); } } diff --git a/hw/watchdog/wdt_diag288.c b/hw/watchdog/wdt_diag288.c index 47f289216a..1475743527 100644 --- a/hw/watchdog/wdt_diag288.c +++ b/hw/watchdog/wdt_diag288.c @@ -57,9 +57,9 @@ static void diag288_timer_expired(void *dev) * the BQL; reset before triggering the action to avoid races with * diag288 instructions. */ switch (get_watchdog_action()) { - case WDT_DEBUG: - case WDT_NONE: - case WDT_PAUSE: + case WATCHDOG_ACTION_DEBUG: + case WATCHDOG_ACTION_NONE: + case WATCHDOG_ACTION_PAUSE: break; default: wdt_diag288_reset(dev); diff --git a/include/sysemu/watchdog.h b/include/sysemu/watchdog.h index 72a4da07a6..677ace3945 100644 --- a/include/sysemu/watchdog.h +++ b/include/sysemu/watchdog.h @@ -23,15 +23,7 @@ #define QEMU_WATCHDOG_H =20 #include "qemu/queue.h" - -/* Possible values for action parameter. */ -#define WDT_RESET 1 /* Hard reset. */ -#define WDT_SHUTDOWN 2 /* Shutdown. */ -#define WDT_POWEROFF 3 /* Quit. */ -#define WDT_PAUSE 4 /* Pause. */ -#define WDT_DEBUG 5 /* Prints a message and continues running.= */ -#define WDT_NONE 6 /* Do nothing. */ -#define WDT_NMI 7 /* Inject nmi into the guest. */ +#include "qapi-types.h" =20 struct WatchdogTimerModel { QLIST_ENTRY(WatchdogTimerModel) entry; @@ -46,7 +38,7 @@ typedef struct WatchdogTimerModel WatchdogTimerModel; /* in hw/watchdog.c */ int select_watchdog(const char *p); int select_watchdog_action(const char *action); -int get_watchdog_action(void); +WatchdogAction get_watchdog_action(void); void watchdog_add_model(WatchdogTimerModel *model); void watchdog_perform_action(void); =20 --=20 2.13.6 From nobody Sat May 4 14:45:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@gnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@gnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506942781877625.7281932695053; Mon, 2 Oct 2017 04:13:01 -0700 (PDT) Received: from localhost ([::1]:51662 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyyee-0005xd-4l for importer@patchew.org; Mon, 02 Oct 2017 07:12:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47213) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyyd3-00057R-1g for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dyyd0-0001bh-VX for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46272) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dyyd0-0001at-Q3 for qemu-devel@nongnu.org; Mon, 02 Oct 2017 07:11:14 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EF1F2356D7 for ; Mon, 2 Oct 2017 11:11:13 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-91.ams2.redhat.com [10.36.116.91]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E92786062E; Mon, 2 Oct 2017 11:11:12 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 5A223115626D; Mon, 2 Oct 2017 13:11:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com EF1F2356D7 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Mon, 2 Oct 2017 13:11:11 +0200 Message-Id: <20171002111111.26932-4-armbru@redhat.com> In-Reply-To: <20171002111111.26932-1-armbru@redhat.com> References: <20171002111111.26932-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 02 Oct 2017 11:11:14 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 3/3] watchdog: Allow setting action on the fly X-BeenThere: qemu-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Privoznik Errors-To: qemu-devel-bounces+importer=patchew.org@gnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Michal Privoznik Currently, the only time that users can set watchdog action is at the start as all we expose is this -watchdog-action command line argument. This is suboptimal when users want to plug the device later via monitor. Alternatively, they might want to change the action for already existing device on the fly. Inspired by: https://bugzilla.redhat.com/show_bug.cgi?id=3D1447169 Signed-off-by: Michal Privoznik Message-Id: <35d6ce6fe3d357122d73b8272bc8198134c74104.1504771369.git.mprivo= zn@redhat.com> Reviewed-by: Eric Blake Reviewed-by: Markus Armbruster Reviewed-by: Daniel P. Berrange [Missing colon in doc comment fixed] Signed-off-by: Markus Armbruster --- hw/watchdog/watchdog.c | 8 +++++++- qapi-schema.json | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c index 0d3eeed187..670114ecfe 100644 --- a/hw/watchdog/watchdog.c +++ b/hw/watchdog/watchdog.c @@ -29,6 +29,7 @@ #include "qapi-event.h" #include "hw/nmi.h" #include "qemu/help_option.h" +#include "qmp-commands.h" =20 static WatchdogAction watchdog_action =3D WATCHDOG_ACTION_RESET; static QLIST_HEAD(watchdog_list, WatchdogTimerModel) watchdog_list; @@ -85,7 +86,7 @@ int select_watchdog_action(const char *p) g_free(qapi_value); if (action < 0) return -1; - watchdog_action =3D action; + qmp_watchdog_set_action(action, &error_abort); return 0; } =20 @@ -142,3 +143,8 @@ void watchdog_perform_action(void) assert(0); } } + +void qmp_watchdog_set_action(WatchdogAction action, Error **errp) +{ + watchdog_action =3D action; +} diff --git a/qapi-schema.json b/qapi-schema.json index a3ba1c9a1c..a9dd043f65 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3191,3 +3191,12 @@ # Since 2.9 ## { 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } + +## +# @watchdog-set-action: +# +# Set watchdog action +# +# Since: 2.11 +## +{ 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} } --=20 2.13.6