lkml.org 
[lkml]   [2021]   [Jul]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH Part1 RFC v4 23/36] 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.

    Signed-off-by: Michael Roth <michael.roth@amd.com>
    Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
    ---
    arch/x86/include/asm/cpuid-indexed.h | 26 ++++++++++++++++++++++++++
    arch/x86/kvm/cpuid.c | 17 ++---------------
    2 files changed, 28 insertions(+), 15 deletions(-)
    create mode 100644 arch/x86/include/asm/cpuid-indexed.h

    diff --git a/arch/x86/include/asm/cpuid-indexed.h b/arch/x86/include/asm/cpuid-indexed.h
    new file mode 100644
    index 000000000000..f5ab746f5712
    --- /dev/null
    +++ b/arch/x86/include/asm/cpuid-indexed.h
    @@ -0,0 +1,26 @@
    +/* SPDX-License-Identifier: GPL-2.0 */
    +#ifndef _ASM_X86_CPUID_INDEXED_H
    +#define _ASM_X86_CPUID_INDEXED_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 0x1f:
    + case 0x8000001d:
    + return true;
    + }
    +
    + return false;
    +}
    +
    +#endif /* _ASM_X86_CPUID_INDEXED_H */
    diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
    index b4da665bb892..be6b226f50e4 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-indexed.h>
    #include "cpuid.h"
    #include "lapic.h"
    #include "mmu.h"
    @@ -608,22 +609,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 0x1f:
    - case 0x8000001d:
    + if (cpuid_function_is_indexed(function))
    entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
    - break;
    - }

    return entry;
    }
    --
    2.17.1
    \
     
     \ /
      Last update: 2021-07-07 20:18    [W:2.527 / U:0.484 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site