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:ras/core] x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type From: tip-bot for Borislav Petkov Message-Id: Date: Wed, 21 Feb 2018 10:00:37 -0800 To: linux-tip-commits@vger.kernel.org Cc: tglx@linutronix.de, mingo@kernel.org, yazen.ghannam@amd.com, peterz@infradead.org, bp@alien8.de, bp@suse.de, linux-kernel@vger.kernel.org, tony.luck@intel.com, linux-edac@vger.kernel.org, torvalds@linux-foundation.org, hpa@zytor.com List-ID: Q29tbWl0LUlEOiAgNjg2MjdhNjk3YzE5NTkzNzY3MmNlMDc2ODMwOTRjNzJiMTE3NDc4NgpHaXR3 ZWI6ICAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3RpcC82ODYyN2E2OTdjMTk1OTM3NjcyY2Uw NzY4MzA5NGM3MmIxMTc0Nzg2CkF1dGhvcjogICAgIFlhemVuIEdoYW5uYW0gPHlhemVuLmdoYW5u YW1AYW1kLmNvbT4KQXV0aG9yRGF0ZTogV2VkLCAyMSBGZWIgMjAxOCAxMToxODo1OCArMDEwMApD b21taXR0ZXI6ICBJbmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KQ29tbWl0RGF0ZTogV2Vk LCAyMSBGZWIgMjAxOCAxNzowMDo1NCArMDEwMAoKeDg2L21jZS9BTUQsIEVEQUMvbWNlX2FtZDog RW51bWVyYXRlIFJlc2VydmVkIFNNQ0EgYmFuayB0eXBlCgpDdXJyZW50bHksIGJhbmsgNCBpcyBy ZXNlcnZlZCBvbiBGYW0xN2gsIHNvIHdlIGNob3NlIG5vdCB0byBpbml0aWFsaXplCmJhbmsgNCBp biB0aGUgc21jYV9iYW5rcyBhcnJheS4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgY2hlY2sgaWYg YSBiYW5rCmlzIGluaXRpYWxpemVkLCBsaWtlIGR1cmluZyBib290IG9yIHJlc3VtZSwgd2Ugd2ls bCBzZWUgdGhhdCBiYW5rIDQgaXMKbm90IGluaXRpYWxpemVkIGFuZCB0cnkgdG8gaW5pdGlhbGl6 ZSBpdC4KClRoaXMgd2lsbCBjYXVzZSBhIGNhbGwgdHJhY2UsIHdoZW4gcmVzdW1pbmcgZnJvbSBz dXNwZW5kLCBkdWUgdG8KcmRtc3JfKm9uX2NwdSgpIGNhbGxzIGluIHRoZSBpbml0IHBhdGguIFRo ZSByZG1zcl8qb25fY3B1KCkgY2FsbHMgaXNzdWUKYW4gSVBJIGJ1dCB3ZSdyZSBydW5uaW5nIHdp dGggaW50ZXJydXB0cyBkaXNhYmxlZC4gVGhpcyB0cmlnZ2VyczoKCiAgV0FSTklORzogQ1BVOiAw IFBJRDogMTE1MjMgYXQga2VybmVsL3NtcC5jOjI5MSBzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUr MHhkYy8weGUwCiAgLi4uCgpSZXNlcnZlZCBiYW5rcyB3aWxsIGJlIHJlYWQtYXMtemVybywgc28g dGhlaXIgTUNBX0lQSUQgcmVnaXN0ZXIgd2lsbCBiZQp6ZXJvLiBTbywgbGlrZSB0aGUgc21jYV9i YW5rcyBhcnJheSwgdGhlIHRocmVzaG9sZF9iYW5rcyBhcnJheSB3aWxsIG5vdApoYXZlIGFuIGVu dHJ5IGZvciBhIHJlc2VydmVkIGJhbmsgc2luY2UgYWxsIGl0cyBNQ0FfTUlTQyogcmVnaXN0ZXJz IHdpbGwKYmUgemVyby4KCkVudW1lcmF0ZSBhICJSZXNlcnZlZCIgYmFuayB0eXBlIHRoYXQgbWF0 Y2hlcyBvbiBhIEhXSURfTUNBVFlQRSBvZiAwLDAuCgpVc2UgdGhlICJSZXNlcnZlZCIgdHlwZSB3 aGVuIGNoZWNraW5nIGlmIGEgYmFuayBpcyByZXNlcnZlZC4gSXQncwpwb3NzaWJsZSB0aGF0IG90 aGVyIGJhbmsgbnVtYmVycyBtYXkgYmUgcmVzZXJ2ZWQgb24gZnV0dXJlIHN5c3RlbXMuCgpEb24n dCB0cnkgdG8gZmluZCB0aGUgYmxvY2sgYWRkcmVzcyBvbiByZXNlcnZlZCBiYW5rcy4KClNpZ25l ZC1vZmYtYnk6IFlhemVuIEdoYW5uYW0gPHlhemVuLmdoYW5uYW1AYW1kLmNvbT4KU2lnbmVkLW9m Zi1ieTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgpDYzogPHN0YWJsZUB2Z2VyLmtlcm5l bC5vcmc+ICMgNC4xNC54CkNjOiBCb3Jpc2xhdiBQZXRrb3YgPGJwQGFsaWVuOC5kZT4KQ2M6IExp bnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IFBldGVyIFpp amxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBs aW51dHJvbml4LmRlPgpDYzogVG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29tPgpDYzogbGlu dXgtZWRhYyA8bGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc+Ckxpbms6IGh0dHA6Ly9sa21sLmtl cm5lbC5vcmcvci8yMDE4MDIyMTEwMTkwMC4xMDMyNi03LWJwQGFsaWVuOC5kZQpTaWduZWQtb2Zm LWJ5OiBJbmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRl L2FzbS9tY2UuaCAgICAgICAgICAgfCAgMSArCiBhcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9t Y2VfYW1kLmMgfCAgNyArKysrKysrCiBkcml2ZXJzL2VkYWMvbWNlX2FtZC5jICAgICAgICAgICAg ICAgfCAxMSArKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQoKLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhl IGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0 byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6 Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL21jZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbWNlLmgKaW5kZXgg YzNmYjlhNy4uOGM3YjNlNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbWNlLmgK KysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbWNlLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBlbnVt IHNtY2FfYmFua190eXBlcyB7CiAJU01DQV9JRiwJLyogSW5zdHJ1Y3Rpb24gRmV0Y2ggKi8KIAlT TUNBX0wyX0NBQ0hFLAkvKiBMMiBDYWNoZSAqLwogCVNNQ0FfREUsCS8qIERlY29kZXIgVW5pdCAq LworCVNNQ0FfUkVTRVJWRUQsCS8qIFJlc2VydmVkICovCiAJU01DQV9FWCwJLyogRXhlY3V0aW9u IFVuaXQgKi8KIAlTTUNBX0ZQLAkvKiBGbG9hdGluZyBQb2ludCAqLwogCVNNQ0FfTDNfQ0FDSEUs CS8qIEwzIENhY2hlICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9t Y2VfYW1kLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2VfYW1kLmMKaW5kZXggN2Zi YjE5Yy4uZDhiYTlkMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNl X2FtZC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYwpAQCAtODIs NiArODIsNyBAQCBzdGF0aWMgc3RydWN0IHNtY2FfYmFua19uYW1lIHNtY2FfbmFtZXNbXSA9IHsK IAlbU01DQV9JRl0JPSB7ICJpbnNuX2ZldGNoIiwJIkluc3RydWN0aW9uIEZldGNoIFVuaXQiIH0s CiAJW1NNQ0FfTDJfQ0FDSEVdCT0geyAibDJfY2FjaGUiLAkJIkwyIENhY2hlIiB9LAogCVtTTUNB X0RFXQk9IHsgImRlY29kZV91bml0IiwJIkRlY29kZSBVbml0IiB9LAorCVtTTUNBX1JFU0VSVkVE XQk9IHsgInJlc2VydmVkIiwJCSJSZXNlcnZlZCIgfSwKIAlbU01DQV9FWF0JPSB7ICJleGVjdXRp b25fdW5pdCIsCSJFeGVjdXRpb24gVW5pdCIgfSwKIAlbU01DQV9GUF0JPSB7ICJmbG9hdGluZ19w b2ludCIsCSJGbG9hdGluZyBQb2ludCBVbml0IiB9LAogCVtTTUNBX0wzX0NBQ0hFXQk9IHsgImwz X2NhY2hlIiwJCSJMMyBDYWNoZSIgfSwKQEAgLTEyNyw2ICsxMjgsOSBAQCBzdGF0aWMgZW51bSBz bWNhX2JhbmtfdHlwZXMgc21jYV9nZXRfYmFua190eXBlKHVuc2lnbmVkIGludCBiYW5rKQogc3Rh dGljIHN0cnVjdCBzbWNhX2h3aWQgc21jYV9od2lkX21jYXR5cGVzW10gPSB7CiAJLyogeyBiYW5r X3R5cGUsIGh3aWRfbWNhdHlwZSwgeGVjX2JpdG1hcCB9ICovCiAKKwkvKiBSZXNlcnZlZCB0eXBl ICovCisJeyBTTUNBX1JFU0VSVkVELCBIV0lEX01DQVRZUEUoMHgwMCwgMHgwKSwgMHgwIH0sCisK IAkvKiBaTiBDb3JlIChIV0lEPTB4QjApIE1DQSB0eXBlcyAqLwogCXsgU01DQV9MUywJIEhXSURf TUNBVFlQRSgweEIwLCAweDApLCAweDFGRkZFRiB9LAogCXsgU01DQV9JRiwJIEhXSURfTUNBVFlQ RSgweEIwLCAweDEpLCAweDNGRkYgfSwKQEAgLTQzMyw2ICs0MzcsOSBAQCBzdGF0aWMgdTMyIGdl dF9ibG9ja19hZGRyZXNzKHVuc2lnbmVkIGludCBjcHUsIHUzMiBjdXJyZW50X2FkZHIsIHUzMiBs b3csIHUzMiBoaQogCXUzMiBhZGRyID0gMCwgb2Zmc2V0ID0gMDsKIAogCWlmIChtY2VfZmxhZ3Mu c21jYSkgeworCQlpZiAoc21jYV9nZXRfYmFua190eXBlKGJhbmspID09IFNNQ0FfUkVTRVJWRUQp CisJCQlyZXR1cm4gYWRkcjsKKwogCQlpZiAoIWJsb2NrKSB7CiAJCQlhZGRyID0gTVNSX0FNRDY0 X1NNQ0FfTUN4X01JU0MoYmFuayk7CiAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Vk YWMvbWNlX2FtZC5jIGIvZHJpdmVycy9lZGFjL21jZV9hbWQuYwppbmRleCBhMTFhNjcxLi4yYWI0 ZDYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvbWNlX2FtZC5jCisrKyBiL2RyaXZlcnMvZWRh Yy9tY2VfYW1kLmMKQEAgLTg1NCwyMSArODU0LDI0IEBAIHN0YXRpYyB2b2lkIGRlY29kZV9tYzZf bWNlKHN0cnVjdCBtY2UgKm0pCiBzdGF0aWMgdm9pZCBkZWNvZGVfc21jYV9lcnJvcihzdHJ1Y3Qg bWNlICptKQogewogCXN0cnVjdCBzbWNhX2h3aWQgKmh3aWQ7Ci0JdW5zaWduZWQgaW50IGJhbmtf dHlwZTsKKwllbnVtIHNtY2FfYmFua190eXBlcyBiYW5rX3R5cGU7CiAJY29uc3QgY2hhciAqaXBf bmFtZTsKIAl1OCB4ZWMgPSBYRUMobS0+c3RhdHVzLCB4ZWNfbWFzayk7CiAKIAlpZiAobS0+YmFu ayA+PSBBUlJBWV9TSVpFKHNtY2FfYmFua3MpKQogCQlyZXR1cm47CiAKLQlpZiAoeDg2X2ZhbWls eShtLT5jcHVpZCkgPj0gMHgxNyAmJiBtLT5iYW5rID09IDQpCi0JCXByX2VtZXJnKEhXX0VSUiAi QmFuayA0IGlzIHJlc2VydmVkIG9uIEZhbTE3aC5cbiIpOwotCiAJaHdpZCA9IHNtY2FfYmFua3Nb bS0+YmFua10uaHdpZDsKIAlpZiAoIWh3aWQpCiAJCXJldHVybjsKIAogCWJhbmtfdHlwZSA9IGh3 aWQtPmJhbmtfdHlwZTsKKworCWlmIChiYW5rX3R5cGUgPT0gU01DQV9SRVNFUlZFRCkgeworCQlw cl9lbWVyZyhIV19FUlIgIkJhbmsgJWQgaXMgcmVzZXJ2ZWQuXG4iLCBtLT5iYW5rKTsKKwkJcmV0 dXJuOworCX0KKwogCWlwX25hbWUgPSBzbWNhX2dldF9sb25nX25hbWUoYmFua190eXBlKTsKIAog CXByX2VtZXJnKEhXX0VSUiAiJXMgRXh0ZW5kZWQgRXJyb3IgQ29kZTogJWRcbiIsIGlwX25hbWUs IHhlYyk7Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S939008AbeBUSCJ (ORCPT ); Wed, 21 Feb 2018 13:02:09 -0500 Received: from terminus.zytor.com ([198.137.202.136]:57375 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S938970AbeBUSCI (ORCPT ); Wed, 21 Feb 2018 13:02:08 -0500 Date: Wed, 21 Feb 2018 10:00:37 -0800 From: tip-bot for Yazen Ghannam Message-ID: Cc: tglx@linutronix.de, mingo@kernel.org, yazen.ghannam@amd.com, peterz@infradead.org, bp@alien8.de, bp@suse.de, linux-kernel@vger.kernel.org, tony.luck@intel.com, linux-edac@vger.kernel.org, torvalds@linux-foundation.org, hpa@zytor.com Reply-To: bp@suse.de, bp@alien8.de, yazen.ghannam@amd.com, peterz@infradead.org, tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com, linux-kernel@vger.kernel.org, tony.luck@intel.com, torvalds@linux-foundation.org, linux-edac@vger.kernel.org In-Reply-To: <20180221101900.10326-7-bp@alien8.de> References: <20180221101900.10326-7-bp@alien8.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:ras/core] x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type Git-Commit-ID: 68627a697c195937672ce07683094c72b1174786 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 List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 68627a697c195937672ce07683094c72b1174786 Gitweb: https://git.kernel.org/tip/68627a697c195937672ce07683094c72b1174786 Author: Yazen Ghannam AuthorDate: Wed, 21 Feb 2018 11:18:58 +0100 Committer: Ingo Molnar CommitDate: Wed, 21 Feb 2018 17:00:54 +0100 x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type Currently, bank 4 is reserved on Fam17h, so we chose not to initialize bank 4 in the smca_banks array. This means that when we check if a bank is initialized, like during boot or resume, we will see that bank 4 is not initialized and try to initialize it. This will cause a call trace, when resuming from suspend, due to rdmsr_*on_cpu() calls in the init path. The rdmsr_*on_cpu() calls issue an IPI but we're running with interrupts disabled. This triggers: WARNING: CPU: 0 PID: 11523 at kernel/smp.c:291 smp_call_function_single+0xdc/0xe0 ... Reserved banks will be read-as-zero, so their MCA_IPID register will be zero. So, like the smca_banks array, the threshold_banks array will not have an entry for a reserved bank since all its MCA_MISC* registers will be zero. Enumerate a "Reserved" bank type that matches on a HWID_MCATYPE of 0,0. Use the "Reserved" type when checking if a bank is reserved. It's possible that other bank numbers may be reserved on future systems. Don't try to find the block address on reserved banks. Signed-off-by: Yazen Ghannam Signed-off-by: Borislav Petkov Cc: # 4.14.x Cc: Borislav Petkov Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Tony Luck Cc: linux-edac Link: http://lkml.kernel.org/r/20180221101900.10326-7-bp@alien8.de Signed-off-by: Ingo Molnar --- arch/x86/include/asm/mce.h | 1 + arch/x86/kernel/cpu/mcheck/mce_amd.c | 7 +++++++ drivers/edac/mce_amd.c | 11 +++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index c3fb9a7..8c7b3e5 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h @@ -294,6 +294,7 @@ enum smca_bank_types { SMCA_IF, /* Instruction Fetch */ SMCA_L2_CACHE, /* L2 Cache */ SMCA_DE, /* Decoder Unit */ + SMCA_RESERVED, /* Reserved */ SMCA_EX, /* Execution Unit */ SMCA_FP, /* Floating Point */ SMCA_L3_CACHE, /* L3 Cache */ diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index 7fbb19c..d8ba9d0 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c @@ -82,6 +82,7 @@ static struct smca_bank_name smca_names[] = { [SMCA_IF] = { "insn_fetch", "Instruction Fetch Unit" }, [SMCA_L2_CACHE] = { "l2_cache", "L2 Cache" }, [SMCA_DE] = { "decode_unit", "Decode Unit" }, + [SMCA_RESERVED] = { "reserved", "Reserved" }, [SMCA_EX] = { "execution_unit", "Execution Unit" }, [SMCA_FP] = { "floating_point", "Floating Point Unit" }, [SMCA_L3_CACHE] = { "l3_cache", "L3 Cache" }, @@ -127,6 +128,9 @@ static enum smca_bank_types smca_get_bank_type(unsigned int bank) static struct smca_hwid smca_hwid_mcatypes[] = { /* { bank_type, hwid_mcatype, xec_bitmap } */ + /* Reserved type */ + { SMCA_RESERVED, HWID_MCATYPE(0x00, 0x0), 0x0 }, + /* ZN Core (HWID=0xB0) MCA types */ { SMCA_LS, HWID_MCATYPE(0xB0, 0x0), 0x1FFFEF }, { SMCA_IF, HWID_MCATYPE(0xB0, 0x1), 0x3FFF }, @@ -433,6 +437,9 @@ static u32 get_block_address(unsigned int cpu, u32 current_addr, u32 low, u32 hi u32 addr = 0, offset = 0; if (mce_flags.smca) { + if (smca_get_bank_type(bank) == SMCA_RESERVED) + return addr; + if (!block) { addr = MSR_AMD64_SMCA_MCx_MISC(bank); } else { diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c index a11a671..2ab4d61 100644 --- a/drivers/edac/mce_amd.c +++ b/drivers/edac/mce_amd.c @@ -854,21 +854,24 @@ static void decode_mc6_mce(struct mce *m) static void decode_smca_error(struct mce *m) { struct smca_hwid *hwid; - unsigned int bank_type; + enum smca_bank_types bank_type; const char *ip_name; u8 xec = XEC(m->status, xec_mask); if (m->bank >= ARRAY_SIZE(smca_banks)) return; - if (x86_family(m->cpuid) >= 0x17 && m->bank == 4) - pr_emerg(HW_ERR "Bank 4 is reserved on Fam17h.\n"); - hwid = smca_banks[m->bank].hwid; if (!hwid) return; bank_type = hwid->bank_type; + + if (bank_type == SMCA_RESERVED) { + pr_emerg(HW_ERR "Bank %d is reserved.\n", m->bank); + return; + } + ip_name = smca_get_long_name(bank_type); pr_emerg(HW_ERR "%s Extended Error Code: %d\n", ip_name, xec);