KVM: selftests: Fix reserved value WRMSR testcase for multi-feature MSRs

JIRA: https://issues.redhat.com/browse/RHEL-151869

commit 9396cc1e282a280bcba2e932e03994e0aada4cd8
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Feb 12 18:38:41 2026 +0800

    KVM: selftests: Fix reserved value WRMSR testcase for multi-feature MSRs

    When determining whether or not a WRMSR with reserved bits will #GP or
    succeed due to the WRMSR not existing per the guest virtual CPU model,
    expect failure if and only if _all_ features associated with the MSR are
    unsupported.  Checking only the primary feature results in false failures
    when running on AMD and Hygon CPUs with only one of RDPID or RDTSCP, as
    AMD/Hygon CPUs ignore MSR_TSC_AUX[63:32], i.e. don't treat the bits as
    reserved, and so #GP only if the MSR is unsupported.

    Fixes: 9c38ddb3df94 ("KVM: selftests: Add an MSR test to exercise guest/host and read/write")
    Reported-by: Zhiquan Li <zhiquan_li@163.com>
    Closes: https://lore.kernel.org/all/20260209041305.64906-6-zhiquan_li@163.com
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20260212103841.171459-5-zhiquan_li@163.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
This commit is contained in:
Maxim Levitsky
2026-07-21 14:12:12 -04:00
parent b51a02ed55
commit 91aecf3b4c
+1 -1
View File
@@ -175,7 +175,7 @@ void guest_test_reserved_val(const struct kvm_msr *msr)
* If the CPU will truncate the written value (e.g. SYSENTER on AMD),
* expect success and a truncated value, not #GP.
*/
if (!this_cpu_has(msr->feature) ||
if ((!this_cpu_has(msr->feature) && !this_cpu_has(msr->feature2)) ||
msr->rsvd_val == fixup_rdmsr_val(msr->index, msr->rsvd_val)) {
u8 vec = wrmsr_safe(msr->index, msr->rsvd_val);