* [PATCH] runstate: cleanup reboot and panic actions
@ 2021-01-20 14:37 Paolo Bonzini
2021-01-20 14:42 ` no-reply
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Paolo Bonzini @ 2021-01-20 14:37 UTC (permalink / raw)
To: qemu-devel; +Cc: Alejandro Jimenez
The possible choices for panic, reset and watchdog actions are inconsistent.
"-action panic=poweroff" should be renamed to "-action panic=shutdown"
on the command line. This is because "-action panic=poweroff" and
"-action watchdog=poweroff" have slightly different semantics, the first
does an unorderly exit while the second goes through qemu_cleanup(). With
this change, -no-shutdown would not have to change "-action panic=pause"
"pause", just like it does not have to change the reset action.
"-action reboot=none" should be renamed to "-action reboot=reset".
This should be self explanatory, since for example "-action panic=none"
lets the guest proceed without taking any action.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
qapi/run-state.json | 10 ++++++----
qemu-options.hx | 8 ++++----
softmmu/runstate-action.c | 4 ++--
softmmu/runstate.c | 7 ++++---
softmmu/vl.c | 2 +-
5 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/qapi/run-state.json b/qapi/run-state.json
index 1f3b329f05..43d66d700f 100644
--- a/qapi/run-state.json
+++ b/qapi/run-state.json
@@ -330,14 +330,14 @@
#
# Possible QEMU actions upon guest reboot
#
-# @none: Reset the VM
+# @reset: Reset the VM
#
-# @shutdown: Shutdown the VM and exit
+# @shutdown: Shutdown the VM and exit, according to the shutdown action
#
# Since: 6.0
##
{ 'enum': 'RebootAction',
- 'data': [ 'none', 'shutdown' ] }
+ 'data': [ 'reset', 'shutdown' ] }
##
# @ShutdownAction:
@@ -360,10 +360,12 @@
#
# @pause: Pause the VM
#
+# @shutdown: Shutdown the VM and exit, according to the shutdown action
+#
# Since: 6.0
##
{ 'enum': 'PanicAction',
- 'data': [ 'poweroff', 'pause', 'none' ] }
+ 'data': [ 'pause', 'shutdown', 'none' ] }
##
# @watchdog-set-action:
diff --git a/qemu-options.hx b/qemu-options.hx
index 62791f56d8..9172d51659 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -3900,12 +3900,12 @@ SRST
ERST
DEF("action", HAS_ARG, QEMU_OPTION_action,
- "-action reboot=none|shutdown\n"
- " action when guest reboots [default=none]\n"
+ "-action reboot=reset|shutdown\n"
+ " action when guest reboots [default=reset]\n"
"-action shutdown=poweroff|pause\n"
" action when guest shuts down [default=poweroff]\n"
- "-action panic=poweroff|pause|none\n"
- " action when guest panics [default=poweroff]\n"
+ "-action panic=pause|shutdown|none\n"
+ " action when guest panics [default=shutdown]\n"
"-action watchdog=reset|shutdown|poweroff|inject-nmi|pause|debug|none\n"
" action when watchdog fires [default=reset]\n",
QEMU_ARCH_ALL)
diff --git a/softmmu/runstate-action.c b/softmmu/runstate-action.c
index 99ce880886..ae0761a9c3 100644
--- a/softmmu/runstate-action.c
+++ b/softmmu/runstate-action.c
@@ -13,9 +13,9 @@
#include "qapi/error.h"
#include "qemu/option_int.h"
-RebootAction reboot_action = REBOOT_ACTION_NONE;
+RebootAction reboot_action = REBOOT_ACTION_RESET;
ShutdownAction shutdown_action = SHUTDOWN_ACTION_POWEROFF;
-PanicAction panic_action = PANIC_ACTION_POWEROFF;
+PanicAction panic_action = PANIC_ACTION_SHUTDOWN;
/*
* Receives actions to be applied for specific guest events
diff --git a/softmmu/runstate.c b/softmmu/runstate.c
index 6177693a30..beee050815 100644
--- a/softmmu/runstate.c
+++ b/softmmu/runstate.c
@@ -471,14 +471,15 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
}
/*
* TODO: Currently the available panic actions are: none, pause, and
- * poweroff, but in principle debug and reset could be supported as well.
+ * shutdown, but in principle debug and reset could be supported as well.
* Investigate any potential use cases for the unimplemented actions.
*/
- if (panic_action == PANIC_ACTION_PAUSE) {
+ if (panic_action == PANIC_ACTION_PAUSE
+ || (panic_action == PANIC_ACTION_SHUTDOWN && shutdown_action == SHUTDOWN_ACTION_PAUSE)) {
qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_PAUSE,
!!info, info);
vm_stop(RUN_STATE_GUEST_PANICKED);
- } else if (panic_action == PANIC_ACTION_POWEROFF) {
+ } else if (panic_action == PANIC_ACTION_SHUTDOWN) {
qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_POWEROFF,
!!info, info);
vm_stop(RUN_STATE_GUEST_PANICKED);
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 7ddf405d76..59304261cf 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3202,7 +3202,7 @@ void qemu_init(int argc, char **argv, char **envp)
break;
case QEMU_OPTION_no_shutdown:
olist = qemu_find_opts("action");
- qemu_opts_parse_noisily(olist, "panic=pause,shutdown=pause", false);
+ qemu_opts_parse_noisily(olist, "shutdown=pause", false);
break;
case QEMU_OPTION_uuid:
if (qemu_uuid_parse(optarg, &qemu_uuid) < 0) {
--
2.29.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] runstate: cleanup reboot and panic actions
2021-01-20 14:37 [PATCH] runstate: cleanup reboot and panic actions Paolo Bonzini
@ 2021-01-20 14:42 ` no-reply
2021-01-20 15:55 ` Eric Blake
2021-01-20 18:09 ` Alejandro Jimenez
2 siblings, 0 replies; 4+ messages in thread
From: no-reply @ 2021-01-20 14:42 UTC (permalink / raw)
To: pbonzini; +Cc: alejandro.j.jimenez, qemu-devel
Patchew URL: https://patchew.org/QEMU/20210120143706.345821-1-pbonzini@redhat.com/
Hi,
This series seems to have some coding style problems. See output below for
more information:
Type: series
Message-id: 20210120143706.345821-1-pbonzini@redhat.com
Subject: [PATCH] runstate: cleanup reboot and panic actions
=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
- [tag update] patchew/20210118170308.282442-1-philmd@redhat.com -> patchew/20210118170308.282442-1-philmd@redhat.com
- [tag update] patchew/20210119175427.2050737-1-laurent@vivier.eu -> patchew/20210119175427.2050737-1-laurent@vivier.eu
- [tag update] patchew/20210120102556.125012-1-marcandre.lureau@redhat.com -> patchew/20210120102556.125012-1-marcandre.lureau@redhat.com
- [tag update] patchew/20210120105406.163074-1-danielhb413@gmail.com -> patchew/20210120105406.163074-1-danielhb413@gmail.com
* [new tag] patchew/20210120143706.345821-1-pbonzini@redhat.com -> patchew/20210120143706.345821-1-pbonzini@redhat.com
Switched to a new branch 'test'
202e902 runstate: cleanup reboot and panic actions
=== OUTPUT BEGIN ===
ERROR: line over 90 characters
#117: FILE: softmmu/runstate.c:478:
+ || (panic_action == PANIC_ACTION_SHUTDOWN && shutdown_action == SHUTDOWN_ACTION_PAUSE)) {
total: 1 errors, 0 warnings, 83 lines checked
Commit 202e902ccc44 (runstate: cleanup reboot and panic actions) has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
=== OUTPUT END ===
Test command exited with code: 1
The full log is available at
http://patchew.org/logs/20210120143706.345821-1-pbonzini@redhat.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] runstate: cleanup reboot and panic actions
2021-01-20 14:37 [PATCH] runstate: cleanup reboot and panic actions Paolo Bonzini
2021-01-20 14:42 ` no-reply
@ 2021-01-20 15:55 ` Eric Blake
2021-01-20 18:09 ` Alejandro Jimenez
2 siblings, 0 replies; 4+ messages in thread
From: Eric Blake @ 2021-01-20 15:55 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel; +Cc: Alejandro Jimenez
On 1/20/21 8:37 AM, Paolo Bonzini wrote:
> The possible choices for panic, reset and watchdog actions are inconsistent.
>
> "-action panic=poweroff" should be renamed to "-action panic=shutdown"
> on the command line. This is because "-action panic=poweroff" and
> "-action watchdog=poweroff" have slightly different semantics, the first
> does an unorderly exit while the second goes through qemu_cleanup(). With
> this change, -no-shutdown would not have to change "-action panic=pause"
> "pause", just like it does not have to change the reset action.
>
> "-action reboot=none" should be renamed to "-action reboot=reset".
> This should be self explanatory, since for example "-action panic=none"
> lets the guest proceed without taking any action.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> qapi/run-state.json | 10 ++++++----
> qemu-options.hx | 8 ++++----
> softmmu/runstate-action.c | 4 ++--
> softmmu/runstate.c | 7 ++++---
> softmmu/vl.c | 2 +-
> 5 files changed, 17 insertions(+), 14 deletions(-)
>
> diff --git a/qapi/run-state.json b/qapi/run-state.json
> index 1f3b329f05..43d66d700f 100644
> --- a/qapi/run-state.json
> +++ b/qapi/run-state.json
> @@ -330,14 +330,14 @@
> #
> # Possible QEMU actions upon guest reboot
> #
> -# @none: Reset the VM
> +# @reset: Reset the VM
> #
> -# @shutdown: Shutdown the VM and exit
> +# @shutdown: Shutdown the VM and exit, according to the shutdown action
> #
> # Since: 6.0
> ##
> { 'enum': 'RebootAction',
> - 'data': [ 'none', 'shutdown' ] }
> + 'data': [ 'reset', 'shutdown' ] }
Given that the enum is new, we are not locked into back-compat, so
changing the names to be consistent is reasonable.
Reviewed-by: Eric Blake <eblake$redhat.com>
> +++ b/softmmu/runstate.c
> @@ -471,14 +471,15 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
> }
> /*
> * TODO: Currently the available panic actions are: none, pause, and
> - * poweroff, but in principle debug and reset could be supported as well.
> + * shutdown, but in principle debug and reset could be supported as well.
> * Investigate any potential use cases for the unimplemented actions.
> */
> - if (panic_action == PANIC_ACTION_PAUSE) {
> + if (panic_action == PANIC_ACTION_PAUSE
> + || (panic_action == PANIC_ACTION_SHUTDOWN && shutdown_action == SHUTDOWN_ACTION_PAUSE)) {
Long line.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] runstate: cleanup reboot and panic actions
2021-01-20 14:37 [PATCH] runstate: cleanup reboot and panic actions Paolo Bonzini
2021-01-20 14:42 ` no-reply
2021-01-20 15:55 ` Eric Blake
@ 2021-01-20 18:09 ` Alejandro Jimenez
2 siblings, 0 replies; 4+ messages in thread
From: Alejandro Jimenez @ 2021-01-20 18:09 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 1/20/2021 9:37 AM, Paolo Bonzini wrote:
> The possible choices for panic, reset and watchdog actions are inconsistent.
>
> "-action panic=poweroff" should be renamed to "-action panic=shutdown"
> on the command line. This is because "-action panic=poweroff" and
> "-action watchdog=poweroff" have slightly different semantics, the first
> does an unorderly exit while the second goes through qemu_cleanup(). With
> this change, -no-shutdown would not have to change "-action panic=pause"
> "pause", just like it does not have to change the reset action.
>
> "-action reboot=none" should be renamed to "-action reboot=reset".
> This should be self explanatory, since for example "-action panic=none"
> lets the guest proceed without taking any action.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> qapi/run-state.json | 10 ++++++----
> qemu-options.hx | 8 ++++----
> softmmu/runstate-action.c | 4 ++--
> softmmu/runstate.c | 7 ++++---
> softmmu/vl.c | 2 +-
> 5 files changed, 17 insertions(+), 14 deletions(-)
>
> diff --git a/softmmu/runstate-action.c b/softmmu/runstate-action.c
> index 99ce880886..ae0761a9c3 100644
> --- a/softmmu/runstate-action.c
> +++ b/softmmu/runstate-action.c
> @@ -13,9 +13,9 @@
> #include "qapi/error.h"
> #include "qemu/option_int.h"
>
> -RebootAction reboot_action = REBOOT_ACTION_NONE;
> +RebootAction reboot_action = REBOOT_ACTION_RESET;
> ShutdownAction shutdown_action = SHUTDOWN_ACTION_POWEROFF;
> -PanicAction panic_action = PANIC_ACTION_POWEROFF;
> +PanicAction panic_action = PANIC_ACTION_SHUTDOWN;
>
> /*
> * Receives actions to be applied for specific guest events
Hi Paolo,
Since you have removed the need for "fixing" the panic action when
-no-shutdown (or its equivalent action/qmp command) is issued, I'd also
remove the following comment on qmp_set_action():
/* Process shutdown last, in case the panic action needs to be
altered */
if (has_shutdown) {
shutdown_action = shutdown;
}
> diff --git a/softmmu/runstate.c b/softmmu/runstate.c
> index 6177693a30..beee050815 100644
> --- a/softmmu/runstate.c
> +++ b/softmmu/runstate.c
> @@ -471,14 +471,15 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
> }
> /*
> * TODO: Currently the available panic actions are: none, pause, and
> - * poweroff, but in principle debug and reset could be supported as well.
> + * shutdown, but in principle debug and reset could be supported as well.
> * Investigate any potential use cases for the unimplemented actions.
> */
> - if (panic_action == PANIC_ACTION_PAUSE) {
> + if (panic_action == PANIC_ACTION_PAUSE
> + || (panic_action == PANIC_ACTION_SHUTDOWN && shutdown_action == SHUTDOWN_ACTION_PAUSE)) {
> qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_PAUSE,
> !!info, info);
> vm_stop(RUN_STATE_GUEST_PANICKED);
> - } else if (panic_action == PANIC_ACTION_POWEROFF) {
> + } else if (panic_action == PANIC_ACTION_SHUTDOWN) {
> qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_POWEROFF,
> !!info, info);
> vm_stop(RUN_STATE_GUEST_PANICKED);
I see that you are moving forward with only sending the GUEST_PANICKED
event once.
Reviewed-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 7ddf405d76..59304261cf 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -3202,7 +3202,7 @@ void qemu_init(int argc, char **argv, char **envp)
> break;
> case QEMU_OPTION_no_shutdown:
> olist = qemu_find_opts("action");
> - qemu_opts_parse_noisily(olist, "panic=pause,shutdown=pause", false);
> + qemu_opts_parse_noisily(olist, "shutdown=pause", false);
> break;
> case QEMU_OPTION_uuid:
> if (qemu_uuid_parse(optarg, &qemu_uuid) < 0) {
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-01-20 18:12 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-20 14:37 [PATCH] runstate: cleanup reboot and panic actions Paolo Bonzini
2021-01-20 14:42 ` no-reply
2021-01-20 15:55 ` Eric Blake
2021-01-20 18:09 ` Alejandro Jimenez
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).