Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp3989680imm; Mon, 17 Sep 2018 06:33:34 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZzArBGibxAuoMT+xTLQvKHc3G3IVE3oafscorcLsb9mepq01PqEP97hQSV6+oETqv2YF/2 X-Received: by 2002:a63:65c2:: with SMTP id z185-v6mr23500275pgb.276.1537191214801; Mon, 17 Sep 2018 06:33:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537191214; cv=none; d=google.com; s=arc-20160816; b=ay+IbSoNcHzGmd9u1O5s1Jl0VCXB12dTmqp1TpJX2L3yfXQFYc/iwxjh2IpFdSPWv2 UMkT8LnlHOEJvJnv+HfDNUv4lCg3HXjtUhZbhtOQfkTPBDEmNEgPMUhOcmXD53ejQnap kLfMkQq1D0Z9b8Ag5CpBbBeQw/0w7l+m9uExZa892/w129OgvaM0zYY0fLfMk2En/p5Q gobaxY8kbm9v+PX1YYKIQl3Kj4iz8NxxN6w6RMKh2LvF4ZJ5bZErmaP1fh71yKvr2qg4 Td71w1lSwVPyBMXGYEJsk7CY8CxWDe3saLHRKELcNAJ+b/LEwY2D7MEOxZitYihMhzpQ ecKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=yBNyJ5B/q8SHZpkGNJWoB662pb/BtmPdWlK1pzOTmf4=; b=y2tEDMNtBU92GjfpDPJfn9Iu8uHYNaFD7jedVmQlwJHOglhOOPx4fUoIU7U964mUYw M4hanQ1MtnBpKYPFmSGpm8BEW/DGHm8W79lbfPxLRgAwwaRcGhqPDN4OPhGU0xW4Q8Wk Tyzk2CNVkwHTFso4fPlzdg0HFU7i2tcCPNDGLrFEEC80I1w0K7VCTOsMSiMzHn4jNCqR ooJ2qtd3FUgZYTUKCsferPf72mYEPDISwhKar4zJlHH3rbGdN00j44yVA42SzNlmwDDi 62gKPmvEnr/qTNX//YpKbeh4nH2x4kl5n63S4B6z+QS1+oqpeYrPYToBIlXeVyHn6lTP pgXg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b1-v6si15433168plz.476.2018.09.17.06.33.08; Mon, 17 Sep 2018 06:33:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728607AbeIQTAH (ORCPT + 99 others); Mon, 17 Sep 2018 15:00:07 -0400 Received: from smtp17.cstnet.cn ([159.226.251.17]:59329 "EHLO cstnet.cn" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728085AbeIQTAH (ORCPT ); Mon, 17 Sep 2018 15:00:07 -0400 Received: from pw-vbox.higon.com (unknown [182.150.46.145]) by APP-09 (Coremail) with SMTP id swCowABXOO3xrJ9bMsmlCg--.469S2; Mon, 17 Sep 2018 21:32:36 +0800 (CST) From: Pu Wen To: bp@alien8.de, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, thomas.lendacky@amd.com, rkrcmar@redhat.com Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, kvm@vger.kernel.org, Pu Wen Subject: [PATCH v7 11/16] x86/kvm: Add Hygon Dhyana support to KVM infrastructure Date: Mon, 17 Sep 2018 21:32:32 +0800 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: X-CM-TRANSID: swCowABXOO3xrJ9bMsmlCg--.469S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Ww4xKr1UtFW7uFy8Cw17ZFb_yoW5JF1fpF ZrGFs7ZFs5KrsIk34DGrnrZw1UuFs8Kw18Kry5u34FqF4jvayxXr4Fkw15Aa17Aaykua4r KFy8W3WkJa1fZaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvS14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26r4j6ryUM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gr 1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv 7VC0I7IYx2IY67AKxVWUtVWrXwAv7VC2z280aVAFwI0_Gr1j6F4UJwAm72CE4IkC6x0Yz7 v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7M4IIrI8v6xkF 7I0E8cxan2IY04v7MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I 0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWU tVW8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r4j6ryUMIIF0xvE2Ix0cI8IcV CY1x0267AKxVW8Jr0_Cr1UMIIF0xvE42xK8VAvwI8IcIk0rVW8JVW3JwCI42IY6I8E87Iv 67AKxVW8JVWxJwCI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43 ZEXa7VUbKLvtUUUUU== X-Originating-IP: [182.150.46.145] X-CM-SenderInfo: psxzv046klw03qof0z/ Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Hygon Dhyana CPU has the SVM feature as AMD family 17h does. So enable the KVM infrastructure support to it. Signed-off-by: Pu Wen Reviewed-by: Borislav Petkov --- 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