qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH V1 11/32] cpu: disable ticks when suspended


From: Dr. David Alan Gilbert
Subject: Re: [PATCH V1 11/32] cpu: disable ticks when suspended
Date: Fri, 11 Sep 2020 18:53:18 +0100
User-agent: Mutt/1.14.6 (2020-07-11)

* Steve Sistare (steven.sistare@oracle.com) wrote:
> After cprload, the guest console misbehaves.  You must type 8 characters
> before any are echoed to the terminal.  Qemu was not sending interrupts
> to the guest because the QEMU_CLOCK_VIRTUAL timers_state.cpu_clock_offset
> was bad.  The offset is usually updated at cprsave time by the path
> 
>   save_cpr_snapshot()
>     vm_stop()
>       do_vm_stop()
>         if (runstate_is_running())
>           cpu_disable_ticks();
>             timers_state.cpu_clock_offset = cpu_get_clock_locked();
> 
> However, if the guest is in RUN_STATE_SUSPENDED, then cpu_disable_ticks is
> not called.  Further, the earlier transition to suspended in
> qemu_system_suspend did not disable ticks.  To fix, call cpu_disable_ticks
> from save_cpr_snapshot.
> 
> Signed-off-by: Steve Sistare <steven.sistare@oracle.com>

Are you saying this is really a more generic bug with migrating when
suspended and we should fix this anyway?

Dave

> ---
>  migration/savevm.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/migration/savevm.c b/migration/savevm.c
> index f101039..00f493b 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -2729,6 +2729,11 @@ void save_cpr_snapshot(const char *file, const char 
> *mode, Error **errp)
>          return;
>      }
>  
> +    /* Update timers_state before saving.  Suspend did not so do. */
> +    if (runstate_check(RUN_STATE_SUSPENDED)) {
> +        cpu_disable_ticks();
> +    }
> +
>      vm_stop(RUN_STATE_SAVE_VM);
>  
>      ret = qemu_savevm_state(f, op, errp);
> -- 
> 1.8.3.1
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK




reply via email to

[Prev in Thread] Current Thread [Next in Thread]