[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH PULL 20/31] vl: Introduce shutdown_notifiers
From: |
Marcel Apfelbaum |
Subject: |
[Qemu-devel] [PATCH PULL 20/31] vl: Introduce shutdown_notifiers |
Date: |
Sat, 22 Dec 2018 11:50:25 +0200 |
From: Yuval Shaia <address@hidden>
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 <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Signed-off-by: Marcel Apfelbaum <address@hidden>
---
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
- [Qemu-devel] [PATCH PULL 10/31] hw/pvrdma: Set the correct opcode for send completion, (continued)
- [Qemu-devel] [PATCH PULL 10/31] hw/pvrdma: Set the correct opcode for send completion, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 06/31] hw/rdma: Add support for MAD packets, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 11/31] qapi: Define new QMP message for pvrdma, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 12/31] hw/pvrdma: Add support to allow guest to configure GID table, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 15/31] hw/rdma: Initialize node_guid from vmxnet3 mac address, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 16/31] hw/pvrdma: Make device state depend on Ethernet function state, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 17/31] hw/pvrdma: Fill all CQE fields, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 18/31] hw/pvrdma: Fill error code in command's response, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 19/31] hw/rdma: Remove unneeded code that handles more that one port, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 21/31] hw/pvrdma: Clean device's resource when system is shutdown, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 20/31] vl: Introduce shutdown_notifiers,
Marcel Apfelbaum <=
- [Qemu-devel] [PATCH PULL 22/31] hw/rdma: Do not use bitmap_zero_extend to free bitmap, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 27/31] pvrdma: add uar_read routine, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 26/31] rdma: check num_sge does not exceed MAX_SGE, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 31/31] pvrdma: check return value from pvrdma_idx_ring_has_ routines, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 23/31] hw/rdma: Do not call rdma_backend_del_gid on an empty gid, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 25/31] pvrdma: release device resources in case of an error, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 29/31] pvrdma: release ring object in case of an error, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 30/31] rdma: remove unused VENDOR_ERR_NO_SGE macro, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 28/31] pvrdma: check number of pages when creating rings, Marcel Apfelbaum, 2018/12/22
- [Qemu-devel] [PATCH PULL 24/31] docs: Update pvrdma device documentation, Marcel Apfelbaum, 2018/12/22