From patchwork Mon Jun 24 15:08:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167627 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4349488ilk; Mon, 24 Jun 2019 08:11:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqxM9AsMzG69heeejA8XJ2b6pqXB+R0S6frnc7u0DaUF7ZrT9QZ08Qvg4oNoMYtlWq//NJMP X-Received: by 2002:a17:90b:8d8:: with SMTP id ds24mr25127752pjb.135.1561389060779; Mon, 24 Jun 2019 08:11:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389060; cv=none; d=google.com; s=arc-20160816; b=Mlz/gsMaPOvdoAvLbp94VN2bgf2EH3YY+YtQLgkv4J/ElU6FNfEyLoM7oQ2BLDSmXk pEs2c20pVF96woQlrZIKK+CHny9I7rXK1Lsftr6ZxuHwrH1Qw7cvisHqkiNLLb07TPjk haiMTykTxbaX3XgKsqOeNVDwGlGh1c4ylXLGC1NDJiOSXAWL7a4T0uv4gBYT1QI2e3ji TI7mU7D1DxthpXbGLzZJyydZ5wOuCGLYpPTvr9X01n24ABR4sU6vrLUP75sXWtiMNRBE XjnhZWzTkm5EYuOtVWWUL2DtGdPzUaOZFMbOyKiVVmOwDYLy7gWSsTKtKw2p+2wAwkI4 pC0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature:dkim-signature; bh=IL7x7fEVUPvqOu1MBbBJim3lDL1UrTIovwpGA4ZLSAg=; b=vi2TaoEMx+1TmkkidyeUUarQSnx83T6Sbdg+Q8PMY++FLhRfP8KpCSSQM9cqgn5xNb iae0hjFUM9q0M+Zl+IGgmEEwqJJ32cj1TBUiP9qTSZlJIhUWmbGcOYXRL36LtA3yq+wc kDvSHC5np7omsuJBsBUjAPXqufpBf/PD2AJOeZ7IbrLeGI6kgS/SNO6WIOQRjZRJcPSL LHk8rWkW/l7g8gypT/hc7QCTHIu2knxbHI3uD0+76I6S3QJWNhYuw5BxjaJka+buaGqG 6EHMUUjU4vwwavncnSkHXHuGkudSDvMZeRTwF91WI9ANdV1qn8wLIpbAjr2UF+RqWt6T IP5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=eG9ul1dQ; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=QhFFDdzp; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=marvell.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n63si12012016pjb.36.2019.06.24.08.11.00; Mon, 24 Jun 2019 08:11:00 -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; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=eG9ul1dQ; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=QhFFDdzp; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731157AbfFXPK7 (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:59 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:25824 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726749AbfFXPJI (ORCPT ); Mon, 24 Jun 2019 11:09:08 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF8CWK025874; Mon, 24 Jun 2019 08:08:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=IL7x7fEVUPvqOu1MBbBJim3lDL1UrTIovwpGA4ZLSAg=; b=eG9ul1dQ8QyJbzhtvVJzk+GoGAeZFr1bWo9oD1C/7MUxtt58KlgBVqRYABBjUbj6pG1E 7nnv0wF50TPzrhq/6SUL3OeDtU2tIHNlJo70HESgE1LkZHC4ItbeSNYmECmCDZ85B1WI GoDxCybredp/O24DWRPlFgNkZwS9J9eEeA6hG6HvSapBTEfTQSoLn5G83jyBHgvRbB6K FcsQYylOg7EQV22v0SfpYjjr0wLWtfAgk8Z+A0TyCk5D/+RAMcfg8wd3CJzuSfJ0WDgx nofqYhZ1okUORXwfiav42o72kzDhy12Vur0hsgYbuuK0kwlREsJMjnRaZDFyXz/+4omP EA== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7qp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:08:56 -0700 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:08:54 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.50) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:08:53 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IL7x7fEVUPvqOu1MBbBJim3lDL1UrTIovwpGA4ZLSAg=; b=QhFFDdzpb0R0tzJIfDOARorR4LobzU2v20fmZJQxo4Fr6Uj5zNVZFK5CpQf9ZdfszYJbZR/dSkHQ42NNSUss/yov+O1A56Z8xE9QJPFxzYItB5Fs4u7SLOdTrjvQsT3xSd8HOVxxnKdVY1aDr99KZKK/ADIjfsyQB0Qyk97KX8E= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB2589.namprd18.prod.outlook.com (20.179.82.96) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Mon, 24 Jun 2019 15:08:52 +0000 Received: from MN2PR18MB3408.namprd18.prod.outlook.com ([fe80::d3:794c:1b94:cf3]) by MN2PR18MB3408.namprd18.prod.outlook.com ([fe80::d3:794c:1b94:cf3%4]) with mapi id 15.20.2008.014; Mon, 24 Jun 2019 15:08:52 +0000 From: Robert Richter To: Borislav Petkov , James Morse , "Mauro Carvalho Chehab" CC: "linux-edac@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Robert Richter Subject: [PATCH v2 00/24] EDAC, mc, ghes: Fixes and updates to improve memory error reporting Thread-Topic: [PATCH v2 00/24] EDAC, mc, ghes: Fixes and updates to improve memory error reporting Thread-Index: AQHVKp67fqbc8CKJck2hxLhtQKSq0g== Date: Mon, 24 Jun 2019 15:08:52 +0000 Message-ID: <20190624150758.6695-1-rrichter@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1P190CA0035.EURP190.PROD.OUTLOOK.COM (2603:10a6:7:52::24) To MN2PR18MB3408.namprd18.prod.outlook.com (2603:10b6:208:16c::25) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [92.254.182.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 893ede9f-68b2-474b-5184-08d6f8b5de3b x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB2589; x-ms-traffictypediagnostic: MN2PR18MB2589: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(15650500001)(2906002)(2616005)(486006)(476003)(52116002)(14444005)(256004)(5660300002)(66446008)(73956011)(66946007)(1076003)(14454004)(6116002)(86362001)(3846002)(99286004)(6486002)(68736007)(81166006)(81156014)(6436002)(4326008)(305945005)(50226002)(53936002)(7736002)(8676002)(8936002)(478600001)(64756008)(66556008)(66476007)(6512007)(107886003)(71190400001)(71200400001)(36756003)(26005)(102836004)(386003)(186003)(6506007)(110136005)(316002)(54906003)(25786009)(66066001)(25903002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB2589; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: vY8Umfp8hp9EY6S9We89/0p4/0AigeJc4e0aDxR57NAgNnNwXXmLXqWRQ8iREOTSBfn0CzCdhoGQ0+My1ezXYwBdrJGQDoTgMyeYP2yuQq0ZwECuXVDHrxlO0Ib8AUK/rrKcoWGZ4jwhgHRU7ganFw45eh3CokNqick/RK+DyDzPOB3n/KzFR/Es99egKrnifIdm+gZaO+zo3PSYZ/FHIkYnIL/xtnCZ5aLDQWvxUxtQO3TX7+H5y0jbajCGeKgZpp6DvYkoA4MZ4m5CMWv4aJ9b4qR4KhT3HDVF4FeOqkcQyGoZffMktwAOX/mxFON5bLRCbjrEmq0P2cxYgzw/IyxBvCcnsXizYe43AJFVfNrg3YCMPC8/w251JZqXkAqvVIjqX1o5b+g0Yt+qNQSYVajow9GX1zjlXmfNiyYkmw0= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 893ede9f-68b2-474b-5184-08d6f8b5de3b X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:08:52.6289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: rrichter@marvell.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB2589 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-06-24_10:, , signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Current arm64 systems that use the ghes driver lack kernel support for a proper memory error reporting. Following issues are seen: * Error record shows insufficient data, such as "EDAC MC0: 1 CE unknown error on unknown label", * DMI DIMM labels are not decoded for error reporting, * No memory hierarchy known (NUMA topology), * No per layer reporting, * Significant differences to x86 error reports. This patch set addresses all the above involving a rework of the ghes_edac and edac_mc driver. Patch #1-#4: Fix of grain calculation in edac_mc.c (#1) and ghes_edac.c (#2) including unification of trace_mc_event() code (#3, #4). Patches #5-#12: General fixes and improvements of the ghes and mc drivers. Most of it is a rework of existing code without functional changes to improve, ease, cleanup and join common code. The changes are in preparation of and a requirment for the following patches that improve ghes error reports. Patches #13-#22: Improve error memory reporting of the ghes driver including: * support for legacy API (patch #12), * NUMA detection, one mc device per node (patches #13-#16), * support for DMI DIMM label information (patch #17), * per-layer reporting (patches #18-#20). Patch #23: Documentation updates. Patch #24: Disable legacy API for ARM64 ghes driver (optional, need to be ack'ed by James, I vote for not applying it). All changes should keep existing systems working as before. All systems that are using ghes will also benefit from the update. There is a fallback in the ghes driver that disables NUMA or enters a fake mode if some of the NUMA or DIMM information is inconsistent. So it should not break existing systems that provide broken firmware tables. The series has been tested on a Marvell/Cavium ThunderX2 system. Here some example logs and sysfs entries: Boot log of memory hierarchy and dimm detection: EDAC DEBUG: mem_info_setup: DIMM0: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x0038, label: N0 DIMM_A0 EDAC DEBUG: mem_info_setup: DIMM1: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x0039, label: N0 DIMM_B0 EDAC DEBUG: mem_info_setup: DIMM2: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x003a, label: N0 DIMM_C0 EDAC DEBUG: mem_info_setup: DIMM3: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x003b, label: N0 DIMM_D0 EDAC DEBUG: mem_info_setup: DIMM4: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x003c, label: N0 DIMM_E0 EDAC DEBUG: mem_info_setup: DIMM5: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x003d, label: N0 DIMM_F0 EDAC DEBUG: mem_info_setup: DIMM6: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x003e, label: N0 DIMM_G0 EDAC DEBUG: mem_info_setup: DIMM7: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0, handle: 0x003f, label: N0 DIMM_H0 EDAC DEBUG: mem_info_setup: DIMM8: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x004f, label: N1 DIMM_I0 EDAC DEBUG: mem_info_setup: DIMM9: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0050, label: N1 DIMM_J0 EDAC DEBUG: mem_info_setup: DIMM10: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0051, label: N1 DIMM_K0 EDAC DEBUG: mem_info_setup: DIMM11: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0052, label: N1 DIMM_L0 EDAC DEBUG: mem_info_setup: DIMM12: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0053, label: N1 DIMM_M0 EDAC DEBUG: mem_info_setup: DIMM13: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0054, label: N1 DIMM_N0 EDAC DEBUG: mem_info_setup: DIMM14: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0055, label: N1 DIMM_O0 EDAC DEBUG: mem_info_setup: DIMM15: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1, handle: 0x0056, label: N1 DIMM_P0 DIMM label entries in sysfs: # grep . /sys/devices/system/edac/mc/mc*/dimm*/dimm_label /sys/devices/system/edac/mc/mc0/dimm0/dimm_label:N0 DIMM_A0 /sys/devices/system/edac/mc/mc0/dimm1/dimm_label:N0 DIMM_B0 /sys/devices/system/edac/mc/mc0/dimm2/dimm_label:N0 DIMM_C0 /sys/devices/system/edac/mc/mc0/dimm3/dimm_label:N0 DIMM_D0 /sys/devices/system/edac/mc/mc0/dimm4/dimm_label:N0 DIMM_E0 /sys/devices/system/edac/mc/mc0/dimm5/dimm_label:N0 DIMM_F0 /sys/devices/system/edac/mc/mc0/dimm6/dimm_label:N0 DIMM_G0 /sys/devices/system/edac/mc/mc0/dimm7/dimm_label:N0 DIMM_H0 /sys/devices/system/edac/mc/mc1/dimm0/dimm_label:N1 DIMM_I0 /sys/devices/system/edac/mc/mc1/dimm1/dimm_label:N1 DIMM_J0 /sys/devices/system/edac/mc/mc1/dimm2/dimm_label:N1 DIMM_K0 /sys/devices/system/edac/mc/mc1/dimm3/dimm_label:N1 DIMM_L0 /sys/devices/system/edac/mc/mc1/dimm4/dimm_label:N1 DIMM_M0 /sys/devices/system/edac/mc/mc1/dimm5/dimm_label:N1 DIMM_N0 /sys/devices/system/edac/mc/mc1/dimm6/dimm_label:N1 DIMM_O0 /sys/devices/system/edac/mc/mc1/dimm7/dimm_label:N1 DIMM_P0 Memory error reports in the kernel log: {1}[Hardware Error]: Error 4, type: corrected {1}[Hardware Error]: section_type: memory error {1}[Hardware Error]: error_status: 0x0000000000000400 {1}[Hardware Error]: physical_address: 0x000000bd0db44000 {1}[Hardware Error]: node: 1 card: 3 module: 0 rank: 0 bank: 256 column: 10 bit_position: 16 {1}[Hardware Error]: DIMM location: N1 DIMM_L0 EDAC MC1: 1 CE ghes_mc on N1 DIMM_L0 (card:3 module:0 page:0xbd0db44 offset:0x0 grain:0 syndrome:0x0 - APEI location: node:1 card:3 module:0 rank:0 bank:256 col:10 bit_pos:16 handle:0x0052 status(0x0000000000000400): Storage error in DRAM memory) Error counters in sysfs (zero counters dropped): # find /sys/devices/system/edac/mc/ -name \*count | sort -V | xargs grep . | sed -e '/:0/d' /sys/devices/system/edac/mc/mc0/ce_count:5 /sys/devices/system/edac/mc/mc0/csrow0/ce_count:1 /sys/devices/system/edac/mc/mc0/csrow0/ch0_ce_count:1 /sys/devices/system/edac/mc/mc0/csrow3/ce_count:1 /sys/devices/system/edac/mc/mc0/csrow3/ch0_ce_count:1 /sys/devices/system/edac/mc/mc0/csrow4/ce_count:1 /sys/devices/system/edac/mc/mc0/csrow4/ch0_ce_count:1 /sys/devices/system/edac/mc/mc0/csrow6/ce_count:2 /sys/devices/system/edac/mc/mc0/csrow6/ch0_ce_count:2 /sys/devices/system/edac/mc/mc0/dimm0/dimm_ce_count:1 /sys/devices/system/edac/mc/mc0/dimm3/dimm_ce_count:1 /sys/devices/system/edac/mc/mc0/dimm4/dimm_ce_count:1 /sys/devices/system/edac/mc/mc0/dimm6/dimm_ce_count:2 /sys/devices/system/edac/mc/mc1/ce_count:4 /sys/devices/system/edac/mc/mc1/csrow0/ce_count:1 /sys/devices/system/edac/mc/mc1/csrow0/ch0_ce_count:1 /sys/devices/system/edac/mc/mc1/csrow3/ce_count:1 /sys/devices/system/edac/mc/mc1/csrow3/ch0_ce_count:1 /sys/devices/system/edac/mc/mc1/csrow6/ce_count:2 /sys/devices/system/edac/mc/mc1/csrow6/ch0_ce_count:2 /sys/devices/system/edac/mc/mc1/dimm0/dimm_ce_count:1 /sys/devices/system/edac/mc/mc1/dimm3/dimm_ce_count:1 /sys/devices/system/edac/mc/mc1/dimm6/dimm_ce_count:2 v2 updates: * rebased onto bp/for-next (b2572772d13e: EDAC: Make edac_debugfs_create_x*() return void), * added patches to fix grain calculation (put this at the beginning of the series to apply them separately), * modified sysfs init functions based (EDAC, mc: Fix and improve sysfs init functions) on Greg's fixes (f5d59da9663d EDAC/sysfs: Drop device references properly), * removed duplicate code for mem_info_setup*() by moving it to ghes_dimm_info_init(), * fix bisecting of series, * made mem_info static, * renamed function mci_add_dimm_info() to mem_info_prepare_mci(), * added patch to move struct member smbios_handle to struct ghes_dimm_info, * renamed ghes_mem_info.num_per_node[] to ghes_mem_info.dimms_per_node[], * removed unused mem_info.enable_numa, * removed unused mem_info.num_nodes, * fixed dimm counters after sysfs reset_counters. Robert Richter (24): EDAC, mc: Fix grain_bits calculation EDAC, ghes: Fix grain calculation EDAC, ghes: Remove pvt->detail_location string EDAC, ghes: Unify trace_mc_event() code with edac_mc driver EDAC, mc: Fix and improve sysfs init functions EDAC: Kill EDAC_DIMM_PTR() macro EDAC: Kill EDAC_DIMM_OFF() macro EDAC: Introduce mci_for_each_dimm() iterator EDAC, mc: Cleanup _edac_mc_free() code EDAC, mc: Remove per layer counters EDAC, mc: Rework edac_raw_mc_handle_error() to use struct dimm_info EDAC, ghes: Use standard kernel macros for page calculations EDAC, ghes: Add support for legacy API counters EDAC, ghes: Rework memory hierarchy detection EDAC, ghes: Extract numa node information for each dimm EDAC, ghes: Moving code around ghes_edac_register() EDAC, ghes: Create one memory controller device per node EDAC, ghes: Fill sysfs with the DMI DIMM label information EDAC, mc: Introduce edac_mc_alloc_by_dimm() for per dimm allocation EDAC, ghes: Identify dimm by node, card, module and handle EDAC, ghes: Enable per-layer reporting based on card/module EDAC, ghes: Move struct member smbios_handle to struct ghes_dimm_info EDAC, Documentation: Describe CPER module definition and DIMM ranks EDAC, ghes: Disable legacy API for ARM64 Documentation/admin-guide/ras.rst | 31 +- drivers/edac/edac_mc.c | 385 ++++++++++--------- drivers/edac/edac_mc.h | 33 +- drivers/edac/edac_mc_sysfs.c | 95 ++--- drivers/edac/ghes_edac.c | 609 +++++++++++++++++++++++------- drivers/edac/i10nm_base.c | 3 +- drivers/edac/i3200_edac.c | 3 +- drivers/edac/i5000_edac.c | 5 +- drivers/edac/i5100_edac.c | 14 +- drivers/edac/i5400_edac.c | 4 +- drivers/edac/i7300_edac.c | 3 +- drivers/edac/i7core_edac.c | 3 +- drivers/edac/ie31200_edac.c | 7 +- drivers/edac/pnd2_edac.c | 4 +- drivers/edac/sb_edac.c | 2 +- drivers/edac/skx_base.c | 3 +- drivers/edac/ti_edac.c | 2 +- include/linux/edac.h | 141 ++++--- 18 files changed, 842 insertions(+), 505 deletions(-) -- 2.20.1