[Qemu-devel] [PATCH v4 0/2] i386/kvm: TSC page clocksource for Hyper-V-on-KVM fixes

Vitaly Kuznetsov posted 2 patches 7 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180322131358.15096-1-vkuznets@redhat.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 failed
Test s390x passed
There is a newer version of this series
target/i386/cpu.c          |  4 +++-
target/i386/cpu.h          |  4 ++++
target/i386/hyperv-proto.h |  9 ++++++++-
target/i386/kvm.c          | 41 +++++++++++++++++++++++++++++++++++++++--
target/i386/machine.c      | 24 ++++++++++++++++++++++++
5 files changed, 78 insertions(+), 4 deletions(-)
[Qemu-devel] [PATCH v4 0/2] i386/kvm: TSC page clocksource for Hyper-V-on-KVM fixes
Posted by Vitaly Kuznetsov 7 years, 7 months ago
Changes since v3:
- check cpu->hyperv_reenlightenment instead of has_msr_reenlightenment
  [Eduardo Habkost, Roman Kagan]
- expose frequency MSRs only when either INVTSC or Reenlightenment is
  provided [Paolo Bonzini] (I'm not doing 'hv_frequency' property for now
  as the discussion around it seems to be inconclusive.)

Previously, Ladi was working on enabling TSC page clocksource for nested
Hyper-V-on-KVM workloads. He found out that if Hyper-V frequency MSRs are
exposed to L1 as well as INVTSC flag Hyper-V enables TSC page clocksource
to its guests. Qemu doesn't pass INVTSC by default as it is a migration
blocker.

I found out there's a different way to make Hyper-V like us: expose
Reenlightenment MSRs to it. KVM doesn't fully support the feature as
we're still unable to migrate nested environments but rudimentary support
we have there (kvm/queue currently) is enough.

Enable Hyper-V reenlightenment MSRs and expose frequency MSRs even without
INVTSC to make things work.

Vitaly Kuznetsov (2):
  i386/kvm: add support for Hyper-V reenlightenment MSRs
  i386/kvm: expose Hyper-V frequency MSRs with reenlightenment

 target/i386/cpu.c          |  4 +++-
 target/i386/cpu.h          |  4 ++++
 target/i386/hyperv-proto.h |  9 ++++++++-
 target/i386/kvm.c          | 41 +++++++++++++++++++++++++++++++++++++++--
 target/i386/machine.c      | 24 ++++++++++++++++++++++++
 5 files changed, 78 insertions(+), 4 deletions(-)

-- 
2.14.3