From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [tip:x86/urgent] acpi/nfit, x86/mce: Handle only uncorrectable machine checks From: tip-bot for Borislav Petkov Message-Id: Date: Tue, 6 Nov 2018 10:18:51 -0800 To: linux-tip-commits@vger.kernel.org Cc: linux-edac@vger.kernel.org, dave.jiang@intel.com, rjw@rjwysocki.net, stable@vger.kernel.org, tony.luck@intel.com, arnd@arndb.de, mingo@redhat.com, yazen.ghannam@amd.com, x86@kernel.org, dan.j.williams@intel.com, qiuxu.zhuo@intel.com, lenb@kernel.org, vishal.l.verma@intel.com, bp@suse.de, linux-kernel@vger.kernel.org, tglx@linutronix.de, omar.avelar@intel.com, zwisler@kernel.org, mingo@kernel.org, hpa@zytor.com List-ID: Q29tbWl0LUlEOiAgNWQ5NmM5MzQyYzIzZWUxZDA4NDgwMmRjZjA2NGNhYTY3ZWNhYTQ1YgpHaXR3 ZWI6ICAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3RpcC81ZDk2YzkzNDJjMjNlZTFkMDg0ODAy ZGNmMDY0Y2FhNjdlY2FhNDViCkF1dGhvcjogICAgIFZpc2hhbCBWZXJtYSA8dmlzaGFsLmwudmVy bWFAaW50ZWwuY29tPgpBdXRob3JEYXRlOiBUaHUsIDI1IE9jdCAyMDE4IDE4OjM3OjI4IC0wNjAw CkNvbW1pdHRlcjogIEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ29tbWl0RGF0ZTogVHVl LCA2IE5vdiAyMDE4IDE5OjEzOjEwICswMTAwCgphY3BpL25maXQsIHg4Ni9tY2U6IEhhbmRsZSBv bmx5IHVuY29ycmVjdGFibGUgbWFjaGluZSBjaGVja3MKClRoZSBNQ0UgaGFuZGxlciBmb3IgbmZp dCBkZXZpY2VzIGlzIGNhbGxlZCBmb3IgbWVtb3J5IGVycm9ycyBvbiBhCk5vbi1Wb2xhdGlsZSBE SU1NIGFuZCBhZGRzIHRoZSBlcnJvciBsb2NhdGlvbiB0byBhICdiYWRibG9ja3MnIGxpc3QuClRo aXMgbGlzdCBpcyB1c2VkIGJ5IHRoZSB2YXJpb3VzIE5WRElNTSBkcml2ZXJzIHRvIGF2b2lkIGNv bnN1bWluZyBrbm93bgpwb2lzb24gbG9jYXRpb25zIGR1cmluZyBJTy4KClRoZSBNQ0UgaGFuZGxl ciBnZXRzIGNhbGxlZCBmb3IgYm90aCBjb3JyZWN0ZWQgYW5kIHVuY29ycmVjdGFibGUgZXJyb3Jz LgpVbnRpbCBub3csIGJvdGgga2luZHMgb2YgZXJyb3JzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUg YmFkYmxvY2tzIGxpc3QuCkhvd2V2ZXIsIGNvcnJlY3RlZCBtZW1vcnkgZXJyb3JzIGluZGljYXRl IHRoYXQgdGhlIHByb2JsZW0gaGFzIGFscmVhZHkKYmVlbiBmaXhlZCBieSBoYXJkd2FyZSwgYW5k IHRoZSByZXN1bHRpbmcgaW50ZXJydXB0IGlzIG1lcmVseSBhCm5vdGlmaWNhdGlvbiB0byBMaW51 eC4KCkFzIGZhciBhcyBmdXR1cmUgYWNjZXNzZXMgdG8gdGhhdCBsb2NhdGlvbiBhcmUgY29uY2Vy bmVkLCBpdCBpcwpwZXJmZWN0bHkgZmluZSB0byB1c2UsIGFuZCB0aHVzIGRvZXNuJ3QgbmVlZCB0 byBiZSBpbmNsdWRlZCBpbiB0aGUgYWJvdmUKYmFkYmxvY2tzIGxpc3QuCgpBZGQgYSBjaGVjayBp biB0aGUgbmZpdCBNQ0UgaGFuZGxlciB0byBmaWx0ZXIgb3V0IGNvcnJlY3RlZCBtY2UgZXZlbnRz LAphbmQgb25seSBwcm9jZXNzIHVuY29ycmVjdGFibGUgZXJyb3JzLgoKRml4ZXM6IDY4MzlhNmQ5 NmY0ZSAoIm5maXQ6IGRvIGFuIEFSUyBzY3J1YiBvbiBoaXR0aW5nIGEgbGF0ZW50IG1lZGlhIGVy cm9yIikKUmVwb3J0ZWQtYnk6IE9tYXIgQXZlbGFyIDxvbWFyLmF2ZWxhckBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IFZpc2hhbCBWZXJtYSA8dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+CkNDOiBBcm5kIEJlcmdtYW5u IDxhcm5kQGFybmRiLmRlPgpDQzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5j b20+CkNDOiBEYXZlIEppYW5nIDxkYXZlLmppYW5nQGludGVsLmNvbT4KQ0M6IGVsbGlvdHRAaHBl LmNvbQpDQzogIkguIFBldGVyIEFudmluIiA8aHBhQHp5dG9yLmNvbT4KQ0M6IEluZ28gTW9sbmFy IDxtaW5nb0ByZWRoYXQuY29tPgpDQzogTGVuIEJyb3duIDxsZW5iQGtlcm5lbC5vcmc+CkNDOiBs aW51eC1hY3BpQHZnZXIua2VybmVsLm9yZwpDQzogbGludXgtZWRhYyA8bGludXgtZWRhY0B2Z2Vy Lmtlcm5lbC5vcmc+CkNDOiBsaW51eC1udmRpbW1AbGlzdHMuMDEub3JnCkNDOiBRaXV4dSBaaHVv IDxxaXV4dS56aHVvQGludGVsLmNvbT4KQ0M6ICJSYWZhZWwgSi4gV3lzb2NraSIgPHJqd0Byand5 c29ja2kubmV0PgpDQzogUm9zcyBad2lzbGVyIDx6d2lzbGVyQGtlcm5lbC5vcmc+CkNDOiBzdGFi bGUgPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+CkNDOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGlu dXRyb25peC5kZT4KQ0M6IFRvbnkgTHVjayA8dG9ueS5sdWNrQGludGVsLmNvbT4KQ0M6IHg4Ni1t bCA8eDg2QGtlcm5lbC5vcmc+CkNDOiBZYXplbiBHaGFubmFtIDx5YXplbi5naGFubmFtQGFtZC5j b20+Ckxpbms6IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8yMDE4MTAyNjAwMzcyOS44NDIwLTEt dmlzaGFsLmwudmVybWFAaW50ZWwuY29tCi0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vbWNlLmgg ICAgICAgfCAxICsKIGFyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jIHwgMyArKy0KIGRy aXZlcnMvYWNwaS9uZml0L21jZS5jICAgICAgICAgIHwgNCArKy0tCiAzIGZpbGVzIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9tY2UuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL21jZS5oCmluZGV4IDRkYTli MWM1OGQyOC4uZGJkOWZlMmY2MTYzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9t Y2UuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tY2UuaApAQCAtMjIxLDYgKzIyMSw3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBtY2VfaHlnb25fZmVhdHVyZV9pbml0KHN0cnVjdCBjcHVpbmZv X3g4NiAqYykgeyByZXR1cm4gbWNlX2FtCiAKIGludCBtY2VfYXZhaWxhYmxlKHN0cnVjdCBjcHVp bmZvX3g4NiAqYyk7CiBib29sIG1jZV9pc19tZW1vcnlfZXJyb3Ioc3RydWN0IG1jZSAqbSk7Citi b29sIG1jZV9pc19jb3JyZWN0YWJsZShzdHJ1Y3QgbWNlICptKTsKIAogREVDTEFSRV9QRVJfQ1BV KHVuc2lnbmVkLCBtY2VfZXhjZXB0aW9uX2NvdW50KTsKIERFQ0xBUkVfUEVSX0NQVSh1bnNpZ25l ZCwgbWNlX3BvbGxfY291bnQpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hl Y2svbWNlLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UuYwppbmRleCA4YzY2ZDJm YzhmODEuLjc3NTI3YjhlYTk4MiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hl Y2svbWNlLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKQEAgLTUzNCw3 ICs1MzQsNyBAQCBib29sIG1jZV9pc19tZW1vcnlfZXJyb3Ioc3RydWN0IG1jZSAqbSkKIH0KIEVY UE9SVF9TWU1CT0xfR1BMKG1jZV9pc19tZW1vcnlfZXJyb3IpOwogCi1zdGF0aWMgYm9vbCBtY2Vf aXNfY29ycmVjdGFibGUoc3RydWN0IG1jZSAqbSkKK2Jvb2wgbWNlX2lzX2NvcnJlY3RhYmxlKHN0 cnVjdCBtY2UgKm0pCiB7CiAJaWYgKG0tPmNwdXZlbmRvciA9PSBYODZfVkVORE9SX0FNRCAmJiBt LT5zdGF0dXMgJiBNQ0lfU1RBVFVTX0RFRkVSUkVEKQogCQlyZXR1cm4gZmFsc2U7CkBAIC01NDcs NiArNTQ3LDcgQEAgc3RhdGljIGJvb2wgbWNlX2lzX2NvcnJlY3RhYmxlKHN0cnVjdCBtY2UgKm0p CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKG1jZV9pc19jb3JyZWN0YWJs ZSk7CiAKIHN0YXRpYyBib29sIGNlY19hZGRfbWNlKHN0cnVjdCBtY2UgKm0pCiB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2FjcGkvbmZpdC9tY2UuYyBiL2RyaXZlcnMvYWNwaS9uZml0L21jZS5jCmlu ZGV4IGU5NjI2YmY2Y2EyOS4uN2E1MTcwN2Y4N2U5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkv bmZpdC9tY2UuYworKysgYi9kcml2ZXJzL2FjcGkvbmZpdC9tY2UuYwpAQCAtMjUsOCArMjUsOCBA QCBzdGF0aWMgaW50IG5maXRfaGFuZGxlX21jZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1 bnNpZ25lZCBsb25nIHZhbCwKIAlzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFjcGlfZGVzYzsKIAlz dHJ1Y3QgbmZpdF9zcGEgKm5maXRfc3BhOwogCi0JLyogV2Ugb25seSBjYXJlIGFib3V0IG1lbW9y eSBlcnJvcnMgKi8KLQlpZiAoIW1jZV9pc19tZW1vcnlfZXJyb3IobWNlKSkKKwkvKiBXZSBvbmx5 IGNhcmUgYWJvdXQgdW5jb3JyZWN0YWJsZSBtZW1vcnkgZXJyb3JzICovCisJaWYgKCFtY2VfaXNf bWVtb3J5X2Vycm9yKG1jZSkgfHwgbWNlX2lzX2NvcnJlY3RhYmxlKG1jZSkpCiAJCXJldHVybiBO T1RJRllfRE9ORTsKIAogCS8qCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92D0CC32789 for ; Tue, 6 Nov 2018 18:19:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5B8CF20830 for ; Tue, 6 Nov 2018 18:19:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5B8CF20830 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zytor.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388403AbeKGDpz (ORCPT ); Tue, 6 Nov 2018 22:45:55 -0500 Received: from terminus.zytor.com ([198.137.202.136]:51029 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729642AbeKGDpz (ORCPT ); Tue, 6 Nov 2018 22:45:55 -0500 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id wA6IIphN893857 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 6 Nov 2018 10:18:51 -0800 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id wA6IIpWL893853; Tue, 6 Nov 2018 10:18:51 -0800 Date: Tue, 6 Nov 2018 10:18:51 -0800 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Vishal Verma Message-ID: Cc: linux-edac@vger.kernel.org, dave.jiang@intel.com, rjw@rjwysocki.net, stable@vger.kernel.org, tony.luck@intel.com, arnd@arndb.de, mingo@redhat.com, yazen.ghannam@amd.com, x86@kernel.org, dan.j.williams@intel.com, qiuxu.zhuo@intel.com, lenb@kernel.org, vishal.l.verma@intel.com, bp@suse.de, linux-kernel@vger.kernel.org, tglx@linutronix.de, omar.avelar@intel.com, zwisler@kernel.org, mingo@kernel.org, hpa@zytor.com Reply-To: arnd@arndb.de, mingo@redhat.com, tony.luck@intel.com, yazen.ghannam@amd.com, dave.jiang@intel.com, linux-edac@vger.kernel.org, stable@vger.kernel.org, rjw@rjwysocki.net, zwisler@kernel.org, tglx@linutronix.de, omar.avelar@intel.com, linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org, dan.j.williams@intel.com, x86@kernel.org, lenb@kernel.org, bp@suse.de, vishal.l.verma@intel.com, qiuxu.zhuo@intel.com In-Reply-To: <20181026003729.8420-1-vishal.l.verma@intel.com> References: <20181026003729.8420-1-vishal.l.verma@intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/urgent] acpi/nfit, x86/mce: Handle only uncorrectable machine checks Git-Commit-ID: 5d96c9342c23ee1d084802dcf064caa67ecaa45b X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 5d96c9342c23ee1d084802dcf064caa67ecaa45b Gitweb: https://git.kernel.org/tip/5d96c9342c23ee1d084802dcf064caa67ecaa45b Author: Vishal Verma AuthorDate: Thu, 25 Oct 2018 18:37:28 -0600 Committer: Borislav Petkov CommitDate: Tue, 6 Nov 2018 19:13:10 +0100 acpi/nfit, x86/mce: Handle only uncorrectable machine checks The MCE handler for nfit devices is called for memory errors on a Non-Volatile DIMM and adds the error location to a 'badblocks' list. This list is used by the various NVDIMM drivers to avoid consuming known poison locations during IO. The MCE handler gets called for both corrected and uncorrectable errors. Until now, both kinds of errors have been added to the badblocks list. However, corrected memory errors indicate that the problem has already been fixed by hardware, and the resulting interrupt is merely a notification to Linux. As far as future accesses to that location are concerned, it is perfectly fine to use, and thus doesn't need to be included in the above badblocks list. Add a check in the nfit MCE handler to filter out corrected mce events, and only process uncorrectable errors. Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error") Reported-by: Omar Avelar Signed-off-by: Vishal Verma Signed-off-by: Borislav Petkov CC: Arnd Bergmann CC: Dan Williams CC: Dave Jiang CC: elliott@hpe.com CC: "H. Peter Anvin" CC: Ingo Molnar CC: Len Brown CC: linux-acpi@vger.kernel.org CC: linux-edac CC: linux-nvdimm@lists.01.org CC: Qiuxu Zhuo CC: "Rafael J. Wysocki" CC: Ross Zwisler CC: stable CC: Thomas Gleixner CC: Tony Luck CC: x86-ml CC: Yazen Ghannam Link: http://lkml.kernel.org/r/20181026003729.8420-1-vishal.l.verma@intel.com --- arch/x86/include/asm/mce.h | 1 + arch/x86/kernel/cpu/mcheck/mce.c | 3 ++- drivers/acpi/nfit/mce.c | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index 4da9b1c58d28..dbd9fe2f6163 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h @@ -221,6 +221,7 @@ static inline void mce_hygon_feature_init(struct cpuinfo_x86 *c) { return mce_am int mce_available(struct cpuinfo_x86 *c); bool mce_is_memory_error(struct mce *m); +bool mce_is_correctable(struct mce *m); DECLARE_PER_CPU(unsigned, mce_exception_count); DECLARE_PER_CPU(unsigned, mce_poll_count); diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 8c66d2fc8f81..77527b8ea982 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -534,7 +534,7 @@ bool mce_is_memory_error(struct mce *m) } EXPORT_SYMBOL_GPL(mce_is_memory_error); -static bool mce_is_correctable(struct mce *m) +bool mce_is_correctable(struct mce *m) { if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED) return false; @@ -547,6 +547,7 @@ static bool mce_is_correctable(struct mce *m) return true; } +EXPORT_SYMBOL_GPL(mce_is_correctable); static bool cec_add_mce(struct mce *m) { diff --git a/drivers/acpi/nfit/mce.c b/drivers/acpi/nfit/mce.c index e9626bf6ca29..7a51707f87e9 100644 --- a/drivers/acpi/nfit/mce.c +++ b/drivers/acpi/nfit/mce.c @@ -25,8 +25,8 @@ static int nfit_handle_mce(struct notifier_block *nb, unsigned long val, struct acpi_nfit_desc *acpi_desc; struct nfit_spa *nfit_spa; - /* We only care about memory errors */ - if (!mce_is_memory_error(mce)) + /* We only care about uncorrectable memory errors */ + if (!mce_is_memory_error(mce) || mce_is_correctable(mce)) return NOTIFY_DONE; /*