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: FAILED: patch "[PATCH] x86/mce: Make the MCE notifier a blocking one" failed to apply to 4.9-stable tree From: Greg Kroah-Hartman Message-Id: <1493020819148184@kroah.com> Date: Mon, 24 Apr 2017 09:00:19 +0100 To: vishal.l.verma@intel.com, bp@suse.de, dan.j.williams@intel.com, linux-edac@vger.kernel.org, ross.zwisler@linux.intel.com, stable@vger.kernel.org, tglx@linutronix.de, tony.luck@intel.com, x86@kernel.org List-ID: VGhlIHBhdGNoIGJlbG93IGRvZXMgbm90IGFwcGx5IHRvIHRoZSA0Ljktc3RhYmxlIHRyZWUuCklm IHNvbWVvbmUgd2FudHMgaXQgYXBwbGllZCB0aGVyZSwgb3IgdG8gYW55IG90aGVyIHN0YWJsZSBv ciBsb25ndGVybQp0cmVlLCB0aGVuIHBsZWFzZSBlbWFpbCB0aGUgYmFja3BvcnQsIGluY2x1ZGlu ZyB0aGUgb3JpZ2luYWwgZ2l0IGNvbW1pdAppZCB0byA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz4u Cgp0aGFua3MsCgpncmVnIGstaAoKLS0tLS0tLS0tLS0tLS0tLS0tIG9yaWdpbmFsIGNvbW1pdCBp biBMaW51cydzIHRyZWUgLS0tLS0tLS0tLS0tLS0tLS0tCgpGcm9tIDBkYzljNjM5ZTY1NTNlMzlj MTNiMmMwZDU0YzhhMWIwOThjYjk1ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFZp c2hhbCBWZXJtYSA8dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPgpEYXRlOiBUdWUsIDE4IEFwciAy MDE3IDIwOjQyOjM1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0geDg2L21jZTogTWFrZSB0aGUgTUNF IG5vdGlmaWVyIGEgYmxvY2tpbmcgb25lCgpUaGUgTkZJVCBNQ0UgaGFuZGxlciBjYWxsYmFjayAo Zm9yIGhhbmRsaW5nIG1lZGlhIGVycm9ycyBvbiBOVkRJTU1zKQp0YWtlcyBhIG11dGV4IHRvIGFk ZCB0aGUgbG9jYXRpb24gb2YgYSBtZW1vcnkgZXJyb3IgdG8gYSBsaXN0LiBCdXQgc2luY2UKdGhl IG5vdGlmaWVyIGNhbGwgY2hhaW4gZm9yIG1hY2hpbmUgY2hlY2tzICh4ODZfbWNlX2RlY29kZXJf Y2hhaW4pIGlzCmF0b21pYywgd2UgZ2V0IGEgbG9ja2RlcCBzcGxhdCBsaWtlOgoKICBCVUc6IHNs ZWVwaW5nIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGludmFsaWQgY29udGV4dCBhdCBrZXJuZWwvbG9j a2luZy9tdXRleC5jOjYyMAogIGluX2F0b21pYygpOiAxLCBpcnFzX2Rpc2FibGVkKCk6IDAsIHBp ZDogNCwgbmFtZToga3dvcmtlci8wOjAKICBbLi5dCiAgQ2FsbCBUcmFjZToKICAgZHVtcF9zdGFj awogICBfX19taWdodF9zbGVlcAogICBfX21pZ2h0X3NsZWVwCiAgIG11dGV4X2xvY2tfbmVzdGVk CiAgID8gX19sb2NrX2FjcXVpcmUKICAgbmZpdF9oYW5kbGVfbWNlCiAgIG5vdGlmaWVyX2NhbGxf Y2hhaW4KICAgYXRvbWljX25vdGlmaWVyX2NhbGxfY2hhaW4KICAgPyBhdG9taWNfbm90aWZpZXJf Y2FsbF9jaGFpbgogICBtY2VfZ2VuX3Bvb2xfcHJvY2VzcwoKQ29udmVydCB0aGUgbm90aWZpZXIg dG8gYSBibG9ja2luZyBvbmUgd2hpY2ggZ2V0cyB0byBydW4gb25seSBpbiBwcm9jZXNzCmNvbnRl eHQuCgpCb3JpczogcmVtb3ZlIHRoZSBub3RpZmllciBjYWxsIGluIGF0b21pYyBjb250ZXh0IGlu IHByaW50X21jZSgpLiBGb3IKbm93LCBsZXQncyBwcmludCB0aGUgTUNFIG9uIHRoZSBhdG9taWMg cGF0aCBzbyB0aGF0IHdlIGNhbiBtYWtlIHN1cmUKdGhleSBnbyBvdXQgYW5kIGdldCBsb2dnZWQg YXQgbGVhc3QuCgpGaXhlczogNjgzOWE2ZDk2ZjRlICgibmZpdDogZG8gYW4gQVJTIHNjcnViIG9u IGhpdHRpbmcgYSBsYXRlbnQgbWVkaWEgZXJyb3IiKQpSZXBvcnRlZC1ieTogUm9zcyBad2lzbGVy IDxyb3NzLnp3aXNsZXJAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBWaXNoYWwgVmVy bWEgPHZpc2hhbC5sLnZlcm1hQGludGVsLmNvbT4KQWNrZWQtYnk6IFRvbnkgTHVjayA8dG9ueS5s dWNrQGludGVsLmNvbT4KQ2M6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29t PgpDYzogbGludXgtZWRhYyA8bGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc+CkNjOiB4ODYtbWwg PHg4NkBrZXJuZWwub3JnPgpDYzogPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+Ckxpbms6IGh0dHA6 Ly9sa21sLmtlcm5lbC5vcmcvci8yMDE3MDQxMTIyNDQ1Ny4yNDc3Ny0xLXZpc2hhbC5sLnZlcm1h QGludGVsLmNvbQpTaWduZWQtb2ZmLWJ5OiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+ClNp Z25lZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgotLS0KVG8g dW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxp bnV4LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJu ZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFq b3Jkb21vLWluZm8uaHRtbAoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNr L21jZS1nZW5wb29sLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UtZ2VucG9vbC5j CmluZGV4IDFlNWE1MGMxMWQzYy4uMjE3Y2Q0NDQ5YmM5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9r ZXJuZWwvY3B1L21jaGVjay9tY2UtZ2VucG9vbC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUv bWNoZWNrL21jZS1nZW5wb29sLmMKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBtY2VfZ2VuX3Bvb2xf cHJvY2VzcyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fdW51c2VkKQogCWhlYWQgPSBsbGlzdF9yZXZl cnNlX29yZGVyKGhlYWQpOwogCWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9kZSwgdG1wLCBo ZWFkLCBsbG5vZGUpIHsKIAkJbWNlID0gJm5vZGUtPm1jZTsKLQkJYXRvbWljX25vdGlmaWVyX2Nh bGxfY2hhaW4oJng4Nl9tY2VfZGVjb2Rlcl9jaGFpbiwgMCwgbWNlKTsKKwkJYmxvY2tpbmdfbm90 aWZpZXJfY2FsbF9jaGFpbigmeDg2X21jZV9kZWNvZGVyX2NoYWluLCAwLCBtY2UpOwogCQlnZW5f cG9vbF9mcmVlKG1jZV9ldnRfcG9vbCwgKHVuc2lnbmVkIGxvbmcpbm9kZSwgc2l6ZW9mKCpub2Rl KSk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLWlu dGVybmFsLmggYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UtaW50ZXJuYWwuaAppbmRl eCA5MDMwNDNlNmE2MmIuLjE5NTkyYmExYTMyMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVs L2NwdS9tY2hlY2svbWNlLWludGVybmFsLmgKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hl Y2svbWNlLWludGVybmFsLmgKQEAgLTEzLDcgKzEzLDcgQEAgZW51bSBzZXZlcml0eV9sZXZlbCB7 CiAJTUNFX1BBTklDX1NFVkVSSVRZLAogfTsKIAotZXh0ZXJuIHN0cnVjdCBhdG9taWNfbm90aWZp ZXJfaGVhZCB4ODZfbWNlX2RlY29kZXJfY2hhaW47CitleHRlcm4gc3RydWN0IGJsb2NraW5nX25v dGlmaWVyX2hlYWQgeDg2X21jZV9kZWNvZGVyX2NoYWluOwogCiAjZGVmaW5lIEFUVFJfTEVOCQkx NgogI2RlZmluZSBJTklUSUFMX0NIRUNLX0lOVEVSVkFMCTUgKiA2MCAvKiA1IG1pbnV0ZXMgKi8K ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jIGIvYXJjaC94ODYv a2VybmVsL2NwdS9tY2hlY2svbWNlLmMKaW5kZXggNWFjY2ZiZGVlM2YwLi5hZjQ0ZWJlYjU5M2Yg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCisrKyBiL2FyY2gv eDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIHZv aWQgKCpxdWlya19ub193YXlfb3V0KShpbnQgYmFuaywgc3RydWN0IG1jZSAqbSwgc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpOwogICogQ1BVL2NoaXBzZXQgc3BlY2lmaWMgRURBQyBjb2RlIGNhbiByZWdp c3RlciBhIG5vdGlmaWVyIGNhbGwgaGVyZSB0byBwcmludAogICogTUNFIGVycm9ycyBpbiBhIGh1 bWFuLXJlYWRhYmxlIGZvcm0uCiAgKi8KLUFUT01JQ19OT1RJRklFUl9IRUFEKHg4Nl9tY2VfZGVj b2Rlcl9jaGFpbik7CitCTE9DS0lOR19OT1RJRklFUl9IRUFEKHg4Nl9tY2VfZGVjb2Rlcl9jaGFp bik7CiAKIC8qIERvIGluaXRpYWwgaW5pdGlhbGl6YXRpb24gb2YgYSBzdHJ1Y3QgbWNlICovCiB2 b2lkIG1jZV9zZXR1cChzdHJ1Y3QgbWNlICptKQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgbWNl X3JlZ2lzdGVyX2RlY29kZV9jaGFpbihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQogCiAJV0FS Tl9PTihuYi0+cHJpb3JpdHkgPiBNQ0VfUFJJT19MT1dFU1QgJiYgbmItPnByaW9yaXR5IDwgTUNF X1BSSU9fRURBQyk7CiAKLQlhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJng4Nl9tY2Vf ZGVjb2Rlcl9jaGFpbiwgbmIpOworCWJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKCZ4 ODZfbWNlX2RlY29kZXJfY2hhaW4sIG5iKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG1jZV9yZWdp c3Rlcl9kZWNvZGVfY2hhaW4pOwogCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBtY2VfdW5yZWdp c3Rlcl9kZWNvZGVfY2hhaW4oc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKIHsKIAlhdG9taWNf ZGVjKCZudW1fbm90aWZpZXJzKTsKIAotCWF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVy KCZ4ODZfbWNlX2RlY29kZXJfY2hhaW4sIG5iKTsKKwlibG9ja2luZ19ub3RpZmllcl9jaGFpbl91 bnJlZ2lzdGVyKCZ4ODZfbWNlX2RlY29kZXJfY2hhaW4sIG5iKTsKIH0KIEVYUE9SVF9TWU1CT0xf R1BMKG1jZV91bnJlZ2lzdGVyX2RlY29kZV9jaGFpbik7CiAKQEAgLTMyMSwxOCArMzIxLDcgQEAg c3RhdGljIHZvaWQgX19wcmludF9tY2Uoc3RydWN0IG1jZSAqbSkKIAogc3RhdGljIHZvaWQgcHJp bnRfbWNlKHN0cnVjdCBtY2UgKm0pCiB7Ci0JaW50IHJldCA9IDA7Ci0KIAlfX3ByaW50X21jZSht KTsKLQotCS8qCi0JICogUHJpbnQgb3V0IGh1bWFuLXJlYWRhYmxlIGRldGFpbHMgYWJvdXQgdGhl IE1DRSBlcnJvciwKLQkgKiAoaWYgdGhlIENQVSBoYXMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHRo YXQpCi0JICovCi0JcmV0ID0gYXRvbWljX25vdGlmaWVyX2NhbGxfY2hhaW4oJng4Nl9tY2VfZGVj b2Rlcl9jaGFpbiwgMCwgbSk7Ci0JaWYgKHJldCA9PSBOT1RJRllfU1RPUCkKLQkJcmV0dXJuOwot CiAJcHJfZW1lcmdfcmF0ZWxpbWl0ZWQoSFdfRVJSICJSdW4gdGhlIGFib3ZlIHRocm91Z2ggJ21j ZWxvZyAtLWFzY2lpJ1xuIik7CiB9CiAK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out4-smtp.messagingengine.com ([66.111.4.28]:38097 "EHLO out4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1166294AbdDXIGC (ORCPT ); Mon, 24 Apr 2017 04:06:02 -0400 Subject: FAILED: patch "[PATCH] x86/mce: Make the MCE notifier a blocking one" failed to apply to 4.9-stable tree To: vishal.l.verma@intel.com, bp@suse.de, dan.j.williams@intel.com, linux-edac@vger.kernel.org, ross.zwisler@linux.intel.com, stable@vger.kernel.org, tglx@linutronix.de, tony.luck@intel.com, x86@kernel.org Cc: From: Date: Mon, 24 Apr 2017 09:00:19 +0100 Message-ID: <1493020819148184@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: The patch below does not apply to the 4.9-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to . thanks, greg k-h ------------------ original commit in Linus's tree ------------------ >>From 0dc9c639e6553e39c13b2c0d54c8a1b098cb95e2 Mon Sep 17 00:00:00 2001 From: Vishal Verma Date: Tue, 18 Apr 2017 20:42:35 +0200 Subject: [PATCH] x86/mce: Make the MCE notifier a blocking one 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 Cc: Link: http://lkml.kernel.org/r/20170411224457.24777-1-vishal.l.verma@intel.com Signed-off-by: Borislav Petkov Signed-off-by: Thomas Gleixner diff --git a/arch/x86/kernel/cpu/mcheck/mce-genpool.c b/arch/x86/kernel/cpu/mcheck/mce-genpool.c index 1e5a50c11d3c..217cd4449bc9 100644 --- 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(struct work_struct *__unused) 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)); } } diff --git a/arch/x86/kernel/cpu/mcheck/mce-internal.h b/arch/x86/kernel/cpu/mcheck/mce-internal.h index 903043e6a62b..19592ba1a320 100644 --- 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 */ diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 5accfbdee3f0..af44ebeb593f 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -123,7 +123,7 @@ static void (*quirk_no_way_out)(int bank, struct mce *m, struct pt_regs *regs); * 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) @@ -220,7 +220,7 @@ void mce_register_decode_chain(struct notifier_block *nb) WARN_ON(nb->priority > MCE_PRIO_LOWEST && nb->priority < MCE_PRIO_EDAC); - 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); @@ -228,7 +228,7 @@ void mce_unregister_decode_chain(struct notifier_block *nb) { atomic_dec(&num_notifiers); - 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); @@ -321,18 +321,7 @@ static void __print_mce(struct mce *m) static void print_mce(struct mce *m) { - int ret = 0; - __print_mce(m); - - /* - * 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"); }