From: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
To: qemu-devel@nongnu.org, peter.maydell@linaro.org
Cc: yuval.shaia@oracle.com, marcel.apfelbaum@gmail.com,
pjp@fedoraproject.org
Subject: [Qemu-devel] [PATCH PULL 20/31] vl: Introduce shutdown_notifiers
Date: Sat, 22 Dec 2018 11:50:25 +0200 [thread overview]
Message-ID: <20181222095036.29743-21-marcel.apfelbaum@gmail.com> (raw)
In-Reply-To: <20181222095036.29743-1-marcel.apfelbaum@gmail.com>
From: Yuval Shaia <yuval.shaia@oracle.com>
Notifier will be used for signaling shutdown event to inform system is
shutdown. This will allow devices and other component to run some
cleanup code needed before VM is shutdown.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
---
include/sysemu/sysemu.h | 1 +
vl.c | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index c8efdeb376..e0d15da937 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -62,6 +62,7 @@ void qemu_register_wakeup_support(void);
void qemu_system_shutdown_request(ShutdownCause reason);
void qemu_system_powerdown_request(void);
void qemu_register_powerdown_notifier(Notifier *notifier);
+void qemu_register_shutdown_notifier(Notifier *notifier);
void qemu_system_debug_request(void);
void qemu_system_vmstop_request(RunState reason);
void qemu_system_vmstop_request_prepare(void);
diff --git a/vl.c b/vl.c
index 46ebf813b3..8353d3c718 100644
--- a/vl.c
+++ b/vl.c
@@ -1577,6 +1577,8 @@ static NotifierList suspend_notifiers =
NOTIFIER_LIST_INITIALIZER(suspend_notifiers);
static NotifierList wakeup_notifiers =
NOTIFIER_LIST_INITIALIZER(wakeup_notifiers);
+static NotifierList shutdown_notifiers =
+ NOTIFIER_LIST_INITIALIZER(shutdown_notifiers);
static uint32_t wakeup_reason_mask = ~(1 << QEMU_WAKEUP_REASON_NONE);
ShutdownCause qemu_shutdown_requested_get(void)
@@ -1828,6 +1830,12 @@ static void qemu_system_powerdown(void)
notifier_list_notify(&powerdown_notifiers, NULL);
}
+static void qemu_system_shutdown(ShutdownCause cause)
+{
+ qapi_event_send_shutdown(shutdown_caused_by_guest(cause), cause);
+ notifier_list_notify(&shutdown_notifiers, &cause);
+}
+
void qemu_system_powerdown_request(void)
{
trace_qemu_system_powerdown_request();
@@ -1840,6 +1848,11 @@ void qemu_register_powerdown_notifier(Notifier *notifier)
notifier_list_add(&powerdown_notifiers, notifier);
}
+void qemu_register_shutdown_notifier(Notifier *notifier)
+{
+ notifier_list_add(&shutdown_notifiers, notifier);
+}
+
void qemu_system_debug_request(void)
{
debug_requested = 1;
@@ -1867,7 +1880,7 @@ static bool main_loop_should_exit(void)
request = qemu_shutdown_requested();
if (request) {
qemu_kill_report();
- qapi_event_send_shutdown(shutdown_caused_by_guest(request), request);
+ qemu_system_shutdown(request);
if (no_shutdown) {
vm_stop(RUN_STATE_SHUTDOWN);
} else {
--
2.17.1
next prev parent reply other threads:[~2018-12-22 9:51 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-22 9:50 [Qemu-devel] [PATCH PULL 00/31] RDMA queue Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 01/31] hw/pvrdma: Check the correct return value Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 02/31] contrib/rdmacm-mux: Add implementation of RDMA User MAD multiplexer Marcel Apfelbaum
2019-01-03 10:34 ` Cornelia Huck
2019-01-07 17:28 ` Marcel Apfelbaum
2019-01-07 17:54 ` Cornelia Huck
2019-01-08 8:41 ` Marcel Apfelbaum
2019-01-08 9:18 ` Cornelia Huck
2019-01-12 9:46 ` Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 03/31] hw/rdma: Add ability to force notification without re-arm Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 04/31] hw/rdma: Return qpn 1 if ibqp is NULL Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 05/31] hw/rdma: Abort send-op if fail to create addr handler Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 06/31] hw/rdma: Add support for MAD packets Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 07/31] hw/pvrdma: Make function reset_device return void Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 08/31] hw/pvrdma: Make default pkey 0xFFFF Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 09/31] hw/pvrdma: Set the correct opcode for recv completion Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 10/31] hw/pvrdma: Set the correct opcode for send completion Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 11/31] qapi: Define new QMP message for pvrdma Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 12/31] hw/pvrdma: Add support to allow guest to configure GID table Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 13/31] vmxnet3: Move some definitions to header file Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 14/31] hw/pvrdma: Make sure PCI function 0 is vmxnet3 Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 15/31] hw/rdma: Initialize node_guid from vmxnet3 mac address Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 16/31] hw/pvrdma: Make device state depend on Ethernet function state Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 17/31] hw/pvrdma: Fill all CQE fields Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 18/31] hw/pvrdma: Fill error code in command's response Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 19/31] hw/rdma: Remove unneeded code that handles more that one port Marcel Apfelbaum
2018-12-22 9:50 ` Marcel Apfelbaum [this message]
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 21/31] hw/pvrdma: Clean device's resource when system is shutdown Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 22/31] hw/rdma: Do not use bitmap_zero_extend to free bitmap Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 23/31] hw/rdma: Do not call rdma_backend_del_gid on an empty gid Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 24/31] docs: Update pvrdma device documentation Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 25/31] pvrdma: release device resources in case of an error Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 26/31] rdma: check num_sge does not exceed MAX_SGE Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 27/31] pvrdma: add uar_read routine Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 28/31] pvrdma: check number of pages when creating rings Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 29/31] pvrdma: release ring object in case of an error Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 30/31] rdma: remove unused VENDOR_ERR_NO_SGE macro Marcel Apfelbaum
2018-12-22 9:50 ` [Qemu-devel] [PATCH PULL 31/31] pvrdma: check return value from pvrdma_idx_ring_has_ routines Marcel Apfelbaum
2018-12-22 13:59 ` [Qemu-devel] [PATCH PULL 00/31] RDMA queue Peter Maydell
2018-12-22 14:30 ` Marcel Apfelbaum
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=20181222095036.29743-21-marcel.apfelbaum@gmail.com \
--to=marcel.apfelbaum@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=pjp@fedoraproject.org \
--cc=qemu-devel@nongnu.org \
--cc=yuval.shaia@oracle.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 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).