[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH V7 05/29] vl: start on wakeup request
From: |
Steve Sistare |
Subject: |
[PATCH V7 05/29] vl: start on wakeup request |
Date: |
Wed, 22 Dec 2021 11:05:10 -0800 |
If qemu starts and loads a VM in the suspended state, then a later wakeup
request will set the state to running, which is not sufficient to initialize
the vm, as vm_start was never called during this invocation of qemu. See
qemu_system_wakeup_request().
Define the start_on_wakeup_requested() hook to cause vm_start() to be called
when processing the wakeup request.
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
---
include/sysemu/runstate.h | 1 +
softmmu/runstate.c | 17 ++++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/include/sysemu/runstate.h b/include/sysemu/runstate.h
index a535691..b655c7b 100644
--- a/include/sysemu/runstate.h
+++ b/include/sysemu/runstate.h
@@ -51,6 +51,7 @@ void qemu_system_reset_request(ShutdownCause reason);
void qemu_system_suspend_request(void);
void qemu_register_suspend_notifier(Notifier *notifier);
bool qemu_wakeup_suspend_enabled(void);
+void qemu_system_start_on_wakeup_request(void);
void qemu_system_wakeup_request(WakeupReason reason, Error **errp);
void qemu_system_wakeup_enable(WakeupReason reason, bool enabled);
void qemu_register_wakeup_notifier(Notifier *notifier);
diff --git a/softmmu/runstate.c b/softmmu/runstate.c
index 10d9b73..3d344c9 100644
--- a/softmmu/runstate.c
+++ b/softmmu/runstate.c
@@ -115,6 +115,8 @@ static const RunStateTransition runstate_transitions_def[]
= {
{ RUN_STATE_PRELAUNCH, RUN_STATE_RUNNING },
{ RUN_STATE_PRELAUNCH, RUN_STATE_FINISH_MIGRATE },
{ RUN_STATE_PRELAUNCH, RUN_STATE_INMIGRATE },
+ { RUN_STATE_PRELAUNCH, RUN_STATE_SUSPENDED },
+ { RUN_STATE_PRELAUNCH, RUN_STATE_PAUSED },
{ RUN_STATE_FINISH_MIGRATE, RUN_STATE_RUNNING },
{ RUN_STATE_FINISH_MIGRATE, RUN_STATE_PAUSED },
@@ -335,6 +337,7 @@ void vm_state_notify(bool running, RunState state)
}
}
+static bool start_on_wakeup_requested;
static ShutdownCause reset_requested;
static ShutdownCause shutdown_requested;
static int shutdown_signal;
@@ -562,6 +565,11 @@ void qemu_register_suspend_notifier(Notifier *notifier)
notifier_list_add(&suspend_notifiers, notifier);
}
+void qemu_system_start_on_wakeup_request(void)
+{
+ start_on_wakeup_requested = true;
+}
+
void qemu_system_wakeup_request(WakeupReason reason, Error **errp)
{
trace_system_wakeup_request(reason);
@@ -574,7 +582,14 @@ void qemu_system_wakeup_request(WakeupReason reason, Error
**errp)
if (!(wakeup_reason_mask & (1 << reason))) {
return;
}
- runstate_set(RUN_STATE_RUNNING);
+
+ if (start_on_wakeup_requested) {
+ start_on_wakeup_requested = false;
+ vm_start();
+ } else {
+ runstate_set(RUN_STATE_RUNNING);
+ }
+
wakeup_reason = reason;
qemu_notify_event();
}
--
1.8.3.1
- [PATCH V7 00/29] Live Update, Steve Sistare, 2021/12/22
- [PATCH V7 02/29] migration: fix populate_vfio_info, Steve Sistare, 2021/12/22
- [PATCH V7 06/29] cpr: reboot mode, Steve Sistare, 2021/12/22
- [PATCH V7 11/29] qapi: list utility functions, Steve Sistare, 2021/12/22
- [PATCH V7 09/29] oslib: qemu_clear_cloexec, Steve Sistare, 2021/12/22
- [PATCH V7 12/29] vl: helper to request re-exec, Steve Sistare, 2021/12/22
- [PATCH V7 03/29] migration: qemu file wrappers, Steve Sistare, 2021/12/22
- [PATCH V7 07/29] cpr: reboot HMP interfaces, Steve Sistare, 2021/12/22
- [PATCH V7 05/29] vl: start on wakeup request,
Steve Sistare <=
- [PATCH V7 01/29] memory: qemu_check_ram_volatile, Steve Sistare, 2021/12/22
- [PATCH V7 04/29] migration: simplify savevm, Steve Sistare, 2021/12/22
- [PATCH V7 13/29] cpr: preserve extra state, Steve Sistare, 2021/12/22
- [PATCH V7 15/29] cpr: restart HMP interfaces, Steve Sistare, 2021/12/22
- [PATCH V7 17/29] pci: export functions for cpr, Steve Sistare, 2021/12/22
- [PATCH V7 20/29] vfio-pci: cpr part 2 (msi), Steve Sistare, 2021/12/22
- [PATCH V7 19/29] vfio-pci: cpr part 1 (fd and dma), Steve Sistare, 2021/12/22
- [PATCH V7 16/29] hostmem-memfd: cpr for memory-backend-memfd, Steve Sistare, 2021/12/22