diff mbox series

[2/3] vl: on -loadvm set run state to "restore-vm"

Message ID 20220813011031.3744-3-j@getutm.app
State New
Headers show
Series Set runstate to RUN_STATE_RESTORE_VM when started with "-loadvm" | expand

Commit Message

Joelle van Dyne Aug. 13, 2022, 1:10 a.m. UTC
This allows us to differentiate between a fresh boot and a restore boot.

Signed-off-by: Joelle van Dyne <j@getutm.app>
---
 softmmu/runstate.c | 1 +
 softmmu/vl.c       | 3 +++
 2 files changed, 4 insertions(+)

Comments

Daniel P. Berrangé Aug. 22, 2022, 10:11 a.m. UTC | #1
On Fri, Aug 12, 2022 at 06:10:30PM -0700, Joelle van Dyne wrote:
> This allows us to differentiate between a fresh boot and a restore boot.
> 
> Signed-off-by: Joelle van Dyne <j@getutm.app>
> ---
>  softmmu/runstate.c | 1 +
>  softmmu/vl.c       | 3 +++
>  2 files changed, 4 insertions(+)

What happens if the user launches QEMU with -S and NOT  -loadvm, and
then uses the 'loadvm' monitor command to restore the VM state ?


> diff --git a/softmmu/runstate.c b/softmmu/runstate.c
> index 1e68680b9d..fa3dd3a4ab 100644
> --- a/softmmu/runstate.c
> +++ b/softmmu/runstate.c
> @@ -76,6 +76,7 @@ typedef struct {
>  
>  static const RunStateTransition runstate_transitions_def[] = {
>      { RUN_STATE_PRELAUNCH, RUN_STATE_INMIGRATE },
> +    { RUN_STATE_PRELAUNCH, RUN_STATE_RESTORE_VM },
>  
>      { RUN_STATE_DEBUG, RUN_STATE_RUNNING },
>      { RUN_STATE_DEBUG, RUN_STATE_FINISH_MIGRATE },
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 706bd7cff7..29586d94ff 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -3131,6 +3131,9 @@ void qemu_init(int argc, char **argv, char **envp)
>                  add_device_config(DEV_DEBUGCON, optarg);
>                  break;
>              case QEMU_OPTION_loadvm:
> +                if (!loadvm) {
> +                    runstate_set(RUN_STATE_RESTORE_VM);
> +                }
>                  loadvm = optarg;
>                  break;
>              case QEMU_OPTION_full_screen:
> -- 
> 2.28.0
> 
> 

With regards,
Daniel
Joelle van Dyne Oct. 29, 2022, 11:35 p.m. UTC | #2
On Mon, Aug 22, 2022 at 3:11 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Fri, Aug 12, 2022 at 06:10:30PM -0700, Joelle van Dyne wrote:
> > This allows us to differentiate between a fresh boot and a restore boot.
> >
> > Signed-off-by: Joelle van Dyne <j@getutm.app>
> > ---
> >  softmmu/runstate.c | 1 +
> >  softmmu/vl.c       | 3 +++
> >  2 files changed, 4 insertions(+)
>
> What happens if the user launches QEMU with -S and NOT  -loadvm, and
> then uses the 'loadvm' monitor command to restore the VM state ?
Sorry, this email totally slipped past me. The 'loadvm' monitor
command does this:

vm_stop(RUN_STATE_RESTORE_VM);

Which sets the correct state.

>
>
> > diff --git a/softmmu/runstate.c b/softmmu/runstate.c
> > index 1e68680b9d..fa3dd3a4ab 100644
> > --- a/softmmu/runstate.c
> > +++ b/softmmu/runstate.c
> > @@ -76,6 +76,7 @@ typedef struct {
> >
> >  static const RunStateTransition runstate_transitions_def[] = {
> >      { RUN_STATE_PRELAUNCH, RUN_STATE_INMIGRATE },
> > +    { RUN_STATE_PRELAUNCH, RUN_STATE_RESTORE_VM },
> >
> >      { RUN_STATE_DEBUG, RUN_STATE_RUNNING },
> >      { RUN_STATE_DEBUG, RUN_STATE_FINISH_MIGRATE },
> > diff --git a/softmmu/vl.c b/softmmu/vl.c
> > index 706bd7cff7..29586d94ff 100644
> > --- a/softmmu/vl.c
> > +++ b/softmmu/vl.c
> > @@ -3131,6 +3131,9 @@ void qemu_init(int argc, char **argv, char **envp)
> >                  add_device_config(DEV_DEBUGCON, optarg);
> >                  break;
> >              case QEMU_OPTION_loadvm:
> > +                if (!loadvm) {
> > +                    runstate_set(RUN_STATE_RESTORE_VM);
> > +                }
> >                  loadvm = optarg;
> >                  break;
> >              case QEMU_OPTION_full_screen:
> > --
> > 2.28.0
> >
> >
>
> With regards,
> Daniel
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>
diff mbox series

Patch

diff --git a/softmmu/runstate.c b/softmmu/runstate.c
index 1e68680b9d..fa3dd3a4ab 100644
--- a/softmmu/runstate.c
+++ b/softmmu/runstate.c
@@ -76,6 +76,7 @@  typedef struct {
 
 static const RunStateTransition runstate_transitions_def[] = {
     { RUN_STATE_PRELAUNCH, RUN_STATE_INMIGRATE },
+    { RUN_STATE_PRELAUNCH, RUN_STATE_RESTORE_VM },
 
     { RUN_STATE_DEBUG, RUN_STATE_RUNNING },
     { RUN_STATE_DEBUG, RUN_STATE_FINISH_MIGRATE },
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 706bd7cff7..29586d94ff 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3131,6 +3131,9 @@  void qemu_init(int argc, char **argv, char **envp)
                 add_device_config(DEV_DEBUGCON, optarg);
                 break;
             case QEMU_OPTION_loadvm:
+                if (!loadvm) {
+                    runstate_set(RUN_STATE_RESTORE_VM);
+                }
                 loadvm = optarg;
                 break;
             case QEMU_OPTION_full_screen: