summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2025-11-14 02:14:20 +0300
committerSean Christopherson <seanjc@google.com>2026-03-03 23:23:26 +0300
commita56444d5e7387effbc61d6b98fe5d68897017fc9 (patch)
tree98fcdd2f7a3afbaa09138b4051a568f6d8d63688
parent3b7a320e491c87c6d25928f6798c2efeef2be0e8 (diff)
downloadlinux-a56444d5e7387effbc61d6b98fe5d68897017fc9.tar.xz
KVM: SVM: Skip OSVW MSR reads if current CPU doesn't support the feature
Skip the OSVW RDMSRs if the current CPU doesn't enumerate support for the MSRs. In practice, checking only the boot CPU's capabilities is sufficient, as the RDMSRs should fault when unsupported, but there's no downside to being more precise, and checking only the boot CPU _looks_ wrong given the rather odd semantics of the MSRs. E.g. if a CPU doesn't support OVSW, then KVM must assume all errata are present. Link: https://patch.msgid.link/20251113231420.1695919-6-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
-rw-r--r--arch/x86/kvm/svm/svm.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 5c4328f42604..3f3290d5a0a6 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -447,12 +447,8 @@ static void svm_init_os_visible_workarounds(void)
if (!osvw_len)
return;
- if (!boot_cpu_has(X86_FEATURE_OSVW)) {
- osvw_status = osvw_len = 0;
- return;
- }
-
- if (native_read_msr_safe(MSR_AMD64_OSVW_ID_LENGTH, &len) ||
+ if (!this_cpu_has(X86_FEATURE_OSVW) ||
+ native_read_msr_safe(MSR_AMD64_OSVW_ID_LENGTH, &len) ||
native_read_msr_safe(MSR_AMD64_OSVW_STATUS, &status))
len = status = 0;