From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pu Wen Subject: [PATCH v2 12/17] x86/kvm: enable Hygon support to KVM infrastructure Date: Mon, 23 Jul 2018 21:20:32 +0800 Message-ID: <1532352037-7151-13-git-send-email-puwen@hygon.cn> References: <1532352037-7151-1-git-send-email-puwen@hygon.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1532352037-7151-1-git-send-email-puwen@hygon.cn> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: tglx@linutronix.de, bp@alien8.de, thomas.lendacky@amd.com, mingo@redhat.com, hpa@zytor.com, peterz@infradead.org, tony.luck@intel.com, pbonzini@redhat.com, rkrcmar@redhat.com, boris.ostrovsky@oracle.com, jgross@suse.com, rjw@rjwysocki.net, lenb@kernel.org, viresh.kumar@linaro.org, mchehab@kernel.org, trenn@suse.com, shuah@kernel.org, JBeulich@suse.com, x86@kernel.org Cc: linux-arch@vger.kernel.org, xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org List-Id: linux-arch.vger.kernel.org SHlnb24gRGh5YW5hIENQVSBoYXMgdGhlIFNWTSBmZWF0dXJlIGFzIEFNRCBmYW1pbHkgMTdoIGRv ZXMuCkFkZCBIeWdvbiBzdXBwb3J0IGluIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUuCgpTaWduZWQt b2ZmLWJ5OiBQdSBXZW4gPHB1d2VuQGh5Z29uLmNuPgotLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNt L2t2bV9lbXVsYXRlLmggfCAgNCArKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS92aXJ0ZXh0Lmgg ICAgIHwgIDUgKysrLS0KIGFyY2gveDg2L2t2bS9lbXVsYXRlLmMgICAgICAgICAgICAgfCAxMSAr KysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmggYi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCmluZGV4IDBmODJjZDkuLjkzYzRiZjUg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmgKKysrIGIvYXJj aC94ODYvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaApAQCAtMzY0LDYgKzM2NCwxMCBAQCBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCB7CiAjZGVmaW5lIFg4NkVNVUxfQ1BVSURfVkVORE9SX0FNRGlz YmV0dGVySV9lY3ggMHgyMTcyNjU3NAogI2RlZmluZSBYODZFTVVMX0NQVUlEX1ZFTkRPUl9BTURp c2JldHRlcklfZWR4IDB4NzQ2NTYyNzMKIAorI2RlZmluZSBYODZFTVVMX0NQVUlEX1ZFTkRPUl9I eWdvbkdlbnVpbmVfZWJ4IDB4NmY2Nzc5NDgKKyNkZWZpbmUgWDg2RU1VTF9DUFVJRF9WRU5ET1Jf SHlnb25HZW51aW5lX2VjeCAweDY1NmU2OTc1CisjZGVmaW5lIFg4NkVNVUxfQ1BVSURfVkVORE9S X0h5Z29uR2VudWluZV9lZHggMHg2ZTY1NDc2ZQorCiAjZGVmaW5lIFg4NkVNVUxfQ1BVSURfVkVO RE9SX0dlbnVpbmVJbnRlbF9lYnggMHg3NTZlNjU0NwogI2RlZmluZSBYODZFTVVMX0NQVUlEX1ZF TkRPUl9HZW51aW5lSW50ZWxfZWN4IDB4NmM2NTc0NmUKICNkZWZpbmUgWDg2RU1VTF9DUFVJRF9W RU5ET1JfR2VudWluZUludGVsX2VkeCAweDQ5NjU2ZTY5CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS92aXJ0ZXh0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS92aXJ0ZXh0LmgKaW5k ZXggMDExNmIyZS4uZTA1ZTBkMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdmly dGV4dC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ZpcnRleHQuaApAQCAtODMsOSArODMs MTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGNwdV9lbWVyZ2VuY3lfdm14b2ZmKHZvaWQpCiAgKi8K IHN0YXRpYyBpbmxpbmUgaW50IGNwdV9oYXNfc3ZtKGNvbnN0IGNoYXIgKiptc2cpCiB7Ci0JaWYg KGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZfVkVORE9SX0FNRCkgeworCWlmIChib290 X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9BTUQgJiYKKwkgICAgYm9vdF9jcHVf ZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSFlHT04pIHsKIAkJaWYgKG1zZykKLQkJCSpt c2cgPSAibm90IGFtZCI7CisJCQkqbXNnID0gIm5vdCBhbWQgb3IgaHlnb24iOwogCQlyZXR1cm4g MDsKIAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMgYi9hcmNoL3g4Ni9r dm0vZW11bGF0ZS5jCmluZGV4IDRjNGY0MjYuLjFhYjc3NTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2t2bS9lbXVsYXRlLmMKKysrIGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuYwpAQCAtMjcxMSw3ICsy NzExLDE2IEBAIHN0YXRpYyBib29sIGVtX3N5c2NhbGxfaXNfZW5hYmxlZChzdHJ1Y3QgeDg2X2Vt dWxhdGVfY3R4dCAqY3R4dCkKIAkgICAgZWR4ID09IFg4NkVNVUxfQ1BVSURfVkVORE9SX0FNRGlz YmV0dGVySV9lZHgpCiAJCXJldHVybiB0cnVlOwogCi0JLyogZGVmYXVsdDogKG5vdCBJbnRlbCwg bm90IEFNRCksIGFwcGx5IEludGVsJ3Mgc3RyaWN0ZXIgcnVsZXMuLi4gKi8KKwkvKiBIeWdvbiAo Ikh5Z29uR2VudWluZSIpICovCisJaWYgKGVieCA9PSBYODZFTVVMX0NQVUlEX1ZFTkRPUl9IeWdv bkdlbnVpbmVfZWJ4ICYmCisJICAgIGVjeCA9PSBYODZFTVVMX0NQVUlEX1ZFTkRPUl9IeWdvbkdl bnVpbmVfZWN4ICYmCisJICAgIGVkeCA9PSBYODZFTVVMX0NQVUlEX1ZFTkRPUl9IeWdvbkdlbnVp bmVfZWR4KQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogZGVmYXVsdDogKG5vdCBJbnRlbCwg bm90IEFNRCwgbm90IEh5Z29uKSwgYXBwbHkgSW50ZWwncworCSAqIHN0cmljdGVyIHJ1bGVzLi4u CisJICovCiAJcmV0dXJuIGZhbHNlOwogfQogCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp21.cstnet.cn ([159.226.251.21]:45711 "EHLO cstnet.cn" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388100AbeGWOli (ORCPT ); Mon, 23 Jul 2018 10:41:38 -0400 From: Pu Wen Subject: [PATCH v2 12/17] x86/kvm: enable Hygon support to KVM infrastructure Date: Mon, 23 Jul 2018 21:20:32 +0800 Message-ID: <1532352037-7151-13-git-send-email-puwen@hygon.cn> In-Reply-To: <1532352037-7151-1-git-send-email-puwen@hygon.cn> References: <1532352037-7151-1-git-send-email-puwen@hygon.cn> Sender: linux-arch-owner@vger.kernel.org List-ID: To: tglx@linutronix.de, bp@alien8.de, thomas.lendacky@amd.com, mingo@redhat.com, hpa@zytor.com, peterz@infradead.org, tony.luck@intel.com, pbonzini@redhat.com, rkrcmar@redhat.com, boris.ostrovsky@oracle.com, jgross@suse.com, rjw@rjwysocki.net, lenb@kernel.org, viresh.kumar@linaro.org, mchehab@kernel.org, trenn@suse.com, shuah@kernel.org, JBeulich@suse.com, x86@kernel.org Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org Message-ID: <20180723132032.rYtCP_lcQ3enUjVjAB6p0wWWBMgtJ7j43-Bp7YAr_kU@z> Hygon Dhyana CPU has the SVM feature as AMD family 17h does. Add Hygon support in the KVM infrastructure. Signed-off-by: Pu Wen --- 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 4c4f426..1ab7758 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