Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp8169796ybn; Tue, 1 Oct 2019 04:23:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqxJi06j3lT2IMBvUzUFoR/VbFi14yUg++xUpjkOhCxE0RjnsZuAZIDLwU9TW8CNIFKaqF9/ X-Received: by 2002:a50:d949:: with SMTP id u9mr24772410edj.142.1569929016155; Tue, 01 Oct 2019 04:23:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569929016; cv=none; d=google.com; s=arc-20160816; b=m0YPcw7z1yLkkJA5jbn6Tz2HroiYOVUynN2vvfWrr90RoFU6H7zD75g8geKulVHjTr OFsih02WAcXmYBH4TwOlO1/LxjfXfaZ6b1VIaozRYvOFAAu6V3r9c5+SmVjLFFEG2PD4 7DsnO9O5ztvjE8AIm/481lsun5uKx4IZZt7fQkpOyRxJpLwGZ4J8Ik1Lj7Q+ufuJpIQj 8/xtkHUIYSCS/9up2qiIb8BIrf+7QtDx+7eTpUiWFiLBtYgJ9Gxx1ncIIMXE+yctVpWZ TI+mwuxNQEdwy2aysA3k/4uh419vXO4SHtKcRIdhcfG5e9mbbUOBOkA2Yjcu5Nw0rrpn 36Fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=zNiOX91ug2aJ0fy6WjrQ1yf+d4G8A/2GHE/ktYrBUeM=; b=MUsZIljj61lOnoLWF4QEwrhRXqvE3+nNguVvMpR9TjplZVoUUVmeK36vAS+E0Uqf5G azPo+0xHDttmIZI7BteOGzam1qj7ULQzi3uLxpchOMnvBCsuJs1kIZGPSkdfXGmyY0km H0Zaa+cMaywBHbi9SPst1kxWYRkIF7Dtom/qEFdRxEXTS3HrTkQKFOU6snoq+G6zAIVv OQqe+2QDGYQW3EXY0Xs+ZIvvJ7ImBv26k4+XK7LQxhj0iHFcPGpeup/zoqwkestm8o2m g9W2M8zGFoT45Y2OSxST5ASDfgqe1KJ9UfOoq2aHsO57NsaDn+DhuSHWva3qqoY8iZZg fLBQ== 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 o21si8627958ejr.208.2019.10.01.04.23.11; Tue, 01 Oct 2019 04:23:36 -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 S1731667AbfJALVv (ORCPT + 99 others); Tue, 1 Oct 2019 07:21:51 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:54938 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725839AbfJALVt (ORCPT ); Tue, 1 Oct 2019 07:21:49 -0400 Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1iFGDr-0000H4-Rg; Tue, 01 Oct 2019 13:21:39 +0200 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 7184C1C03AB; Tue, 1 Oct 2019 13:21:39 +0200 (CEST) Date: Tue, 01 Oct 2019 11:21:39 -0000 From: "tip-bot2 for Tony W Wang-oc" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: ras/core] x86/mce: Add Zhaoxin LMCE support Cc: "Tony W Wang-oc" , Borislav Petkov , CooperYan@zhaoxin.com, DavidWang@zhaoxin.com, HerryYang@zhaoxin.com, "H. Peter Anvin" , Ingo Molnar , "linux-edac" , QiyuanWang@zhaoxin.com, Thomas Gleixner , Tony Luck , "x86-ml" , Ingo Molnar , Borislav Petkov , linux-kernel@vger.kernel.org In-Reply-To: <1568787573-1297-5-git-send-email-TonyWWang-oc@zhaoxin.com> References: <1568787573-1297-5-git-send-email-TonyWWang-oc@zhaoxin.com> MIME-Version: 1.0 Message-ID: <156992889928.9978.12753504403920052831.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the ras/core branch of tip: Commit-ID: 70f0c230031dfef3c9b3e37b2a8c18d3f7186fb2 Gitweb: https://git.kernel.org/tip/70f0c230031dfef3c9b3e37b2a8c18d3f7186fb2 Author: Tony W Wang-oc AuthorDate: Wed, 18 Sep 2019 14:19:33 +08:00 Committer: Borislav Petkov CommitterDate: Tue, 01 Oct 2019 12:33:33 +02:00 x86/mce: Add Zhaoxin LMCE support Newer Zhaoxin CPUs support LMCE compatible with Intel. Add support for that. [ bp: Export functions and massage. ] Signed-off-by: Tony W Wang-oc Signed-off-by: Borislav Petkov Cc: CooperYan@zhaoxin.com Cc: DavidWang@zhaoxin.com Cc: HerryYang@zhaoxin.com Cc: "H. Peter Anvin" Cc: Ingo Molnar Cc: linux-edac Cc: QiyuanWang@zhaoxin.com Cc: Thomas Gleixner Cc: Tony Luck Cc: x86-ml Link: https://lkml.kernel.org/r/1568787573-1297-5-git-send-email-TonyWWang-oc@zhaoxin.com --- arch/x86/kernel/cpu/mce/core.c | 22 ++++++++++++++++++++-- arch/x86/kernel/cpu/mce/intel.c | 4 ++-- arch/x86/kernel/cpu/mce/internal.h | 4 ++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 1e6b8a4..5f42f25 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -1132,6 +1132,12 @@ static bool __mc_check_crashing_cpu(int cpu) u64 mcgstatus; mcgstatus = mce_rdmsrl(MSR_IA32_MCG_STATUS); + + if (boot_cpu_data.x86_vendor == X86_VENDOR_ZHAOXIN) { + if (mcgstatus & MCG_STATUS_LMCES) + return false; + } + if (mcgstatus & MCG_STATUS_RIPV) { mce_wrmsrl(MSR_IA32_MCG_STATUS, 0); return true; @@ -1282,9 +1288,10 @@ void do_machine_check(struct pt_regs *regs, long error_code) /* * Check if this MCE is signaled to only this logical processor, - * on Intel only. + * on Intel, Zhaoxin only. */ - if (m.cpuvendor == X86_VENDOR_INTEL) + if (m.cpuvendor == X86_VENDOR_INTEL || + m.cpuvendor == X86_VENDOR_ZHAOXIN) lmce = m.mcgstatus & MCG_STATUS_LMCES; /* @@ -1797,9 +1804,15 @@ static void mce_zhaoxin_feature_init(struct cpuinfo_x86 *c) } intel_init_cmci(); + intel_init_lmce(); mce_adjust_timer = cmci_intel_adjust_timer; } +static void mce_zhaoxin_feature_clear(struct cpuinfo_x86 *c) +{ + intel_clear_lmce(); +} + static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) { switch (c->x86_vendor) { @@ -1836,6 +1849,11 @@ static void __mcheck_cpu_clear_vendor(struct cpuinfo_x86 *c) case X86_VENDOR_INTEL: mce_intel_feature_clear(c); break; + + case X86_VENDOR_ZHAOXIN: + mce_zhaoxin_feature_clear(c); + break; + default: break; } diff --git a/arch/x86/kernel/cpu/mce/intel.c b/arch/x86/kernel/cpu/mce/intel.c index fb6e990..68a1d25 100644 --- a/arch/x86/kernel/cpu/mce/intel.c +++ b/arch/x86/kernel/cpu/mce/intel.c @@ -444,7 +444,7 @@ void intel_init_cmci(void) cmci_recheck(); } -static void intel_init_lmce(void) +void intel_init_lmce(void) { u64 val; @@ -457,7 +457,7 @@ static void intel_init_lmce(void) wrmsrl(MSR_IA32_MCG_EXT_CTL, val | MCG_EXT_CTL_LMCE_EN); } -static void intel_clear_lmce(void) +void intel_clear_lmce(void) { u64 val; diff --git a/arch/x86/kernel/cpu/mce/internal.h b/arch/x86/kernel/cpu/mce/internal.h index a7ee230..842b273 100644 --- a/arch/x86/kernel/cpu/mce/internal.h +++ b/arch/x86/kernel/cpu/mce/internal.h @@ -46,12 +46,16 @@ bool mce_intel_cmci_poll(void); void mce_intel_hcpu_update(unsigned long cpu); void cmci_disable_bank(int bank); void intel_init_cmci(void); +void intel_init_lmce(void); +void intel_clear_lmce(void); #else # define cmci_intel_adjust_timer mce_adjust_timer_default static inline bool mce_intel_cmci_poll(void) { return false; } static inline void mce_intel_hcpu_update(unsigned long cpu) { } static inline void cmci_disable_bank(int bank) { } static inline void intel_init_cmci(void) { } +static inline void intel_init_lmce(void) { } +static inline void intel_clear_lmce(void) { } #endif void mce_timer_kick(unsigned long interval);