lkml.org 
[lkml]   [2018]   [Aug]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 11/16] x86/kvm: enable Hygon support to KVM infrastructure
    Date
    Hygon Dhyana CPU has the SVM feature as AMD family 17h does.
    Add Hygon support in the KVM infrastructure.

    Signed-off-by: Pu Wen <puwen@hygon.cn>
    ---
    arch/x86/include/asm/kvm_emulate.h | 4 ++++
    arch/x86/include/asm/virtext.h | 5 +++--
    arch/x86/kvm/emulate.c | 11 ++++++++++-
    3 files changed, 17 insertions(+), 3 deletions(-)

    diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
    index 0f82cd9..93c4bf5 100644
    --- a/arch/x86/include/asm/kvm_emulate.h
    +++ b/arch/x86/include/asm/kvm_emulate.h
    @@ -364,6 +364,10 @@ struct x86_emulate_ctxt {
    #define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574
    #define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273

    +#define X86EMUL_CPUID_VENDOR_HygonGenuine_ebx 0x6f677948
    +#define X86EMUL_CPUID_VENDOR_HygonGenuine_ecx 0x656e6975
    +#define X86EMUL_CPUID_VENDOR_HygonGenuine_edx 0x6e65476e
    +
    #define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547
    #define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e
    #define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69
    diff --git a/arch/x86/include/asm/virtext.h b/arch/x86/include/asm/virtext.h
    index 0116b2e..e05e0d3 100644
    --- a/arch/x86/include/asm/virtext.h
    +++ b/arch/x86/include/asm/virtext.h
    @@ -83,9 +83,10 @@ static inline void cpu_emergency_vmxoff(void)
    */
    static inline int cpu_has_svm(const char **msg)
    {
    - if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) {
    + if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
    + boot_cpu_data.x86_vendor != X86_VENDOR_HYGON) {
    if (msg)
    - *msg = "not amd";
    + *msg = "not amd or hygon";
    return 0;
    }

    diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
    index 106482d..34edf19 100644
    --- a/arch/x86/kvm/emulate.c
    +++ b/arch/x86/kvm/emulate.c
    @@ -2711,7 +2711,16 @@ static bool em_syscall_is_enabled(struct x86_emulate_ctxt *ctxt)
    edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx)
    return true;

    - /* default: (not Intel, not AMD), apply Intel's stricter rules... */
    + /* Hygon ("HygonGenuine") */
    + if (ebx == X86EMUL_CPUID_VENDOR_HygonGenuine_ebx &&
    + ecx == X86EMUL_CPUID_VENDOR_HygonGenuine_ecx &&
    + edx == X86EMUL_CPUID_VENDOR_HygonGenuine_edx)
    + return true;
    +
    + /*
    + * default: (not Intel, not AMD, not Hygon), apply Intel's
    + * stricter rules...
    + */
    return false;
    }

    --
    2.7.4
    \
     
     \ /
      Last update: 2018-08-29 14:45    [W:6.874 / U:1.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site