[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220621155830.60115-1-vkuznets@redhat.com>
Date: Tue, 21 Jun 2022 17:58:19 +0200
From: Vitaly Kuznetsov <vkuznets@...hat.com>
To: kvm@...r.kernel.org, Paolo Bonzini <pbonzini@...hat.com>
Cc: Anirudh Rayabharam <anrayabh@...ux.microsoft.com>,
Sean Christopherson <seanjc@...gle.com>,
Wanpeng Li <wanpengli@...cent.com>,
Jim Mattson <jmattson@...gle.com>,
Maxim Levitsky <mlevitsk@...hat.com>,
linux-hyperv@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH 00/11] KVM: VMX: Support TscScaling and EnclsExitingBitmap whith eVMCS
Enlightened VMCS v1 definition was updates to include fields for the
following features:
- PerfGlobalCtrl
- EnclsExitingBitmap
- TSC scaling
- GuestLbrCtl
- CET
- SSP
Add support for EnclsExitingBitmap and TSC scaling to KVM. PerfGlobalCtrl
doesn't work correctly with Win11, don't enable it yet. SSP, CET and
GuestLbrCtl are not currently supported by KVM.
Note: adding new field for KVM on Hyper-V case is easy but adding them to
Hyper-V on KVM requires some work to not break live migration as we never
expected this to happen without eVMCS version update. The series introduces
new KVM_CAP_HYPERV_ENLIGHTENED_VMCS2 capability and a notion of KVM
internal 'Enlightened VMCS revision'.
Example QEMU enablement patch for the new capability will be sent as a
follow-up to the series.
Vitaly Kuznetsov (11):
KVM: x86: hyper-v: Expose access to debug MSRs in the partition
privilege flags
x86/hyperv: Fix 'struct hv_enlightened_vmcs' definition
x86/hyperv: Update 'struct hv_enlightened_vmcs' definition
KVM: VMX: Define VMCS-to-EVMCS conversion for the new fields
KVM: nVMX: Support several new fields in eVMCSv1
KVM: nVMX: Introduce KVM_CAP_HYPERV_ENLIGHTENED_VMCS2
KVM: selftests: Switch to KVM_CAP_HYPERV_ENLIGHTENED_VMCS2
KVM: VMX: Support TSC scaling with enlightened VMCS
KVM: selftests: Add ENCLS_EXITING_BITMAP{,HIGH} VMCS fields
KVM: selftests: Switch to updated eVMCSv1 definition
KVM: selftests: Enable TSC scaling in evmcs selftest
Documentation/virt/kvm/api.rst | 42 ++++++-
arch/x86/include/asm/hyperv-tlfs.h | 19 ++-
arch/x86/include/asm/kvm_host.h | 2 +-
arch/x86/kvm/hyperv.c | 1 +
arch/x86/kvm/vmx/evmcs.c | 116 ++++++++++++++----
arch/x86/kvm/vmx/evmcs.h | 28 +++--
arch/x86/kvm/vmx/nested.c | 43 ++++++-
arch/x86/kvm/vmx/vmx.c | 4 +-
arch/x86/kvm/vmx/vmx.h | 15 +--
arch/x86/kvm/x86.c | 15 ++-
include/asm-generic/hyperv-tlfs.h | 2 +
include/uapi/linux/kvm.h | 3 +-
.../selftests/kvm/include/kvm_util_base.h | 8 ++
.../selftests/kvm/include/x86_64/evmcs.h | 46 ++++++-
.../selftests/kvm/include/x86_64/vmx.h | 2 +
tools/testing/selftests/kvm/lib/x86_64/vmx.c | 5 +-
.../testing/selftests/kvm/x86_64/evmcs_test.c | 33 ++++-
.../selftests/kvm/x86_64/hyperv_cpuid.c | 2 +-
.../kvm/x86_64/vmx_set_nested_state_test.c | 2 +-
19 files changed, 321 insertions(+), 67 deletions(-)
--
2.35.3
Powered by blists - more mailing lists