lkml.org 
[lkml]   [2021]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 30/49] KVM: x86: Supplement __cr4_reserved_bits() with X86_FEATURE_PCID check
    Date
    From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    From: Vitaly Kuznetsov <vkuznets@redhat.com>

    [ Upstream commit 4683d758f48e6ae87d3d3493ffa00aceb955ee16 ]

    Commit 7a873e455567 ("KVM: selftests: Verify supported CR4 bits can be set
    before KVM_SET_CPUID2") reveals that KVM allows to set X86_CR4_PCIDE even
    when PCID support is missing:

    ==== Test Assertion Failure ====
    x86_64/set_sregs_test.c:41: rc
    pid=6956 tid=6956 - Invalid argument
    1 0x000000000040177d: test_cr4_feature_bit at set_sregs_test.c:41
    2 0x00000000004014fc: main at set_sregs_test.c:119
    3 0x00007f2d9346d041: ?? ??:0
    4 0x000000000040164d: _start at ??:?
    KVM allowed unsupported CR4 bit (0x20000)

    Add X86_FEATURE_PCID feature check to __cr4_reserved_bits() to make
    kvm_is_valid_cr4() fail.

    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20210201142843.108190-1-vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/x86/kvm/x86.h | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
    index e7ca622a468f..2249a7d7ca27 100644
    --- a/arch/x86/kvm/x86.h
    +++ b/arch/x86/kvm/x86.h
    @@ -404,6 +404,8 @@ bool kvm_msr_allowed(struct kvm_vcpu *vcpu, u32 index, u32 type);
    __reserved_bits |= X86_CR4_UMIP; \
    if (!__cpu_has(__c, X86_FEATURE_VMX)) \
    __reserved_bits |= X86_CR4_VMXE; \
    + if (!__cpu_has(__c, X86_FEATURE_PCID)) \
    + __reserved_bits |= X86_CR4_PCIDE; \
    __reserved_bits; \
    })

    --
    2.30.1


    \
     
     \ /
      Last update: 2021-03-10 14:40    [W:4.282 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site