From f05ce7fd6b9b0228ca9179dc733102cf5b1591df Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 12 Nov 2020 12:05:31 -0500 Subject: [PATCH] Fixes for 5.4 Signed-off-by: Sasha Levin --- ...pose-msr_ia32_umwait_control-uncondi.patch | 49 +++++++++++++++++++ queue-5.4/series | 1 + 2 files changed, 50 insertions(+) create mode 100644 queue-5.4/kvm-x86-don-t-expose-msr_ia32_umwait_control-uncondi.patch diff --git a/queue-5.4/kvm-x86-don-t-expose-msr_ia32_umwait_control-uncondi.patch b/queue-5.4/kvm-x86-don-t-expose-msr_ia32_umwait_control-uncondi.patch new file mode 100644 index 00000000000..a58277fc379 --- /dev/null +++ b/queue-5.4/kvm-x86-don-t-expose-msr_ia32_umwait_control-uncondi.patch @@ -0,0 +1,49 @@ +From 2f35b382f217b0d35d8d7e5ab185d4c5f0e05ac6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 11 Nov 2020 14:20:47 +0100 +Subject: KVM: x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally + +From: Maxim Levitsky + +[ Upstream commit f4cfcd2d5aea4e96c5d483c476f3057b6b7baf6a ] + +This msr is only available when the host supports WAITPKG feature. + +This breaks a nested guest, if the L1 hypervisor is set to ignore +unknown msrs, because the only other safety check that the +kernel does is that it attempts to read the msr and +rejects it if it gets an exception. + +Cc: stable@vger.kernel.org +Fixes: 6e3ba4abce ("KVM: vmx: Emulate MSR IA32_UMWAIT_CONTROL") +Signed-off-by: Maxim Levitsky +Message-Id: <20200523161455.3940-3-mlevitsk@redhat.com> +Reviewed-by: Sean Christopherson +Signed-off-by: Paolo Bonzini +(cherry picked from commit f4cfcd2d5aea4e96c5d483c476f3057b6b7baf6a +use boot_cpu_has for checking the feature) +Signed-off-by: Jack Wang +Acked-by: Paolo Bonzini +Signed-off-by: Sasha Levin +--- + arch/x86/kvm/x86.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +index 12e83297ea020..880a24889291c 100644 +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -5235,6 +5235,10 @@ static void kvm_init_msr_list(void) + if (!kvm_x86_ops->rdtscp_supported()) + continue; + break; ++ case MSR_IA32_UMWAIT_CONTROL: ++ if (!boot_cpu_has(X86_FEATURE_WAITPKG)) ++ continue; ++ break; + case MSR_IA32_RTIT_CTL: + case MSR_IA32_RTIT_STATUS: + if (!kvm_x86_ops->pt_supported()) +-- +2.27.0 + diff --git a/queue-5.4/series b/queue-5.4/series index f392b8a2b9d..adabace33c3 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -41,3 +41,4 @@ xfs-fix-scrub-flagging-rtinherit-even-if-there-is-no.patch tpm-efi-don-t-create-binary_bios_measurements-file-f.patch random32-make-prandom_u32-output-unpredictable.patch kvm-arm64-arm_smccc_arch_workaround_1-doesn-t-return-smccc_ret_not_required.patch +kvm-x86-don-t-expose-msr_ia32_umwait_control-uncondi.patch -- 2.47.3