On Mon, Mar 19, 2018 at 06:29:08PM +0100, Vitaly Kuznetsov wrote: > Roman Kagan <rka...@virtuozzo.com> writes: > > > On Fri, Mar 16, 2018 at 06:00:19PM +0100, Vitaly Kuznetsov wrote: > >> KVM recently gained support for Hyper-V Reenlightenment MSRs which are > >> required to make KVM-on-Hyper-V enable TSC page clocksource to its guests > >> when INVTSC is not passed to it (and it is not passed by default in Qemu > >> as it effectively blocks migration). > >> > >> Signed-off-by: Vitaly Kuznetsov <vkuzn...@redhat.com> > >> --- > >> Changes since v1: > >> - add vmstate_msr_hyperv_reenlightenment subsection to vmstate_x86_cpu > >> [Paolo Bonzini] > >> --- [...] > >> + > >> + if (has_msr_hv_reenlightenment) { > >> + env->features[FEAT_HYPERV_EAX] |= > >> + HV_ACCESS_REENLIGHTENMENTS_CONTROL; > >> + } > > > > Can you please add a matching comment to the definition of > > feature_word_info[FEAT_HYPERV_EAX].feat_names[]? > > > > Sure, missed that. > > > Also there appears to be no cpu property to turn this on/off, does it? > > It's enabled based only on the support in the KVM it's running against. > > So I guess we may have a problem migrating between the hosts with > > different KVM versions, one supporting it and the other not. > > Currently nested workloads don't migrate so I decided to take the > opportunity and squeeze the new feature in without adding a new > hv_reenlightenment cpu property (which would have to be added to libvirt > at least). > > > (This is also a problem with has_msr_hv_frequencies, and is in general a > > long-standing issue of hv_* properties being done differently from the > > rest of CPUID features.) > > Suggestions? (To be honest I don't really like us adding new hv_* > property for every new Hyper-V feature we support. I doubt anyone needs > 'partial' Hyper-V emulation. It would be nice to have a single versioned > 'hv' feature implying everything. We may then forbid migrations to older > hv versions. But I don't really know the history of why we decided to go > with a separate hv_* for every feature we add).
You will need "partial" emulation if you want to support live-migration to/from a host where the KVM or QEMU don't support all the features from the current host. Is this something the current Hyper-V code already supports, or it's something known to be broken? -- Eduardo