[PATCH v8 0/4] KVM: Add virtualization support of split lock detection
From: Xiaoyao Li
Date: Tue Apr 14 2020 - 02:50:22 EST
This series aims to add the virtualization of split lock detection in
KVM.
Due to the fact MSR TEST_CTRL is per-core scope, feature split lock
detection can be exposed to guest only when SMT is disabled/unsupported.
Changes in v8:
- rebase to v5.7-rc1.
- basic enabling of split lock detection already merged.
- When host is sld_warn and nosmt, load guest's sld bit when in KVM
context, i.e., between vmx_prepare_switch_to_guest() and before
vmx_prepare_switch_to_host(), KVM uses guest sld setting.
Changes in v7:
https://lkml.kernel.org/r/20200325030924.132881-1-xiaoyao.li@xxxxxxxxx
- only pick patch 1 and patch 2, and hold all the left.
- Update SLD bit on each processor based on sld_state.
Changes in v6:
https://lkml.kernel.org/r/20200324151859.31068-1-xiaoyao.li@xxxxxxxxx
- Drop the sld_not_exist flag and use X86_FEATURE_SPLIT_LOCK_DETECT to
check whether need to init split lock detection. [tglx]
- Use tglx's method to verify the existence of split lock detectoin.
- small optimization of sld_update_msr() that the default value of
msr_test_ctrl_cache has split_lock_detect bit cleared.
- Drop the patch3 in v5 that introducing kvm_only option. [tglx]
- Rebase patch4-8 to kvm/queue.
- use the new kvm-cpu-cap to expose X86_FEATURE_CORE_CAPABILITIES in
Patch 6.
Changes in v5:
https://lkml.kernel.org/r/20200315050517.127446-1-xiaoyao.li@xxxxxxxxx
- Use X86_FEATURE_SPLIT_LOCK_DETECT flag in kvm to ensure split lock
detection is really supported.
- Add and export sld related helper functions in their related usecase
kvm patches.
Xiaoyao Li (4):
kvm: x86: Emulate MSR IA32_CORE_CAPABILITIES
kvm: vmx: Enable MSR TEST_CTRL for guest
x86/split_lock: Export sld_update_msr() and sld_state
kvm: vmx: virtualize split lock detection
arch/x86/include/asm/cpu.h | 12 +++++
arch/x86/include/asm/kvm_host.h | 1 +
arch/x86/kernel/cpu/intel.c | 13 ++----
arch/x86/kvm/cpuid.c | 3 +-
arch/x86/kvm/vmx/vmx.c | 83 ++++++++++++++++++++++++++++++---
arch/x86/kvm/vmx/vmx.h | 2 +
arch/x86/kvm/x86.c | 35 +++++++++++++-
7 files changed, 132 insertions(+), 17 deletions(-)
--
2.20.1