[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH V8 05/39] vl: start on wakeup request
From: |
Steven Sistare |
Subject: |
Re: [PATCH V8 05/39] vl: start on wakeup request |
Date: |
Tue, 5 Jul 2022 14:26:09 -0400 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
On 6/16/2022 11:55 AM, Marc-André Lureau wrote:
> Hi
>
> On Wed, Jun 15, 2022 at 7:27 PM Steve Sistare <steven.sistare@oracle.com
> <mailto:steven.sistare@oracle.com>> wrote:
>
> 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.
>
>
> Nothing calls qemu_system_start_on_wakeup_request() yet, so it would be
> useful to say where this is going to be used next.
>
> (otherwise, it seems ok to me)
Will do, thanks - Steve
> Signed-off-by: Steve Sistare <steven.sistare@oracle.com
> <mailto:steven.sistare@oracle.com>>
> ---
> include/sysemu/runstate.h | 1 +
> softmmu/runstate.c | 16 +++++++++++++++-
> 2 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/include/sysemu/runstate.h b/include/sysemu/runstate.h
> index f3ed525..16c1c41 100644
> --- a/include/sysemu/runstate.h
> +++ b/include/sysemu/runstate.h
> @@ -57,6 +57,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 fac7b63..9b27d74 100644
> --- a/softmmu/runstate.c
> +++ b/softmmu/runstate.c
> @@ -115,6 +115,7 @@ 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_FINISH_MIGRATE, RUN_STATE_RUNNING },
> { RUN_STATE_FINISH_MIGRATE, RUN_STATE_PAUSED },
> @@ -335,6 +336,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 +564,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 +581,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
>
>
>
>
> --
> Marc-André Lureau
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH V8 05/39] vl: start on wakeup request,
Steven Sistare <=