[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] watchdog: Allow setting action on the fly
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH] watchdog: Allow setting action on the fly |
Date: |
Tue, 05 Sep 2017 13:50:08 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Michal Privoznik <address@hidden> writes:
> 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=1447169
>
> Signed-off-by: Michal Privoznik <address@hidden>
> ---
> hw/watchdog/watchdog.c | 9 +++++++++
> qapi-schema.json | 9 +++++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c
> index 0c5c9cde1c..971f05c61a 100644
> --- a/hw/watchdog/watchdog.c
> +++ b/hw/watchdog/watchdog.c
> @@ -29,6 +29,8 @@
> #include "qapi-event.h"
> #include "hw/nmi.h"
> #include "qemu/help_option.h"
> +#include "qmp-commands.h"
> +#include "qapi/qmp/qerror.h"
>
> static int watchdog_action = WDT_RESET;
> static QLIST_HEAD(watchdog_list, WatchdogTimerModel) watchdog_list;
> @@ -147,3 +149,10 @@ void watchdog_perform_action(void)
> break;
> }
> }
> +
> +void qmp_watchdog_set_action(const char *action, Error **errp)
> +{
> + if (select_watchdog_action(action) == -1) {
> + error_setg(errp, QERR_INVALID_PARAMETER, action);
> + }
> +}
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 802ea53d00..be81ffc0bb 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -6539,3 +6539,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': 'str'} }
@action needs to be a QAPI enum. It'll replace the #defines in
watchdog. select_watchdog_action() then calls qapi_enum_parse() to map
string to enum, and qmp_watchdog_set_action() to make the actual change.
Questions?