From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pu Wen Subject: [PATCH v2 11/17] x86/mce: enable Hygon support to MCE infrastructure Date: Mon, 23 Jul 2018 21:20:31 +0800 Message-ID: <1532352037-7151-12-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 SHlnb24gbWFjaGluZSBjaGVjayBhcmNoIGlzIHNpbWlsYXIgdG8gQU1EIGZhbWlseSAxN2guIFRv IGVuYWJsZSB0aGUgTUNFCmluZnJhc3RydWN0dXJlIHN1cHBvcnQsIGFkZCBDUFUgdmVuZG9yIGNo ZWNrIGZvciBIeWdvbiB0byBzaGFyZSB0aGUgY29kZQpwYXRoIG9mIEFNRC4KCkFkZCBoeWdvbiBt Y2UgaW5pdCBmdW5jdGlvbiBtY2VfaHlnb25fZmVhdHVyZV9pbml0KCkgdG8gbWluaW1pemUgZnVy dGhlcgptYWludGVuYW5jZSBlZmZvcnQuCgpTaWduZWQtb2ZmLWJ5OiBQdSBXZW4gPHB1d2VuQGh5 Z29uLmNuPgotLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL21jZS5oICAgICAgICAgICAgICAgIHwg IDUgKysrKysKIGFyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS1zZXZlcml0eS5jIHwgIDMg KystCiBhcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UuYyAgICAgICAgICB8IDIwICsrKysr KysrKysrKysrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbWNlLmggYi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9tY2UuaAppbmRleCA4YzdiM2U1Li4wYWYzYjBlIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tY2UuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9t Y2UuaApAQCAtMjEzLDYgKzIxMywxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWNlX2FtZF9mZWF0 dXJlX2luaXQoc3RydWN0IGNwdWluZm9feDg2ICpjKSB7IH0KIHN0YXRpYyBpbmxpbmUgaW50IHVt Y19ub3JtYWRkcl90b19zeXNhZGRyKHU2NCBub3JtX2FkZHIsIHUxNiBuaWQsIHU4IHVtYywgdTY0 ICpzeXNfYWRkcikgeyByZXR1cm4gLUVJTlZBTDsgfTsKICNlbmRpZgogCitzdGF0aWMgaW5saW5l IHZvaWQgbWNlX2h5Z29uX2ZlYXR1cmVfaW5pdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCit7CisJ cmV0dXJuIG1jZV9hbWRfZmVhdHVyZV9pbml0KGMpOworfQorCiBpbnQgbWNlX2F2YWlsYWJsZShz dHJ1Y3QgY3B1aW5mb194ODYgKmMpOwogYm9vbCBtY2VfaXNfbWVtb3J5X2Vycm9yKHN0cnVjdCBt Y2UgKm0pOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2Utc2V2 ZXJpdHkuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS1zZXZlcml0eS5jCmluZGV4 IGYzNGQ4OWMuLjQ0Mzk2ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNr L21jZS1zZXZlcml0eS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS1zZXZl cml0eS5jCkBAIC0zMzYsNyArMzM2LDggQEAgaW50ICgqbWNlX3NldmVyaXR5KShzdHJ1Y3QgbWNl ICptLCBpbnQgdG9sZXJhbnQsIGNoYXIgKiptc2csIGJvb2wgaXNfZXhjcCkgPQogCiB2b2lkIF9f aW5pdCBtY2hlY2tfdmVuZG9yX2luaXRfc2V2ZXJpdHkodm9pZCkKIHsKLQlpZiAoYm9vdF9jcHVf ZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EKQorCWlmIChib290X2NwdV9kYXRhLng4 Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9BTUQgfHwKKwkgICAgYm9vdF9jcHVfZGF0YS54ODZfdmVu ZG9yID09IFg4Nl9WRU5ET1JfSFlHT04pCiAJCW1jZV9zZXZlcml0eSA9IG1jZV9zZXZlcml0eV9h bWQ7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jIGIv YXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKaW5kZXggOGM1MDc1NC4uMTY5MWE4ZiAx MDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKKysrIGIvYXJjaC94 ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKQEAgLTI3NCw3ICsyNzQsOCBAQCBzdGF0aWMgdm9p ZCBwcmludF9tY2Uoc3RydWN0IG1jZSAqbSkKIHsKIAlfX3ByaW50X21jZShtKTsKIAotCWlmICht LT5jcHV2ZW5kb3IgIT0gWDg2X1ZFTkRPUl9BTUQpCisJaWYgKG0tPmNwdXZlbmRvciAhPSBYODZf VkVORE9SX0FNRCAmJgorCSAgICBtLT5jcHV2ZW5kb3IgIT0gWDg2X1ZFTkRPUl9IWUdPTikKIAkJ cHJfZW1lcmdfcmF0ZWxpbWl0ZWQoSFdfRVJSICJSdW4gdGhlIGFib3ZlIHRocm91Z2ggJ21jZWxv ZyAtLWFzY2lpJ1xuIik7CiB9CiAKQEAgLTUxMiw5ICs1MTMsOSBAQCBzdGF0aWMgaW50IG1jZV91 c2FibGVfYWRkcmVzcyhzdHJ1Y3QgbWNlICptKQogCiBib29sIG1jZV9pc19tZW1vcnlfZXJyb3Io c3RydWN0IG1jZSAqbSkKIHsKLQlpZiAobS0+Y3B1dmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EKSB7 CisJaWYgKG0tPmNwdXZlbmRvciA9PSBYODZfVkVORE9SX0FNRCB8fAorCSAgICBtLT5jcHV2ZW5k b3IgPT0gWDg2X1ZFTkRPUl9IWUdPTikgewogCQlyZXR1cm4gYW1kX21jZV9pc19tZW1vcnlfZXJy b3IobSk7Ci0KIAl9IGVsc2UgaWYgKG0tPmNwdXZlbmRvciA9PSBYODZfVkVORE9SX0lOVEVMKSB7 CiAJCS8qCiAJCSAqIEludGVsIFNETSBWb2x1bWUgM0IgLSAxNS45LjIgQ29tcG91bmQgRXJyb3Ig Q29kZXMKQEAgLTU0Myw2ICs1NDQsOSBAQCBzdGF0aWMgYm9vbCBtY2VfaXNfY29ycmVjdGFibGUo c3RydWN0IG1jZSAqbSkKIAlpZiAobS0+Y3B1dmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EICYmIG0t PnN0YXR1cyAmIE1DSV9TVEFUVVNfREVGRVJSRUQpCiAJCXJldHVybiBmYWxzZTsKIAorCWlmICht LT5jcHV2ZW5kb3IgPT0gWDg2X1ZFTkRPUl9IWUdPTiAmJiBtLT5zdGF0dXMgJiBNQ0lfU1RBVFVT X0RFRkVSUkVEKQorCQlyZXR1cm4gZmFsc2U7CisKIAlpZiAobS0+c3RhdHVzICYgTUNJX1NUQVRV U19VQykKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC0xNzI1LDcgKzE3MjksOCBAQCBzdGF0aWMgaW50 IF9fbWNoZWNrX2NwdV9hbmNpZW50X2luaXQoc3RydWN0IGNwdWluZm9feDg2ICpjKQogICovCiBz dGF0aWMgdm9pZCBfX21jaGVja19jcHVfaW5pdF9lYXJseShzdHJ1Y3QgY3B1aW5mb194ODYgKmMp CiB7Ci0JaWYgKGMtPng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9BTUQpIHsKKwlpZiAoYy0+eDg2 X3ZlbmRvciA9PSBYODZfVkVORE9SX0FNRCB8fAorCSAgICBjLT54ODZfdmVuZG9yID09IFg4Nl9W RU5ET1JfSFlHT04pIHsKIAkJbWNlX2ZsYWdzLm92ZXJmbG93X3JlY292ID0gISFjcHVfaGFzKGMs IFg4Nl9GRUFUVVJFX09WRVJGTE9XX1JFQ09WKTsKIAkJbWNlX2ZsYWdzLnN1Y2NvcgkgPSAhIWNw dV9oYXMoYywgWDg2X0ZFQVRVUkVfU1VDQ09SKTsKIAkJbWNlX2ZsYWdzLnNtY2EJCSA9ICEhY3B1 X2hhcyhjLCBYODZfRkVBVFVSRV9TTUNBKTsKQEAgLTE3NjYsNiArMTc3MSw5IEBAIHN0YXRpYyB2 b2lkIF9fbWNoZWNrX2NwdV9pbml0X3ZlbmRvcihzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiAJCW1j ZV9hbWRfZmVhdHVyZV9pbml0KGMpOwogCQlicmVhazsKIAkJfQorCWNhc2UgWDg2X1ZFTkRPUl9I WUdPTjoKKwkJbWNlX2h5Z29uX2ZlYXR1cmVfaW5pdChjKTsKKwkJYnJlYWs7CiAJY2FzZSBYODZf VkVORE9SX0NFTlRBVVI6CiAJCW1jZV9jZW50YXVyX2ZlYXR1cmVfaW5pdChjKTsKIAkJYnJlYWs7 CkBAIC0xOTkxLDEyICsxOTk5LDE0IEBAIHN0YXRpYyB2b2lkIG1jZV9kaXNhYmxlX2Vycm9yX3Jl cG9ydGluZyh2b2lkKQogc3RhdGljIHZvaWQgdmVuZG9yX2Rpc2FibGVfZXJyb3JfcmVwb3J0aW5n KHZvaWQpCiB7CiAJLyoKLQkgKiBEb24ndCBjbGVhciBvbiBJbnRlbCBvciBBTUQgQ1BVcy4gU29t ZSBvZiB0aGVzZSBNU1JzIGFyZSBzb2NrZXQtd2lkZS4KKwkgKiBEb24ndCBjbGVhciBvbiBJbnRl bCBvciBBTUQgb3IgSHlnb24gQ1BVcy4gU29tZSBvZiB0aGVzZSBNU1JzCisJICogYXJlIHNvY2tl dC13aWRlLgogCSAqIERpc2FibGluZyB0aGVtIGZvciBqdXN0IGEgc2luZ2xlIG9mZmxpbmVkIENQ VSBpcyBiYWQsIHNpbmNlIGl0IHdpbGwKIAkgKiBpbmhpYml0IHJlcG9ydGluZyBmb3IgYWxsIHNo YXJlZCByZXNvdXJjZXMgb24gdGhlIHNvY2tldCBsaWtlIHRoZQogCSAqIGxhc3QgbGV2ZWwgY2Fj aGUgKExMQyksIHRoZSBpbnRlZ3JhdGVkIG1lbW9yeSBjb250cm9sbGVyIChpTUMpLCBldGMuCiAJ ICovCiAJaWYgKGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0lOVEVMIHx8 CisJICAgIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0hZR09OIHx8CiAJ ICAgIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0FNRCkKIAkJcmV0dXJu OwogCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp21.cstnet.cn ([159.226.251.21]:52030 "EHLO cstnet.cn" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388265AbeGWO3f (ORCPT ); Mon, 23 Jul 2018 10:29:35 -0400 From: Pu Wen Subject: [PATCH v2 11/17] x86/mce: enable Hygon support to MCE infrastructure Date: Mon, 23 Jul 2018 21:20:31 +0800 Message-ID: <1532352037-7151-12-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: <20180723132031.zsxiAnIqIkD-jzKJCxdaf70G_qqmdqZPScf8vRbxid4@z> Hygon machine check arch is similar to AMD family 17h. To enable the MCE infrastructure support, add CPU vendor check for Hygon to share the code path of AMD. Add hygon mce init function mce_hygon_feature_init() to minimize further maintenance effort. Signed-off-by: Pu Wen --- arch/x86/include/asm/mce.h | 5 +++++ arch/x86/kernel/cpu/mcheck/mce-severity.c | 3 ++- arch/x86/kernel/cpu/mcheck/mce.c | 20 +++++++++++++++----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index 8c7b3e5..0af3b0e 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h @@ -213,6 +213,11 @@ static inline void mce_amd_feature_init(struct cpuinfo_x86 *c) { } static inline int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sys_addr) { return -EINVAL; }; #endif +static inline void mce_hygon_feature_init(struct cpuinfo_x86 *c) +{ + return mce_amd_feature_init(c); +} + int mce_available(struct cpuinfo_x86 *c); bool mce_is_memory_error(struct mce *m); diff --git a/arch/x86/kernel/cpu/mcheck/mce-severity.c b/arch/x86/kernel/cpu/mcheck/mce-severity.c index f34d89c..44396d5 100644 --- a/arch/x86/kernel/cpu/mcheck/mce-severity.c +++ b/arch/x86/kernel/cpu/mcheck/mce-severity.c @@ -336,7 +336,8 @@ int (*mce_severity)(struct mce *m, int tolerant, char **msg, bool is_excp) = void __init mcheck_vendor_init_severity(void) { - 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) mce_severity = mce_severity_amd; } diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 8c50754..1691a8f 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -274,7 +274,8 @@ static void print_mce(struct mce *m) { __print_mce(m); - if (m->cpuvendor != X86_VENDOR_AMD) + if (m->cpuvendor != X86_VENDOR_AMD && + m->cpuvendor != X86_VENDOR_HYGON) pr_emerg_ratelimited(HW_ERR "Run the above through 'mcelog --ascii'\n"); } @@ -512,9 +513,9 @@ static int mce_usable_address(struct mce *m) bool mce_is_memory_error(struct mce *m) { - if (m->cpuvendor == X86_VENDOR_AMD) { + if (m->cpuvendor == X86_VENDOR_AMD || + m->cpuvendor == X86_VENDOR_HYGON) { return amd_mce_is_memory_error(m); - } else if (m->cpuvendor == X86_VENDOR_INTEL) { /* * Intel SDM Volume 3B - 15.9.2 Compound Error Codes @@ -543,6 +544,9 @@ static bool mce_is_correctable(struct mce *m) if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED) return false; + if (m->cpuvendor == X86_VENDOR_HYGON && m->status & MCI_STATUS_DEFERRED) + return false; + if (m->status & MCI_STATUS_UC) return false; @@ -1725,7 +1729,8 @@ static int __mcheck_cpu_ancient_init(struct cpuinfo_x86 *c) */ static void __mcheck_cpu_init_early(struct cpuinfo_x86 *c) { - if (c->x86_vendor == X86_VENDOR_AMD) { + if (c->x86_vendor == X86_VENDOR_AMD || + c->x86_vendor == X86_VENDOR_HYGON) { mce_flags.overflow_recov = !!cpu_has(c, X86_FEATURE_OVERFLOW_RECOV); mce_flags.succor = !!cpu_has(c, X86_FEATURE_SUCCOR); mce_flags.smca = !!cpu_has(c, X86_FEATURE_SMCA); @@ -1766,6 +1771,9 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) mce_amd_feature_init(c); break; } + case X86_VENDOR_HYGON: + mce_hygon_feature_init(c); + break; case X86_VENDOR_CENTAUR: mce_centaur_feature_init(c); break; @@ -1991,12 +1999,14 @@ static void mce_disable_error_reporting(void) static void vendor_disable_error_reporting(void) { /* - * Don't clear on Intel or AMD CPUs. Some of these MSRs are socket-wide. + * Don't clear on Intel or AMD or Hygon CPUs. Some of these MSRs + * are socket-wide. * Disabling them for just a single offlined CPU is bad, since it will * inhibit reporting for all shared resources on the socket like the * last level cache (LLC), the integrated memory controller (iMC), etc. */ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL || + boot_cpu_data.x86_vendor == X86_VENDOR_HYGON || boot_cpu_data.x86_vendor == X86_VENDOR_AMD) return; -- 2.7.4