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