Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp8169289ybn; Tue, 1 Oct 2019 04:23:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqymUvadUoH2Rg/vG5/BFc4tO/mbl48eJqDY4DocWRM1AP4GSzmVkfB3ndEjbiqjkQjEbcIu X-Received: by 2002:a05:6402:1251:: with SMTP id l17mr25067426edw.270.1569928982411; Tue, 01 Oct 2019 04:23:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569928982; cv=none; d=google.com; s=arc-20160816; b=Rf/jWtBK6VuX0yEYgpwPoPOg0Lvyd0Pv8Kdb1n0W5E0S/0v5GI2YYsv1+u/BcJeX8/ +A7lzcp+vO6Mlnv3CiV0LJATN9VNEDaI/xyFrQW8xEHvubctXlDhmc3yTbG2rkb2/fMs TSJzZaMpkJ+//StVtvYdHZrhbmw180a9ieAAxQ6DtbnyWmyuhM+oB0lfcEVmOfUsvOGM jZIBb5gP2iCkSJubdPRhKMa3s+apc8x3q3NXO6VQugrQIMJ/TQad7bvkyj6TwoIg5bKQ d3oa21mZM0xEq5bm5i37SL2+lqWxUB3ir+2ytb/cTVZClgXSfC4I89aMNZfm5EAEA2lo 6ERQ== 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=mNbFjbZ3tYvIG2jqGfrV29FoAka8TgDPNrkxTMrX0nU=; b=oS0eq7Zc9TF3clOLwLYeaGwnvMV7OuKM6IAmCrJeV3zmgK5ciFLisV00hurmfXLyoM KHfxno4qhPpDEMXxcEY6GjDUJUvTW6Ahvk4KkBQpIAM/Tkz8hIF1Fw6QONTmJBy+3Hsp EJoQs+8HR8uaG3CAWSPjECjTwjB0E4CLt5bXsTA9a638NM4lTOGr6/Gu4zu6gVggFWwC V6/CHT2dUhzqtMQEV8QuQ0fX1bJkOFQA4RkczFUnZcbw/XS/6c+Nhxu45L+F2A81AfHM 1kfE98h6euP6WDy8xr/e8tzVw7BJ3azv6Bn3Wvyy7eAZ2rRrfSTEYQ2FZLSbt5zuzJU+ eu3g== 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 n8si8776482ejz.22.2019.10.01.04.22.37; Tue, 01 Oct 2019 04:23:02 -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 S1731753AbfJALVx (ORCPT + 99 others); Tue, 1 Oct 2019 07:21:53 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:54946 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731641AbfJALVw (ORCPT ); Tue, 1 Oct 2019 07:21:52 -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-0000H5-Tt; Tue, 01 Oct 2019 13:21:40 +0200 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 91EB51C070D; 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 CMCI 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-4-git-send-email-TonyWWang-oc@zhaoxin.com> References: <1568787573-1297-4-git-send-email-TonyWWang-oc@zhaoxin.com> MIME-Version: 1.0 Message-ID: <156992889955.9978.11127376798004332178.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: 5a3d56a034be9e8e87a6cb9ed3f2928184db1417 Gitweb: https://git.kernel.org/tip/5a3d56a034be9e8e87a6cb9ed3f2928184db1417 Author: Tony W Wang-oc AuthorDate: Wed, 18 Sep 2019 14:19:32 +08:00 Committer: Borislav Petkov CommitterDate: Tue, 01 Oct 2019 12:33:09 +02:00 x86/mce: Add Zhaoxin CMCI support All newer Zhaoxin CPUs support CMCI and are compatible with Intel's Machine-Check Architecture. Add that support for Zhaoxin CPUs. [ bp: Massage comments and export intel_init_cmci(). ] 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-4-git-send-email-TonyWWang-oc@zhaoxin.com --- arch/x86/kernel/cpu/mce/core.c | 27 +++++++++++++++++++++++++++ arch/x86/kernel/cpu/mce/intel.c | 6 ++++-- arch/x86/kernel/cpu/mce/internal.h | 2 ++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index a780fe0..1e6b8a4 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -1777,6 +1777,29 @@ static void mce_centaur_feature_init(struct cpuinfo_x86 *c) } } +static void mce_zhaoxin_feature_init(struct cpuinfo_x86 *c) +{ + struct mce_bank *mce_banks = this_cpu_ptr(mce_banks_array); + + /* + * These CPUs have MCA bank 8 which reports only one error type called + * SVAD (System View Address Decoder). The reporting of that error is + * controlled by IA32_MC8.CTL.0. + * + * If enabled, prefetching on these CPUs will cause SVAD MCE when + * virtual machines start and result in a system panic. Always disable + * bank 8 SVAD error by default. + */ + if ((c->x86 == 7 && c->x86_model == 0x1b) || + (c->x86_model == 0x19 || c->x86_model == 0x1f)) { + if (this_cpu_read(mce_num_banks) > 8) + mce_banks[8].ctl = 0; + } + + intel_init_cmci(); + mce_adjust_timer = cmci_intel_adjust_timer; +} + static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) { switch (c->x86_vendor) { @@ -1798,6 +1821,10 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) mce_centaur_feature_init(c); break; + case X86_VENDOR_ZHAOXIN: + mce_zhaoxin_feature_init(c); + break; + default: break; } diff --git a/arch/x86/kernel/cpu/mce/intel.c b/arch/x86/kernel/cpu/mce/intel.c index 88cd959..fb6e990 100644 --- a/arch/x86/kernel/cpu/mce/intel.c +++ b/arch/x86/kernel/cpu/mce/intel.c @@ -85,8 +85,10 @@ static int cmci_supported(int *banks) * initialization is vendor keyed and this * makes sure none of the backdoors are entered otherwise. */ - if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) + if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL && + boot_cpu_data.x86_vendor != X86_VENDOR_ZHAOXIN) return 0; + if (!boot_cpu_has(X86_FEATURE_APIC) || lapic_get_maxlvt() < 6) return 0; rdmsrl(MSR_IA32_MCG_CAP, cap); @@ -423,7 +425,7 @@ void cmci_disable_bank(int bank) raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); } -static void intel_init_cmci(void) +void intel_init_cmci(void) { int banks; diff --git a/arch/x86/kernel/cpu/mce/internal.h b/arch/x86/kernel/cpu/mce/internal.h index 43031db..a7ee230 100644 --- a/arch/x86/kernel/cpu/mce/internal.h +++ b/arch/x86/kernel/cpu/mce/internal.h @@ -45,11 +45,13 @@ unsigned long cmci_intel_adjust_timer(unsigned long interval); 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); #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) { } #endif void mce_timer_kick(unsigned long interval);