On Mon, Nov 14, 2016 at 02:54:38PM +0100, Paolo Bonzini wrote: > > > On 14/11/2016 13:36, Marcelo Tosatti wrote: > > + /* local (running VM) restore */ > > + if (s->clock_valid) { > > + /* > > + * if host does not support reliable KVM_GET_CLOCK, > > + * read kvmclock value from memory > > + */ > > + if (!kvm_has_adjust_clock_stable()) { > > + time_at_migration = kvmclock_current_nsec(s); > > Just assign to s->clock here... If kvmclock is not enabled, you want to use s->clock, rather than 0. > > + } > > + /* migration/savevm/init restore */ > > + } else { > > + /* > > + * use s->clock in case machine uses reliable > > + * get clock and host where vm was executing > > + * supported reliable get clock > > + */ > > + if (!s->mach_use_reliable_get_clock || > > + !s->src_use_reliable_get_clock) { > > + time_at_migration = kvmclock_current_nsec(s); > > ... and here, so that time_at_migration is not needed anymore. Same as above. > Also here it's enough to look at s->src_user_reliable_get_clock, because > if s->mach_use_reliable_get_clock is false, > s->src_use_reliable_get_clock will be false as well. Yes, but i like the code annotation. > > + } > > + } > > > > - /* We can't rely on the migrated clock value, just discard it */ > > + /* We can't rely on the saved clock value, just discard it */ > > if (time_at_migration) { > > s->clock = time_at_migration; > > [...] > > > > > +static bool kvmclock_src_use_reliable_get_clock(void *opaque) > > +{ > > + KVMClockState *s = opaque; > > + > > + /* > > + * On machine types that support reliable KVM_GET_CLOCK, > > + * if host kernel does provide reliable KVM_GET_CLOCK, > > + * set src_use_reliable_get_clock=true so that destination > > + * avoids reading kvmclock from memory. > > + */ > > + if (s->mach_use_reliable_get_clock && kvm_has_adjust_clock_stable()) { > > + s->src_use_reliable_get_clock = true; > > + } > > + > > + return s->src_use_reliable_get_clock; > > +} > > Here you can just return s->mach_use_reliable_get_clock. mach_use_reliable_get_clock can be true but host might not support it. > To set > s->src_use_reliable_get_clock, after issuing KVM_GET_CLOCK you can look > at the KVM_CLOCK_TSC_STABLE bit in the kvm_clock struct's flags. KVM_CLOCK_TSC_STABLE bit in the kvmclock structure != KVM_GET_CLOCK returns reliable value, right? > You don't actually need kvm_has_adjust_clock_stable(), but please place > the KVM_GET_CLOCK code for kvmclock_pre_save and > kvmclock_vm_state_change in a common function. Sure. > Also, just another small nit: please make your scripts use the "-p" > option on diff. :) Sure. > > Thanks, > > Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html