lkml.org 
[lkml]   [2022]   [Feb]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v10 30/45] KVM: x86: Move lookup of indexed CPUID leafs to helper
    Date
    From: Michael Roth <michael.roth@amd.com>

    Determining which CPUID leafs have significant ECX/index values is
    also needed by guest kernel code when doing SEV-SNP-validated CPUID
    lookups. Move this to common code to keep future updates in sync.

    Reviewed-by: Venu Busireddy <venu.busireddy@oracle.com>
    Signed-off-by: Michael Roth <michael.roth@amd.com>
    Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
    ---
    arch/x86/include/asm/cpuid.h | 34 ++++++++++++++++++++++++++++++++++
    arch/x86/kvm/cpuid.c | 19 ++-----------------
    2 files changed, 36 insertions(+), 17 deletions(-)
    create mode 100644 arch/x86/include/asm/cpuid.h

    diff --git a/arch/x86/include/asm/cpuid.h b/arch/x86/include/asm/cpuid.h
    new file mode 100644
    index 000000000000..70b2db18165e
    --- /dev/null
    +++ b/arch/x86/include/asm/cpuid.h
    @@ -0,0 +1,34 @@
    +/* SPDX-License-Identifier: GPL-2.0 */
    +/*
    + * CPUID-related helpers/definitions
    + *
    + * Derived from arch/x86/kvm/cpuid.c
    + */
    +
    +#ifndef _ASM_X86_CPUID_H
    +#define _ASM_X86_CPUID_H
    +
    +static __always_inline bool cpuid_function_is_indexed(u32 function)
    +{
    + switch (function) {
    + case 4:
    + case 7:
    + case 0xb:
    + case 0xd:
    + case 0xf:
    + case 0x10:
    + case 0x12:
    + case 0x14:
    + case 0x17:
    + case 0x18:
    + case 0x1d:
    + case 0x1e:
    + case 0x1f:
    + case 0x8000001d:
    + return true;
    + }
    +
    + return false;
    +}
    +
    +#endif /* _ASM_X86_CPUID_H */
    diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
    index 868fc9526e5a..18a20434759b 100644
    --- a/arch/x86/kvm/cpuid.c
    +++ b/arch/x86/kvm/cpuid.c
    @@ -19,6 +19,7 @@
    #include <asm/user.h>
    #include <asm/fpu/xstate.h>
    #include <asm/sgx.h>
    +#include <asm/cpuid.h>
    #include "cpuid.h"
    #include "lapic.h"
    #include "mmu.h"
    @@ -719,24 +720,8 @@ static struct kvm_cpuid_entry2 *do_host_cpuid(struct kvm_cpuid_array *array,
    cpuid_count(entry->function, entry->index,
    &entry->eax, &entry->ebx, &entry->ecx, &entry->edx);

    - switch (function) {
    - case 4:
    - case 7:
    - case 0xb:
    - case 0xd:
    - case 0xf:
    - case 0x10:
    - case 0x12:
    - case 0x14:
    - case 0x17:
    - case 0x18:
    - case 0x1d:
    - case 0x1e:
    - case 0x1f:
    - case 0x8000001d:
    + if (cpuid_function_is_indexed(function))
    entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
    - break;
    - }

    return entry;
    }
    --
    2.25.1
    \
     
     \ /
      Last update: 2022-02-09 19:16    [W:2.344 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site