All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org,
	Stefano Stabellini <sstabellini@kernel.org>,
	Eduardo Habkost <ehabkost@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	alistair.francis@xilinx.com,
	zhanghailiang <zhang.zhanghailiang@huawei.com>,
	"open list:X86" <xen-devel@lists.xenproject.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v9 2/5] shutdown: Prepare for use of an enum in reset/shutdown_request
Date: Tue, 16 May 2017 10:40:04 +0200	[thread overview]
Message-ID: <877f1hgpp7.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20170515214114.15442-3-eblake@redhat.com> (Eric Blake's message of "Mon, 15 May 2017 16:41:11 -0500")

Eric Blake <eblake@redhat.com> writes:

> We want to track why a guest was shutdown; in particular, being able
> to tell the difference between a guest request (such as ACPI request)
> and host request (such as SIGINT) will prove useful to libvirt.
> Since all requests eventually end up changing shutdown_requested in
> vl.c, the logical change is to make that value track the reason,
> rather than its current 0/1 contents.
>
> Since command-line options control whether a reset request is turned
> into a shutdown request instead, the same treatment is given to
> reset_requested.
>
> This patch adds an internal enum ShutdownCause that describes reasons
> that a shutdown can be requested, and changes qemu_system_reset() to
> pass the reason through, although for now nothing is actually changed
> with regards to what gets reported.  The enum could be exported via
> QAPI at a later date, if deemed necessary, but for now, there has not
> been a request to expose that much detail to end clients.
>
> For the most part, we turn 0 into SHUTDOWN_CAUSE_NONE, and 1 into
> SHUTDOWN_CAUSE_HOST_ERROR; the only specific case where we have enough
> information right now to use a different value is when we are reacting
> to a host signal.  It will take a further patch to edit all call-sites
> that can trigger a reset or shutdown request to properly pass in any
> other reasons; this patch includes TODOs to point such places out.
>
> qemu_system_reset() trades its 'bool report' parameter for a
> 'ShutdownCause reason', with all non-zero values having the same
> effect; this lets us get rid of the weird #defines for VMRESET_*
> as synonyms for bools.

This paragraph could perhaps be merged with the other one on
qemu_system_reset(), but it's not worth a respin.

>
> Signed-off-by: Eric Blake <eblake@redhat.com>
>
> ---
> v9: one more stray FIXME
> v8: s/FIXME/TODO/, include SHUTDOWN_CAUSE__MAX now rather than later,
> tweak comment on GUEST_SHUTDOWN to mention suspend
> v7: drop 'bool report' from qemu_system_reset(), reorder enum to put
> HOST_ERROR == 1, improve commit message
> v6: make ShutdownCause internal-only, add SHUTDOWN_CAUSE_NONE so that
> comparison to 0 still works, tweak initial FIXME values
> v5: no change
> v4: s/ShutdownType/ShutdownCause/, no thanks to mingw header pollution
> v3: new patch
> ---
>  include/sysemu/sysemu.h | 23 ++++++++++++++++-----
>  vl.c                    | 53 ++++++++++++++++++++++++++++++-------------------
>  hw/i386/xen/xen-hvm.c   |  7 +++++--
>  migration/colo.c        |  2 +-
>  migration/savevm.c      |  2 +-
>  5 files changed, 58 insertions(+), 29 deletions(-)
>
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 15656b7..52102fd 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -33,8 +33,21 @@ VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
>  void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
>  void vm_state_notify(int running, RunState state);
>
> -#define VMRESET_SILENT   false
> -#define VMRESET_REPORT   true
> +/* Enumeration of various causes for shutdown. */
> +typedef enum ShutdownCause {
> +    SHUTDOWN_CAUSE_NONE,          /* No shutdown request pending */
> +    SHUTDOWN_CAUSE_HOST_ERROR,    /* An error prevents further use of guest */
> +    SHUTDOWN_CAUSE_HOST_QMP,      /* Reaction to a QMP command, like 'quit' */
> +    SHUTDOWN_CAUSE_HOST_SIGNAL,   /* Reaction to a signal, such as SIGINT */
> +    SHUTDOWN_CAUSE_HOST_UI,       /* Reaction to UI event, like window close */
> +    SHUTDOWN_CAUSE_GUEST_SHUTDOWN,/* Guest shutdown/suspend request, via
> +                                     ACPI or other hardware-specific means */
> +    SHUTDOWN_CAUSE_GUEST_RESET,   /* Guest reset request, and command line
> +                                     turns that into a shutdown */
> +    SHUTDOWN_CAUSE_GUEST_PANIC,   /* Guest panicked, and command line turns
> +                                     that into a shutdown */
> +    SHUTDOWN_CAUSE__MAX,

The __ is a bit odd for handwritten code, but it matches QAPI-generated
code.  Okay.

> +} ShutdownCause;
>
>  void vm_start(void);
>  int vm_prepare_start(void);

Reviewed-by: Markus Armbruster <armbru@redhat.com>

WARNING: multiple messages have this Message-ID (diff)
From: Markus Armbruster <armbru@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	qemu-devel@nongnu.org, alistair.francis@xilinx.com,
	Paolo Bonzini <pbonzini@redhat.com>,
	Anthony Perard <anthony.perard@citrix.com>,
	"open list:X86" <xen-devel@lists.xenproject.org>,
	Richard Henderson <rth@twiddle.net>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	zhanghailiang <zhang.zhanghailiang@huawei.com>
Subject: Re: [Qemu-devel] [PATCH v9 2/5] shutdown: Prepare for use of an enum in reset/shutdown_request
Date: Tue, 16 May 2017 10:40:04 +0200	[thread overview]
Message-ID: <877f1hgpp7.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20170515214114.15442-3-eblake@redhat.com> (Eric Blake's message of "Mon, 15 May 2017 16:41:11 -0500")

Eric Blake <eblake@redhat.com> writes:

> We want to track why a guest was shutdown; in particular, being able
> to tell the difference between a guest request (such as ACPI request)
> and host request (such as SIGINT) will prove useful to libvirt.
> Since all requests eventually end up changing shutdown_requested in
> vl.c, the logical change is to make that value track the reason,
> rather than its current 0/1 contents.
>
> Since command-line options control whether a reset request is turned
> into a shutdown request instead, the same treatment is given to
> reset_requested.
>
> This patch adds an internal enum ShutdownCause that describes reasons
> that a shutdown can be requested, and changes qemu_system_reset() to
> pass the reason through, although for now nothing is actually changed
> with regards to what gets reported.  The enum could be exported via
> QAPI at a later date, if deemed necessary, but for now, there has not
> been a request to expose that much detail to end clients.
>
> For the most part, we turn 0 into SHUTDOWN_CAUSE_NONE, and 1 into
> SHUTDOWN_CAUSE_HOST_ERROR; the only specific case where we have enough
> information right now to use a different value is when we are reacting
> to a host signal.  It will take a further patch to edit all call-sites
> that can trigger a reset or shutdown request to properly pass in any
> other reasons; this patch includes TODOs to point such places out.
>
> qemu_system_reset() trades its 'bool report' parameter for a
> 'ShutdownCause reason', with all non-zero values having the same
> effect; this lets us get rid of the weird #defines for VMRESET_*
> as synonyms for bools.

This paragraph could perhaps be merged with the other one on
qemu_system_reset(), but it's not worth a respin.

>
> Signed-off-by: Eric Blake <eblake@redhat.com>
>
> ---
> v9: one more stray FIXME
> v8: s/FIXME/TODO/, include SHUTDOWN_CAUSE__MAX now rather than later,
> tweak comment on GUEST_SHUTDOWN to mention suspend
> v7: drop 'bool report' from qemu_system_reset(), reorder enum to put
> HOST_ERROR == 1, improve commit message
> v6: make ShutdownCause internal-only, add SHUTDOWN_CAUSE_NONE so that
> comparison to 0 still works, tweak initial FIXME values
> v5: no change
> v4: s/ShutdownType/ShutdownCause/, no thanks to mingw header pollution
> v3: new patch
> ---
>  include/sysemu/sysemu.h | 23 ++++++++++++++++-----
>  vl.c                    | 53 ++++++++++++++++++++++++++++++-------------------
>  hw/i386/xen/xen-hvm.c   |  7 +++++--
>  migration/colo.c        |  2 +-
>  migration/savevm.c      |  2 +-
>  5 files changed, 58 insertions(+), 29 deletions(-)
>
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 15656b7..52102fd 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -33,8 +33,21 @@ VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
>  void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
>  void vm_state_notify(int running, RunState state);
>
> -#define VMRESET_SILENT   false
> -#define VMRESET_REPORT   true
> +/* Enumeration of various causes for shutdown. */
> +typedef enum ShutdownCause {
> +    SHUTDOWN_CAUSE_NONE,          /* No shutdown request pending */
> +    SHUTDOWN_CAUSE_HOST_ERROR,    /* An error prevents further use of guest */
> +    SHUTDOWN_CAUSE_HOST_QMP,      /* Reaction to a QMP command, like 'quit' */
> +    SHUTDOWN_CAUSE_HOST_SIGNAL,   /* Reaction to a signal, such as SIGINT */
> +    SHUTDOWN_CAUSE_HOST_UI,       /* Reaction to UI event, like window close */
> +    SHUTDOWN_CAUSE_GUEST_SHUTDOWN,/* Guest shutdown/suspend request, via
> +                                     ACPI or other hardware-specific means */
> +    SHUTDOWN_CAUSE_GUEST_RESET,   /* Guest reset request, and command line
> +                                     turns that into a shutdown */
> +    SHUTDOWN_CAUSE_GUEST_PANIC,   /* Guest panicked, and command line turns
> +                                     that into a shutdown */
> +    SHUTDOWN_CAUSE__MAX,

The __ is a bit odd for handwritten code, but it matches QAPI-generated
code.  Okay.

> +} ShutdownCause;
>
>  void vm_start(void);
>  int vm_prepare_start(void);

Reviewed-by: Markus Armbruster <armbru@redhat.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2017-05-16  8:40 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-15 21:41 [Qemu-devel] [PATCH v9 0/5] event: Add source information to SHUTDOWN Eric Blake
2017-05-15 21:41 ` [Qemu-devel] [PATCH v9 1/5] shutdown: Simplify shutdown_signal Eric Blake
2017-05-15 21:41 ` [Qemu-devel] [PATCH v9 2/5] shutdown: Prepare for use of an enum in reset/shutdown_request Eric Blake
2017-05-15 21:41   ` Eric Blake
2017-05-16  8:40   ` Markus Armbruster [this message]
2017-05-16  8:40     ` [Qemu-devel] " Markus Armbruster
2017-05-15 21:41 ` [Qemu-devel] [PATCH v9 3/5] shutdown: Preserve shutdown cause through replay Eric Blake
2017-05-16  8:43   ` Markus Armbruster
2017-05-15 21:41 ` [PATCH v9 4/5] shutdown: Add source information to SHUTDOWN and RESET Eric Blake
2017-05-15 21:41   ` [Qemu-devel] " Eric Blake
2017-05-15 21:41   ` Eric Blake
2017-05-16  8:46   ` [Qemu-devel] " Markus Armbruster
2017-05-16  8:46     ` Markus Armbruster
2017-05-16  8:46     ` Markus Armbruster
2017-05-16  8:46   ` Markus Armbruster
2017-05-15 21:41 ` Eric Blake
2017-05-15 21:41 ` [Qemu-devel] [PATCH v9 5/5] shutdown: Expose bool cause in SHUTDOWN and RESET events Eric Blake
2017-05-16  8:49   ` Markus Armbruster
2017-05-16 11:43 ` [Qemu-devel] [PATCH v9 0/5] event: Add source information to SHUTDOWN Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877f1hgpp7.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=alistair.francis@xilinx.com \
    --cc=anthony.perard@citrix.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=rth@twiddle.net \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=zhang.zhanghailiang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.