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: Patch "x86/mce: Make the MCE notifier a blocking one" has been added to the 4.9-stable tree From: Greg Kroah-Hartman Message-Id: <1493122855575@kroah.com> Date: Tue, 25 Apr 2017 13:20:55 +0100 To: vishal.l.verma@intel.com, bp@suse.de, dan.j.williams@intel.com, gregkh@linuxfoundation.org, linux-edac@vger.kernel.org, ross.zwisler@linux.intel.com, tglx@linutronix.de, tony.luck@intel.com, x86@kernel.org Cc: stable@vger.kernel.org, stable-commits@vger.kernel.org List-ID: VGhpcyBpcyBhIG5vdGUgdG8gbGV0IHlvdSBrbm93IHRoYXQgSSd2ZSBqdXN0IGFkZGVkIHRoZSBw YXRjaCB0aXRsZWQKCiAgICB4ODYvbWNlOiBNYWtlIHRoZSBNQ0Ugbm90aWZpZXIgYSBibG9ja2lu ZyBvbmUKCnRvIHRoZSA0Ljktc3RhYmxlIHRyZWUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgogICAg aHR0cDovL3d3dy5rZXJuZWwub3JnL2dpdC8/cD1saW51eC9rZXJuZWwvZ2l0L3N0YWJsZS9zdGFi bGUtcXVldWUuZ2l0O2E9c3VtbWFyeQoKVGhlIGZpbGVuYW1lIG9mIHRoZSBwYXRjaCBpczoKICAg ICB4ODYtbWNlLW1ha2UtdGhlLW1jZS1ub3RpZmllci1hLWJsb2NraW5nLW9uZS5wYXRjaAphbmQg aXQgY2FuIGJlIGZvdW5kIGluIHRoZSBxdWV1ZS00Ljkgc3ViZGlyZWN0b3J5LgoKSWYgeW91LCBv ciBhbnlvbmUgZWxzZSwgZmVlbHMgaXQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgc3RhYmxl IHRyZWUsCnBsZWFzZSBsZXQgPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+IGtub3cgYWJvdXQgaXQu CgoKRnJvbSAwZGM5YzYzOWU2NTUzZTM5YzEzYjJjMGQ1NGM4YTFiMDk4Y2I5NWUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaXNoYWwgVmVybWEgPHZpc2hhbC5sLnZlcm1hQGludGVs LmNvbT4KRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAyMDo0MjozNSArMDIwMApTdWJqZWN0OiB4ODYv bWNlOiBNYWtlIHRoZSBNQ0Ugbm90aWZpZXIgYSBibG9ja2luZyBvbmUKCkZyb206IFZpc2hhbCBW ZXJtYSA8dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPgoKY29tbWl0IDBkYzljNjM5ZTY1NTNlMzlj MTNiMmMwZDU0YzhhMWIwOThjYjk1ZTIgdXBzdHJlYW0uCgpUaGUgTkZJVCBNQ0UgaGFuZGxlciBj YWxsYmFjayAoZm9yIGhhbmRsaW5nIG1lZGlhIGVycm9ycyBvbiBOVkRJTU1zKQp0YWtlcyBhIG11 dGV4IHRvIGFkZCB0aGUgbG9jYXRpb24gb2YgYSBtZW1vcnkgZXJyb3IgdG8gYSBsaXN0LiBCdXQg c2luY2UKdGhlIG5vdGlmaWVyIGNhbGwgY2hhaW4gZm9yIG1hY2hpbmUgY2hlY2tzICh4ODZfbWNl X2RlY29kZXJfY2hhaW4pIGlzCmF0b21pYywgd2UgZ2V0IGEgbG9ja2RlcCBzcGxhdCBsaWtlOgoK ICBCVUc6IHNsZWVwaW5nIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGludmFsaWQgY29udGV4dCBhdCBr ZXJuZWwvbG9ja2luZy9tdXRleC5jOjYyMAogIGluX2F0b21pYygpOiAxLCBpcnFzX2Rpc2FibGVk KCk6IDAsIHBpZDogNCwgbmFtZToga3dvcmtlci8wOjAKICBbLi5dCiAgQ2FsbCBUcmFjZToKICAg ZHVtcF9zdGFjawogICBfX19taWdodF9zbGVlcAogICBfX21pZ2h0X3NsZWVwCiAgIG11dGV4X2xv Y2tfbmVzdGVkCiAgID8gX19sb2NrX2FjcXVpcmUKICAgbmZpdF9oYW5kbGVfbWNlCiAgIG5vdGlm aWVyX2NhbGxfY2hhaW4KICAgYXRvbWljX25vdGlmaWVyX2NhbGxfY2hhaW4KICAgPyBhdG9taWNf bm90aWZpZXJfY2FsbF9jaGFpbgogICBtY2VfZ2VuX3Bvb2xfcHJvY2VzcwoKQ29udmVydCB0aGUg bm90aWZpZXIgdG8gYSBibG9ja2luZyBvbmUgd2hpY2ggZ2V0cyB0byBydW4gb25seSBpbiBwcm9j ZXNzCmNvbnRleHQuCgpCb3JpczogcmVtb3ZlIHRoZSBub3RpZmllciBjYWxsIGluIGF0b21pYyBj b250ZXh0IGluIHByaW50X21jZSgpLiBGb3IKbm93LCBsZXQncyBwcmludCB0aGUgTUNFIG9uIHRo ZSBhdG9taWMgcGF0aCBzbyB0aGF0IHdlIGNhbiBtYWtlIHN1cmUKdGhleSBnbyBvdXQgYW5kIGdl dCBsb2dnZWQgYXQgbGVhc3QuCgpGaXhlczogNjgzOWE2ZDk2ZjRlICgibmZpdDogZG8gYW4gQVJT IHNjcnViIG9uIGhpdHRpbmcgYSBsYXRlbnQgbWVkaWEgZXJyb3IiKQpSZXBvcnRlZC1ieTogUm9z cyBad2lzbGVyIDxyb3NzLnp3aXNsZXJAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBW aXNoYWwgVmVybWEgPHZpc2hhbC5sLnZlcm1hQGludGVsLmNvbT4KQWNrZWQtYnk6IFRvbnkgTHVj ayA8dG9ueS5sdWNrQGludGVsLmNvbT4KQ2M6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNA aW50ZWwuY29tPgpDYzogbGludXgtZWRhYyA8bGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc+CkNj OiB4ODYtbWwgPHg4NkBrZXJuZWwub3JnPgpMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3Iv MjAxNzA0MTEyMjQ0NTcuMjQ3NzctMS12aXNoYWwubC52ZXJtYUBpbnRlbC5jb20KU2lnbmVkLW9m Zi1ieTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMg R2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1I YXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL3g4Ni9rZXJuZWwv Y3B1L21jaGVjay9tY2UtZ2VucG9vbC5jICB8ICAgIDIgKy0KIGFyY2gveDg2L2tlcm5lbC9jcHUv bWNoZWNrL21jZS1pbnRlcm5hbC5oIHwgICAgMiArLQogYXJjaC94ODYva2VybmVsL2NwdS9tY2hl Y2svbWNlLmMgICAgICAgICAgfCAgIDE2ICsrKy0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdl ZCwgNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCgoKUGF0Y2hlcyBjdXJyZW50bHkg aW4gc3RhYmxlLXF1ZXVlIHdoaWNoIG1pZ2h0IGJlIGZyb20gdmlzaGFsLmwudmVybWFAaW50ZWwu Y29tIGFyZQoKcXVldWUtNC45L3g4Ni1tY2UtbWFrZS10aGUtbWNlLW5vdGlmaWVyLWEtYmxvY2tp bmctb25lLnBhdGNoCi0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBs aW5lICJ1bnN1YnNjcmliZSBsaW51eC1lZGFjIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8g bWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8v dmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwKCi0tLSBhL2FyY2gveDg2L2tlcm5l bC9jcHUvbWNoZWNrL21jZS1nZW5wb29sLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hl Y2svbWNlLWdlbnBvb2wuYwpAQCAtODUsNyArODUsNyBAQCB2b2lkIG1jZV9nZW5fcG9vbF9wcm9j ZXNzKHZvaWQpCiAJaGVhZCA9IGxsaXN0X3JldmVyc2Vfb3JkZXIoaGVhZCk7CiAJbGxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShub2RlLCB0bXAsIGhlYWQsIGxsbm9kZSkgewogCQltY2UgPSAmbm9k ZS0+bWNlOwotCQlhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbigmeDg2X21jZV9kZWNvZGVyX2No YWluLCAwLCBtY2UpOworCQlibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZ4ODZfbWNlX2Rl Y29kZXJfY2hhaW4sIDAsIG1jZSk7CiAJCWdlbl9wb29sX2ZyZWUobWNlX2V2dF9wb29sLCAodW5z aWduZWQgbG9uZylub2RlLCBzaXplb2YoKm5vZGUpKTsKIAl9CiB9Ci0tLSBhL2FyY2gveDg2L2tl cm5lbC9jcHUvbWNoZWNrL21jZS1pbnRlcm5hbC5oCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUv bWNoZWNrL21jZS1pbnRlcm5hbC5oCkBAIC0xMyw3ICsxMyw3IEBAIGVudW0gc2V2ZXJpdHlfbGV2 ZWwgewogCU1DRV9QQU5JQ19TRVZFUklUWSwKIH07CiAKLWV4dGVybiBzdHJ1Y3QgYXRvbWljX25v dGlmaWVyX2hlYWQgeDg2X21jZV9kZWNvZGVyX2NoYWluOworZXh0ZXJuIHN0cnVjdCBibG9ja2lu Z19ub3RpZmllcl9oZWFkIHg4Nl9tY2VfZGVjb2Rlcl9jaGFpbjsKIAogI2RlZmluZSBBVFRSX0xF TgkJMTYKICNkZWZpbmUgSU5JVElBTF9DSEVDS19JTlRFUlZBTAk1ICogNjAgLyogNSBtaW51dGVz ICovCi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCisrKyBiL2FyY2gveDg2 L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQg KCpxdWlya19ub193YXlfb3V0KShpbnQgYmFuawogICogQ1BVL2NoaXBzZXQgc3BlY2lmaWMgRURB QyBjb2RlIGNhbiByZWdpc3RlciBhIG5vdGlmaWVyIGNhbGwgaGVyZSB0byBwcmludAogICogTUNF IGVycm9ycyBpbiBhIGh1bWFuLXJlYWRhYmxlIGZvcm0uCiAgKi8KLUFUT01JQ19OT1RJRklFUl9I RUFEKHg4Nl9tY2VfZGVjb2Rlcl9jaGFpbik7CitCTE9DS0lOR19OT1RJRklFUl9IRUFEKHg4Nl9t Y2VfZGVjb2Rlcl9jaGFpbik7CiAKIC8qIERvIGluaXRpYWwgaW5pdGlhbGl6YXRpb24gb2YgYSBz dHJ1Y3QgbWNlICovCiB2b2lkIG1jZV9zZXR1cChzdHJ1Y3QgbWNlICptKQpAQCAtMjEzLDEzICsy MTMsMTMgQEAgdm9pZCBtY2VfcmVnaXN0ZXJfZGVjb2RlX2NoYWluKHN0cnVjdCBubwogCWlmIChu YiAhPSAmbWNlX3NyYW9fbmIgJiYgbmItPnByaW9yaXR5ID09IElOVF9NQVgpCiAJCW5iLT5wcmlv cml0eSAtPSAxOwogCi0JYXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKCZ4ODZfbWNlX2Rl Y29kZXJfY2hhaW4sIG5iKTsKKwlibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmeDg2 X21jZV9kZWNvZGVyX2NoYWluLCBuYik7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtY2VfcmVnaXN0 ZXJfZGVjb2RlX2NoYWluKTsKIAogdm9pZCBtY2VfdW5yZWdpc3Rlcl9kZWNvZGVfY2hhaW4oc3Ry dWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKIHsKLQlhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdp c3RlcigmeDg2X21jZV9kZWNvZGVyX2NoYWluLCBuYik7CisJYmxvY2tpbmdfbm90aWZpZXJfY2hh aW5fdW5yZWdpc3RlcigmeDg2X21jZV9kZWNvZGVyX2NoYWluLCBuYik7CiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChtY2VfdW5yZWdpc3Rlcl9kZWNvZGVfY2hhaW4pOwogCkBAIC0yNzIsOCArMjcyLDYg QEAgc3RydWN0IG1jYV9tc3JfcmVncyBtc3Jfb3BzID0gewogCiBzdGF0aWMgdm9pZCBwcmludF9t Y2Uoc3RydWN0IG1jZSAqbSkKIHsKLQlpbnQgcmV0ID0gMDsKLQogCXByX2VtZXJnKEhXX0VSUiAi Q1BVICVkOiBNYWNoaW5lIENoZWNrIEV4Y2VwdGlvbjogJUx4IEJhbmsgJWQ6ICUwMTZMeFxuIiwK IAkgICAgICAgbS0+ZXh0Y3B1LCBtLT5tY2dzdGF0dXMsIG0tPmJhbmssIG0tPnN0YXR1cyk7CiAK QEAgLTMwOSwxNCArMzA3LDYgQEAgc3RhdGljIHZvaWQgcHJpbnRfbWNlKHN0cnVjdCBtY2UgKm0p CiAJCW0tPmNwdXZlbmRvciwgbS0+Y3B1aWQsIG0tPnRpbWUsIG0tPnNvY2tldGlkLCBtLT5hcGlj aWQsCiAJCWNwdV9kYXRhKG0tPmV4dGNwdSkubWljcm9jb2RlKTsKIAotCS8qCi0JICogUHJpbnQg b3V0IGh1bWFuLXJlYWRhYmxlIGRldGFpbHMgYWJvdXQgdGhlIE1DRSBlcnJvciwKLQkgKiAoaWYg dGhlIENQVSBoYXMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHRoYXQpCi0JICovCi0JcmV0ID0gYXRv bWljX25vdGlmaWVyX2NhbGxfY2hhaW4oJng4Nl9tY2VfZGVjb2Rlcl9jaGFpbiwgMCwgbSk7Ci0J aWYgKHJldCA9PSBOT1RJRllfU1RPUCkKLQkJcmV0dXJuOwotCiAJcHJfZW1lcmdfcmF0ZWxpbWl0 ZWQoSFdfRVJSICJSdW4gdGhlIGFib3ZlIHRocm91Z2ggJ21jZWxvZyAtLWFzY2lpJ1xuIik7CiB9 CiAK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:34970 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1947597AbdDYM0Z (ORCPT ); Tue, 25 Apr 2017 08:26:25 -0400 Subject: Patch "x86/mce: Make the MCE notifier a blocking one" has been added to the 4.9-stable tree To: vishal.l.verma@intel.com, bp@suse.de, dan.j.williams@intel.com, gregkh@linuxfoundation.org, linux-edac@vger.kernel.org, ross.zwisler@linux.intel.com, tglx@linutronix.de, tony.luck@intel.com, x86@kernel.org Cc: , From: Date: Tue, 25 Apr 2017 13:20:55 +0100 Message-ID: <1493122855575@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled x86/mce: Make the MCE notifier a blocking one to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: x86-mce-make-the-mce-notifier-a-blocking-one.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From 0dc9c639e6553e39c13b2c0d54c8a1b098cb95e2 Mon Sep 17 00:00:00 2001 From: Vishal Verma Date: Tue, 18 Apr 2017 20:42:35 +0200 Subject: x86/mce: Make the MCE notifier a blocking one From: Vishal Verma commit 0dc9c639e6553e39c13b2c0d54c8a1b098cb95e2 upstream. The NFIT MCE handler callback (for handling media errors on NVDIMMs) takes a mutex to add the location of a memory error to a list. But since the notifier call chain for machine checks (x86_mce_decoder_chain) is atomic, we get a lockdep splat like: BUG: sleeping function called from invalid context at kernel/locking/mutex.c:620 in_atomic(): 1, irqs_disabled(): 0, pid: 4, name: kworker/0:0 [..] Call Trace: dump_stack ___might_sleep __might_sleep mutex_lock_nested ? __lock_acquire nfit_handle_mce notifier_call_chain atomic_notifier_call_chain ? atomic_notifier_call_chain mce_gen_pool_process Convert the notifier to a blocking one which gets to run only in process context. Boris: remove the notifier call in atomic context in print_mce(). For now, let's print the MCE on the atomic path so that we can make sure they go out and get logged at least. Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error") Reported-by: Ross Zwisler Signed-off-by: Vishal Verma Acked-by: Tony Luck Cc: Dan Williams Cc: linux-edac Cc: x86-ml Link: http://lkml.kernel.org/r/20170411224457.24777-1-vishal.l.verma@intel.com Signed-off-by: Borislav Petkov Signed-off-by: Thomas Gleixner Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/cpu/mcheck/mce-genpool.c | 2 +- arch/x86/kernel/cpu/mcheck/mce-internal.h | 2 +- arch/x86/kernel/cpu/mcheck/mce.c | 16 +++------------- 3 files changed, 5 insertions(+), 15 deletions(-) --- a/arch/x86/kernel/cpu/mcheck/mce-genpool.c +++ b/arch/x86/kernel/cpu/mcheck/mce-genpool.c @@ -85,7 +85,7 @@ void mce_gen_pool_process(void) head = llist_reverse_order(head); llist_for_each_entry_safe(node, tmp, head, llnode) { mce = &node->mce; - atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, mce); + blocking_notifier_call_chain(&x86_mce_decoder_chain, 0, mce); gen_pool_free(mce_evt_pool, (unsigned long)node, sizeof(*node)); } } --- a/arch/x86/kernel/cpu/mcheck/mce-internal.h +++ b/arch/x86/kernel/cpu/mcheck/mce-internal.h @@ -13,7 +13,7 @@ enum severity_level { MCE_PANIC_SEVERITY, }; -extern struct atomic_notifier_head x86_mce_decoder_chain; +extern struct blocking_notifier_head x86_mce_decoder_chain; #define ATTR_LEN 16 #define INITIAL_CHECK_INTERVAL 5 * 60 /* 5 minutes */ --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -120,7 +120,7 @@ static void (*quirk_no_way_out)(int bank * CPU/chipset specific EDAC code can register a notifier call here to print * MCE errors in a human-readable form. */ -ATOMIC_NOTIFIER_HEAD(x86_mce_decoder_chain); +BLOCKING_NOTIFIER_HEAD(x86_mce_decoder_chain); /* Do initial initialization of a struct mce */ void mce_setup(struct mce *m) @@ -213,13 +213,13 @@ void mce_register_decode_chain(struct no if (nb != &mce_srao_nb && nb->priority == INT_MAX) nb->priority -= 1; - atomic_notifier_chain_register(&x86_mce_decoder_chain, nb); + blocking_notifier_chain_register(&x86_mce_decoder_chain, nb); } EXPORT_SYMBOL_GPL(mce_register_decode_chain); void mce_unregister_decode_chain(struct notifier_block *nb) { - atomic_notifier_chain_unregister(&x86_mce_decoder_chain, nb); + blocking_notifier_chain_unregister(&x86_mce_decoder_chain, nb); } EXPORT_SYMBOL_GPL(mce_unregister_decode_chain); @@ -272,8 +272,6 @@ struct mca_msr_regs msr_ops = { static void print_mce(struct mce *m) { - int ret = 0; - pr_emerg(HW_ERR "CPU %d: Machine Check Exception: %Lx Bank %d: %016Lx\n", m->extcpu, m->mcgstatus, m->bank, m->status); @@ -309,14 +307,6 @@ static void print_mce(struct mce *m) m->cpuvendor, m->cpuid, m->time, m->socketid, m->apicid, cpu_data(m->extcpu).microcode); - /* - * Print out human-readable details about the MCE error, - * (if the CPU has an implementation for that) - */ - ret = atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, m); - if (ret == NOTIFY_STOP) - return; - pr_emerg_ratelimited(HW_ERR "Run the above through 'mcelog --ascii'\n"); } Patches currently in stable-queue which might be from vishal.l.verma@intel.com are queue-4.9/x86-mce-make-the-mce-notifier-a-blocking-one.patch