From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>
Cc: Anirudh Rayabharam <anrayabh@linux.microsoft.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>,
Maxim Levitsky <mlevitsk@redhat.com>,
linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 00/28] KVM: VMX: Support TscScaling and EnclsExitingBitmap with eVMCS + use vmcs_config for L1 VMX MSRs
Date: Wed, 29 Jun 2022 17:05:57 +0200 [thread overview]
Message-ID: <20220629150625.238286-1-vkuznets@redhat.com> (raw)
This series combines previously sent:
- "[PATCH 00/11] KVM: VMX: Support TscScaling and EnclsExitingBitmap
with eVMCS"
(https://lore.kernel.org/kvm/20220621155830.60115-1-vkuznets@redhat.com/)
and
- "[PATCH 00/14] KVM: nVMX: Use vmcs_config for setting up nested VMX MSRs"
(https://lore.kernel.org/kvm/20220627160440.31857-1-vkuznets@redhat.com/)
this is done to address Jim's concern that any changes to L1 VMX control
MSRs will inevitably break live migration. This version should not produce
changes.
Original description:
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'.
While on it, implement Sean's idea to use vmcs_config for setting up
L1 VMX control MSRs instead of re-reading host MSRs.
Sean Christopherson (1):
KVM: VMX: Clear controls obsoleted by EPT at runtime, not setup
Vitaly Kuznetsov (27):
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
KVM: VMX: Enable VM_{EXIT,ENTRY}_LOAD_IA32_PERF_GLOBAL_CTRL for KVM on
Hyper-V
KVM: VMX: Get rid of eVMCS specific VMX controls sanitization
KVM: VMX: Check VM_ENTRY_IA32E_MODE in setup_vmcs_config()
KVM: VMX: Check CPU_BASED_{INTR,NMI}_WINDOW_EXITING in
setup_vmcs_config()
KVM: VMX: Tweak the special handling of SECONDARY_EXEC_ENCLS_EXITING
in setup_vmcs_config()
KVM: VMX: Extend VMX controls macro shenanigans
KVM: VMX: Move CPU_BASED_CR8_{LOAD,STORE}_EXITING filtering out of
setup_vmcs_config()
KVM: VMX: Add missing VMEXIT controls to vmcs_config
KVM: VMX: Add missing VMENTRY controls to vmcs_config
KVM: VMX: Add missing CPU based VM execution controls to vmcs_config
KVM: VMX: Move LOAD_IA32_PERF_GLOBAL_CTRL errata handling out of
setup_vmcs_config()
KVM: nVMX: Use sanitized allowed-1 bits for VMX control MSRs
KVM: VMX: Store required-1 VMX controls in vmcs_config
KVM: nVMX: Use sanitized required-1 bits for VMX control MSRs
KVM: VMX: Cache MSR_IA32_VMX_MISC in vmcs_config
KVM: nVMX: Use cached host MSR_IA32_VMX_MISC value for setting up
nested MSR
Documentation/virt/kvm/api.rst | 43 ++-
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/capabilities.h | 16 +-
arch/x86/kvm/vmx/evmcs.c | 135 ++++++---
arch/x86/kvm/vmx/evmcs.h | 34 ++-
arch/x86/kvm/vmx/nested.c | 80 ++++--
arch/x86/kvm/vmx/nested.h | 2 +-
arch/x86/kvm/vmx/vmx.c | 269 +++++++++---------
arch/x86/kvm/vmx/vmx.h | 133 ++++++++-
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 +-
21 files changed, 597 insertions(+), 255 deletions(-)
--
2.35.3
next reply other threads:[~2022-06-29 15:06 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-29 15:05 Vitaly Kuznetsov [this message]
2022-06-29 15:05 ` [PATCH v2 01/28] KVM: x86: hyper-v: Expose access to debug MSRs in the partition privilege flags Vitaly Kuznetsov
2022-06-29 15:05 ` [PATCH v2 02/28] x86/hyperv: Fix 'struct hv_enlightened_vmcs' definition Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 03/28] x86/hyperv: Update " Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 04/28] KVM: VMX: Define VMCS-to-EVMCS conversion for the new fields Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 05/28] KVM: nVMX: Support several new fields in eVMCSv1 Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 06/28] KVM: nVMX: Introduce KVM_CAP_HYPERV_ENLIGHTENED_VMCS2 Vitaly Kuznetsov
2022-07-06 21:35 ` Sean Christopherson
2022-07-07 9:58 ` Vitaly Kuznetsov
2022-07-07 16:17 ` Sean Christopherson
2022-07-07 16:40 ` Sean Christopherson
2022-06-29 15:06 ` [PATCH v2 07/28] KVM: selftests: Switch to KVM_CAP_HYPERV_ENLIGHTENED_VMCS2 Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 08/28] KVM: VMX: Support TSC scaling with enlightened VMCS Vitaly Kuznetsov
2022-07-07 10:01 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 09/28] KVM: selftests: Add ENCLS_EXITING_BITMAP{,HIGH} VMCS fields Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 10/28] KVM: selftests: Switch to updated eVMCSv1 definition Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 11/28] KVM: selftests: Enable TSC scaling in evmcs selftest Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 12/28] KVM: VMX: Enable VM_{EXIT,ENTRY}_LOAD_IA32_PERF_GLOBAL_CTRL for KVM on Hyper-V Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 13/28] KVM: VMX: Get rid of eVMCS specific VMX controls sanitization Vitaly Kuznetsov
2022-07-06 22:27 ` Sean Christopherson
2022-07-07 10:03 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 14/28] KVM: VMX: Check VM_ENTRY_IA32E_MODE in setup_vmcs_config() Vitaly Kuznetsov
2022-06-29 20:28 ` Jim Mattson
2022-06-29 15:06 ` [PATCH v2 15/28] KVM: VMX: Check CPU_BASED_{INTR,NMI}_WINDOW_EXITING " Vitaly Kuznetsov
2022-07-01 3:58 ` Jim Mattson
2022-07-01 8:12 ` Vitaly Kuznetsov
2022-07-06 18:44 ` Sean Christopherson
2022-06-29 15:06 ` [PATCH v2 16/28] KVM: VMX: Tweak the special handling of SECONDARY_EXEC_ENCLS_EXITING " Vitaly Kuznetsov
2022-06-29 18:56 ` Jim Mattson
2022-06-30 7:32 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 17/28] KVM: VMX: Extend VMX controls macro shenanigans Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 18/28] KVM: VMX: Move CPU_BASED_CR8_{LOAD,STORE}_EXITING filtering out of setup_vmcs_config() Vitaly Kuznetsov
2022-07-01 4:14 ` Jim Mattson
2022-06-29 15:06 ` [PATCH v2 19/28] KVM: VMX: Add missing VMEXIT controls to vmcs_config Vitaly Kuznetsov
2022-07-01 16:02 ` Jim Mattson
2022-06-29 15:06 ` [PATCH v2 20/28] KVM: VMX: Add missing VMENTRY " Vitaly Kuznetsov
2022-07-01 16:01 ` Jim Mattson
2022-07-07 10:41 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 21/28] KVM: VMX: Add missing CPU based VM execution " Vitaly Kuznetsov
2022-07-01 16:05 ` Jim Mattson
2022-06-29 15:06 ` [PATCH v2 22/28] KVM: VMX: Clear controls obsoleted by EPT at runtime, not setup Vitaly Kuznetsov
2022-07-01 16:11 ` Jim Mattson
2022-07-07 14:57 ` Vitaly Kuznetsov
2022-07-07 19:30 ` Sean Christopherson
2022-07-07 21:32 ` Jim Mattson
2022-07-07 21:39 ` Sean Christopherson
2022-07-07 23:12 ` Jim Mattson
2022-07-08 7:55 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 23/28] KVM: VMX: Move LOAD_IA32_PERF_GLOBAL_CTRL errata handling out of setup_vmcs_config() Vitaly Kuznetsov
2022-07-01 16:26 ` Jim Mattson
2022-07-07 12:07 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 24/28] KVM: nVMX: Use sanitized allowed-1 bits for VMX control MSRs Vitaly Kuznetsov
2022-07-01 22:54 ` Jim Mattson
2022-07-07 12:30 ` Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 25/28] KVM: VMX: Store required-1 VMX controls in vmcs_config Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 26/28] KVM: nVMX: Use sanitized required-1 bits for VMX control MSRs Vitaly Kuznetsov
2022-06-29 15:06 ` [PATCH v2 27/28] KVM: VMX: Cache MSR_IA32_VMX_MISC in vmcs_config Vitaly Kuznetsov
2022-06-29 18:33 ` Jim Mattson
2022-06-29 15:06 ` [PATCH v2 28/28] KVM: nVMX: Use cached host MSR_IA32_VMX_MISC value for setting up nested MSR Vitaly Kuznetsov
2022-06-29 18:37 ` Jim Mattson
2022-06-30 7:36 ` Vitaly Kuznetsov
2022-06-30 12:27 ` Jim Mattson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220629150625.238286-1-vkuznets@redhat.com \
--to=vkuznets@redhat.com \
--cc=anrayabh@linux.microsoft.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mlevitsk@redhat.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=wanpengli@tencent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®