From patchwork Mon Jun 24 15:08:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167603 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347141ilk; Mon, 24 Jun 2019 08:09:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqwxrSFLMwwcgWCDuV6cIxL+y3M9DX9NlIu5IeXWDrI8mjuIvYJyTvdd87vepBW3PEXfkgdR X-Received: by 2002:a17:90a:8c0c:: with SMTP id a12mr25480756pjo.67.1561388950476; Mon, 24 Jun 2019 08:09:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388950; cv=none; d=google.com; s=arc-20160816; b=v7n1Aemg6jc7aZ133nBRVtYRpdi0r5NXzTGxxsR6DpmQtl+qPuI7jNm9KMFXSH3CDD Kn2k2cswAkw/MN3gNP1sgQej6FqdfrJNSTZOiNDg4ZJPZ3EQsyVVZSdkZhDuESFpQxDv OhTRIOSoEJXlRXy0mDWWWbOHWXqjA4n2ogq/QvOgC0D7Q2QExARjwRiZXjFhZW5vIfu8 0jTof9Ke2BvoXMZEIxgs3bAON3ys4vbTmyIgBUhDdxJlDpagUKoLMpCoKzLrPpdqEAGK r0ALolJZWKUt9eP+jk8OEP6m3OAuVx6dLcfaSwpURq2tJ549xvgbtOzRHKVAIX/LdaPx at6Q== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=pIs8IdJVaFhb/v9+wntLcWsZ3Y3pUgrJps923RgfgQU=; b=cJqeTiCJS9WRyKiWVopgBj0X3mTZ4bpIcBcoCvzC05Inpa3ogOQwwihRkUZt6Rz9QG 4e8M3UHrVFijiVt//knVDeIt/OnER5nA0bc3MpylLOwfVpC68X3Czd6MO/UOcWRadHEI B2OXrTRvQrdyntmpAlnqqboOiUlCUBj96SdrIYO34fd8AZDmrP/6cOXz0nrSfMqxbHG1 nBvYCG9V3YsjMeYtfmh0X1RB5o2HlEHKHMmCRSmeh+c+ArXw6IfaJnGSJn0BRNh5BQh3 GPbNo2w/WkgWcYOHNpMezMA6EGcXEBwewHQrGKyzr+0Zjcy8LJlYTa483ZhoHu7Q+IE6 o4+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=woPDsTcN; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=VIsf4jGX; 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 y19si10295333pgi.587.2019.06.24.08.09.10; Mon, 24 Jun 2019 08:09:10 -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=woPDsTcN; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=VIsf4jGX; 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 S1730373AbfFXPJI (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:08 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:39286 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727454AbfFXPJH (ORCPT ); Mon, 24 Jun 2019 11:09:07 -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 x5OF8CZ4025866; Mon, 24 Jun 2019 08:08:58 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=pIs8IdJVaFhb/v9+wntLcWsZ3Y3pUgrJps923RgfgQU=; b=woPDsTcN6ObFwzvJf/EKY0u2JN8GDdvHU+tbP76RsUYTk9VdOoR5q5rnRRCKlAq/fsBY YYRUErvAP9mRfavlP+Kx4gEPZubRla9y39/XbTiVjNhZnkzr2y1fEAFj0bZf1Q50PHTE tCFlx0rGYb+czOe/heuRM7Lkrx48zubJF6BkxpO2zOUILV5ib9R9yh4zAcgVfbK5Q2Mr L5lq7wBsLZAbdcR3tgqcQ9RSRcBWVBPOEVhuOtK9Jn1+iRh6QIzoLD38gCppPsImRyOb CtMRmHUWPybUPqNVnlYI94FmnhSjKZCpxEsAJmgy3H6vJh/FnTtO19ahXvmWGy6MLquZ ZQ== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7qx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:08:58 -0700 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:08:56 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.52) 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:56 -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=pIs8IdJVaFhb/v9+wntLcWsZ3Y3pUgrJps923RgfgQU=; b=VIsf4jGXt8OXzzyVvIco5NHrVpU/HaNIqIZuWqegbLdZhhw4Q7cCsHcIBjkORuhgjj4JCOUnq6g4Dn4lrexduJGDLf3o4B9OArw61epaZWLXaXgTCGavidwF8bS9oO2kO8rYpIdqd+VUWwoNcCOGcrIA9EFDP08Ym1uEjhpYTzw= 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:55 +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:55 +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 01/24] EDAC, mc: Fix grain_bits calculation Thread-Topic: [PATCH v2 01/24] EDAC, mc: Fix grain_bits calculation Thread-Index: AQHVKp69wZOPr3Ki20aR3to5WmH54Q== Date: Mon, 24 Jun 2019 15:08:55 +0000 Message-ID: <20190624150758.6695-2-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 38f39192-31f6-4dbb-9b1b-08d6f8b5df77 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:5797; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(2906002)(2616005)(486006)(476003)(52116002)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: tW3YM7F+FiRKwKjYcKvsD9X3KboF+u1aLwnJPRb96hrRPK6KtisRajTzUSMK5N0ug62mcxuJOBPx0RM0i6C85FoG7OgMALrzqbzu9N6IJADIx3dUp3Gf5Twteboz4TAy5kQmWIAQBWx2QfdZIyXwHmzDHBeR+0TYAGuYlkFyAGqwMPtdx4P2imCku5HIeo62dMcOGdsSYEsLSEvCDdF0vHVPU/z5xReRA293XEZvzWFAjThfmKnRy+ErEyvx5ErPv/qsoWUqSWCe1I9NtDEB5RYijdeZ+aO0WKtCrrOA0E9hoeB2u4yQZREpnAHO1GgODLqjLse39Wu27nPn5QjyfSFfTJKioI9ylLcb+WT+JHnPsHFMJ+plsXl/iQTh4tGZVqnSR78RvhKNQ/fgbNLKMc3pu804xKWWM4HQkAMNd8w= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 38f39192-31f6-4dbb-9b1b-08d6f8b5df77 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:08:55.3183 (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 The grain in edac is defined as "minimum granularity for an error report, in bytes". The following calculation of the grain_bits in edac_mc is wrong: grain_bits = fls_long(e->grain) + 1; Where grain_bits is defined as: grain = 1 << grain_bits Example: grain = 8 # 64 bit (8 bytes) grain_bits = fls_long(8) + 1 grain_bits = 4 + 1 = 5 grain = 1 << grain_bits grain = 1 << 5 = 32 Replacing it with the correct calculation: grain_bits = fls_long(e->grain - 1); The example gives now: grain_bits = fls_long(8 - 1) grain_bits = fls_long(8 - 1) grain_bits = 3 grain = 1 << 3 = 8 Note: We need to check if the hardware reports a reasonable grain != 0 and fallback with a warn_once and 1 byte granularity otherwise. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 64922c8fa7e3..45cac74ab833 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -1235,9 +1235,15 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, if (p > e->location) *(p - 1) = '\0'; - /* Report the error via the trace interface */ - grain_bits = fls_long(e->grain) + 1; + /* + * We expect the hw to report a reasonable grain, fallback to + * 1 byte granularity otherwise. + */ + if (WARN_ON_ONCE(!e->grain)) + e->grain = 1; + grain_bits = fls_long(e->grain - 1); + /* Report the error via the trace interface */ if (IS_ENABLED(CONFIG_RAS)) trace_mc_event(type, e->msg, e->label, e->error_count, mci->mc_idx, e->top_layer, e->mid_layer, From patchwork Mon Jun 24 15:08:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167626 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4349233ilk; Mon, 24 Jun 2019 08:10:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqyOVKnNG1Bg/0TP0bL2EcWAwkq2c1cwJU9QpjGqkaV3aP7ss4WmjxoK2a+bogrB/Ko9biXE X-Received: by 2002:a17:90a:ca11:: with SMTP id x17mr25768055pjt.107.1561389047492; Mon, 24 Jun 2019 08:10:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389047; cv=none; d=google.com; s=arc-20160816; b=HnkQrV5KPmstMlrSIafeYULdib4/lbZM2ygdaGMe9LpSWSmRFZDdYXr2ak7Pc2nvaO Y/U/4ct7M8G2lX5SQ1iWFCwXkx8d0NUB8EunhOZxSN7VUBgJfWqWjSTz+Bi2lSx/EkvR 9wh+0ZuJOgrtJHwlpXutl0r1FTcf2ItZbqluRI3D5va6/jbVrxXfndauq3+Oa/6YlUyR UlNEv6W9okOZRkZcOqFKhycb/RkMjFwZGto2rsGZ0XJkl+PJUtUctAM5o+eOmoS/MqsT EDMXL1gMfN5mMJGZQs2f3jM92AQ+v9xW3MbGgFI1IoC9kK/X+WM6ceSLPZYGwJ4GQCbE v0Hw== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=6/A5zqX04PLpyB5bKH4TTNu46QmN6tpzA0tBihV9SZc=; b=lSYCZr7nox8F+7JxmXE+ZHkHmvvSlTY2tWXK6XEBD0h4xKX6lX1fz8JI32i+1dgGLc jUmTV7WwH+w0//HovU2CLppOAXTrflRUfRZHqwFkfQ4AlZOHtLxtKAdPYHtUJj+XEmXJ 8XMFDjdCmyLmndrI/lZoiuOt8UWYoPqan/HDXH82RNxTqmFZQbEibShwlnV6Ec3q0QhM 8fWDpc2rOjcYk6hj/XQYtkXWBIzg7G3zVx1rkR/OyUjJhWAGJ18HF+f4MgZnpB7zVvrn p/frdCuSZTZHLe/3HiH8akvO+MYk0Hw9HIFnYregV5sl7z98G/Ca/E11entdCFR54YK+ adww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=R3cFoapQ; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Y2Pb7rnt; 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 k1si10264006pgo.574.2019.06.24.08.10.47; Mon, 24 Jun 2019 08:10:47 -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=R3cFoapQ; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Y2Pb7rnt; 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 S1730406AbfFXPJL (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:11 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:62614 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730309AbfFXPJI (ORCPT ); Mon, 24 Jun 2019 11:09:08 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF053e018453; Mon, 24 Jun 2019 08:08:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=6/A5zqX04PLpyB5bKH4TTNu46QmN6tpzA0tBihV9SZc=; b=R3cFoapQluu9/y7C66MCYJ/CPBU6RCu5vy0r8QXVeeZi9kq8CgJBCnRwaXsTghWD/lUz WQwxMH8sTPnOYnHT0uk0Xw14xq+gEV8AWzJvAEULTzulqDs92HWlffk+5RAEqoj7iTCZ joM0s0eh18xqtu5p37mLHHRU1FvXRXu7r1GsCURXOxt77uKfzQEaZiuqvl7OVgazpvs0 7lR7Llklwbu0JplEwAffs+DxaEnNk4BLHO1aczTmhL69Bagi/77H1L+Dx4xILcTGzhvc 8jLINZaLw0kuvAY+m606yz10hir9iqBnyYJB8wqjIkgoEMt47Jv0HXtsoF/8hmusdN7K BQ== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9t94-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:08:59 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:08:58 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.52) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:08:58 -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=6/A5zqX04PLpyB5bKH4TTNu46QmN6tpzA0tBihV9SZc=; b=Y2Pb7rntMAGdBB+PZGq7Z4Ln0y8QJwWZ97S4xWmuqiNTUBmTpGn0ntuD6Q/oykSnnzjz2pTL9HZzoRQqDtnvIGBvWgK7Ebo+sagifx9dm+jiNaA5MrIkWnL/jnrdAHa/iDonYuJL13dhWtiNnVYZuAfiUMM2pgQQawuyhsiUMuQ= 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:57 +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:57 +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 02/24] EDAC, ghes: Fix grain calculation Thread-Topic: [PATCH v2 02/24] EDAC, ghes: Fix grain calculation Thread-Index: AQHVKp6+pL7VEIGXA0Cki9BKQoDoyg== Date: Mon, 24 Jun 2019 15:08:57 +0000 Message-ID: <20190624150758.6695-3-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 5758b553-24b4-4664-22fd-08d6f8b5e11b 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:2733; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(2906002)(2616005)(486006)(476003)(52116002)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: tbo/VAI2B/p24PGKxYVgzIBKsL0E3YWUMNHVXZcpE7t3zb/KCapIvEMw1/Q3JfMpiDt/Xd6zvsQf8+VBNvRCS9wjP97aL0U2FRdl4yZiohCMFwPbb56xyZCJrYUsJwBY7h/UnjAdAqd1Zlfrp5ZfQtj+7JXnFp847T8fokQvRZ8CYbe0qW2DFYblRVQR9Ab5YYSXkz1rJjUPZWJY/sTOvi4eNXRivdq1+WxRPBfl6zhha2yKoLaM7c2+jf/0OF87CVbnN+HUEitzDvEuxyb0IAIzJkVsfhpzPRahRz2yN+l6rZnE5bFEC9erepDI0Xb64crmbvV8SedRnIWsAxQMBw0c5mHk8AvziEib7L8/Vm8RXPuubmRneLDVW7gtwgN560m7KnZ6hKLiDMgMft83lUcV6hmBOjddOBTWahPDmko= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 5758b553-24b4-4664-22fd-08d6f8b5e11b X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:08:57.2322 (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 The conversion from the physical address mask to a grain (defined as granularity in bytes) is broken: e->grain = ~(mem_err->physical_addr_mask & ~PAGE_MASK); E.g., a physical address mask of ~0xfff should give a grain of 0x1000, instead the grain is wrong with the upper bits always set. We also remove the limitation to the page size as the granularity is unrelated to the page size used in the system. We fix this with: e->grain = ~mem_err->physical_addr_mask + 1; Note: We need to adopt the grain_bits calculation as e->grain is now a power of 2 and no longer a bit mask. The formula is now the same as in edac_mc and can later be unified. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 7f19f1c672c3..d095d98d6a8d 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -222,6 +222,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) /* Cleans the error report buffer */ memset(e, 0, sizeof (*e)); e->error_count = 1; + e->grain = 1; strcpy(e->label, "unknown label"); e->msg = pvt->msg; e->other_detail = pvt->other_detail; @@ -317,7 +318,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) /* Error grain */ if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK) - e->grain = ~(mem_err->physical_addr_mask & ~PAGE_MASK); + e->grain = ~mem_err->physical_addr_mask + 1; /* Memory error location, mapped on e->location */ p = e->location; @@ -433,8 +434,15 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) if (p > pvt->other_detail) *(p - 1) = '\0'; + /* + * We expect the hw to report a reasonable grain, fallback to + * 1 byte granularity otherwise. + */ + if (WARN_ON_ONCE(!e->grain)) + e->grain = 1; + grain_bits = fls_long(e->grain - 1); + /* Generate the trace event */ - grain_bits = fls_long(e->grain); snprintf(pvt->detail_location, sizeof(pvt->detail_location), "APEI location: %s %s", e->location, e->other_detail); trace_mc_event(type, e->msg, e->label, e->error_count, From patchwork Mon Jun 24 15:08:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167625 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4349156ilk; Mon, 24 Jun 2019 08:10:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqw0FrPWuqdZmVheF001Vqtk6ZY3QI2V3+jnbLGg/8duSUAsbu/+CK3rrHozwpNCACAtmq9Z X-Received: by 2002:a17:902:848b:: with SMTP id c11mr125845981plo.217.1561389044686; Mon, 24 Jun 2019 08:10:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389044; cv=none; d=google.com; s=arc-20160816; b=TGSXtlL5SdAuCnGFjAFXahkgg2Dk1SekiWH+fzUSYLMg9ecT2jBETHX3dZjh+poLpg jJitDzdWlyOCDpH4z2VE5m30RbX/oqfeLaSiEmkaAxp96ixXWLWDyuhiKiuANEBGCxm4 Tj+kne7Frj3/U2rNOF0foxNe9DASGR8idXHbaA1sjDYn89vxstdAjc8Uan6pNogK6FVO vp4iQq8gcDeQmqvVE7eMmEFZCCSiwHB/mpuQfkQ80DgaBmq8Wr4MAtNxWCtYK1InFu7H c8p3X3/JqH6fPkmV7qNqTEs7I7aQ2rPTsbuPwJ3q2vjlijZU+V17ImtcAEeuXjysISy6 4BWQ== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=g2yPZvZnZPxp7REQr2O9loNXHPznbv3ZYyA2oH/C1zg=; b=i/F5oB7ZvtjEkmmE4zrWe0QB20ISbbV0hkqsmspMZZnFDO69xrIyTgD5yMCkf9ZoM1 DPx+OreHcreCwiwbbWFxLwzRC/JngPT7hE9lQo5rJHyWneS8Upu55S/W4OWX91IqmXPk 8P35A9G44w9mftk1Tkn9CGTUbsVDmzOgUg0EbFEEuJ9GJCXs3/1HKe8iwnzY8pAJjxm6 bVQQ98wix0txfs+cS48h3TOA/WdJKQKwyD3vJQFTrv3hrJp3wYxpugq5bBagen2+FXNc uv1Pf4VcePL9/r4clyf1Xw+mBK4rRegwfIKmz0Bpobb1/l1iPSM+TgwBeKNao4ysyvmu Prhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=m+mrgjwB; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=qLoRbvpd; 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 t17si11531093pjw.99.2019.06.24.08.10.44; Mon, 24 Jun 2019 08:10:44 -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=m+mrgjwB; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=qLoRbvpd; 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 S1730436AbfFXPJN (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:13 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:46498 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730218AbfFXPJJ (ORCPT ); Mon, 24 Jun 2019 11:09:09 -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 x5OF8DQo025885; Mon, 24 Jun 2019 08:09:02 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=g2yPZvZnZPxp7REQr2O9loNXHPznbv3ZYyA2oH/C1zg=; b=m+mrgjwBxj+EGpc3tOW+NghAUasXBXC60P4dQpbwPbD7TZ7Ji5m67+mOrg9SsTs3aR49 w7WcGqEJnMPJxh9kULwlP1R/eAxVdX8C7inB9v7y8BjBeI3W/p2WM9GVhJuewKEECc3m B0gmFo87rnrtSWRW/7yqw2wtyFiTEHrraFWEfkkXX80pG3lCcUlDjrr/Bl6vF0IQEXQb 35woqmmg285dJUIwBuGMWNiVoSL17iXkeLD2LNYjybMzP4o+Co9ZkVFkP0H4uLmAy6Ay IQ0Sa05ZiM5x9xcryaoCk84Cpx7sCrfWruqhbmHR/wCWE4HgdCfOJq2ayV8vWx2bMU9E Aw== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7r7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:02 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:00 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.54) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:00 -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=g2yPZvZnZPxp7REQr2O9loNXHPznbv3ZYyA2oH/C1zg=; b=qLoRbvpd0b3f/NnXxFOiCDGzqdWWBNLpTE+5gqpg+7K0d+/mnWjPqB02zLc/C+OenPr0nKSCo2Gy1m0Yf3y+FjKYmzd0KkJ9ms6R/5/Lhf8qKy9MiB/NyERPWm6xyqSMw+xAemn8M/wwWGLVGePLVQLKFTgqOsJEa585rHewlkQ= 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:59 +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:59 +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 03/24] EDAC, ghes: Remove pvt->detail_location string Thread-Topic: [PATCH v2 03/24] EDAC, ghes: Remove pvt->detail_location string Thread-Index: AQHVKp6/16x+WuPF8U6tQfjgZBANZg== Date: Mon, 24 Jun 2019 15:08:59 +0000 Message-ID: <20190624150758.6695-4-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 9c5134ad-0fff-4e96-843a-08d6f8b5e23b 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:758; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: j3ev69SxGa/6z2N5b6Ngrv3UdravwyMs4kfjBWXK0ud54QzwXl6oSuaFyqHbOuO0bvQPQeyBpp+TRD41VAuGBM2p0kM1q2MPc81J3MMbugPbZ7lMCLitfnLYXsbf2m6WSNWNWFXaIwC5+xD06zHkfcSmhIIUR6oLyd39Oa2mp4R8pY8zD1cRQwrYfCd503T6Mc/9at41xdALwSBs3EaRcidIfxjD9I+0s1DcPJg51O2d2cWJ8ShFRB2kvGp0MxmkUME0GsI4EIHI7qKPEJUqqwHMfcJeq60FwRs51XHHW0kuUM0aQhodx7s/N5/Qv3XLbRVxPCJSi7lu5VJCAMN22u8O50B40EFrETLJois6WoLqAfjGVUa/FtfMhFHLFYIFHjyTmr1OLHskiWJx3jkcqk3ygTHSg/VhyztXjWDYyYI= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 9c5134ad-0fff-4e96-843a-08d6f8b5e23b X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:08:59.0372 (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 The detail_location[] string in struct ghes_edac_pvt is complete useless and data is just copied around. Put everything into e->other_detail from the beginning. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) -- 2.20.1 Reviewed-by: James Morse diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index d095d98d6a8d..049de73c3bad 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -21,8 +21,7 @@ struct ghes_edac_pvt { struct mem_ctl_info *mci; /* Buffers for the error handling routine */ - char detail_location[240]; - char other_detail[160]; + char other_detail[400]; char msg[80]; }; @@ -224,13 +223,14 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) e->error_count = 1; e->grain = 1; strcpy(e->label, "unknown label"); - e->msg = pvt->msg; - e->other_detail = pvt->other_detail; e->top_layer = -1; e->mid_layer = -1; e->low_layer = -1; - *pvt->other_detail = '\0'; + e->msg = pvt->msg; + e->other_detail = pvt->other_detail; + *pvt->msg = '\0'; + *pvt->other_detail = '\0'; switch (sev) { case GHES_SEV_CORRECTED: @@ -361,6 +361,8 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) /* All other fields are mapped on e->other_detail */ p = pvt->other_detail; + p += snprintf(p, sizeof(pvt->other_detail), + "APEI location: %s ", e->location); if (mem_err->validation_bits & CPER_MEM_VALID_ERROR_STATUS) { u64 status = mem_err->error_status; @@ -443,12 +445,10 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) grain_bits = fls_long(e->grain - 1); /* Generate the trace event */ - snprintf(pvt->detail_location, sizeof(pvt->detail_location), - "APEI location: %s %s", e->location, e->other_detail); trace_mc_event(type, e->msg, e->label, e->error_count, mci->mc_idx, e->top_layer, e->mid_layer, e->low_layer, (e->page_frame_number << PAGE_SHIFT) | e->offset_in_page, - grain_bits, e->syndrome, pvt->detail_location); + grain_bits, e->syndrome, e->other_detail); edac_raw_mc_handle_error(type, mci, e); spin_unlock_irqrestore(&ghes_lock, flags); From patchwork Mon Jun 24 15:09:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167604 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347303ilk; Mon, 24 Jun 2019 08:09:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqwA2GgGCwAcnkqSFc+q+tgfIYoyaG3X867Vbg6Pz0cS5uV5vJsEPKleEszFCIwkYMzfi+aj X-Received: by 2002:a65:4cce:: with SMTP id n14mr33529824pgt.246.1561388957350; Mon, 24 Jun 2019 08:09:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388957; cv=none; d=google.com; s=arc-20160816; b=NgfcuHkmR6gly4xYfUklU9hYlEynk3MrY8MYacP92FRSyV3Fnn80x/92uFRjXwMpSL 9czjBQy3ZyQCtnmtlMSbVuPUwt/s4HfmyN2MTYjTQHBx0NWzpQVO9rc5bCmig/72DDHZ Cul0GLAXMTr2dFwzPCAt4J54BRGnRuKw0O23uHRbUO1eS+R45KOxa8C79ZNEXN0FDQzd q6FQIjpEDw9bKyTHwHliXiWfxnc9hnuSnIEhQL/sxCyr73DzRHAJrrRn+J1i1Cig3ssi YoECpj9eXIbjH9DmkBaEu53/2SIws7j4TjzylVKl9r0CbOctKrLOotfSOAs5rSzQQOKm Pirg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=XzkIXlo2AUzfgtRQG3BbJZmCvL+GYLS9DAmwQTt4JcQ=; b=Ksep32jV+2vX0ruiXdXSvt9Hc6X72MScrh5m80QJzZirkRbbWPc7T6O40y4Ot+313m w0XokwBhIUMd1Oii8+w1Caj65uyj/tiugImBFs6alW32+xuE8GrPpv/4fHu1oxRUCjvR s3rmE25qL9exf2Z8ukR0gYrbscKq4YDZIAOjr7tfTE5DGqoHXXAmqlW2nTW01sbnztHH Q2cfnZjA33LcQmQZlmPW1amhIz2xg7fBTAEyPI+U/l2qiNx/TiR+OSJZwgMXuurDWpVV 7X+sT1F1k6F05Te8/t+8OERZw+gtcjKQFm2qa/4zQmcYnbXhSaS9ve+Z/CE8b6pynpIY nQ+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=VJeU+hYn; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=pWrcx9Pr; 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 g10si10697753pjp.74.2019.06.24.08.09.16; Mon, 24 Jun 2019 08:09:17 -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=VJeU+hYn; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=pWrcx9Pr; 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 S1730466AbfFXPJP (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:15 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:16188 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730401AbfFXPJL (ORCPT ); Mon, 24 Jun 2019 11:09:11 -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 x5OF8CWL025874; Mon, 24 Jun 2019 08:09:05 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=XzkIXlo2AUzfgtRQG3BbJZmCvL+GYLS9DAmwQTt4JcQ=; b=VJeU+hYnVTavU2FKRkKJ4yZwOhTXWDBTj9pOehJBQAh4bkV1RQ4APeo+UC5SZHktWe9X UAdOh1fKDPLxId25QaAq9s5Dm+L3Lre2WuirsFKVnF70J4kTHUP0lyPh4iGAnQY9Vjn1 MBG4sxfVngaWU4NG/CTnjMPCPqyowigV4qcIWivAulnJ6zv3PCKVsCtP+zQ/XoCzMgBH /Ss51bIY7g8XlC99p0EunlLcZ3bHN2S4OihJiF5MrS2dgBNz0Eqtynz1gt1x2upAMiPA MEIoMK5/3tiyyU0RDoUyQCj/g6k5p6A/I6p45u8lvauk/p54fiIhQ9avAIT1OugGsI3u 0A== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7rf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:05 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:02 -0700 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.51) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:02 -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=XzkIXlo2AUzfgtRQG3BbJZmCvL+GYLS9DAmwQTt4JcQ=; b=pWrcx9PrkA/2ZBj3xu8WxvGzHtkAYai4UkC5beQc7yxhhRbUZuQed+smn35T2srpWFqlkpk9lrK1Xzcs7k5of385y7aURuz0LHCYfy3UUFqpMp9xI6bHTwTHA/gB4Xsqm090wqK23zGYskwiI0JsyXG5V5B1PARVSsvVeMUaVkA= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:01 +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:09:01 +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 04/24] EDAC, ghes: Unify trace_mc_event() code with edac_mc driver Thread-Topic: [PATCH v2 04/24] EDAC, ghes: Unify trace_mc_event() code with edac_mc driver Thread-Index: AQHVKp7BHx6v+XRJ/ECy94o4MVS4fg== Date: Mon, 24 Jun 2019 15:09:00 +0000 Message-ID: <20190624150758.6695-5-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: dbb61737-e45a-4cd1-3bd8-08d6f8b5e361 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: UXqjk+nBSRtH13VjFwvtHzshExLWNqUZHSXbJIK2kdOZlYDlGtyMKUiUv47/2OcRi9wRtWQ3RGNi3TL+SluEQhZKeUVU4IReBnigTKBwrZPlKG1eHAGqZFz+GUaTuZfU/N/qSdionpIvBQdSrqxZWB+k07wK/z44oymlqSVjkJvMAcvTf+5YA+SwVduEjdjdx9/cp7d5k/TGoPURSrdivANZ0lw8LQGJ9orv8A1sycRAaa1HAHRwAoPQ2UjgBYRa/Y/t2y2//g3M8/gvgRObZy1//k8piXmJpQkBsEPgH4ds6kmi4yX6xUpEknncihoYv+NbHlr6cjZxC2vKOjoDre46k7VibeUuPtH/f9WkcCBYQbu2vXVknWHmomqLA2EXBkFPrxjmiqTR1U1aldlXoXTkGkulCVR5k1skmPWy4oc= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: dbb61737-e45a-4cd1-3bd8-08d6f8b5e361 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:00.9801 (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: MN2PR18MB3197 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 Duplicate code, remove it. The only difference is the missing IS_ENABLED(CONFIG_RAS) switch in ghes_edac which we will need there too. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 34 +++++++++++++++++----------------- drivers/edac/ghes_edac.c | 16 +--------------- 2 files changed, 18 insertions(+), 32 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 45cac74ab833..4bbc8aeddf30 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -1056,6 +1056,23 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, { char detail[80]; int pos[EDAC_MAX_LAYERS] = { e->top_layer, e->mid_layer, e->low_layer }; + u8 grain_bits; + + /* + * We expect the hw to report a reasonable grain, fallback to + * 1 byte granularity otherwise. + */ + if (WARN_ON_ONCE(!e->grain)) + e->grain = 1; + grain_bits = fls_long(e->grain - 1); + + /* Report the error via the trace interface */ + if (IS_ENABLED(CONFIG_RAS)) + trace_mc_event(type, e->msg, e->label, e->error_count, + mci->mc_idx, e->top_layer, e->mid_layer, + e->low_layer, + (e->page_frame_number << PAGE_SHIFT) | e->offset_in_page, + grain_bits, e->syndrome, e->other_detail); /* Memory type dependent details about the error */ if (type == HW_EVENT_ERR_CORRECTED) { @@ -1095,7 +1112,6 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, int row = -1, chan = -1; int pos[EDAC_MAX_LAYERS] = { top_layer, mid_layer, low_layer }; int i, n_labels = 0; - u8 grain_bits; struct edac_raw_error_desc *e = &mci->error_desc; edac_dbg(3, "MC%d\n", mci->mc_idx); @@ -1235,22 +1251,6 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, if (p > e->location) *(p - 1) = '\0'; - /* - * We expect the hw to report a reasonable grain, fallback to - * 1 byte granularity otherwise. - */ - if (WARN_ON_ONCE(!e->grain)) - e->grain = 1; - grain_bits = fls_long(e->grain - 1); - - /* Report the error via the trace interface */ - if (IS_ENABLED(CONFIG_RAS)) - trace_mc_event(type, e->msg, e->label, e->error_count, - mci->mc_idx, e->top_layer, e->mid_layer, - e->low_layer, - (e->page_frame_number << PAGE_SHIFT) | e->offset_in_page, - grain_bits, e->syndrome, e->other_detail); - edac_raw_mc_handle_error(type, mci, e); } EXPORT_SYMBOL_GPL(edac_mc_handle_error); diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 049de73c3bad..bd3be25d0d3f 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -200,7 +200,6 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) struct ghes_edac_pvt *pvt = ghes_pvt; unsigned long flags; char *p; - u8 grain_bits; if (!pvt) return; @@ -436,21 +435,8 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) if (p > pvt->other_detail) *(p - 1) = '\0'; - /* - * We expect the hw to report a reasonable grain, fallback to - * 1 byte granularity otherwise. - */ - if (WARN_ON_ONCE(!e->grain)) - e->grain = 1; - grain_bits = fls_long(e->grain - 1); - - /* Generate the trace event */ - trace_mc_event(type, e->msg, e->label, e->error_count, - mci->mc_idx, e->top_layer, e->mid_layer, e->low_layer, - (e->page_frame_number << PAGE_SHIFT) | e->offset_in_page, - grain_bits, e->syndrome, e->other_detail); - edac_raw_mc_handle_error(type, mci, e); + spin_unlock_irqrestore(&ghes_lock, flags); } From patchwork Mon Jun 24 15:09:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167605 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347361ilk; Mon, 24 Jun 2019 08:09:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqwk2z1XuyYRNXXRhdK9hpI+LKyejRvXSTjV1QTBURNWjp3jfbkdZWTzTxVwM4K0n6VXAWUK X-Received: by 2002:a17:90a:bf02:: with SMTP id c2mr25527393pjs.73.1561388960669; Mon, 24 Jun 2019 08:09:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388960; cv=none; d=google.com; s=arc-20160816; b=QmhCn6//swB4a4btqTAhPgB5qpQtutrtQbiL7D/UTosoAoFkyYVL190dBtvv7L3OQ6 lBs8q5O3zMwF4hjMzsz7azuDNNxuLoh4UNoxOLiuRMbRTLhljIOUZGa25N1BYtquazao UJOhljwvqwHn/JLx5gcSsytKWT8v+eHIAg+ZwLOdQQGPZ63bOJpNuVo/L5GwWkvgOBqr wisTk25OpmpkYpbzeG30G+rHVspXbkAesPja6jG3BhnwKX1FwacGIR9oiIWlP2Ukd1ry VKrMhWV26yIzr6eywThvphMeTNmQl+FuC4r68MB0UrC3+Z3MebvRtV3WkFCkve4osvOF O2lw== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=BUZsqVL7YZsjTmOqbkH+7mTjGbV1gGSnUZ5iMdLGsmY=; b=bayx3rXFoweGcTQLfyWEXJf3ONE/yN8A0A+72qI7a1TsUxmMjvDp2ashJVZ+Hvjwl1 p/hlhZq2y7khbzXE0uGo+DeOd4hOdnQXopzkHYvEZEhDYhH51E9Lb0c+K4h6ObMDskov AEbygjkD194NyF7XufoIy/nPH99Q08ykIx1JzOK5yAd94jmxy9Q6oXygShTebQp3tz8N MNOBtCWMKvp4xZ4UMIR53dZO20O4vCWcCDD1QscKmbD3nlR4wPedZ3vM433uyAREkc6X qABAiJWFMBVVxD3bLo9rOTs8gHNbv4Te76hU1R8ZRWwnKcT80TjCrMqLm83lhd98cm+D zj4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=DHA0uNid; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=chrxlK5L; 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 g10si10697753pjp.74.2019.06.24.08.09.20; Mon, 24 Jun 2019 08:09:20 -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=DHA0uNid; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=chrxlK5L; 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 S1728276AbfFXPJT (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:19 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:57022 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730476AbfFXPJP (ORCPT ); Mon, 24 Jun 2019 11:09:15 -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 x5OF8FJZ025903; Mon, 24 Jun 2019 08:09:08 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=BUZsqVL7YZsjTmOqbkH+7mTjGbV1gGSnUZ5iMdLGsmY=; b=DHA0uNidijE/Q4QvReEc4LICWqIEU5u0WR3Slx/VYMDmmuQrW8HAY6JN7dFAlP8c0d66 y3pooha4hVhkt8cdqr5YGBNWtgg8KlIMJiLfx86PesaPUDALpas10zitzunZd0DNjhGF Pn17B6hvGBrdxj8oW8grrN3y/2MvS5wpyM6nbfMRJ1Y4Nl+ZMv7KV6UUtNWYUoaqe0Im ypHLFiLbFtrMNGo+CkA3S8yiSuVfLnfgf0rcFWWmi/IWRXGuxSXggMynviR4jfJ5P59u pBE0kM9EVVaSLPiU/8XmTRGYM1jpSboPxy+jYStEMdFMZhjuRaiJdu188DRO42P+1f3H lg== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7rg-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:08 -0700 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:04 -0700 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.59) 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:09:04 -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=BUZsqVL7YZsjTmOqbkH+7mTjGbV1gGSnUZ5iMdLGsmY=; b=chrxlK5LaJuq6QzsKUybN+r4TVKtvfCrqm7UCn9kWLsgESSU9NIC4Ch1zGH9JnxlQoisPYKRI5lO4J4cPZ/NLuXIgcxj2mS+RBBXC3yrhPGVqql+uUvgz6OaT6GnTFMzyxlm8AmyaKZP0ypXeMPh1BaExmgfSe94+yTA+BTAb7c= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:02 +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:09:02 +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 05/24] EDAC, mc: Fix and improve sysfs init functions Thread-Topic: [PATCH v2 05/24] EDAC, mc: Fix and improve sysfs init functions Thread-Index: AQHVKp7CWIyiXnaYckSK7vYUHbfuPA== Date: Mon, 24 Jun 2019 15:09:02 +0000 Message-ID: <20190624150758.6695-6-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 7701ef64-9742-4f17-b37a-08d6f8b5e477 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:348; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: 8ZwaLMFdgAPeIdsZnmM+i1tKscNEv2hEJXchtB/8cxnpNgDuMAi4N3RQ4Hyb+dHo2m5GHNwaa5M8mWU05j4ke5sXByS2GL2Cia49opNIVN+GuC5ZwWZOS1L8I+t6vJqeB4G1806dpk5a6Aksg5+IOG5AxNcOk2LtCTtZDz628NsZsP/tBmlQmPztAl6vZZQntixdOQE1Nj28zDGS1FaiMlaEvoSk9gILCtoAbJxwV65Rzll8N54wE1oyF7NyDSTqFHQo5Uh2k8kt1VEv7TipdOQXOF1s/OOpVQ+7Eh9KyRWwUSP4prlGQBLc72FrIY53Dq/safhN2vj+ewduIrwAO1wZU4vWKY/oFz/Kb7QUpK2FvsFC678rC4pgLZINVK0KZ9rvz7ZtBl+u/sMxcK4J72Yvuq7/2Rg31VpP8f4nQ7A= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 7701ef64-9742-4f17-b37a-08d6f8b5e477 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:02.8121 (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: MN2PR18MB3197 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 Remove gotos as they just create overhead. Also, fix debug message for the case edac_create_dimm_object() is failing. Signed-off-by: Robert Richter --- drivers/edac/edac_mc_sysfs.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 7c01e1cc030c..29dd9719f82f 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -655,8 +655,9 @@ static int edac_create_dimm_object(struct mem_ctl_info *mci, err = device_add(&dimm->dev); if (err) put_device(&dimm->dev); - - edac_dbg(0, "created rank/dimm device %s\n", dev_name(&dimm->dev)); + else + edac_dbg(0, "created rank/dimm device %s\n", + dev_name(&dimm->dev)); return err; } @@ -938,7 +939,7 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, if (err < 0) { edac_dbg(1, "failure: create device %s\n", dev_name(&mci->dev)); put_device(&mci->dev); - goto out; + return err; } /* @@ -987,7 +988,6 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, } device_unregister(&mci->dev); -out: return err; } @@ -1044,10 +1044,8 @@ int __init edac_mc_sysfs_init(void) int err; mci_pdev = kzalloc(sizeof(*mci_pdev), GFP_KERNEL); - if (!mci_pdev) { - err = -ENOMEM; - goto out; - } + if (!mci_pdev) + return -ENOMEM; mci_pdev->bus = edac_get_sysfs_subsys(); mci_pdev->type = &mc_attr_type; @@ -1056,15 +1054,10 @@ int __init edac_mc_sysfs_init(void) err = device_add(mci_pdev); if (err < 0) - goto out_put_device; - - edac_dbg(0, "device %s created\n", dev_name(mci_pdev)); - - return 0; + put_device(mci_pdev); + else + edac_dbg(0, "device %s created\n", dev_name(mci_pdev)); - out_put_device: - put_device(mci_pdev); - out: return err; } From patchwork Mon Jun 24 15:09:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167620 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348693ilk; Mon, 24 Jun 2019 08:10:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqwf0SB6eGNKELE37zxXjiPLWiw6dZ2ctjgOdzh+nzsNOpeRYUe0Uk9gfwFlE1UdL3nsiusv X-Received: by 2002:a63:a02:: with SMTP id 2mr34194709pgk.315.1561389022655; Mon, 24 Jun 2019 08:10:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389022; cv=none; d=google.com; s=arc-20160816; b=sAUybwSiOq6ObS/+7vTkp2kNz72cfbmD+YgXn8OzS0rjysvr7LTUo225bc81jpg7ot dLtOd0d7IUHuqyhhsQBix09MRUHyWtnRI9xVvu7UCQ7pUn87OM+SpnyMMiuFsjsM3cl8 oI8Fp8XMg3cLh0gI5zHcfyZGWs0kbRuLzB9R660w06t44GcYAtzQaq+fjGVdfUIV/9Oo KkT7e4PqTfwngGsu/EcDy1lFx56SWtwVY4rsjhoBIAAiYNMmmOiEDYFK7nPeh4/dJnUl 2CqiCRVfImYgwUiF2t4C++pZf+Rnb3fIy5g3Y4qmZtYKEvkeZphvU6ZHEMCzf0kGBGIu mM+w== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=rgaYqMyrRi1Gs2+/9pUhhW8xLgkCeLohE8qn0jQ15v8=; b=IMECEk5xvoI13oLw7FrCujIbixGNcoCZ2+bZhGz0YK9m+YSdFSt4kDFgpotiN8gsRV DIT8+x5LRTDuuAaqzkmcSRqI8F6rJaQGC7ySP3xpLy2vQheiLRoWA1S3St+dml6D5JCi Dvj5U7+k4y75CgtX9BJUDfO6AQGwWbFv/rGd88zo/p7PKy9rXVQ9txxJ/GZENZLHiNc+ IzVuYhSSv2CDL79MJvfQSKUqStC9xNtMcFdDBkK3v89jAq6dn0h4SD5NCIfPq4ajMI1N Mz+Odp2upU6aKDsVzVjUS6IqIehbF6GzjFktUXGQaUurGWSobiJB2mRlrcSNma3XVgnd CGZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=R8z01dTc; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=LilxW4Gy; 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 z13si10876241pjr.76.2019.06.24.08.10.21; Mon, 24 Jun 2019 08:10:22 -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=R8z01dTc; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=LilxW4Gy; 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 S1731072AbfFXPKT (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:19 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:58448 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730576AbfFXPJh (ORCPT ); Mon, 24 Jun 2019 11:09:37 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF053h018453; Mon, 24 Jun 2019 08:09:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=rgaYqMyrRi1Gs2+/9pUhhW8xLgkCeLohE8qn0jQ15v8=; b=R8z01dTcw8vpu21q41TNgY9WrgFOyaH1W8vwPMXbEzXRDYH+SjsN/HzgJTToxTYJXnDl IjGBRemOdYK1E246bvElZFaYfqrLcBpTSWPMr2YchqF32PaF2IJ5tU3d+nX8iPzeR+Oh rptkfVJb12Mo0uo+ZvKBkgHoHNDzZULTSkW5AnF2t0tcISI8iIWhzQL/r0h1fBDp0tkb GcffWh4r0O9TkdNH0RBXFTyGH6TLFvcZxjw5ptDXtlD7Wz8RD1vsFCzHaUeWCdx5WVXR r/B0CiEfEfz6PZqtbOHXWRi0Zq/JlEkTq4e9bv8PsD3p6Rn3O6nXSJFE45f0cRds9mM6 GQ== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9t9n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:08 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:07 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.54) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:07 -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=rgaYqMyrRi1Gs2+/9pUhhW8xLgkCeLohE8qn0jQ15v8=; b=LilxW4Gy0L5SYbIY15dWgdL0G20e9w4JU6hX3vPpXZAqaSjx7sDlMUzXAcIORjvhEQYDSJtlSwgIkwjJ6gCbmq3GAo9pXVA5GfswxhPD963svBmMGm8OxCJXprBZZcISRLlmskmas6oUCXsvU31B5txEWoLYRPAsh4gnZpz12OA= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:06 +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:09:06 +0000 From: Robert Richter To: Borislav Petkov , James Morse , "Mauro Carvalho Chehab" , Tony Luck , "Jason Baron" , Qiuxu Zhuo , Tero Kristo CC: "linux-edac@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Robert Richter Subject: [PATCH v2 06/24] EDAC: Kill EDAC_DIMM_PTR() macro Thread-Topic: [PATCH v2 06/24] EDAC: Kill EDAC_DIMM_PTR() macro Thread-Index: AQHVKp7EGlrwSsGG3ESvgRc+nDnUTA== Date: Mon, 24 Jun 2019 15:09:06 +0000 Message-ID: <20190624150758.6695-7-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: a5fa948e-6fa7-47ef-4a56-08d6f8b5e6ba x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:142; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(30864003)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: TCXlNzxRDtYxEw85nWiqYXr86f9qHLoRmfrsHtnoO512ZxX97n4ttwBbwGttyshm60ed90LTpcX53EFJZ6hfrDzg30gG8xAmuTmeRAeQeXz0yAQdibMMgwXya+v1U6Mmjjj4tcxBSR7HudJNYgoGLpYVVjTG1XDBD2z+uueHMQBcbMBRuESHgw3RejTFFOuROBXaRGl3P+YsfqBT4vnavyWk1aSB1zGmS0ZAsWHmmsNnHitjyP6tT04Gt4EUUMKisJWpzAPq1O2YR6wP9A7Qg+5qjDiOTzFmQ4yvIrfcLP/5/XQCUPZVFkg6b4oQt1dLZAqhsCNNv4LdqvL05Sf8rQvLQSPF7+1TX+A0iEhjWW9ptr7EYiiISUoMPaKbVw7T9WCzQT8B5xAneIYZ+qFV3kc+NyZIuaKPWXPj7VKnrQU= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: a5fa948e-6fa7-47ef-4a56-08d6f8b5e6ba X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:06.6129 (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: MN2PR18MB3197 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 Get rid of this macro and instead use the new function edac_get_dimm(). Also introduce the edac_get_dimm_by_index() function for later use. Semantic patch used: @@ expression mci, a, b,c; @@ -EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, a, b, c) +edac_get_dimm(mci, a, b, c) Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 1 + drivers/edac/ghes_edac.c | 8 ++-- drivers/edac/i10nm_base.c | 3 +- drivers/edac/i3200_edac.c | 3 +- drivers/edac/i5000_edac.c | 5 +-- drivers/edac/i5100_edac.c | 3 +- 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 | 84 +++++++++++++++++++++++-------------- 15 files changed, 73 insertions(+), 62 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 4bbc8aeddf30..c959e8b1643c 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -439,6 +439,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, goto error; mci->dimms[off] = dimm; dimm->mci = mci; + dimm->idx = off; /* * Copy DIMM location and initialize it. diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index bd3be25d0d3f..8050f9577fe6 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -97,9 +97,8 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) if (dh->type == DMI_ENTRY_MEM_DEVICE) { struct memdev_dmi_entry *entry = (struct memdev_dmi_entry *)dh; - struct dimm_info *dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, - dimm_fill->count, 0, 0); + struct dimm_info *dimm = edac_get_dimm(mci, dimm_fill->count, + 0, 0); u16 rdr_mask = BIT(7) | BIT(13); if (entry->size == 0xffff) { @@ -521,8 +520,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) dimm_fill.mci = mci; dmi_walk(ghes_edac_dmidecode, &dimm_fill); } else { - struct dimm_info *dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, 0, 0, 0); + struct dimm_info *dimm = edac_get_dimm(mci, 0, 0, 0); dimm->nr_pages = 1; dimm->grain = 128; diff --git a/drivers/edac/i10nm_base.c b/drivers/edac/i10nm_base.c index 6f06aec4877c..1fc9ea849ada 100644 --- a/drivers/edac/i10nm_base.c +++ b/drivers/edac/i10nm_base.c @@ -152,8 +152,7 @@ static int i10nm_get_dimm_config(struct mem_ctl_info *mci) ndimms = 0; for (j = 0; j < I10NM_NUM_DIMMS; j++) { - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, i, j, 0); + dimm = edac_get_dimm(mci, i, j, 0); mtr = I10NM_GET_DIMMMTR(imc, i, j); mcddrtcfg = I10NM_GET_MCDDRTCFG(imc, i, j); edac_dbg(1, "dimmmtr 0x%x mcddrtcfg 0x%x (mc%d ch%d dimm%d)\n", diff --git a/drivers/edac/i3200_edac.c b/drivers/edac/i3200_edac.c index 299b441647cd..432b375a4075 100644 --- a/drivers/edac/i3200_edac.c +++ b/drivers/edac/i3200_edac.c @@ -392,8 +392,7 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx) unsigned long nr_pages; for (j = 0; j < nr_channels; j++) { - struct dimm_info *dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, i, j, 0); + struct dimm_info *dimm = edac_get_dimm(mci, i, j, 0); nr_pages = drb_to_nr_pages(drbs, stacked, j, i); if (nr_pages == 0) diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c index 078a7351bf05..1a6f69c859ab 100644 --- a/drivers/edac/i5000_edac.c +++ b/drivers/edac/i5000_edac.c @@ -1275,9 +1275,8 @@ static int i5000_init_csrows(struct mem_ctl_info *mci) if (!MTR_DIMMS_PRESENT(mtr)) continue; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, - channel / MAX_BRANCHES, - channel % MAX_BRANCHES, slot); + dimm = edac_get_dimm(mci, channel / MAX_BRANCHES, + channel % MAX_BRANCHES, slot); csrow_megs = pvt->dimm_info[slot][channel].megabytes; dimm->grain = 8; diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c index b506eef6b146..39ba7f2414ae 100644 --- a/drivers/edac/i5100_edac.c +++ b/drivers/edac/i5100_edac.c @@ -858,8 +858,7 @@ static void i5100_init_csrows(struct mem_ctl_info *mci) if (!npages) continue; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, - chan, rank, 0); + dimm = edac_get_dimm(mci, chan, rank, 0); dimm->nr_pages = npages; dimm->grain = 32; diff --git a/drivers/edac/i5400_edac.c b/drivers/edac/i5400_edac.c index 6f8bcdb9256a..a50a8707337b 100644 --- a/drivers/edac/i5400_edac.c +++ b/drivers/edac/i5400_edac.c @@ -1196,8 +1196,8 @@ static int i5400_init_dimms(struct mem_ctl_info *mci) if (!MTR_DIMMS_PRESENT(mtr)) continue; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, - channel / 2, channel % 2, slot); + dimm = edac_get_dimm(mci, channel / 2, channel % 2, + slot); size_mb = pvt->dimm_info[slot][channel].megabytes; diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c index 7bf910d54d11..747ee36a808c 100644 --- a/drivers/edac/i7300_edac.c +++ b/drivers/edac/i7300_edac.c @@ -794,8 +794,7 @@ static int i7300_init_csrows(struct mem_ctl_info *mci) for (ch = 0; ch < max_channel; ch++) { int channel = to_channel(ch, branch); - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, branch, ch, slot); + dimm = edac_get_dimm(mci, branch, ch, slot); dinfo = &pvt->dimm_info[slot][channel]; diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c index a71cca6eeb33..b3135b208f9a 100644 --- a/drivers/edac/i7core_edac.c +++ b/drivers/edac/i7core_edac.c @@ -585,8 +585,7 @@ static int get_dimm_config(struct mem_ctl_info *mci) if (!DIMM_PRESENT(dimm_dod[j])) continue; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, - i, j, 0); + dimm = edac_get_dimm(mci, i, j, 0); banks = numbank(MC_DOD_NUMBANK(dimm_dod[j])); ranks = numrank(MC_DOD_NUMRANK(dimm_dod[j])); rows = numrow(MC_DOD_NUMROW(dimm_dod[j])); diff --git a/drivers/edac/ie31200_edac.c b/drivers/edac/ie31200_edac.c index d26300f9cb07..4f65073f230b 100644 --- a/drivers/edac/ie31200_edac.c +++ b/drivers/edac/ie31200_edac.c @@ -490,9 +490,7 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx) if (dimm_info[j][i].dual_rank) { nr_pages = nr_pages / 2; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, (i * 2) + 1, - j, 0); + dimm = edac_get_dimm(mci, (i * 2) + 1, j, 0); dimm->nr_pages = nr_pages; edac_dbg(0, "set nr pages: 0x%lx\n", nr_pages); dimm->grain = 8; /* just a guess */ @@ -503,8 +501,7 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx) dimm->dtype = DEV_UNKNOWN; dimm->edac_mode = EDAC_UNKNOWN; } - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, i * 2, j, 0); + dimm = edac_get_dimm(mci, i * 2, j, 0); dimm->nr_pages = nr_pages; edac_dbg(0, "set nr pages: 0x%lx\n", nr_pages); dimm->grain = 8; /* same guess */ diff --git a/drivers/edac/pnd2_edac.c b/drivers/edac/pnd2_edac.c index 903a4f1fadcc..2f7dcafd84b1 100644 --- a/drivers/edac/pnd2_edac.c +++ b/drivers/edac/pnd2_edac.c @@ -1234,7 +1234,7 @@ static void apl_get_dimm_config(struct mem_ctl_info *mci) if (!(chan_mask & BIT(i))) continue; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, i, 0, 0); + dimm = edac_get_dimm(mci, i, 0, 0); if (!dimm) { edac_dbg(0, "No allocated DIMM for channel %d\n", i); continue; @@ -1314,7 +1314,7 @@ static void dnv_get_dimm_config(struct mem_ctl_info *mci) if (!ranks_of_dimm[j]) continue; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, i, j, 0); + dimm = edac_get_dimm(mci, i, j, 0); if (!dimm) { edac_dbg(0, "No allocated DIMM for channel %d DIMM %d\n", i, j); continue; diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index 37746b045e18..3e5631562264 100644 --- a/drivers/edac/sb_edac.c +++ b/drivers/edac/sb_edac.c @@ -1620,7 +1620,7 @@ static int __populate_dimms(struct mem_ctl_info *mci, } for (j = 0; j < max_dimms_per_channel; j++) { - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, i, j, 0); + dimm = edac_get_dimm(mci, i, j, 0); if (pvt->info.type == KNIGHTS_LANDING) { pci_read_config_dword(pvt->knl.pci_channel[i], knl_mtr_reg, &mtr); diff --git a/drivers/edac/skx_base.c b/drivers/edac/skx_base.c index a5c8fa3a249a..5af18f6206e9 100644 --- a/drivers/edac/skx_base.c +++ b/drivers/edac/skx_base.c @@ -177,8 +177,7 @@ static int skx_get_dimm_config(struct mem_ctl_info *mci) pci_read_config_dword(imc->chan[i].cdev, 0x8C, &amap); pci_read_config_dword(imc->chan[i].cdev, 0x400, &mcddrtcfg); for (j = 0; j < SKX_NUM_DIMMS; j++) { - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, - mci->n_layers, i, j, 0); + dimm = edac_get_dimm(mci, i, j, 0); pci_read_config_dword(imc->chan[i].cdev, 0x80 + 4 * j, &mtr); if (IS_DIMM_PRESENT(mtr)) { diff --git a/drivers/edac/ti_edac.c b/drivers/edac/ti_edac.c index 6ac26d1b929f..8be3e89a510e 100644 --- a/drivers/edac/ti_edac.c +++ b/drivers/edac/ti_edac.c @@ -135,7 +135,7 @@ static void ti_edac_setup_dimm(struct mem_ctl_info *mci, u32 type) u32 val; u32 memsize; - dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, 0, 0, 0); + dimm = edac_get_dimm(mci, 0, 0, 0); val = ti_edac_readl(edac, EMIF_SDRAM_CONFIG); diff --git a/include/linux/edac.h b/include/linux/edac.h index 342dabda9c7e..1367a3fc544f 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -403,37 +403,6 @@ struct edac_mc_layer { __i; \ }) -/** - * EDAC_DIMM_PTR - Macro responsible to get a pointer inside a pointer array - * for the element given by [layer0,layer1,layer2] position - * - * @layers: a struct edac_mc_layer array, describing how many elements - * were allocated for each layer - * @var: name of the var where we want to get the pointer - * (like mci->dimms) - * @nlayers: Number of layers at the @layers array - * @layer0: layer0 position - * @layer1: layer1 position. Unused if n_layers < 2 - * @layer2: layer2 position. Unused if n_layers < 3 - * - * For 1 layer, this macro returns "var[layer0]"; - * - * For 2 layers, this macro is similar to allocate a bi-dimensional array - * and to return "var[layer0][layer1]"; - * - * For 3 layers, this macro is similar to allocate a tri-dimensional array - * and to return "var[layer0][layer1][layer2]"; - */ -#define EDAC_DIMM_PTR(layers, var, nlayers, layer0, layer1, layer2) ({ \ - typeof(*var) __p; \ - int ___i = EDAC_DIMM_OFF(layers, nlayers, layer0, layer1, layer2); \ - if (___i < 0) \ - __p = NULL; \ - else \ - __p = (var)[___i]; \ - __p; \ -}) - struct dimm_info { struct device dev; @@ -443,6 +412,7 @@ struct dimm_info { unsigned location[EDAC_MAX_LAYERS]; struct mem_ctl_info *mci; /* the parent */ + int idx; /* index within the parent dimm array */ u32 grain; /* granularity of reported error in bytes */ enum dev_type dtype; /* memory device type */ @@ -669,4 +639,56 @@ struct mem_ctl_info { bool fake_inject_ue; u16 fake_inject_count; }; + +/** + * edac_get_dimm_by_index - Get DIMM info from a memory controller + * given by an index + * + * @mci: a struct mem_ctl_info + * @index: index in the memory controller's DIMM array + * + * Returns a struct dimm_info*. + */ +static inline struct dimm_info * +edac_get_dimm_by_index(struct mem_ctl_info *mci, int index) +{ + if (index < 0 || index >= mci->tot_dimms) + return NULL; + + if (WARN_ON_ONCE(mci->dimms[index]->idx != index)) + return NULL; + + return mci->dimms[index]; +} + +/** + * edac_get_dimm - Get DIMM info from a memory controller given by + * [layer0,layer1,layer2] position + * + * @mci: a struct mem_ctl_info + * @layer0: layer0 position + * @layer1: layer1 position. Unused if n_layers < 2 + * @layer2: layer2 position. Unused if n_layers < 3 + * + * For 1 layer, this macro returns "dimms[layer0]"; + * + * For 2 layers, this macro is similar to allocate a bi-dimensional array + * and to return "dimms[layer0][layer1]"; + * + * For 3 layers, this macro is similar to allocate a tri-dimensional array + * and to return "dimms[layer0][layer1][layer2]"; + */ +static inline struct dimm_info * +edac_get_dimm(struct mem_ctl_info *mci, int layer0, int layer1, int layer2) +{ + int index = layer0; + + if (index >= 0 && mci->n_layers > 1) + index = index * mci->layers[1].size + layer1; + if (index >= 0 && mci->n_layers > 2) + index = index * mci->layers[2].size + layer2; + + return edac_get_dimm_by_index(mci, index); +} + #endif From patchwork Mon Jun 24 15:09:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167606 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347425ilk; Mon, 24 Jun 2019 08:09:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqyX+HYw9YXu/sgnSRW2bt2bNdFVI/rOozxdJzfY8YC5jHjyETzwpxmFCbpB3t1ZCUGsX3O0 X-Received: by 2002:a17:902:8609:: with SMTP id f9mr137796932plo.252.1561388963570; Mon, 24 Jun 2019 08:09:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388963; cv=none; d=google.com; s=arc-20160816; b=sa2cvhDx1OrNWIdYDaZACsVyM3Dfx52a2Fo9fuK84wNyXjzkwYaHAqmkZwWxjwSD3Y pZyA0T7FD1b4JEv84lv/jbZ5w4R2Xx5OEmxf8vzI8MLbxVhYJ50cPKBQXO1Rc/zh2t/t 5Of07wWTt1GONOq4RZPvIY6Vq2oBxZmpK2J/Bf1O2iTAHqMYcjfFqGh8FDRmXcaLWPb5 i5XPObEatXPtod1tfjYgiHgaW6h7wN9bguAbalJCq9swTRs60DkFTgLAEeRZovEZRPCI kmxOAHx3WIi9KGKb8Kw0Y4krC4Air4eFfiT5JHShAXh15Pe4K2/VKznyy+tEqAwtLttB skeQ== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=jFsFLKHCcJPeWPXNzKZ4zNh9o3eVIQkcVZvv8t0zFMo=; b=YZICFoviql37PV0itJkeb3oVkKyv4CQSIMyMHwUxGto2n8171trI3XBdekNKTCCS44 ZBNQSxmREtx64RYo2bxdpmqHp0OuMB69Q0cpU+LZA4958bBpIc6wgYGQ80/8EloAvC34 CCT4x+1zlS7LG9lJCSc8W2g/LA9qkoNXEjeblfN8MrDYE7MiGKBGVPGutmHtQGMvz3Xz G/TXFAxQRm7JHWG1ouG0F+IszYHevUYKKCNupPArOU4hATqXxUX4oUm1XFa3wU7xsYdW V8cSUpY8U1UTBNp/vIb1WD9MRxNX/BOmayBYPRsL8xKg3L06nFgbgPnTQWuTPgc+dpGK wKSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=MZn0SVV6; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b="Xa9nqIF/"; 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 g10si10697753pjp.74.2019.06.24.08.09.23; Mon, 24 Jun 2019 08:09:23 -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=MZn0SVV6; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b="Xa9nqIF/"; 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 S1730519AbfFXPJV (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:21 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:8656 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729578AbfFXPJS (ORCPT ); Mon, 24 Jun 2019 11:09:18 -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 x5OF8DQp025885; Mon, 24 Jun 2019 08:09:12 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=jFsFLKHCcJPeWPXNzKZ4zNh9o3eVIQkcVZvv8t0zFMo=; b=MZn0SVV6XBDYYgTKGAHbdWJFivnj47h/iXRTD5TTduViqKlhPPfBb7u0sqUw5ECIKjL8 TYdHNMNWeRDPRaiIxaAiu23E+frCyEjbnQ33j6kl7dUIboBq5BICB9G+wMObgHDXQVvh hO708bwWIccOsI1qau8UZEoLzaPQIdzBHH7wmINZ4Fphq/4P0x03VxP9pdfA6n5sETx6 Ew3ks1E+C+FfQIW6xLo3SWfWQ0RxivCpn+UPGeQplRohSRQtQAdB8hwYgr6C0xedlm3V gBU0tHyMTsArJs+yf+vKbX5oSoxKIrZooQLz9H6anwZsKGuS9XZEhvLPo5BetoLb8JRa Pg== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7rr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:11 -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:09:10 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.55) 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:09:10 -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=jFsFLKHCcJPeWPXNzKZ4zNh9o3eVIQkcVZvv8t0zFMo=; b=Xa9nqIF/IKzbzRW6WjwTp39ibzQaNKTeHyA9mvdFNEV+lYcgWVj9QWBoOrxbbtg+7q2DLcBUeona5tPeajRwWZfoBejzcbcl6l9ieUA9jTGX1NFlzsxzND9APVc9yD+XUm+GA8RYz5HKSBej0VAQ3g2zvBTLNAoV98DX+x8Dg8A= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:09 +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:09:09 +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 07/24] EDAC: Kill EDAC_DIMM_OFF() macro Thread-Topic: [PATCH v2 07/24] EDAC: Kill EDAC_DIMM_OFF() macro Thread-Index: AQHVKp7Fo1m2H4puVkaf5rh/3X0l2A== Date: Mon, 24 Jun 2019 15:09:09 +0000 Message-ID: <20190624150758.6695-8-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: f70a0cf3-f19d-41f5-4679-08d6f8b5e7ed x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: oSCVQIkoSnlySzEazvoh8ZzQo39H2STsk+PJLkhHxNchehmLbvwqmXZHmZ0qG/DTvxo0T1bM1I0+hzs1/abfrS6NX8cM5O6OMmHjV/u2FVH+g/n6Cgrlh2XGd6FJ/emNFPoLp77B2amgbPwooX1E4XlK/qulOTse8MP00WMlBIBPVEImtQyO49r+7RVERcFWLbhWnL9/RDdE4D3PedqNXEwPQwz2RUvvWK1LpMl4AISof+B9pGePzSaSYDf6E7mAqftr+8FWvC4KwTs18//EhpWfczeCvXIhSBdoY3w2CzDwOBTUGUVBhz4zlCkKQsZxGkq27b+j70ywtdR+b4f8txnOrhqSFi2o3haE8Ok5Pgrp9Ys/DLpbKUZTWQDd2T2IVIEBtthQW4IO9nhd1yhhq633m1JcJVg6tVUfbIVrvaU= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: f70a0cf3-f19d-41f5-4679-08d6f8b5e7ed X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:09.0505 (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: MN2PR18MB3197 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 We do not need to calculate the offset in the mc's dimm array, let's just store the index in struct dimm_info and we can get rid of this macro. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 13 ++++-------- drivers/edac/edac_mc_sysfs.c | 20 ++++-------------- include/linux/edac.h | 41 ------------------------------------ 3 files changed, 8 insertions(+), 66 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index c959e8b1643c..c44bc83e8502 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -318,7 +318,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, unsigned size, tot_dimms = 1, count = 1; unsigned tot_csrows = 1, tot_channels = 1, tot_errcount = 0; void *pvt, *p, *ptr = NULL; - int i, j, row, chn, n, len, off; + int idx, i, j, row, chn, n, len; bool per_rank = false; BUG_ON(n_layers > EDAC_MAX_LAYERS || n_layers == 0); @@ -426,20 +426,15 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, memset(&pos, 0, sizeof(pos)); row = 0; chn = 0; - for (i = 0; i < tot_dimms; i++) { + for (idx = 0; idx < tot_dimms; idx++) { chan = mci->csrows[row]->channels[chn]; - off = EDAC_DIMM_OFF(layer, n_layers, pos[0], pos[1], pos[2]); - if (off < 0 || off >= tot_dimms) { - edac_mc_printk(mci, KERN_ERR, "EDAC core bug: EDAC_DIMM_OFF is trying to do an illegal data access\n"); - goto error; - } dimm = kzalloc(sizeof(**mci->dimms), GFP_KERNEL); if (!dimm) goto error; - mci->dimms[off] = dimm; + mci->dimms[idx] = dimm; dimm->mci = mci; - dimm->idx = off; + dimm->idx = idx; /* * Copy DIMM location and initialize it. diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 29dd9719f82f..a69e99206a6f 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -559,14 +559,8 @@ static ssize_t dimmdev_ce_count_show(struct device *dev, { struct dimm_info *dimm = to_dimm(dev); u32 count; - int off; - - off = EDAC_DIMM_OFF(dimm->mci->layers, - dimm->mci->n_layers, - dimm->location[0], - dimm->location[1], - dimm->location[2]); - count = dimm->mci->ce_per_layer[dimm->mci->n_layers-1][off]; + + count = dimm->mci->ce_per_layer[dimm->mci->n_layers-1][dimm->idx]; return sprintf(data, "%u\n", count); } @@ -576,14 +570,8 @@ static ssize_t dimmdev_ue_count_show(struct device *dev, { struct dimm_info *dimm = to_dimm(dev); u32 count; - int off; - - off = EDAC_DIMM_OFF(dimm->mci->layers, - dimm->mci->n_layers, - dimm->location[0], - dimm->location[1], - dimm->location[2]); - count = dimm->mci->ue_per_layer[dimm->mci->n_layers-1][off]; + + count = dimm->mci->ue_per_layer[dimm->mci->n_layers-1][dimm->idx]; return sprintf(data, "%u\n", count); } diff --git a/include/linux/edac.h b/include/linux/edac.h index 1367a3fc544f..2ee9b8598ae0 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -362,47 +362,6 @@ struct edac_mc_layer { */ #define EDAC_MAX_LAYERS 3 -/** - * EDAC_DIMM_OFF - Macro responsible to get a pointer offset inside a pointer - * array for the element given by [layer0,layer1,layer2] - * position - * - * @layers: a struct edac_mc_layer array, describing how many elements - * were allocated for each layer - * @nlayers: Number of layers at the @layers array - * @layer0: layer0 position - * @layer1: layer1 position. Unused if n_layers < 2 - * @layer2: layer2 position. Unused if n_layers < 3 - * - * For 1 layer, this macro returns "var[layer0] - var"; - * - * For 2 layers, this macro is similar to allocate a bi-dimensional array - * and to return "var[layer0][layer1] - var"; - * - * For 3 layers, this macro is similar to allocate a tri-dimensional array - * and to return "var[layer0][layer1][layer2] - var". - * - * A loop could be used here to make it more generic, but, as we only have - * 3 layers, this is a little faster. - * - * By design, layers can never be 0 or more than 3. If that ever happens, - * a NULL is returned, causing an OOPS during the memory allocation routine, - * with would point to the developer that he's doing something wrong. - */ -#define EDAC_DIMM_OFF(layers, nlayers, layer0, layer1, layer2) ({ \ - int __i; \ - if ((nlayers) == 1) \ - __i = layer0; \ - else if ((nlayers) == 2) \ - __i = (layer1) + ((layers[1]).size * (layer0)); \ - else if ((nlayers) == 3) \ - __i = (layer2) + ((layers[2]).size * ((layer1) + \ - ((layers[1]).size * (layer0)))); \ - else \ - __i = -EINVAL; \ - __i; \ -}) - struct dimm_info { struct device dev; From patchwork Mon Jun 24 15:09:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167623 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348969ilk; Mon, 24 Jun 2019 08:10:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqzBd+dO5sjGBr3QET4/CVJQdI3IXlCXHYyQXlWiUBD8OmX9QKx2XIFwuEykKrLhHd9z89NW X-Received: by 2002:a17:90a:35e5:: with SMTP id r92mr25888009pjb.34.1561389035188; Mon, 24 Jun 2019 08:10:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389035; cv=none; d=google.com; s=arc-20160816; b=igr9XuE4ee91jlDbEERksfcbriM2S4lgGuGCnL7ud8nYv4evfW4LF13uYaJpKs+/mz 3mWaNAd9CrGjcG6PHUDW+fG+RU+COB3GsHkTubvC1x83NiZSV+2hKSCivWmfW9WvH6AS zGLTGoLAzChjN1vVJcdhpj59b4Q5SU6SFe1W1SxnfRrRtc9cT9Mzl7KS5qN0SspQRb4B dEQ4LQFvdx1KLauCGYpENlie3JICrHXAi++LerFWlbwuC4kZLSDWno0eMncTg73Fv/c/ tCQUQUQGygY72vSgY+IOo/49bvpLyzde8R3nrRAVe+HFA+UY4kVdEcebeEib56catAaI sUhg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=4OEMZvb8Lzhd7nbkHxlbYtcKV2x+fbwoOs0MM31fHPM=; b=A+/2cWg3w7YM0loMAFkLHhmucX1Y7aerZE8IrZc6c8MFfFHMi6yUd5Igrp9XQYJyZv 1hZgr1LooD+eXJh1lwiq/dURkfM3hCJrqpZgXTmjAilK6bmmQZipvr0uy2IyhmFckWJ6 Gu/nuy5TVe71LsHV/Qkx88k3+LVcbjqHWoJYTqFL+4NESEQKeBIBC9rxHgbKZjECqnJa tOodxzk++FXqSY/HHNl6n/nWs+n0446kgpXyTMeR+bixur904Kj8sQi/E6yvEHmKaimk ESewHeyjR6B5zgmzdIUg3ysCeZRl7CVvZpPBZg1gVEAMFeG55z+r/HcOJoSwKEysS2Zq iYrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=SzXJc5Iy; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=GXGAiGzu; 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 a14si11359572pfo.37.2019.06.24.08.10.34; Mon, 24 Jun 2019 08:10:35 -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=SzXJc5Iy; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=GXGAiGzu; 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 S1730607AbfFXPJa (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:30 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:32756 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729903AbfFXPJV (ORCPT ); Mon, 24 Jun 2019 11:09:21 -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 x5OF8Eah025899; Mon, 24 Jun 2019 08:09:14 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=4OEMZvb8Lzhd7nbkHxlbYtcKV2x+fbwoOs0MM31fHPM=; b=SzXJc5Iynt07gSc9jCjzie6sgET9jj6EVDnkqV5mU3vWOWK4oYXA6XLrSWJAXm4hWjBw p689tgpNKMFHNt+i/I0/WDukvES5YsICu/lOOQziirhuoFR55LZCujnKz0dEwi9dnrRp j5rEGio1vbXSsvZtAIij9cSUis+nfWpfphOvdXqb8ScAgwSEoApllE63g5dnYw867ofu vQsYt4RlpYp+Sp2+Eh9auLH7dGq+hCIjy+3L8k0dyO4fiGB9/e7bbt9ZX7jgE0c6YeSX vfXpkiYDOrnuHT9P1z94TChv1TVnhxYo0NDwJneWPdEHAfVfZa1ubRPLKEn7789KbCj6 8w== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7s1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:14 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:12 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.53) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:12 -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=4OEMZvb8Lzhd7nbkHxlbYtcKV2x+fbwoOs0MM31fHPM=; b=GXGAiGzux6bHrVkHdLxCIhdJyxYx660FfI/skiFAJulxadE32GL7pq3+NiyaVcIMmTVN2/0aErFZE92AAeJTdWSJvH19iaWaniIc54HLZa7sJtmliR/t6w+FLsM7kS9SF0z7r8ApqDkq6SnZeyinVq3P+PqnoD6lZON8fMbEJHo= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:11 +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:09:11 +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 08/24] EDAC: Introduce mci_for_each_dimm() iterator Thread-Topic: [PATCH v2 08/24] EDAC: Introduce mci_for_each_dimm() iterator Thread-Index: AQHVKp7HblTk+aCg90ebZ91+8B0kzw== Date: Mon, 24 Jun 2019 15:09:11 +0000 Message-ID: <20190624150758.6695-9-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 6def1f41-8444-4e5d-141c-08d6f8b5e98c x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:148; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: /I/q1yPT92DWSX6kTI8GN+lZkxGmIAcurMoZh9rszKiY1puH+FLCw9ymDEq2uCUBEFS6YcjUHwDwp/376OKA5zznMZxVo3mNNBjLsXJcs3MoQR/IsbaJMyXDFKhaI0a/3JpRIesnRZHXf/RdnU1DjUBUiPvWdMPrTD5SoC9gqg7mMy9X0Vext2b7BrLSeRDzOQ1/EDCVeMmjno70JR6J4eVmSeppn2F0j309Cv4a89hGByQdalbXYFH4USazIPpQzYGUMAQ95kxlqFpPxxVuyjOlGu2T7/KAFz53DJdlL/yfTeNfNan46PNu5hFX0v/DknL/JjAltoc+Hz1IhajkeUNNxE8E2G3swmrNasqA7pCB+R6ePAU3S9M6QFJpUH/OGpx4sKvXx6lohdMKZWMNhKn31qhJmM+Ue4CdYQQbSU4= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 6def1f41-8444-4e5d-141c-08d6f8b5e98c X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:11.6011 (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: MN2PR18MB3197 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 Make code more readable by introducing a mci_for_each_dimm() iterator. Now, we just get a pointer to a struct dimm_info. Direct array access using an index is no longer needed to iterate. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 18 ++++++++++-------- drivers/edac/edac_mc_sysfs.c | 34 +++++++++++++++------------------- drivers/edac/ghes_edac.c | 8 ++++---- drivers/edac/i5100_edac.c | 11 +++++------ include/linux/edac.h | 7 +++++++ 5 files changed, 41 insertions(+), 37 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index c44bc83e8502..27277ca46ab3 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -145,15 +145,18 @@ static void edac_mc_dump_channel(struct rank_info *chan) edac_dbg(4, " channel->dimm = %p\n", chan->dimm); } -static void edac_mc_dump_dimm(struct dimm_info *dimm, int number) +static void edac_mc_dump_dimm(struct dimm_info *dimm) { char location[80]; + if (!dimm->nr_pages) + return; + edac_dimm_info_location(dimm, location, sizeof(location)); edac_dbg(4, "%s%i: %smapped as virtual row %d, chan %d\n", dimm->mci->csbased ? "rank" : "dimm", - number, location, dimm->csrow, dimm->cschannel); + dimm->idx, location, dimm->csrow, dimm->cschannel); edac_dbg(4, " dimm = %p\n", dimm); edac_dbg(4, " dimm->label = '%s'\n", dimm->label); edac_dbg(4, " dimm->nr_pages = 0x%x\n", dimm->nr_pages); @@ -703,6 +706,7 @@ EXPORT_SYMBOL_GPL(edac_get_owner); int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci, const struct attribute_group **groups) { + struct dimm_info *dimm; int ret = -EINVAL; edac_dbg(0, "\n"); @@ -727,9 +731,8 @@ int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci, if (csrow->channels[j]->dimm->nr_pages) edac_mc_dump_channel(csrow->channels[j]); } - for (i = 0; i < mci->tot_dimms; i++) - if (mci->dimms[i]->nr_pages) - edac_mc_dump_dimm(mci->dimms[i], i); + mci_for_each_dimm(mci, dimm) + edac_mc_dump_dimm(dimm); } #endif mutex_lock(&mem_ctls_mutex); @@ -1104,6 +1107,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, const char *msg, const char *other_detail) { + struct dimm_info *dimm; char *p; int row = -1, chan = -1; int pos[EDAC_MAX_LAYERS] = { top_layer, mid_layer, low_layer }; @@ -1163,9 +1167,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, p = e->label; *p = '\0'; - for (i = 0; i < mci->tot_dimms; i++) { - struct dimm_info *dimm = mci->dimms[i]; - + mci_for_each_dimm(mci, dimm) { if (top_layer >= 0 && top_layer != dimm->location[0]) continue; if (mid_layer >= 0 && mid_layer != dimm->location[1]) diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index a69e99206a6f..4d15c88a52cd 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -623,8 +623,7 @@ static const struct device_type dimm_attr_type = { /* Create a DIMM object under specifed memory controller device */ static int edac_create_dimm_object(struct mem_ctl_info *mci, - struct dimm_info *dimm, - int index) + struct dimm_info *dimm) { int err; dimm->mci = mci; @@ -634,9 +633,9 @@ static int edac_create_dimm_object(struct mem_ctl_info *mci, dimm->dev.parent = &mci->dev; if (mci->csbased) - dev_set_name(&dimm->dev, "rank%d", index); + dev_set_name(&dimm->dev, "rank%d", dimm->idx); else - dev_set_name(&dimm->dev, "dimm%d", index); + dev_set_name(&dimm->dev, "dimm%d", dimm->idx); dev_set_drvdata(&dimm->dev, dimm); pm_runtime_forbid(&mci->dev); @@ -910,7 +909,8 @@ static const struct device_type mci_attr_type = { int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, const struct attribute_group **groups) { - int i, err; + struct dimm_info *dimm; + int err; /* get the /sys/devices/system/edac subsys reference */ mci->dev.type = &mci_attr_type; @@ -933,14 +933,13 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, /* * Create the dimm/rank devices */ - for (i = 0; i < mci->tot_dimms; i++) { - struct dimm_info *dimm = mci->dimms[i]; + mci_for_each_dimm(mci, dimm) { /* Only expose populated DIMMs */ if (!dimm->nr_pages) continue; #ifdef CONFIG_EDAC_DEBUG - edac_dbg(1, "creating dimm%d, located at ", i); + edac_dbg(1, "creating dimm%d, located at ", dimm->idx); if (edac_debug_level >= 1) { int lay; for (lay = 0; lay < mci->n_layers; lay++) @@ -950,9 +949,10 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, printk(KERN_CONT "\n"); } #endif - err = edac_create_dimm_object(mci, dimm, i); + err = edac_create_dimm_object(mci, dimm); if (err) { - edac_dbg(1, "failure: create dimm %d obj\n", i); + edac_dbg(1, "failure: create dimm %d obj\n", + dimm->idx); goto fail_unregister_dimm; } } @@ -967,12 +967,9 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, return 0; fail_unregister_dimm: - for (i--; i >= 0; i--) { - struct dimm_info *dimm = mci->dimms[i]; - if (!dimm->nr_pages) - continue; - - device_unregister(&dimm->dev); + mci_for_each_dimm(mci, dimm) { + if (device_is_registered(&dimm->dev)) + device_unregister(&dimm->dev); } device_unregister(&mci->dev); @@ -984,7 +981,7 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, */ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) { - int i; + struct dimm_info *dimm; edac_dbg(0, "\n"); @@ -995,8 +992,7 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) edac_delete_csrow_objects(mci); #endif - for (i = 0; i < mci->tot_dimms; i++) { - struct dimm_info *dimm = mci->dimms[i]; + mci_for_each_dimm(mci, dimm) { if (dimm->nr_pages == 0) continue; edac_dbg(0, "removing device %s\n", dev_name(&dimm->dev)); diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 8050f9577fe6..72e75ea5526c 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -81,11 +81,11 @@ static void ghes_edac_count_dimms(const struct dmi_header *dh, void *arg) static int get_dimm_smbios_index(u16 handle) { struct mem_ctl_info *mci = ghes_pvt->mci; - int i; + struct dimm_info *dimm; - for (i = 0; i < mci->tot_dimms; i++) { - if (mci->dimms[i]->smbios_handle == handle) - return i; + mci_for_each_dimm(mci, dimm) { + if (dimm->smbios_handle == handle) + return dimm->idx; } return -1; } diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c index 39ba7f2414ae..7ec42b26a716 100644 --- a/drivers/edac/i5100_edac.c +++ b/drivers/edac/i5100_edac.c @@ -846,14 +846,13 @@ static void i5100_init_interleaving(struct pci_dev *pdev, static void i5100_init_csrows(struct mem_ctl_info *mci) { - int i; struct i5100_priv *priv = mci->pvt_info; + struct dimm_info *dimm; - for (i = 0; i < mci->tot_dimms; i++) { - struct dimm_info *dimm; - const unsigned long npages = i5100_npages(mci, i); - const unsigned chan = i5100_csrow_to_chan(mci, i); - const unsigned rank = i5100_csrow_to_rank(mci, i); + mci_for_each_dimm(mci, dimm) { + const unsigned long npages = i5100_npages(mci, dimm->idx); + const unsigned chan = i5100_csrow_to_chan(mci, dimm->idx); + const unsigned rank = i5100_csrow_to_rank(mci, dimm->idx); if (!npages) continue; diff --git a/include/linux/edac.h b/include/linux/edac.h index 2ee9b8598ae0..20a04f48616c 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -599,6 +599,13 @@ struct mem_ctl_info { u16 fake_inject_count; }; +#define mci_for_each_dimm(mci, dimm) \ + for ((dimm) = (mci)->dimms[0]; \ + (dimm); \ + (dimm) = (dimm)->idx < (mci)->tot_dimms \ + ? (mci)->dimms[(dimm)->idx + 1] \ + : NULL) + /** * edac_get_dimm_by_index - Get DIMM info from a memory controller * given by an index From patchwork Mon Jun 24 15:09:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167607 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347496ilk; Mon, 24 Jun 2019 08:09:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqweXBCjDrQnrPEJSZsRZnd5dMllAL5+D/RW3Pmsc9hUpbTzkyJMjyRhs2WoBEX4hnaYPUjx X-Received: by 2002:a17:902:8609:: with SMTP id f9mr137797234plo.252.1561388967454; Mon, 24 Jun 2019 08:09:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388967; cv=none; d=google.com; s=arc-20160816; b=wOEBgtnRwbBick+vBwrV48c55zVZj4XryEjTb06YAzmbjc6utSFpeWje7rok0vy7gp 09IImghHjBPliBJG5mLQThEF/jzKEJu//EzkbY/SBQSuxNeUP5Qs3Mb7m9dDr7oKhzaP 4pmuKIjygbmGUAZgrpEA5hDqa4UqFy/vC9P4zwXb463UHYPtp2rdaHOKsKASFRUHCl83 57oclUC0xepcLfnJ44c7GDeSO14W5qPGIUBuyV2A+ZvAvMud6nlxhrJhLwsamIXzebAG V5dFgbD9NYzaoqc4fVlHz6yhTxI/OMBZ6Fqr4khAWu4lag5j7x7FB7EYKuIeX8vUH9fL H6+Q== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=Y292rx7edbDtONNI7C9W/pDUNiNqgVRhbZOsl62+7B8=; b=XwnSGbIoK2Gj73MqQOxQSQBckPR8QglSLXxh2Div6iYQzLLykTZ+M4+upHX6La65dH C517hDmSW6LKSfT0OM/eTJbFPzJpsPuUF/cxhfzsq8ZYGOU5yb7NA6vlno7StjzjFBHt DQw2NvqUQTFlF76900GLpb15ZQ6DuSM3xyykta4i1/rBxnPxuvJf+eSD5W6vh1FqeKjB VurDVRIWUVsDPdtZBdDpXV1HONZpW+3HAPjTmVg9fkAbQymugP+I2X6fv6XpBfQwkni/ VS7C+7i0vk5zUYGiRx9S9LJ853MigGoHW4vwEMc9Amhbpj2bTGn14hMqYCOA1lmUvy5y GfvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=zQD1vLe4; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=RKZ1nRpA; 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 g10si10697753pjp.74.2019.06.24.08.09.26; Mon, 24 Jun 2019 08:09:27 -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=zQD1vLe4; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=RKZ1nRpA; 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 S1730551AbfFXPJZ (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:25 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:17790 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729578AbfFXPJX (ORCPT ); Mon, 24 Jun 2019 11:09:23 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0N6l018740; Mon, 24 Jun 2019 08:09:15 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=Y292rx7edbDtONNI7C9W/pDUNiNqgVRhbZOsl62+7B8=; b=zQD1vLe4Trqq3eb77ACOAMbrvrzLJ/mdQ4iogzIDOvwaQCCiCFuicdp882g7aRhsNA/U fv5I+4QdTd05pQnSH5MjtIVmcz+lokx/7dSnJRRBVkN46Kk0cFue84oqhvTOFgW0tSJG E3pFXre728kr2R2Xaqp3wXe9xpX7NehBgiqUtv+JXQsXFUcB8qFFD2fDDgDRSdMBB4jH UYSPh7pDvS5JPS1jwYwEbyJ6Kc8DKAjPhtRWxavt9XnMd15pK/4Dr+Z81RaaUFVdiu/w gNdPeMYcK6EjJ1/kqlDPtPPIR4aAIN4xAEHNA1KXM5qaGw3s30OEElFiZx/gmZZ0oksT LA== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9ta1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:15 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:14 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.53) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:14 -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=Y292rx7edbDtONNI7C9W/pDUNiNqgVRhbZOsl62+7B8=; b=RKZ1nRpAouOmi9yAJQ/zvBmn39g+7I5CWPRt8Hq3tGuX6lfb0jjjn3d9p9IKL5LggHp+YzP1foXSL1kUfBZcnsjgBqh7JXfYdhlm98PRiRpJedDluu3tgl8X0GDiGDU2lEYFJiNk0Ra4m3IMJ0WlkPJk+JJV0ZG78kw/rS/ej+g= 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:09:13 +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:09:13 +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 09/24] EDAC, mc: Cleanup _edac_mc_free() code Thread-Topic: [PATCH v2 09/24] EDAC, mc: Cleanup _edac_mc_free() code Thread-Index: AQHVKp7Isx66NqK27UO6ldD/Ux6kpw== Date: Mon, 24 Jun 2019 15:09:13 +0000 Message-ID: <20190624150758.6695-10-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: b9a039d0-0f6a-4ec2-fe51-08d6f8b5eac6 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:1013; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(2906002)(2616005)(486006)(476003)(52116002)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: jkDw62OY23uBhDRjNp91MVXJCRJwfehuekgVp9eBCG003v9b1vLLKQBoiFyHM6TwdcRR2ofyjkUTCTOsouTgJNJz4rpfg0IkfRr5vE2nkcpDEEEGhJMxEwCkAXqk1PcHBm1gp7Lvc42aZPeDwqEFEWbiqiijrCBaJbagNb5kSlNQTga6/K2Y6JX4ETnG98i8ank6XgCFWr78FtGWNGAXSWXMDigPHOcUlX5s0xPIRmxk+WN6hvaNjbT6CXBuUtUsvW8ckyzwm+4JxWjNwTxpQj9MduW6xLIfxRpU9a/RJGq/OsIimhXYI12eUKIxN595UMc+/GtHlydemNWchBzD40XnJ2Tb0OsLwiYpZBtM53cMQL4veNSEez7svhgTgddeRYNgf4L3wko5n6KLbRnsIilxPijJt2UZfn1d9N3pdc8= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b9a039d0-0f6a-4ec2-fe51-08d6f8b5eac6 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:13.3951 (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 Remove needless and boilerplate variable declarations. No functional changes. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 27277ca46ab3..f2acdab34eb7 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -280,26 +280,23 @@ static void _edac_mc_free(struct mem_ctl_info *mci) { int i, chn, row; struct csrow_info *csr; - const unsigned int tot_dimms = mci->tot_dimms; - const unsigned int tot_channels = mci->num_cschannel; - const unsigned int tot_csrows = mci->nr_csrows; if (mci->dimms) { - for (i = 0; i < tot_dimms; i++) + for (i = 0; i < mci->tot_dimms; i++) kfree(mci->dimms[i]); kfree(mci->dimms); } if (mci->csrows) { - for (row = 0; row < tot_csrows; row++) { + for (row = 0; row < mci->nr_csrows; row++) { csr = mci->csrows[row]; - if (csr) { - if (csr->channels) { - for (chn = 0; chn < tot_channels; chn++) - kfree(csr->channels[chn]); - kfree(csr->channels); - } - kfree(csr); + if (!csr) + continue; + if (csr->channels) { + for (chn = 0; chn < mci->num_cschannel; chn++) + kfree(csr->channels[chn]); + kfree(csr->channels); } + kfree(csr); } kfree(mci->csrows); } From patchwork Mon Jun 24 15:09:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167619 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348601ilk; Mon, 24 Jun 2019 08:10:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqzwUvShjPjjLJS0I1yaRUN2udT94na/TVQqph1GeyPBl7U1V/03MiCl2XOPU4qb5ZoOjbaq X-Received: by 2002:a17:90a:bf0e:: with SMTP id c14mr2531900pjs.55.1561389017527; Mon, 24 Jun 2019 08:10:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389017; cv=none; d=google.com; s=arc-20160816; b=u6GumEWUE2JDiP3Jo/y59yY4Ba/bcqs0SPByQolOTkW32T2UrqNZwtgoD2BGLYeXN/ wVW96ZA6GnqaBHdryRIVU+lLZuq/NBLyZbXKUQ/KOVsB73/s1Emo9qSYlFOvE2GtrN4M XgJ9ePE4NJ3hIeisc6PQ4J/hWdRjkHVE9dHKY2jTHe+AsiN363Sgb51qGGK9idJd9jaE v2IqUWFIwrotAYQMHdt6F/+nnwP/SutXbbzaLkaglOidXximyAFhQMkZ9Bv+9YTtQ4Uy CtlyeIQsTXVlN9rZqlI2J+qKJxupfwh6zZGmglm/7tpXi+8274zftnpvOjk5QwkuPtjg l0vw== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=vK/hGpemHSdkor+/r7WTQlppSZAa66sxeY5ljJ4uA8I=; b=kiq5+pSBba7qgjJX3je61VWa0thBo/umtv2yzABXrqlqR78bQ9ovdlWAg5xTYfn2ae dpCM6OD6dopvHoCMJ1QKcgXOYEudgwKhVPTd2GsvfD9jdWenO/YF4FCDVtZi54vZCXcy vdigYw/5RiI34SYkvybUeQVVz9A4L22v2FNgLWnouMrJAMxICuyl/NQbVNp+pkaXVri9 m66J/ra30vX2lURttkNVcX5qFrN/VLjVTB/vtZidURlWT7s9Ur8KNIM6s/5NrBmsp0Yv N5deCA7tc+y+a6+/gQJbtMI5RkWSzz5uq6U0CQQ0xtdHQyiv4Y4Wwn0t8fiWcBlRJcQW Mchw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=a98Lohf8; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Gb8L0b5W; 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 q17si10036322pll.285.2019.06.24.08.10.17; Mon, 24 Jun 2019 08:10:17 -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=a98Lohf8; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Gb8L0b5W; 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 S1730669AbfFXPJd (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:33 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:42782 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730546AbfFXPJ1 (ORCPT ); Mon, 24 Jun 2019 11:09:27 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0G0H018677; Mon, 24 Jun 2019 08:09:18 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=vK/hGpemHSdkor+/r7WTQlppSZAa66sxeY5ljJ4uA8I=; b=a98Lohf88XsR67JybI7OJT9BsFdcsumv3qhjEIaaG/XK37TS+kvEG65v+f0J3938vt19 iYbrpmw9XsRBm8+HjAszLeBJULsc6tp6NanISQOY5/s+DxnpQdeFZXmLEE9zJAlNj5Gt hKjKkY62iaJ0uQEmUilkwOXjrS8ChycDHuJ4yYa7gXgZ0hsu1iVfqCnX2lQoyL/O4Nys tMh4ssuEg7f4FsVcV/7h+9fCiiMH5hwxmLHnrBeqBLzIejr64cfdR9vChRDbC8C3Jogy GrMi+OnioixeJanu+uWCTIKOT8hQDzqhjzcyKVmo76b3Mx1wJfVfp32Skbw5TjqJqW9t VQ== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9ta7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:18 -0700 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:17 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.51) 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:09:16 -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=vK/hGpemHSdkor+/r7WTQlppSZAa66sxeY5ljJ4uA8I=; b=Gb8L0b5WARvkTkJhhTAv1pTTEeUr3y1kocT+6kr7kHWUeN7Wj/i8tkGeDnA1LyIw2h1fJ3rTLnu+z0L56pzNyPG5TlyRzyD3e5+HdBEDohHvR9yLOou+U6jCv31w26ULH68N200BcM8JaQ9IMyL0Ze9xZD0DU8i153JtM4JA3Mc= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:15 +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:09:15 +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 10/24] EDAC, mc: Remove per layer counters Thread-Topic: [PATCH v2 10/24] EDAC, mc: Remove per layer counters Thread-Index: AQHVKp7JCHSgNFUAD0uH9veNN3pALQ== Date: Mon, 24 Jun 2019 15:09:15 +0000 Message-ID: <20190624150758.6695-11-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 941bd320-f963-4a1f-4fa4-08d6f8b5ec11 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(30864003)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: Hsfq7kyKeODZJLQo8dB0/k+ilcEI7lC4dWgYGO2Vue04ww/b/dUmegFbt0smHT/R4wXDCO1CIvU1K8TJ0TROuy667sePsnDT2SAYMetdzwOsVe6WBRi6ogo+I9Z9YwZ6MUcDifcmsWru4df0LR9MAbCC5ItLrEtNAiB20D6HyJ/QSonz3xTlE+pjy9EIfl/3c42HRHiOnXvoaHshpv22RdnWOt/G5NSl7mimXVtGbdyf7mjcdVewhU4vQ0jdzVg66S9RNmFurBm0kWJGYId5u46nSsj6MfzCcTveYOhDO8sOjaPBCsMyNdknF8cjt9L+ZQ7snE7nugbdJJwM29PopM/Hjc2AM+gbroG/MuOZ+rdG/bY0E7QmOmYB7KheW2R8Cwut4hMhBdsGV8dA2pba9AEwnhy9FaDlbDRkGKpnodE= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 941bd320-f963-4a1f-4fa4-08d6f8b5ec11 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:15.6698 (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: MN2PR18MB3197 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 Looking at how mci->{ue,ce}_per_layer[EDAC_MAX_LAYERS] is used, it turns out that only the leaves in the memory hierarchy are consumed (in sysfs), but not the intermediate layers, e.g.: count = dimm->mci->ce_per_layer[dimm->mci->n_layers-1][dimm->idx]; So let's get rid of the unused counters that just add complexity. Error counter values are directly stored in struct dimm_info now. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 98 ++++++++++++------------------------ drivers/edac/edac_mc_sysfs.c | 20 +++----- drivers/edac/ghes_edac.c | 5 +- include/linux/edac.h | 7 ++- 4 files changed, 44 insertions(+), 86 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index f2acdab34eb7..bce39b2e10c9 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -313,10 +313,9 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, struct csrow_info *csr; struct rank_info *chan; struct dimm_info *dimm; - u32 *ce_per_layer[EDAC_MAX_LAYERS], *ue_per_layer[EDAC_MAX_LAYERS]; unsigned pos[EDAC_MAX_LAYERS]; - unsigned size, tot_dimms = 1, count = 1; - unsigned tot_csrows = 1, tot_channels = 1, tot_errcount = 0; + unsigned size, tot_dimms = 1; + unsigned tot_csrows = 1, tot_channels = 1; void *pvt, *p, *ptr = NULL; int idx, i, j, row, chn, n, len; bool per_rank = false; @@ -342,19 +341,10 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, * stringent as what the compiler would provide if we could simply * hardcode everything into a single struct. */ - mci = edac_align_ptr(&ptr, sizeof(*mci), 1); - layer = edac_align_ptr(&ptr, sizeof(*layer), n_layers); - for (i = 0; i < n_layers; i++) { - count *= layers[i].size; - edac_dbg(4, "errcount layer %d size %d\n", i, count); - ce_per_layer[i] = edac_align_ptr(&ptr, sizeof(u32), count); - ue_per_layer[i] = edac_align_ptr(&ptr, sizeof(u32), count); - tot_errcount += 2 * count; - } - - edac_dbg(4, "allocating %d error counters\n", tot_errcount); - pvt = edac_align_ptr(&ptr, sz_pvt, 1); - size = ((unsigned long)pvt) + sz_pvt; + mci = edac_align_ptr(&ptr, sizeof(*mci), 1); + layer = edac_align_ptr(&ptr, sizeof(*layer), n_layers); + pvt = edac_align_ptr(&ptr, sz_pvt, 1); + size = ((unsigned long)pvt) + sz_pvt; edac_dbg(1, "allocating %u bytes for mci data (%d %s, %d csrows/channels)\n", size, @@ -370,10 +360,6 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, * rather than an imaginary chunk of memory located at address 0. */ layer = (struct edac_mc_layer *)(((char *)mci) + ((unsigned long)layer)); - for (i = 0; i < n_layers; i++) { - mci->ce_per_layer[i] = (u32 *)((char *)mci + ((unsigned long)ce_per_layer[i])); - mci->ue_per_layer[i] = (u32 *)((char *)mci + ((unsigned long)ue_per_layer[i])); - } pvt = sz_pvt ? (((char *)mci) + ((unsigned long)pvt)) : NULL; /* setup index and various internal pointers */ @@ -903,53 +889,31 @@ const char *edac_layer_name[] = { EXPORT_SYMBOL_GPL(edac_layer_name); static void edac_inc_ce_error(struct mem_ctl_info *mci, - bool enable_per_layer_report, const int pos[EDAC_MAX_LAYERS], const u16 count) { - int i, index = 0; + struct dimm_info *dimm = edac_get_dimm(mci, pos[0], pos[1], pos[2]); mci->ce_mc += count; - if (!enable_per_layer_report) { + if (dimm) + dimm->ce_count += count; + else mci->ce_noinfo_count += count; - return; - } - - for (i = 0; i < mci->n_layers; i++) { - if (pos[i] < 0) - break; - index += pos[i]; - mci->ce_per_layer[i][index] += count; - - if (i < mci->n_layers - 1) - index *= mci->layers[i + 1].size; - } } static void edac_inc_ue_error(struct mem_ctl_info *mci, - bool enable_per_layer_report, const int pos[EDAC_MAX_LAYERS], const u16 count) { - int i, index = 0; + struct dimm_info *dimm = edac_get_dimm(mci, pos[0], pos[1], pos[2]); mci->ue_mc += count; - if (!enable_per_layer_report) { + if (dimm) + dimm->ue_count += count; + else mci->ue_noinfo_count += count; - return; - } - - for (i = 0; i < mci->n_layers; i++) { - if (pos[i] < 0) - break; - index += pos[i]; - mci->ue_per_layer[i][index] += count; - - if (i < mci->n_layers - 1) - index *= mci->layers[i + 1].size; - } } static void edac_ce_error(struct mem_ctl_info *mci, @@ -960,7 +924,6 @@ static void edac_ce_error(struct mem_ctl_info *mci, const char *label, const char *detail, const char *other_detail, - const bool enable_per_layer_report, const unsigned long page_frame_number, const unsigned long offset_in_page, long grain) @@ -983,7 +946,7 @@ static void edac_ce_error(struct mem_ctl_info *mci, error_count, msg, msg_aux, label, location, detail); } - edac_inc_ce_error(mci, enable_per_layer_report, pos, error_count); + edac_inc_ce_error(mci, pos, error_count); if (mci->scrub_mode == SCRUB_SW_SRC) { /* @@ -1013,8 +976,7 @@ static void edac_ue_error(struct mem_ctl_info *mci, const char *location, const char *label, const char *detail, - const char *other_detail, - const bool enable_per_layer_report) + const char *other_detail) { char *msg_aux = ""; @@ -1043,7 +1005,7 @@ static void edac_ue_error(struct mem_ctl_info *mci, msg, msg_aux, label, location, detail); } - edac_inc_ue_error(mci, enable_per_layer_report, pos, error_count); + edac_inc_ue_error(mci, pos, error_count); } void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, @@ -1076,16 +1038,16 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, "page:0x%lx offset:0x%lx grain:%ld syndrome:0x%lx", e->page_frame_number, e->offset_in_page, e->grain, e->syndrome); - edac_ce_error(mci, e->error_count, pos, e->msg, e->location, e->label, - detail, e->other_detail, e->enable_per_layer_report, + edac_ce_error(mci, e->error_count, pos, e->msg, e->location, + e->label, detail, e->other_detail, e->page_frame_number, e->offset_in_page, e->grain); } else { snprintf(detail, sizeof(detail), "page:0x%lx offset:0x%lx grain:%ld", e->page_frame_number, e->offset_in_page, e->grain); - edac_ue_error(mci, e->error_count, pos, e->msg, e->location, e->label, - detail, e->other_detail, e->enable_per_layer_report); + edac_ue_error(mci, e->error_count, pos, e->msg, e->location, + e->label, detail, e->other_detail); } @@ -1110,6 +1072,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, int pos[EDAC_MAX_LAYERS] = { top_layer, mid_layer, low_layer }; int i, n_labels = 0; struct edac_raw_error_desc *e = &mci->error_desc; + bool per_layer_report = false; edac_dbg(3, "MC%d\n", mci->mc_idx); @@ -1127,9 +1090,9 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, /* * Check if the event report is consistent and if the memory - * location is known. If it is known, enable_per_layer_report will be - * true, the DIMM(s) label info will be filled and the per-layer - * error counters will be incremented. + * location is known. If it is known, the DIMM(s) label info + * will be filled and the per-layer error counters will be + * incremented. */ for (i = 0; i < mci->n_layers; i++) { if (pos[i] >= (int)mci->layers[i].size) { @@ -1147,7 +1110,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, pos[i] = -1; } if (pos[i] >= 0) - e->enable_per_layer_report = true; + per_layer_report = true; } /* @@ -1176,15 +1139,18 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, if (dimm->grain > e->grain) e->grain = dimm->grain; + if (!per_layer_report) + continue; + /* * If the error is memory-controller wide, there's no need to * seek for the affected DIMMs because the whole * channel/memory controller/... may be affected. * Also, don't show errors for empty DIMM slots. */ - if (e->enable_per_layer_report && dimm->nr_pages) { + if (dimm->nr_pages) { if (n_labels >= EDAC_MAX_LABELS) { - e->enable_per_layer_report = false; + per_layer_report = false; break; } n_labels++; @@ -1215,7 +1181,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, } } - if (!e->enable_per_layer_report) { + if (!per_layer_report) { strcpy(e->label, "any memory"); } else { edac_dbg(4, "csrow/channel to increment: (%d,%d)\n", row, chan); diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 4d15c88a52cd..a4c1b8501ff3 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -558,10 +558,8 @@ static ssize_t dimmdev_ce_count_show(struct device *dev, char *data) { struct dimm_info *dimm = to_dimm(dev); - u32 count; - count = dimm->mci->ce_per_layer[dimm->mci->n_layers-1][dimm->idx]; - return sprintf(data, "%u\n", count); + return sprintf(data, "%u\n", dimm->ce_count); } static ssize_t dimmdev_ue_count_show(struct device *dev, @@ -569,10 +567,8 @@ static ssize_t dimmdev_ue_count_show(struct device *dev, char *data) { struct dimm_info *dimm = to_dimm(dev); - u32 count; - count = dimm->mci->ue_per_layer[dimm->mci->n_layers-1][dimm->idx]; - return sprintf(data, "%u\n", count); + return sprintf(data, "%u\n", dimm->ue_count); } /* dimm/rank attribute files */ @@ -660,7 +656,9 @@ static ssize_t mci_reset_counters_store(struct device *dev, const char *data, size_t count) { struct mem_ctl_info *mci = to_mci(dev); - int cnt, row, chan, i; + struct dimm_info *dimm; + int row, chan; + mci->ue_mc = 0; mci->ce_mc = 0; mci->ue_noinfo_count = 0; @@ -676,11 +674,9 @@ static ssize_t mci_reset_counters_store(struct device *dev, ri->channels[chan]->ce_count = 0; } - cnt = 1; - for (i = 0; i < mci->n_layers; i++) { - cnt *= mci->layers[i].size; - memset(mci->ce_per_layer[i], 0, cnt * sizeof(u32)); - memset(mci->ue_per_layer[i], 0, cnt * sizeof(u32)); + mci_for_each_dimm(mci, dimm) { + dimm->ue_count = 0; + dimm->ce_count = 0; } mci->start_time = jiffies; diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 72e75ea5526c..757a02f2ce49 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -348,11 +348,8 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) mem_err->mem_dev_handle); index = get_dimm_smbios_index(mem_err->mem_dev_handle); - if (index >= 0) { + if (index >= 0) e->top_layer = index; - e->enable_per_layer_report = true; - } - } if (p > e->location) *(p - 1) = '\0'; diff --git a/include/linux/edac.h b/include/linux/edac.h index 20a04f48616c..4dcf075e9dff 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -383,6 +383,9 @@ struct dimm_info { unsigned csrow, cschannel; /* Points to the old API data */ u16 smbios_handle; /* Handle for SMBIOS type 17 */ + + u32 ce_count; + u32 ue_count; }; /** @@ -453,8 +456,6 @@ struct errcount_attribute_data { * @location: location of the error * @label: label of the affected DIMM(s) * @other_detail: other driver-specific detail about the error - * @enable_per_layer_report: if false, the error affects all layers - * (typically, a memory controller error) */ struct edac_raw_error_desc { /* @@ -475,7 +476,6 @@ struct edac_raw_error_desc { unsigned long syndrome; const char *msg; const char *other_detail; - bool enable_per_layer_report; }; /* MEMORY controller information structure @@ -565,7 +565,6 @@ struct mem_ctl_info { */ u32 ce_noinfo_count, ue_noinfo_count; u32 ue_mc, ce_mc; - u32 *ce_per_layer[EDAC_MAX_LAYERS], *ue_per_layer[EDAC_MAX_LAYERS]; struct completion complete; From patchwork Mon Jun 24 15:09:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167608 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347632ilk; Mon, 24 Jun 2019 08:09:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqwyeM2dAU1EMBgw9Z4jiUs2QPYDnQYuyn2yyVvbNypMGMxXqG1OjueIV5f7Q3aPQbAYDx7W X-Received: by 2002:a63:ea0a:: with SMTP id c10mr6309873pgi.426.1561388973590; Mon, 24 Jun 2019 08:09:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388973; cv=none; d=google.com; s=arc-20160816; b=t7HiHpR/h/bbMJIqHYouSCHanWMuGGrqJ0LwFLaG020LpTUxaw4T/gt+qTKgtPHr+z Fw/RNgnQfL0ufGuJX4ysTGZwVMSlfLT1vVk816uW6SMd/K5ncwZXiCqgtQ7riBrxpXQv Mm9XgcyMEMr2AphI7ApJqptUCulEJGRCOLzVk4smLXKlPKlzUnpOv98q1L0ZRE8ThLgH f3lwe5CRGfNoCs4zBLZylXgH067p1MyACNiYY0oagl9Iz0+QtIiyt0JpSbGAI/SoXFQU 63Q+O0bRn4TEMNxPLLE5eAPBlE8BE/aFXajJpRUyasUmbn5ZWEvWl/Ux3ZoOnhdKEhEk nMsg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=1z4n1jeMPp6r5mxtCk8Fww1wa8P4O49mEyhBNwJ/G2s=; b=DMg3WMeBqV7bmeLB2B8fRXPgesM+w4ueg1/qUh/BEKm9+f9QYKiN4jqJx/cc89vhY5 6OYeG2pg9WnXf27LxYBjRF+cU1T6qc76Hj2bfwXuQtBH5KJJ5ibSf2VRbb7GWdNY3Gpm z8f55NSFs4AdfJ5dnuTmUPtRHpQ9mTedC3yfWZPXi3NXTB8JMyq1EBjxXsRhSFs0xuhX iHhga5rDI8p9NEXdN20zAJqcKbxvANsx++3XMb6KVCJ8npsepGL61sd/ycf9WxY7JOwc EvUFQKaoFL/1WHuvO1YotSEn82ZwpAgGt2SBwe2A4F3OYrKIAgvuIgvUxCtcGXG4Hi2t mkOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=KTjUtGI0; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=iLrmvrhH; 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 az12si10124027plb.165.2019.06.24.08.09.33; Mon, 24 Jun 2019 08:09:33 -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=KTjUtGI0; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=iLrmvrhH; 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 S1730634AbfFXPJc (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:32 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:31880 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729578AbfFXPJ2 (ORCPT ); Mon, 24 Jun 2019 11:09:28 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0Kft018697; Mon, 24 Jun 2019 08:09:20 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=1z4n1jeMPp6r5mxtCk8Fww1wa8P4O49mEyhBNwJ/G2s=; b=KTjUtGI0wzLeDnBcQGu8e3EJ9ZFmRr4HhDGkl0g7Rw++S5bI3rAn/gvR+UzYtFDXNw0S /kJp3muvHsT5uLprywGCDr32yqzDxi4ceJ3eKJFc/L6VxmJHJQa0t/I9V6hY7EYgepPF q/2ILazFLGyAFUX9/0tqwO1EjxuQQhyi980dYa2Wn8vi5yOjy5bbzTd3L5TtWjStTk1F hUKElj/BMUoo8GW/5/2AAfH1ykKcdka7U1ms024AzvWitLleshuv2y7qulPRcXdEA1YO FSi4Sp+LdNxcel/6QsjSO5U8yQmHAbLBjVuPif5lMC0TrhO7KHGZiIoJ70LxwnzARTFA Rg== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9taf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:20 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:19 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.57) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:18 -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=1z4n1jeMPp6r5mxtCk8Fww1wa8P4O49mEyhBNwJ/G2s=; b=iLrmvrhHoEqBOlhb3dXMB+Fzp9rfnKvQM13iIu071a6e0pJD81GFb27TFaZDvJlTBa+Oqb3qUKsI6oeAWyngznovMQNXwjtzwx9082ibfBSazwTyswT1YAZxgZZP803Ff4abIAt+pQEsivOVTza2RCI9Uie4E/5D6PtbqM/9qhM= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:17 +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:09:17 +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 11/24] EDAC, mc: Rework edac_raw_mc_handle_error() to use struct dimm_info Thread-Topic: [PATCH v2 11/24] EDAC, mc: Rework edac_raw_mc_handle_error() to use struct dimm_info Thread-Index: AQHVKp7LH4BzYmX+0kOgmnuIJiKvpw== Date: Mon, 24 Jun 2019 15:09:17 +0000 Message-ID: <20190624150758.6695-12-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: ba94cb3a-ec6d-4c73-5b2c-08d6f8b5ed60 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: ooK+K5j9JPaaRMMaVHI5I6EhsJov3REDgW/7xXcXpuYxoReYfItvbKIn4ESPGPy2OoiNpItzw3dESrx+voDrMdpjTX3RxalKMkxvUxseos/2YdCKz+Si1o5Wbns1NR32/C6KuxR6VjarpsQ79t9+IRlY/i5lzkabzqJakuE+cKYl5th26Ij2Ih/iO5I5yP/NEc2DQlPgKIi7gXhTuNFhLDvVbs/k5x85PJAJ75slOCMsMhZkQm2MYRNVEUPaztjKtpewS4aqtl0m7UBIla+xKhrJulRksV5+jz1hNCgvdChYuMCzWyUbS+6PyL8uYBR4yPByyDOx1GG+RFyyCHBJ9/kgo5nDnXHpA/G4JBbvRfat5fKr0uqu8WmRvykIcAxZTwbeynupXnfA+2zGEziKBChs75kuxxyMtaHpFUmaKxg= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: ba94cb3a-ec6d-4c73-5b2c-08d6f8b5ed60 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:17.7086 (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: MN2PR18MB3197 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 Rework edac_raw_mc_handle_error() to use struct dimm_info. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 28 +++++++++++++--------------- drivers/edac/edac_mc.h | 2 ++ drivers/edac/ghes_edac.c | 5 ++++- 3 files changed, 19 insertions(+), 16 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index bce39b2e10c9..a8d4471e238c 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -889,11 +889,9 @@ const char *edac_layer_name[] = { EXPORT_SYMBOL_GPL(edac_layer_name); static void edac_inc_ce_error(struct mem_ctl_info *mci, - const int pos[EDAC_MAX_LAYERS], + struct dimm_info *dimm, const u16 count) { - struct dimm_info *dimm = edac_get_dimm(mci, pos[0], pos[1], pos[2]); - mci->ce_mc += count; if (dimm) @@ -903,11 +901,9 @@ static void edac_inc_ce_error(struct mem_ctl_info *mci, } static void edac_inc_ue_error(struct mem_ctl_info *mci, - const int pos[EDAC_MAX_LAYERS], - const u16 count) + struct dimm_info *dimm, + const u16 count) { - struct dimm_info *dimm = edac_get_dimm(mci, pos[0], pos[1], pos[2]); - mci->ue_mc += count; if (dimm) @@ -917,8 +913,8 @@ static void edac_inc_ue_error(struct mem_ctl_info *mci, } static void edac_ce_error(struct mem_ctl_info *mci, + struct dimm_info *dimm, const u16 error_count, - const int pos[EDAC_MAX_LAYERS], const char *msg, const char *location, const char *label, @@ -946,7 +942,7 @@ static void edac_ce_error(struct mem_ctl_info *mci, error_count, msg, msg_aux, label, location, detail); } - edac_inc_ce_error(mci, pos, error_count); + edac_inc_ce_error(mci, dimm, error_count); if (mci->scrub_mode == SCRUB_SW_SRC) { /* @@ -970,8 +966,8 @@ static void edac_ce_error(struct mem_ctl_info *mci, } static void edac_ue_error(struct mem_ctl_info *mci, + struct dimm_info *dimm, const u16 error_count, - const int pos[EDAC_MAX_LAYERS], const char *msg, const char *location, const char *label, @@ -1005,15 +1001,15 @@ static void edac_ue_error(struct mem_ctl_info *mci, msg, msg_aux, label, location, detail); } - edac_inc_ue_error(mci, pos, error_count); + edac_inc_ue_error(mci, dimm, error_count); } void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, struct mem_ctl_info *mci, + struct dimm_info *dimm, struct edac_raw_error_desc *e) { char detail[80]; - int pos[EDAC_MAX_LAYERS] = { e->top_layer, e->mid_layer, e->low_layer }; u8 grain_bits; /* @@ -1038,7 +1034,7 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, "page:0x%lx offset:0x%lx grain:%ld syndrome:0x%lx", e->page_frame_number, e->offset_in_page, e->grain, e->syndrome); - edac_ce_error(mci, e->error_count, pos, e->msg, e->location, + edac_ce_error(mci, dimm, e->error_count, e->msg, e->location, e->label, detail, e->other_detail, e->page_frame_number, e->offset_in_page, e->grain); } else { @@ -1046,7 +1042,7 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, "page:0x%lx offset:0x%lx grain:%ld", e->page_frame_number, e->offset_in_page, e->grain); - edac_ue_error(mci, e->error_count, pos, e->msg, e->location, + edac_ue_error(mci, dimm, e->error_count, e->msg, e->location, e->label, detail, e->other_detail); } @@ -1212,6 +1208,8 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, if (p > e->location) *(p - 1) = '\0'; - edac_raw_mc_handle_error(type, mci, e); + dimm = edac_get_dimm(mci, top_layer, mid_layer, low_layer); + + edac_raw_mc_handle_error(type, mci, dimm, e); } EXPORT_SYMBOL_GPL(edac_mc_handle_error); diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h index 4165e15995ad..b816cf3caaee 100644 --- a/drivers/edac/edac_mc.h +++ b/drivers/edac/edac_mc.h @@ -214,6 +214,7 @@ extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, * * @type: severity of the error (CE/UE/Fatal) * @mci: a struct mem_ctl_info pointer + * @dimm: a struct dimm_info pointer * @e: error description * * This raw function is used internally by edac_mc_handle_error(). It should @@ -222,6 +223,7 @@ extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, */ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, struct mem_ctl_info *mci, + struct dimm_info *dimm, struct edac_raw_error_desc *e); /** diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 757a02f2ce49..786f1b32eee1 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -193,6 +193,7 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) { + struct dimm_info *dimm_info; enum hw_event_mc_err_type type; struct edac_raw_error_desc *e; struct mem_ctl_info *mci; @@ -431,7 +432,9 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) if (p > pvt->other_detail) *(p - 1) = '\0'; - edac_raw_mc_handle_error(type, mci, e); + dimm_info = edac_get_dimm_by_index(mci, e->top_layer); + + edac_raw_mc_handle_error(type, mci, dimm_info, e); spin_unlock_irqrestore(&ghes_lock, flags); } From patchwork Mon Jun 24 15:09:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167624 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4349066ilk; Mon, 24 Jun 2019 08:10:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqykOId11XmAHPGui56ESFw7qrcetoctIkJJoInDGXO2PBab8vvjv+cG/Si6nDPD6Jq0jMN7 X-Received: by 2002:a17:90a:a09:: with SMTP id o9mr25372933pjo.95.1561389039858; Mon, 24 Jun 2019 08:10:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389039; cv=none; d=google.com; s=arc-20160816; b=iDsIybjcAMU9iyV11bM3eHlR8CPtyICks5UH5JHfxNkCYtOvBSHzMRdtbswqrQkX4U /2Cli1nF9TfxIuHDdZiMiQyJ7v3SVsXpNVJh6qhFQUdmSD/dfaZBRjwt4FUyp2hcXidB kgf07vj4jvCrI3vf8Y+HsqdOj0d1aYCd9mflG2kYUPdwic0vdZzunwnDFgQMsESR2X/0 s5Cr5fp/ZX85l/ZO6/N1d8E8zd5pkERECloQqtXE+CJ+K9hvcTuG2PNhb0QrqVjRdgYI ztZDHkqiuIXjR+QFpsecntdINbnvcr0BvmKrmUefccydA4cdFnLHyqNkBUWZXg3mB+Lu sSxw== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=FklElvgedlxDHmIG/ABCr6f2J/sCXfLx67VSbR25Q5o=; b=y51xYptRw6S6KnjNpaVU9X/Q9M5MmnNckQF/RslSTBDFYbAKgTjEhBzzQ9uDO9edt4 Km60dO11M1e6EGLCjMz8xwVW02oq0GF8kTRFhx8VI24kt+FU9RJcOlnEN9+WTAnchCDK hv+aOoiZFg79rMF+ZwwhALl3EMuAfBEHv4NjpH87euvPYMi7IvaxJzeIhZKmpQGbvNih dXJorLNftYuq+KIOxTnYJKqPSyvI18gHg6f1tonofrMrTA2+ElhNU/g+3SgpFtFBKiWK BQmspp388c1WEFS75xnuyKJWOGNjD7tq4V23RDYlXUKbAw3Z0c8A83AWRhaaSsXUOHWT O0Iw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=EHawC+34; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b="f0aML//0"; 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 t17si11531093pjw.99.2019.06.24.08.10.39; Mon, 24 Jun 2019 08:10:39 -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=EHawC+34; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b="f0aML//0"; 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 S1731117AbfFXPKh (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:37 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:54722 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730364AbfFXPJ3 (ORCPT ); Mon, 24 Jun 2019 11:09:29 -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 x5OF8CWO025874; Mon, 24 Jun 2019 08:09:24 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=FklElvgedlxDHmIG/ABCr6f2J/sCXfLx67VSbR25Q5o=; b=EHawC+34zHZyx9xY2E33vW2QkorXflFdB/Xk+MElQgmu4KvyLxah/zO9pxlNmpQGSjbT k3+4cyqmup+3Ot6DqM6rDEhXZaENEAOi1szUcKu56PW+buAchcvvzHl0Vt0u8dSis1/I xmmANyNComb5pYC6WtctK5FQ6VsNCFRSOjIH2xB6P2JvLaeT07pBMlMD77qhZY+Kts+E jzsXReRtLHOvYAJQYugaYgARYg63D93+QI2DPfSxR+7XkN/mE5b0T5LH2oUfTYdMJP1n 6BcV/hSwMop6CwIIB5wCpUPSmrmjID3HZXvrm82OBFf8bYkBR5BSD/MoOqkftnFLc3LI AA== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7t7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:24 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:22 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.58) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:22 -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=FklElvgedlxDHmIG/ABCr6f2J/sCXfLx67VSbR25Q5o=; b=f0aML//0mcuYNI7tE1UyNsEyDi/jMOU7HayahASor8+9fzTaTk5tkilJtN0c99s9P1QGWQ95V88evLSH92rOCIYIn6IvBVrTuX+PAUyZqwFkU3vz3xUytF713UMCx8C40vesguuDN8lsdImYGKrtyrj+zT3yhDZfJfBa0TtXQs8= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:20 +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:09:20 +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 12/24] EDAC, ghes: Use standard kernel macros for page calculations Thread-Topic: [PATCH v2 12/24] EDAC, ghes: Use standard kernel macros for page calculations Thread-Index: AQHVKp7MsQEaEpqGeEG+xGBTWNT6kw== Date: Mon, 24 Jun 2019 15:09:19 +0000 Message-ID: <20190624150758.6695-13-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 7f0715b6-9e29-4e7b-2e44-08d6f8b5ee71 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1775; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(4744005)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: c2/rqZ0PLIGnyy06a1C904OAxaeVBVSN2vTZtlq0lMlQS/rebaivybftuwZhd1kgLN4dUMLTgBBqBbSOpZGEyecqkabDBkPBhE4qGzQw8gVPDyc1DpegTSr5QFcaK4qGX/YT8jrGIFaePn5royywHS/ChiWyarJ26tdcVPXSEZfYlv0FJnL0jO67/8i0+nCVVeDU837qbSUCKsQ8XALXatbgOT+6swixCI432H1d9BJI50PwkDw42aQFZG1JDZunfeBkjuRRJqfoeWDEKlUOVCk2X+fwSbUci/MXO4aGXS7g6HwHiFUJdmM2niaon6gQR/9V+qRPcPBRFG1oyBeVike4HoZqt6GzMJUF8cv+VMrO+6V5UINbBeU6ors8ugYFGRggCN3HyColzyEM+XzAa7qdCp1UCHSyTsaqyvYkTwo= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 7f0715b6-9e29-4e7b-2e44-08d6f8b5ee71 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:20.0173 (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: MN2PR18MB3197 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 Use standard macros for page calculations. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.20.1 Reviewed-by: James Morse Reviewed-by: tag. Sorry for not adding it, I will do that in the diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 786f1b32eee1..746083876b5f 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -311,8 +311,8 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) /* Error address */ if (mem_err->validation_bits & CPER_MEM_VALID_PA) { - e->page_frame_number = mem_err->physical_addr >> PAGE_SHIFT; - e->offset_in_page = mem_err->physical_addr & ~PAGE_MASK; + e->page_frame_number = PHYS_PFN(mem_err->physical_addr); + e->offset_in_page = offset_in_page(mem_err->physical_addr); } /* Error grain */ From patchwork Mon Jun 24 15:09:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167609 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347707ilk; Mon, 24 Jun 2019 08:09:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqx/f1ZKV0QdnfVDmV4vHp867AWpR0EDa54OSLOAtmqm6dSgne65VmhoyTgilP9aRxTMZHl1 X-Received: by 2002:a63:9e53:: with SMTP id r19mr25047529pgo.442.1561388977404; Mon, 24 Jun 2019 08:09:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388977; cv=none; d=google.com; s=arc-20160816; b=ESyCDXL4oIExxu9OIs76nyExE75yY8ntnJDtGA2Q+zO8nQ2qac9SLm6ljEklpGgMyP IFucT0YSq60d4bWhHRJKdd7lzM83OGwZzK+9FvE3Bma4BPsG+s5oYDOD0aCsWQ/+yJOg +c74GgYRpDRDulv1pcCGGJV08nmR6e7l3PdJN17UzARjitEfLXzZ8XSAm38PHy6ENHXa 6Q4t2ieV57l/Kbiiv6qc4esbp7Yv/dryyNBZl9na2rCcrwr7RJIxq6UZl0rfEGgmB/8s TfYtNwhzLYJUrIyCbk7ae7BHW6IOAIoGVJEjj7lxNWkRxfnCXFgdptcUkRcDP+ZsofVT MotA== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=xm2a27qAk/BaWT78UTBGSNLc+nJGfzMzTPzfeO+4NU4=; b=Xox27oaaxN/IZbF/mpKhuP6LyuJ8LcLVWWkJgCr2XQNHDroMc6Ke9wVWwVzBSLnMiE EoWaAz3xoTugRlQWThyg5VJAktsAkYFK58EtENY9pa61IAGl0HS+NGsdlf/AAx6wK/FM ByzHy3wknnYf1lk9CwMNt3EYW8P47tZaUuSxQ3b8ZYSJDCASW+UtCR4svZ3ChWcfDP89 wwp3GmTPltxCt6YLAkIfHNS22jMKCzHxieE8DutOsyczVyZIJj1Rqq70qCnif94OLmIO 0t8zYkaSf5en07tr2l4bbhi1ah/x2S+Y5CdGm2xauGhlzb3kqOK7FoS/wzK9E3MnwFuD +zbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=g992ynDv; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=QR8gYiHC; 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 az12si10124027plb.165.2019.06.24.08.09.37; Mon, 24 Jun 2019 08:09:37 -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=g992ynDv; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=QR8gYiHC; 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 S1730708AbfFXPJf (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:35 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:62956 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730576AbfFXPJa (ORCPT ); Mon, 24 Jun 2019 11:09:30 -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 x5OF8CWP025874; Mon, 24 Jun 2019 08:09:24 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=xm2a27qAk/BaWT78UTBGSNLc+nJGfzMzTPzfeO+4NU4=; b=g992ynDvCaIzK0jsrx3ivFvBnzSUA6wGzdO++xP4VN0hEJm+HJIz29z6rpU+M23B7UrQ p693Vd3ug5tc0sC3oudlaQjkq21AiqdfHicUnzI9Im8/swEld/duXCekekBkeFqfOc10 Odo1dpgDh6MrvfSnHaHaFi2P0DXRf8LBbLuX9XAfBjQ5Unc8jz2i1iya9UpjcK4DntQC 2amKkxmynNlNx0mx+MiOlb5cS916FkmaIzOH0emyPPtOdyBkfMWm6m12V+lXUsYSu0IM 7TfFov2pCNWuE+onK6egKahkG3ceIubcuhT9etx/fIQWelTpplx0tfNVEmJXiycMTZOt ZQ== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7t7-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:24 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:23 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.58) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:23 -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=xm2a27qAk/BaWT78UTBGSNLc+nJGfzMzTPzfeO+4NU4=; b=QR8gYiHCJ/CuGI8uCeqzZXZTkMsDlZSWxoZXi+W/yPotRwKg0p1/ArOzMR18jU8JIYUpYiVXIxjdezJrY7dtWDIY7a6/36xUjWqlxijWyNbm/5nvuj5oBTJ4BPSiL181hkGhE9yCl31RnuAdTgJn4LNrFPTZpLre96PjgdmR22Q= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:22 +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:09:22 +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 13/24] EDAC, ghes: Add support for legacy API counters Thread-Topic: [PATCH v2 13/24] EDAC, ghes: Add support for legacy API counters Thread-Index: AQHVKp7NCU80sqh790Onv0iU1Olm1Q== Date: Mon, 24 Jun 2019 15:09:22 +0000 Message-ID: <20190624150758.6695-14-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: bbf0ae92-7722-4e57-ab32-08d6f8b5eff6 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: 4IpL94XpVy4zbOSbo1UveI0rsSP8Mbi090fbyIcNW4xPi1wOwwdlTmF+E33+cX3z3uHuAGoWkniRFBAaV+zrh0Iw6OY5R4TpvGnF7R2T0wv5vjW1SdRhbcpHq82zlmJGc2RsTSx5Ci8Y6bWwHIllatEv2mXzug5xdGdLliZzFnfIIRF38+DAibJTXtYC3mP6oHgoXxju3TeEHwwdC8uEkPjLmQFtNgxdVRSssiAZ+B646g1tqCEn6bv92JOup0tM+IRGibjosmSBVcZ02KhWWB0CR2G4cJqyaMIbqICkcFSDhweXgB7i6Ft1eG2EtxhFE42KXnTmRxT/7Rs/jDhvUQ6BuxAdcMyjxadWvHxElSoxawC3fzT0AMdVE0ld4eV6S9TXwFNa+ldFso7OHYOeQkoeMXxMmpHV4Giiw0sbW0k= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: bbf0ae92-7722-4e57-ab32-08d6f8b5eff6 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:22.0931 (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: MN2PR18MB3197 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 The ghes driver is not able yet to count legacy API counters in sysfs, e.g.: /sys/devices/system/edac/mc/mc0/csrow2/ce_count /sys/devices/system/edac/mc/mc0/csrow2/ch0_ce_count /sys/devices/system/edac/mc/mc0/csrow2/ch1_ce_count Make counting csrows/channels generic so that the ghes driver can use it too. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 38 +++++++++++++++++++++----------------- drivers/edac/edac_mc.h | 7 ++++++- drivers/edac/ghes_edac.c | 2 +- 3 files changed, 28 insertions(+), 19 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index a8d4471e238c..eea09c6acd3e 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -1007,7 +1007,8 @@ static void edac_ue_error(struct mem_ctl_info *mci, void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, struct mem_ctl_info *mci, struct dimm_info *dimm, - struct edac_raw_error_desc *e) + struct edac_raw_error_desc *e, + int row, int chan) { char detail[80]; u8 grain_bits; @@ -1046,7 +1047,22 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, e->label, detail, e->other_detail); } + /* old API's counters */ + if (dimm) { + row = dimm->csrow; + chan = dimm->cschannel; + } + if (mci->csrows && row >= 0) { + if (type == HW_EVENT_ERR_CORRECTED) { + mci->csrows[row]->ce_count += e->error_count; + if (chan >= 0) + mci->csrows[row]->channels[chan]->ce_count += e->error_count; + } else { + mci->csrows[row]->ue_count += e->error_count; + } + edac_dbg(4, "csrow/channel to increment: (%d,%d)\n", row, chan); + } } EXPORT_SYMBOL_GPL(edac_raw_mc_handle_error); @@ -1177,22 +1193,10 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, } } - if (!per_layer_report) { + if (!per_layer_report) strcpy(e->label, "any memory"); - } else { - edac_dbg(4, "csrow/channel to increment: (%d,%d)\n", row, chan); - if (p == e->label) - strcpy(e->label, "unknown memory"); - if (type == HW_EVENT_ERR_CORRECTED) { - if (row >= 0) { - mci->csrows[row]->ce_count += error_count; - if (chan >= 0) - mci->csrows[row]->channels[chan]->ce_count += error_count; - } - } else - if (row >= 0) - mci->csrows[row]->ue_count += error_count; - } + else if (!*e->label) + strcpy(e->label, "unknown memory"); /* Fill the RAM location data */ p = e->location; @@ -1210,6 +1214,6 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, dimm = edac_get_dimm(mci, top_layer, mid_layer, low_layer); - edac_raw_mc_handle_error(type, mci, dimm, e); + edac_raw_mc_handle_error(type, mci, dimm, e, row, chan); } EXPORT_SYMBOL_GPL(edac_mc_handle_error); diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h index b816cf3caaee..c4ddd5c1e24c 100644 --- a/drivers/edac/edac_mc.h +++ b/drivers/edac/edac_mc.h @@ -216,6 +216,10 @@ extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, * @mci: a struct mem_ctl_info pointer * @dimm: a struct dimm_info pointer * @e: error description + * @row: csrow hint if there is no dimm info (<0 if + * unknown) + * @chan: cschannel hint if there is no dimm info (<0 if + * unknown) * * This raw function is used internally by edac_mc_handle_error(). It should * only be called directly when the hardware error come directly from BIOS, @@ -224,7 +228,8 @@ extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, struct mem_ctl_info *mci, struct dimm_info *dimm, - struct edac_raw_error_desc *e); + struct edac_raw_error_desc *e, + int row, int chan); /** * edac_mc_handle_error() - Reports a memory event to userspace. diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 746083876b5f..8063996a311d 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -434,7 +434,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) dimm_info = edac_get_dimm_by_index(mci, e->top_layer); - edac_raw_mc_handle_error(type, mci, dimm_info, e); + edac_raw_mc_handle_error(type, mci, dimm_info, e, -1, -1); spin_unlock_irqrestore(&ghes_lock, flags); } From patchwork Mon Jun 24 15:09:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167622 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348856ilk; Mon, 24 Jun 2019 08:10:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqyCX3WI1zTcO59pkJrMtS/etGZlhPJKDtT5yZo1TSGAk3f8klJhvyoiwVgXEaJYSPrh0VzA X-Received: by 2002:a17:902:9688:: with SMTP id n8mr66110294plp.227.1561389030286; Mon, 24 Jun 2019 08:10:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389030; cv=none; d=google.com; s=arc-20160816; b=AhdZinVahs4lfLV87OC4pWgbtz5Z3j+iFUexJ0+Wut6tPFyk0EwoxBvQjC84dnQPxu nzM66BPfg40Y0RWDCNbiy5IvCULttAy1dYaiGvJoq4o8UQC4yjLcsKs1FpqhUwzsPUzK 7er5bGTvhPBBFpA/7xzAB2wts7uEm9Xfm+hNSPcW4HFjhtZQ6DOIdTl7GYCFJp6RpVB8 ficlMFIJ+E/BOlqI7knK4C8U+/Rw7YyTWwvBf6VFu8BPoYBWJi8jeVyVwehfNTaz+uMg xrX1TtG76E5lUqj7DwXCLMZ0Kumt5zmYF5CNqAh749ckVeGAc2ejFkbLgKEa04goXArJ cfJQ== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=bfflnRYpDvVdGA7neySELZzZvsBkLFBVWu6IDjZu6HQ=; b=pmW36rdXaQ9t28hQRg4/EOxa40jWKRM3x7AbSTaZzFWjAcQ+tQJgeA/QklPc2LLxAV oEHIgtADv8CwxdSBb9xAM0k9/6BxIb5c3EqlV12RUDG2yoEVe+TB80EoX5LPDaN9SmAL lPChvPsKE7hE9syx7sQvVGyzqQxtdy51jSvgBrgz0xs7pD+EQ/MkeWg/1RHrf8j7LPRx QtWp44RvVIadLBcQCPPKTc2YrLfaY/bePtomu/uy02lRomkg+6zsYCFtLt3xx9JGTBrj GyTDblf7uvRbmOO0FQbAIWiM8JMboqac6gd0GCu7D8fHpHlGw2/QQ0M3AYbF/26gZIVH rE8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=M5rHCx7J; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=m91mrY0i; 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 a14si11359572pfo.37.2019.06.24.08.10.29; Mon, 24 Jun 2019 08:10:30 -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=M5rHCx7J; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=m91mrY0i; 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 S1731101AbfFXPK2 (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:28 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:21666 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730643AbfFXPJd (ORCPT ); Mon, 24 Jun 2019 11:09:33 -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 x5OF8C7s025877; Mon, 24 Jun 2019 08:09:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=bfflnRYpDvVdGA7neySELZzZvsBkLFBVWu6IDjZu6HQ=; b=M5rHCx7JR5QPTrHc/KvthGz447imA11rIgVvZ3UDz/YuDDmnpIu0h2ZNWeLTRM7qmMvS JvKn7gRNHYq4SqR44NDhbn+Bg1OCQwKTgfPe0hwTbXtptobZSU4np69w1SJxaMJOmGdM rVxU7jxWB38JrN2RMllxdsPkAyoS3JEu8PWz7oprLdCyezzHpcfBxhkzeVZP3Yjv8zQU 1A9yZHD3ZZIkg6uct/jGZPMOzpVCwMe1ncTdf38QJaGWKy6GAYK74xdWsd0q2IqbkGz8 04dZDClUonaZiur5n6uH9UVBtDY+0Ix4MbH2WzLKAVdY7LYRT4/tLMxvEiQakmagNwis vQ== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7tc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:27 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:25 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.57) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:25 -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=bfflnRYpDvVdGA7neySELZzZvsBkLFBVWu6IDjZu6HQ=; b=m91mrY0ixUbxvGes4T3rUlpAEQr8fxz8N1Bvp1j+b5619HSlvZkkQ5eTe+53gf3Qz6UuRdOzYqA/pgqQVbDzpVUMgLgAbGi7+DUBFBPFp5N2CdOk6QvcePEJgkQLO/jg0Pw/Q0YiGeiGN3ZHbIDVBMFLpERjjf7cY01LEcar+LE= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:24 +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:09:24 +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 14/24] EDAC, ghes: Rework memory hierarchy detection Thread-Topic: [PATCH v2 14/24] EDAC, ghes: Rework memory hierarchy detection Thread-Index: AQHVKp7OqLehG2JpFEKKkNY8azlMkA== Date: Mon, 24 Jun 2019 15:09:24 +0000 Message-ID: <20190624150758.6695-15-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 33b5620a-03bc-4669-fbc2-08d6f8b5f10c x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:595; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: rzO0p7EwJrw7BOx7OMR/vQsF9Sa9GO43xtMhXl1mTrHnxTaxL9Krh6p/6NCCN4JFcYaXUEEb76rpDyLycNNTtlk19WUY6am/2OPTVm7i2U7SACskU6wHybKluqWRpFaF3HjN9liYdX/JrQhUCQghxj542KE6Zv9yzFFF9OwFd3WjoZ0wFduWM/xI6P637zuUv2GkyrzgX0hOKT5K4+mfNz9vVJLSp+dGzFAuS4O9Q5uizGJL3PZ35yw6vnQ94tVxQLbrBMCtTMCUEvXlb4dwyFVczADVYqqqUr6m9/rWr2ShezprOPkXSj+LoU8nqogOKwPshwMaNKK0JNo70EV2uO1lf+F0G6Nyh+Ah9KPFnvHhJ34RDJT2hOWdi2+9dxhHGLaYaBXLxcnV5uq/1zbHrX5MOR3scY32vix5dUO7jc8= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 33b5620a-03bc-4669-fbc2-08d6f8b5f10c X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:24.0630 (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: MN2PR18MB3197 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 In a later patch we want to add more information about the memory hierarchy (NUMA topology, DIMM label information). Rework memory hierarchy detection to make the code extendable for this. The general approach is roughly like: mem_info_setup(); for_each_node(nid) { mci = edac_mc_alloc(nid); mem_info_prepare_mci(mci); edac_mc_add_mc(mci); }; This patch introduces mem_info_setup() and mem_info_prepare_mci(). All data of the memory hierarchy is collected in a local struct ghes_mem_info. Note: Per (NUMA) node registration will be implemented in a later patch. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 166 ++++++++++++++++++++++++++++++--------- 1 file changed, 127 insertions(+), 39 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 8063996a311d..44bfb499b147 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -65,17 +65,53 @@ struct memdev_dmi_entry { u16 conf_mem_clk_speed; } __attribute__((__packed__)); -struct ghes_edac_dimm_fill { - struct mem_ctl_info *mci; - unsigned count; +struct ghes_dimm_info { + struct dimm_info dimm_info; + int idx; +}; + +struct ghes_mem_info { + int num_dimm; + struct ghes_dimm_info *dimms; }; +static struct ghes_mem_info mem_info; + +#define for_each_dimm(dimm) \ + for (dimm = mem_info.dimms; \ + dimm < mem_info.dimms + mem_info.num_dimm; \ + dimm++) + static void ghes_edac_count_dimms(const struct dmi_header *dh, void *arg) { - int *num_dimm = arg; + int *num = arg; if (dh->type == DMI_ENTRY_MEM_DEVICE) - (*num_dimm)++; + (*num)++; +} + +static int ghes_dimm_info_init(int num) +{ + struct ghes_dimm_info *dimm; + int idx = 0; + + memset(&mem_info, 0, sizeof(mem_info)); + + if (num <= 0) + return -EINVAL; + + mem_info.dimms = kcalloc(num, sizeof(*mem_info.dimms), GFP_KERNEL); + if (!mem_info.dimms) + return -ENOMEM; + + mem_info.num_dimm = num; + + for_each_dimm(dimm) { + dimm->idx = idx; + idx++; + } + + return 0; } static int get_dimm_smbios_index(u16 handle) @@ -92,18 +128,15 @@ static int get_dimm_smbios_index(u16 handle) static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) { - struct ghes_edac_dimm_fill *dimm_fill = arg; - struct mem_ctl_info *mci = dimm_fill->mci; - if (dh->type == DMI_ENTRY_MEM_DEVICE) { + int *idx = arg; struct memdev_dmi_entry *entry = (struct memdev_dmi_entry *)dh; - struct dimm_info *dimm = edac_get_dimm(mci, dimm_fill->count, - 0, 0); + struct ghes_dimm_info *mi = &mem_info.dimms[*idx]; + struct dimm_info *dimm = &mi->dimm_info; u16 rdr_mask = BIT(7) | BIT(13); if (entry->size == 0xffff) { - pr_info("Can't get DIMM%i size\n", - dimm_fill->count); + pr_info("Can't get DIMM%i size\n", mi->idx); dimm->nr_pages = MiB_TO_PAGES(32);/* Unknown */ } else if (entry->size == 0x7fff) { dimm->nr_pages = MiB_TO_PAGES(entry->extended_size); @@ -177,7 +210,7 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) if (dimm->nr_pages) { edac_dbg(1, "DIMM%i: %s size = %d MB%s\n", - dimm_fill->count, edac_mem_types[dimm->mtype], + mi->idx, edac_mem_types[dimm->mtype], PAGES_TO_MiB(dimm->nr_pages), (dimm->edac_mode != EDAC_NONE) ? "(ECC)" : ""); edac_dbg(2, "\ttype %d, detail 0x%02x, width %d(total %d)\n", @@ -187,10 +220,74 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) dimm->smbios_handle = entry->handle; - dimm_fill->count++; + (*idx)++; } } +static int mem_info_setup(void) +{ + int num = 0; + int idx = 0; + int ret; + + /* Get the number of DIMMs */ + dmi_walk(ghes_edac_count_dimms, &num); + + ret = ghes_dimm_info_init(num); + if (ret) + return ret; + + dmi_walk(ghes_edac_dmidecode, &idx); + + return 0; +} + +static int mem_info_setup_fake(void) +{ + struct dimm_info *dimm; + int ret; + + ret = ghes_dimm_info_init(1); + if (ret) + return ret; + + dimm = &mem_info.dimms->dimm_info; + dimm->nr_pages = 1; + dimm->grain = 128; + dimm->mtype = MEM_UNKNOWN; + dimm->dtype = DEV_UNKNOWN; + dimm->edac_mode = EDAC_SECDED; + + return 0; +} + +static void mem_info_prepare_mci(struct mem_ctl_info *mci) +{ + struct dimm_info *mci_dimm, *dmi_dimm; + struct ghes_dimm_info *dimm; + int index = 0; + + for_each_dimm(dimm) { + dmi_dimm = &dimm->dimm_info; + mci_dimm = edac_get_dimm_by_index(mci, index); + + index++; + if (index > mci->tot_dimms) + break; + + mci_dimm->nr_pages = dmi_dimm->nr_pages; + mci_dimm->mtype = dmi_dimm->mtype; + mci_dimm->edac_mode = dmi_dimm->edac_mode; + mci_dimm->dtype = dmi_dimm->dtype; + mci_dimm->grain = dmi_dimm->grain; + mci_dimm->smbios_handle = dmi_dimm->smbios_handle; + } + + if (index != mci->tot_dimms) + pr_warn("Unexpected number of DIMMs: %d (exp. %d)\n", + index, mci->tot_dimms); +} + void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) { struct dimm_info *dimm_info; @@ -450,10 +547,9 @@ static struct acpi_platform_list plat_list[] = { int ghes_edac_register(struct ghes *ghes, struct device *dev) { bool fake = false; - int rc, num_dimm = 0; + int rc; struct mem_ctl_info *mci; struct edac_mc_layer layers[1]; - struct ghes_edac_dimm_fill dimm_fill; int idx = -1; if (IS_ENABLED(CONFIG_X86)) { @@ -471,22 +567,24 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) if (atomic_inc_return(&ghes_init) > 1) return 0; - /* Get the number of DIMMs */ - dmi_walk(ghes_edac_count_dimms, &num_dimm); - - /* Check if we've got a bogus BIOS */ - if (num_dimm == 0) { + rc = mem_info_setup(); + if (rc == -EINVAL) { + /* we've got a bogus BIOS */ fake = true; - num_dimm = 1; + rc = mem_info_setup_fake(); + } + if (rc < 0) { + pr_err("Can't allocate memory for DIMM data\n"); + return rc; } layers[0].type = EDAC_MC_LAYER_ALL_MEM; - layers[0].size = num_dimm; + layers[0].size = mem_info.num_dimm; layers[0].is_virt_csrow = true; mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(struct ghes_edac_pvt)); if (!mci) { - pr_info("Can't allocate memory for EDAC data\n"); + pr_err("Can't allocate memory for EDAC data\n"); return -ENOMEM; } @@ -512,26 +610,14 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) pr_info("So, the end result of using this driver varies from vendor to vendor.\n"); pr_info("If you find incorrect reports, please contact your hardware vendor\n"); pr_info("to correct its BIOS.\n"); - pr_info("This system has %d DIMM sockets.\n", num_dimm); + pr_info("This system has %d DIMM sockets.\n", mem_info.num_dimm); } - if (!fake) { - dimm_fill.count = 0; - dimm_fill.mci = mci; - dmi_walk(ghes_edac_dmidecode, &dimm_fill); - } else { - struct dimm_info *dimm = edac_get_dimm(mci, 0, 0, 0); - - dimm->nr_pages = 1; - dimm->grain = 128; - dimm->mtype = MEM_UNKNOWN; - dimm->dtype = DEV_UNKNOWN; - dimm->edac_mode = EDAC_SECDED; - } + mem_info_prepare_mci(mci); rc = edac_mc_add_mc(mci); if (rc < 0) { - pr_info("Can't register at EDAC core\n"); + pr_err("Can't register at EDAC core\n"); edac_mc_free(mci); return -ENODEV; } @@ -548,4 +634,6 @@ void ghes_edac_unregister(struct ghes *ghes) mci = ghes_pvt->mci; edac_mc_del_mc(mci->pdev); edac_mc_free(mci); + + kfree(mem_info.dimms); } From patchwork Mon Jun 24 15:09:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167610 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347782ilk; Mon, 24 Jun 2019 08:09:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqxOm8HGHqreCLqyARML7t7Z2PbihSbWZ5zpOMiqQOfLFHzA8ZF5XI0CUxCYd9mp+LiA0rZF X-Received: by 2002:a17:902:4b:: with SMTP id 69mr3381272pla.89.1561388981114; Mon, 24 Jun 2019 08:09:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388981; cv=none; d=google.com; s=arc-20160816; b=iEm4dEGYm3NpLyiVQRR4jxuMk+cei4a4Zu8/8+TZ2KLMXCc3yTVyHTjuvL5aOe4l9w vY58hYiZE2BDulaPqNiSIqLQ4c9ZTGVktZuLnlGa9XMldDK2ILhcKppl7Ya/Qxy+ZC1E eaygbFycNO8eTrvTIICoCVEH1J8HSPUWbsYwbel1abZH7SPNtZnMyA7tdn9atfSl/cd1 zf6niEkivRa7PTgVBIDTm6spO7q053ztwXH8mG34S/KAKsMkLkW/ZMxEQYh7Z+uenaKD 8LoOfKJBrcGptjUgNMaMVw6NGAwLOT++kbveygKLqTW1NsVYgqz552xzHc42YHsZxPGU x2Gw== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=fGiKqzPfUc9AXTHSQs9EVcWX6jy3P7JI7GKuDwheurI=; b=wKXvVP/XOmQv/wbHv4YkACcqfWsUUiLc5DdQmLL6mUfiVXlsJgTvHd1hIukFnUgXoX Ec9lCC/cy9rxFXakPa/lZAR41lVFIUtm+g/Ewgg50/JQ1I1ql6y9Uh/Pfmax6+AQVe0N tnPlAunzIjkcGlk9eDON7HfkTinj7uuLeQl6L9e5MHv4sjqYdv9fI9mvm05jeIzOY0uf QnG6mDAj8hhAvEDk3x1XcN38S4L+ZAbPU/G5R1Szqsc9NEwz+gbAJK7wOzIhUjcHxYO9 bzpqYAt4nv04RrlV+6Dy0zFUBmmJWMehAfEV0TmiJ8awWgoIalLPtlBwDVxHgEWgOEuz J4rQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=CKgBRbYA; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=X8AieWew; 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 j1si10963534pfr.52.2019.06.24.08.09.40; Mon, 24 Jun 2019 08:09:41 -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=CKgBRbYA; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=X8AieWew; 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 S1730739AbfFXPJj (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:39 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:62922 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730682AbfFXPJf (ORCPT ); Mon, 24 Jun 2019 11:09:35 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0720018628; Mon, 24 Jun 2019 08:09:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=fGiKqzPfUc9AXTHSQs9EVcWX6jy3P7JI7GKuDwheurI=; b=CKgBRbYARYn1hUyrxb0dCbUlA+fBle9XyaE7mtHsQAdDczARz4sb13sPLW2fGnzNbr9a 81FLfzSnbZlyqRs6pdEuoiC3oIPLMrc/6Q+aFI11KbdoYrG963yU0bPx38nXlo56uFhD qoL4UT/cweY8L+S/LiQ+JbPSeG7bLVQPj4k+IXmQnrb1nawy/2LUqbfE7IOQatoPaBCG FQU3gTLV5kE7NkgvJemlnBVHaQwCa0Ur8IUvAVSj0tAO9ArqGCEw91PLZ1YS8U8vWOJe 4Xttguaq3Eg9LChUD63/n+ayMsjGGhGEbGu0YsDERkY9vKnG0ORkiXEedHhv5YcBntYg Fw== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9tb6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:27 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:26 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.57) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:26 -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=fGiKqzPfUc9AXTHSQs9EVcWX6jy3P7JI7GKuDwheurI=; b=X8AieWewTvPsg2KjquFqgxlERr3aYybwMejjJy4RaUii+fRytIFor0ZLNz6R2U5seg7BvZ5zS6uw0IHzvtVLKyGA9buoxCqsHNw66OabqSGWKChwajRPZ792bIFKLR3tX4MGFKCNngG/7P01tyG6HU4NFG9IX/jz5d0PUHMo5a4= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:26 +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:09:26 +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 15/24] EDAC, ghes: Extract numa node information for each dimm Thread-Topic: [PATCH v2 15/24] EDAC, ghes: Extract numa node information for each dimm Thread-Index: AQHVKp7PrQ3keExIu02YFGQ2PMgwJg== Date: Mon, 24 Jun 2019 15:09:25 +0000 Message-ID: <20190624150758.6695-16-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: c4a9dddb-7085-4244-8bb2-08d6f8b5f23b x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2887; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: Jk+lQP38n/+InFfn3SYvE+rahkc5CtHtaqlAdTQkcQkdcAWRmdNHNP5me/DZB5vaTMA3IqTNNJrhXsLL/dIt/VEjZXBexQb7RJSg2qU3254Eptzp/Z5RPvvNnM7sqRS+thg8ct2T1GJvV/zEJScL5ur5Jas0gZIAXm/Shes4cNDbJzcrDuEQF+RXMTja8f1SEAV3MUsJsQjJdLYMJIdQp2aaxMsLD8UdXa5pSg/d0xsfVNO1dganmDBfTjzF0HV9CGiN/u75GutuWdS5vyNYcwPsYnBRysG9uGcYQEmbmjDaXM8/jGi98pvRic7iJsy2G4m5o+csj/m+p4HVx4Ko+2q/JlJbDxEBaJA3aFFcMlKIXulK8rurUMz6jzVssXd7YMze+lpSuiZ+wFKYuJESMhtujVDX/aUD02l9u6Wn9kw= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: c4a9dddb-7085-4244-8bb2-08d6f8b5f23b X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:25.9659 (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: MN2PR18MB3197 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 In a later patch we want to have one mc device per node. This patch extracts the numa node information for each dimm. This is done by collecting the physical address ranges from the DMI table (Memory Array Mapped Address - Type 19 of SMBIOS spec). The node information for a physical address is already know to a numa aware system (e.g. by using the ACPI _PXM method or the ACPI SRAT table), so based on the PA we can assign the node id to the dimms. A fallback that disables numa is implemented in case the node information is inconsistent. E.g., on a ThunderX2 system the following node mappings are found based on the DMI table: EDAC DEBUG: mem_info_setup: DIMM0: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM1: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM2: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM3: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM4: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM5: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM6: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM7: Found mem range [0x0000008800000000-0x0000009ffcffffff] on node 0 EDAC DEBUG: mem_info_setup: DIMM8: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM9: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM10: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM11: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM12: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM13: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM14: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 EDAC DEBUG: mem_info_setup: DIMM15: Found mem range [0x0000009ffd000000-0x000000bffcffffff] on node 1 Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 98 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 44bfb499b147..793362bea044 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -65,14 +65,32 @@ struct memdev_dmi_entry { u16 conf_mem_clk_speed; } __attribute__((__packed__)); +/* Memory Array Mapped Address - Type 19 of SMBIOS spec */ +struct memarr_dmi_entry { + u8 type; + u8 length; + u16 handle; + u32 start; + u32 end; + u16 phys_mem_array_handle; + u8 partition_width; + u64 ext_start; + u64 ext_end; +} __attribute__((__packed__)); + struct ghes_dimm_info { struct dimm_info dimm_info; int idx; + int numa_node; + phys_addr_t start; + phys_addr_t end; + u16 phys_handle; }; struct ghes_mem_info { - int num_dimm; + int num_dimm; struct ghes_dimm_info *dimms; + int dimms_per_node[MAX_NUMNODES]; }; static struct ghes_mem_info mem_info; @@ -108,12 +126,52 @@ static int ghes_dimm_info_init(int num) for_each_dimm(dimm) { dimm->idx = idx; + dimm->numa_node = NUMA_NO_NODE; idx++; } return 0; } +static void ghes_edac_set_nid(const struct dmi_header *dh, void *arg) +{ + struct memarr_dmi_entry *entry = (struct memarr_dmi_entry *)dh; + struct ghes_dimm_info *dimm; + phys_addr_t start, end; + int nid; + + if (dh->type != DMI_ENTRY_MEM_ARRAY_MAPPED_ADDR) + return; + + /* only support SMBIOS 2.7+ */ + if (entry->length < sizeof(*entry)) + return; + + if (entry->start == 0xffffffff) + start = entry->ext_start; + else + start = entry->start; + if (entry->end == 0xffffffff) + end = entry->ext_end; + else + end = entry->end; + + if (!pfn_valid(PHYS_PFN(start))) + return; + + nid = pfn_to_nid(PHYS_PFN(start)); + if (nid < 0 || nid >= MAX_NUMNODES || !node_possible(nid)) + nid = NUMA_NO_NODE; + + for_each_dimm(dimm) { + if (entry->phys_mem_array_handle == dimm->phys_handle) { + dimm->numa_node = nid; + dimm->start = start; + dimm->end = end; + } + } +} + static int get_dimm_smbios_index(u16 handle) { struct mem_ctl_info *mci = ghes_pvt->mci; @@ -135,6 +193,8 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) struct dimm_info *dimm = &mi->dimm_info; u16 rdr_mask = BIT(7) | BIT(13); + mi->phys_handle = entry->phys_mem_array_handle; + if (entry->size == 0xffff) { pr_info("Can't get DIMM%i size\n", mi->idx); dimm->nr_pages = MiB_TO_PAGES(32);/* Unknown */ @@ -224,8 +284,23 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) } } +static void mem_info_disable_numa(void) +{ + struct ghes_dimm_info *dimm; + + for_each_dimm(dimm) { + if (dimm->numa_node != NUMA_NO_NODE) + mem_info.dimms_per_node[dimm->numa_node] = 0; + dimm->numa_node = 0; + } + + mem_info.dimms_per_node[0] = mem_info.num_dimm; +} + static int mem_info_setup(void) { + struct ghes_dimm_info *dimm; + bool enable_numa = true; int num = 0; int idx = 0; int ret; @@ -238,6 +313,25 @@ static int mem_info_setup(void) return ret; dmi_walk(ghes_edac_dmidecode, &idx); + dmi_walk(ghes_edac_set_nid, NULL); + + for_each_dimm(dimm) { + if (dimm->numa_node == NUMA_NO_NODE) + enable_numa = false; + else + mem_info.dimms_per_node[dimm->numa_node]++; + + edac_dbg(1, "DIMM%i: Found mem range [%pa-%pa] on node %d\n", + dimm->idx, &dimm->start, &dimm->end, dimm->numa_node); + } + + if (enable_numa) + return 0; + + /* something went wrong, disable numa */ + if (num_possible_nodes() > 1) + pr_warn("Can't get numa info, disabling numa\n"); + mem_info_disable_numa(); return 0; } @@ -258,6 +352,8 @@ static int mem_info_setup_fake(void) dimm->dtype = DEV_UNKNOWN; dimm->edac_mode = EDAC_SECDED; + mem_info_disable_numa(); + return 0; } From patchwork Mon Jun 24 15:09:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167621 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348732ilk; Mon, 24 Jun 2019 08:10:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqznpkbFKluzyzHHdGz07HNDl5aKmhuN/j0Y+thIsfOuj4MUIMG9F1JRy9BVNkrvIAbVEjAx X-Received: by 2002:a63:7d18:: with SMTP id y24mr28543923pgc.438.1561389024691; Mon, 24 Jun 2019 08:10:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389024; cv=none; d=google.com; s=arc-20160816; b=sF0e9hw8Vu/2r66+rLDQEYZ7Vcq8iPE/U3bgM3ALIGBcbD1NdZ+ElDdcXAJK1stRsL KrK3AqjPWZmC1jCv0Vh/rMEMrlBiTTRqYLVipZfN4hmZTxZGGnUPtMZcKaw/3b1NgQFK oy074jEIM/749VJmvz+xZOrk/zvAD5uiE5hZaorejI1vhufjsLsui5fVp6z/evcKnFzj a45nmh7oO/dptkXv7quacg06Rwv3q9sDBOhx1bElcmR92ROq9VZ/XOm9/XEPqkrVf2e1 CXGZCbFRuuV9Brvt8+/MVisF8p9pu02yvOFQXFC7XB4KsgJQ6+tQ0/f20X0v2dPdpil2 F9Qg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=qh+kMCYPsGPcIQXuBR+Mk9lk7QB5CPrsdDS+ai29fy0=; b=tLgQFvv3kmesmB8XG5NsrnPgoMmsGq2nseZKWpUsyN0XDfnTIpmW1wnXp9SyCbsfsD 7bHJ7Sw39dSiUAz6y8y9X3k7y9JADMZ7WsOh2WTkUJ+bk66m8k6bmrwFIjo9FGsavAIy Tu2URkWfDjO60x/8md44Nixbb0kYx5i9GVo6ATloI7QZOgysnLjWtolEg9rnJHsHoKSh WpJstda+vB4+vi+MU8HwNb/DvbcB7yD32ZJNOA1eFLcV7hkUGPTpgsKNgNRZD5BFj/K8 xMrRdukX4v9E3v0humI/hSuSYmUqkU/+uUACQIX0uKWsXphwA5i3WrzH00nmI9zr8g8a fVNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=gJMUJXY6; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=HARlrlBm; 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 g17si10389004pfi.92.2019.06.24.08.10.24; Mon, 24 Jun 2019 08:10:24 -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=gJMUJXY6; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=HARlrlBm; 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 S1731050AbfFXPKS (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:18 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:58874 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730710AbfFXPJi (ORCPT ); Mon, 24 Jun 2019 11:09:38 -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 x5OF8FJg025903; Mon, 24 Jun 2019 08:09:31 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=qh+kMCYPsGPcIQXuBR+Mk9lk7QB5CPrsdDS+ai29fy0=; b=gJMUJXY6MddOpRMiMIQG7Tv5i/ISD1JGfUyFh0whMfKamL8GTHQmqpnfQN/DMOixb9+o ehnrdqoy5TSPCZDCeQHfcgV6ZFEOcgdSF6QYbimgmaM27ByhZbfl2nXH1OSCRhfyFE4J ZWPNKL5Dhmxf+1cnRIwO05MILC3tOGlpZ0mmX3rA7Npmtc4uSpLAKslL8U2JHSeRfxqu IaTiv5Y8KeHNxOhxZ4IJJlUVGqokdDzezPlbdGwFPset+R3LAAdbrZUDE5bMnazFsEIY 6EQ1r/y0uiNpvfmmZlXuhob04iaso9QhT7doLhPsiNHDA18CRZp8ofduaJtYaZUTz9zZ zQ== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7tm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:30 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:29 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.56) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:28 -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=qh+kMCYPsGPcIQXuBR+Mk9lk7QB5CPrsdDS+ai29fy0=; b=HARlrlBmpdXp0NnfPxtvulfmX7yDB4wSXdqbSD80U5y2zxEbgIC6qhGB8ZAqCuFVcyyjADRv/ixHqogMLRvDUP0qq4QiS9Xme/TcjK4yMyY4cZ7eItBeXr8DfjTL1Vv+p+KpjNcpqw9K2XdgewRbPOcTcTikxXtNl29JL0/Ve+o= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:28 +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:09:28 +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 16/24] EDAC, ghes: Moving code around ghes_edac_register() Thread-Topic: [PATCH v2 16/24] EDAC, ghes: Moving code around ghes_edac_register() Thread-Index: AQHVKp7RKr/OzzjWIEaSi7Jhu7Zp9Q== Date: Mon, 24 Jun 2019 15:09:27 +0000 Message-ID: <20190624150758.6695-17-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: dd1b1eb5-2feb-4620-8497-08d6f8b5f35e x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: evLgejGNoDenehVw1U1d0XQGXJ0Ly4Ci9j0tV+KyN5xxon4tCGtnD7ryrDgfi/pWo/CyWrbx//YcmSZqNs+kXS7PMfZUIRAImSaKO1/6kJ3dRfjd9MGbzADi+z67sT5o2b5XnMVzqvWDh7R12IqSQaS8E11T9q8OV/XFmbN2ByRvpWtNRUMPRQoY95TS4mtXbCRmwIOXbigW5Sr9hnjmPhdIQtBDA2vSWepIUC1NTlnaKKnwDPN7pDDIGu1mxoq00Oxqz3uDjTGJ2erI0bugv/p1JNUvEeFzcafif840aT6L3tZVFOuSLLwRrA9swOCLZMAU4j1PIPWL5i5L0C7/XYPa+WH85K98laamNNj/IQwlFL5hBhNey+3PV05Duz9RuhDgLjqE29oGeOy2s2Pjqb9a3r8spshKgsW9Cw6ViJk= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: dd1b1eb5-2feb-4620-8497-08d6f8b5f35e X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:27.9188 (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: MN2PR18MB3197 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 This is in preparation of the next patch to make the changes there more visible. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 97 ++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 44 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 793362bea044..13b74368ad81 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -640,45 +640,19 @@ static struct acpi_platform_list plat_list[] = { { } /* End */ }; -int ghes_edac_register(struct ghes *ghes, struct device *dev) +static int +ghes_edac_register_one(int nid, struct ghes *ghes, struct device *parent) { - bool fake = false; int rc; struct mem_ctl_info *mci; struct edac_mc_layer layers[1]; - int idx = -1; - - if (IS_ENABLED(CONFIG_X86)) { - /* Check if safe to enable on this system */ - idx = acpi_match_platform_list(plat_list); - if (!force_load && idx < 0) - return -ENODEV; - } else { - idx = 0; - } - - /* - * We have only one logical memory controller to which all DIMMs belong. - */ - if (atomic_inc_return(&ghes_init) > 1) - return 0; - - rc = mem_info_setup(); - if (rc == -EINVAL) { - /* we've got a bogus BIOS */ - fake = true; - rc = mem_info_setup_fake(); - } - if (rc < 0) { - pr_err("Can't allocate memory for DIMM data\n"); - return rc; - } layers[0].type = EDAC_MC_LAYER_ALL_MEM; layers[0].size = mem_info.num_dimm; layers[0].is_virt_csrow = true; - mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(struct ghes_edac_pvt)); + mci = edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, + sizeof(struct ghes_edac_pvt)); if (!mci) { pr_err("Can't allocate memory for EDAC data\n"); return -ENOMEM; @@ -688,7 +662,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) ghes_pvt->ghes = ghes; ghes_pvt->mci = mci; - mci->pdev = dev; + mci->pdev = parent; mci->mtype_cap = MEM_FLAG_EMPTY; mci->edac_ctl_cap = EDAC_FLAG_NONE; mci->edac_cap = EDAC_FLAG_NONE; @@ -696,19 +670,6 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) mci->ctl_name = "ghes_edac"; mci->dev_name = "ghes"; - if (fake) { - pr_info("This system has a very crappy BIOS: It doesn't even list the DIMMS.\n"); - pr_info("Its SMBIOS info is wrong. It is doubtful that the error report would\n"); - pr_info("work on such system. Use this driver with caution\n"); - } else if (idx < 0) { - pr_info("This EDAC driver relies on BIOS to enumerate memory and get error reports.\n"); - pr_info("Unfortunately, not all BIOSes reflect the memory layout correctly.\n"); - pr_info("So, the end result of using this driver varies from vendor to vendor.\n"); - pr_info("If you find incorrect reports, please contact your hardware vendor\n"); - pr_info("to correct its BIOS.\n"); - pr_info("This system has %d DIMM sockets.\n", mem_info.num_dimm); - } - mem_info_prepare_mci(mci); rc = edac_mc_add_mc(mci); @@ -733,3 +694,51 @@ void ghes_edac_unregister(struct ghes *ghes) kfree(mem_info.dimms); } + +int ghes_edac_register(struct ghes *ghes, struct device *dev) +{ + bool fake = false; + int rc; + int idx = -1; + + if (IS_ENABLED(CONFIG_X86)) { + /* Check if safe to enable on this system */ + idx = acpi_match_platform_list(plat_list); + if (!force_load && idx < 0) + return -ENODEV; + } else { + idx = 0; + } + + /* We have only one ghes instance at a time. */ + if (atomic_inc_return(&ghes_init) > 1) + return 0; + + rc = mem_info_setup(); + if (rc == -EINVAL) { + /* we've got a bogus BIOS */ + fake = true; + rc = mem_info_setup_fake(); + } + if (rc < 0) { + pr_err("Can't allocate memory for DIMM data\n"); + return rc; + } + + if (fake) { + pr_info("This system has a very crappy BIOS: It doesn't even list the DIMMS.\n"); + pr_info("Its SMBIOS info is wrong. It is doubtful that the error report would\n"); + pr_info("work on such system. Use this driver with caution\n"); + } else if (idx < 0) { + pr_info("This EDAC driver relies on BIOS to enumerate memory and get error reports.\n"); + pr_info("Unfortunately, not all BIOSes reflect the memory layout correctly.\n"); + pr_info("So, the end result of using this driver varies from vendor to vendor.\n"); + pr_info("If you find incorrect reports, please contact your hardware vendor\n"); + pr_info("to correct its BIOS.\n"); + pr_info("This system has %d DIMM sockets.\n", mem_info.num_dimm); + } + + rc = ghes_edac_register_one(0, ghes, dev); + + return rc; +} From patchwork Mon Jun 24 15:09:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167611 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347871ilk; Mon, 24 Jun 2019 08:09:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqwSVv9XFTrE1A5Mf8ScVByeBga5LKV6V9SBAEBqPeuGhsOjglAOnx/fPJslLTMFZ3TSLLp6 X-Received: by 2002:a17:90a:2190:: with SMTP id q16mr24694722pjc.23.1561388984745; Mon, 24 Jun 2019 08:09:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388984; cv=none; d=google.com; s=arc-20160816; b=MX+82MN08kcJ4M8rNf3/fJpCur6XEHzrmcm+5IkHINl55N+NxSZWsiv6pq9Q6mFc8a r1L1MWfbibEPg6ibwuOB7WN/16SR5nFT3+6mox1oGpaiYP1pZXESAJsfx9KAk1VEP4k7 Rhx0cASlKT8sqTThjCXCoN2922GZU6eNd5a3GkBHRhqZFrdYNK5VtnzcsFYI4Hj+xJV0 +h6L4ZPkQqUKC19Lpm5RrOtJAbrSytgFMIYToJ9AFuMFRRiOPNmvuX0MVk/fWES+52UT sMXqBuTW+VXTfJ0tDVZc2EpZmbpKcViMGF72ptSZ5d9fOUmZVgchBb4ns+TUAZxMdR3C Uc8Q== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=dhPjSm/o1hnsesbUEQ+VSvp8f+PEBgp+eZbBJxLIHnc=; b=s7ydDI0AiwM9DG9edOE3mvZj2firalQ4quxQR4W3951fzC33oX4grn2EYlLRUrWtjx /fJ9KX53KB69k+6R0/TbrHKLXDiuxbiUo0dnWxtlk+vi+50SpoLzaSNQ6fWKG1JP4Vif TOfxBQxcYcjUaajlWXqprpbj/02/CRa0eiFBnSnnGb8jO3Uxp8zacZg4zTNqGHNHFgzR 3aL+VA3LBPRAwkn7ZvZPfFB+666mHCqbGGcl3fsbO7VD5oFssSV+9Tixxs+X2SouZa0t lMt+h5mfv92/dfXjQFTYVLB56Qvx5WJgSIr1AHh4A0OnNU+CsxRg18nWKFTpcb+DFRsu xq2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=MySNMAvV; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Ai3eH4pb; 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 q28si9836780pgb.375.2019.06.24.08.09.44; Mon, 24 Jun 2019 08:09:44 -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=MySNMAvV; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Ai3eH4pb; 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 S1730775AbfFXPJn (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:43 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:36938 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730713AbfFXPJi (ORCPT ); Mon, 24 Jun 2019 11:09:38 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0BQp018658; Mon, 24 Jun 2019 08:09:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=dhPjSm/o1hnsesbUEQ+VSvp8f+PEBgp+eZbBJxLIHnc=; b=MySNMAvV2rPLP9aCifpyfML4ptVrUAnmr3eD/kGIAyQ4B+6eAy5rUEp8UIK8rKZ3BPQ8 w9SKwn1koPnkTntmxH/xWEUkf/LPwbCoy3CRIlKK4tQAOFDin+nfj/QUGLEn5uFcluri vcTNgFr0tzZYcQhIpXzroRrZfGyiJU5KE69+DPVbOLWACzDAwfScNYlquKWpl4kwwqPU cVp/0v7fcXRJMhc7JuGxooeXyoov7+fV3lI3zpZwQfrdoh4vrYqYBoFj5VmsqCyvsk4a ReBS2Y3OzJP5Kfjv+qrJjIxo7M+sQfC1O8kADBU2toUwx49CrXMRdZguiS4mRRdSvL+I IA== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9tbp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:32 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:31 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.55) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:30 -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=dhPjSm/o1hnsesbUEQ+VSvp8f+PEBgp+eZbBJxLIHnc=; b=Ai3eH4pbpnh3eRP3eotDQOO8w5FZFc/LuENoC0N74vunQB5pAjCcDrmTgvZ5Nn7gl2ysZ+CbTTCaLBqhltNMoy1tyilGekeYI5kNj26kKoB4vSpPYnJGDdiJibxaUkwIh9nQn9+muCcdxYr0+kMvSNKH8cKDL+1ip50cXEuDjiQ= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:29 +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:09:30 +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 17/24] EDAC, ghes: Create one memory controller device per node Thread-Topic: [PATCH v2 17/24] EDAC, ghes: Create one memory controller device per node Thread-Index: AQHVKp7S87ADY1caY0yYL8oUsqwLHA== Date: Mon, 24 Jun 2019 15:09:29 +0000 Message-ID: <20190624150758.6695-18-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: b1abfc60-0d7d-42dd-10ab-08d6f8b5f486 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: ubogojV9lTk7pnX8xKmkkBwBiqsyOScxOHOTcrPSt9pAVJxibu14JyqUzKa2ELAhSC0Gk1lYMotNsACkhvTDhMQeZ/x8I2Ylkj0fDhxeiU7dQxPSTSmq9I4R+SGxc4268jgKzpl2RyAdTdQGH9LLN6zvHZN1E57oLZg7SxxBsW4AIQhC+hpGh5LGM9WxmkzPWZ2Ni83RCAcS2JJIsqnqi1OT629EvBUsDIB8q1CUJTXB5h61H2EQYn1UjZmsyyMZcaS6DzAaG8R+QVlQzR4M2UhH6MYnPzs8Z10BNTgxqRxrcvj/hJbtho0zu1+vU1s0LTmjKozDOrtmQlDeGOUDbVPFMB5lI5p5o2/y9U7E7mlzX38zbk1IdtMxxDOZQ+ElZM0wtAspccR+Vxj4seuihQM1wZS2UeByWtec8XxV4yM= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b1abfc60-0d7d-42dd-10ab-08d6f8b5f486 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:29.8857 (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: MN2PR18MB3197 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 Typically for most systems, there is one edac memory controller device per node. This patch implements the same for the ghes driver. Now, create multiple mc devices and map the dimms based on the node id. We need at least one node that is used as fallback if no node information is available in the error report. Here a complete and consistent error report from a ThunderX2 system (zero counter values 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:11 /sys/devices/system/edac/mc/mc0/ce_noinfo_count:1 /sys/devices/system/edac/mc/mc0/csrow2/ce_count:5 /sys/devices/system/edac/mc/mc0/csrow2/ch0_ce_count:5 /sys/devices/system/edac/mc/mc0/csrow3/ce_count:3 /sys/devices/system/edac/mc/mc0/csrow3/ch0_ce_count:3 /sys/devices/system/edac/mc/mc0/csrow4/ce_count:2 /sys/devices/system/edac/mc/mc0/csrow4/ch0_ce_count:2 /sys/devices/system/edac/mc/mc0/dimm2/dimm_ce_count:5 /sys/devices/system/edac/mc/mc0/dimm3/dimm_ce_count:3 /sys/devices/system/edac/mc/mc0/dimm4/dimm_ce_count:2 /sys/devices/system/edac/mc/mc1/ce_count:7 /sys/devices/system/edac/mc/mc1/csrow2/ce_count:4 /sys/devices/system/edac/mc/mc1/csrow2/ch0_ce_count:4 /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/dimm2/dimm_ce_count:4 /sys/devices/system/edac/mc/mc1/dimm3/dimm_ce_count:1 /sys/devices/system/edac/mc/mc1/dimm6/dimm_ce_count:2 Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 126 ++++++++++++++++++++++++++++++++------- 1 file changed, 104 insertions(+), 22 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 13b74368ad81..63de11654649 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -16,6 +16,7 @@ #include struct ghes_edac_pvt { + struct device dev; struct list_head list; struct ghes *ghes; struct mem_ctl_info *mci; @@ -26,7 +27,7 @@ struct ghes_edac_pvt { }; static atomic_t ghes_init = ATOMIC_INIT(0); -static struct ghes_edac_pvt *ghes_pvt; +struct mem_ctl_info *fallback; /* * Sync with other, potentially concurrent callers of @@ -172,15 +173,15 @@ static void ghes_edac_set_nid(const struct dmi_header *dh, void *arg) } } -static int get_dimm_smbios_index(u16 handle) +static int get_dimm_smbios_index(struct mem_ctl_info *mci, u16 handle) { - struct mem_ctl_info *mci = ghes_pvt->mci; struct dimm_info *dimm; mci_for_each_dimm(mci, dimm) { if (dimm->smbios_handle == handle) return dimm->idx; } + return -1; } @@ -364,6 +365,9 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) int index = 0; for_each_dimm(dimm) { + if (mci->mc_idx != dimm->numa_node) + continue; + dmi_dimm = &dimm->dimm_info; mci_dimm = edac_get_dimm_by_index(mci, index); @@ -384,17 +388,35 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) index, mci->tot_dimms); } +static struct mem_ctl_info *get_mc_by_node(int nid) +{ + struct mem_ctl_info *mci = edac_mc_find(nid); + + if (mci) + return mci; + + if (num_possible_nodes() > 1) { + edac_mc_printk(fallback, KERN_WARNING, + "Invalid or no node information, falling back to first node: %s", + fallback->dev_name); + } + + return fallback; +} + void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) { struct dimm_info *dimm_info; enum hw_event_mc_err_type type; struct edac_raw_error_desc *e; struct mem_ctl_info *mci; - struct ghes_edac_pvt *pvt = ghes_pvt; + struct ghes_edac_pvt *pvt; unsigned long flags; char *p; + int nid = NUMA_NO_NODE; - if (!pvt) + /* We need at least one mc */ + if (WARN_ON_ONCE(!fallback)) return; /* @@ -407,7 +429,11 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) spin_lock_irqsave(&ghes_lock, flags); - mci = pvt->mci; + /* select the node's mc device */ + if (mem_err->validation_bits & CPER_MEM_VALID_NODE) + nid = mem_err->node; + mci = get_mc_by_node(nid); + pvt = mci->pvt_info; e = &mci->error_desc; /* Cleans the error report buffer */ @@ -541,7 +567,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) p += sprintf(p, "DIMM DMI handle: 0x%.4x ", mem_err->mem_dev_handle); - index = get_dimm_smbios_index(mem_err->mem_dev_handle); + index = get_dimm_smbios_index(mci, mem_err->mem_dev_handle); if (index >= 0) e->top_layer = index; } @@ -640,15 +666,29 @@ static struct acpi_platform_list plat_list[] = { { } /* End */ }; +void ghes_edac_release(struct device *dev) +{ + struct ghes_edac_pvt *ghes_pvt; + struct mem_ctl_info *mci; + + ghes_pvt = container_of(dev, struct ghes_edac_pvt, dev); + + mci = ghes_pvt->mci; + edac_mc_del_mc(mci->pdev); + edac_mc_free(mci); +} + static int ghes_edac_register_one(int nid, struct ghes *ghes, struct device *parent) { + struct device *dev; + struct ghes_edac_pvt *ghes_pvt; int rc; struct mem_ctl_info *mci; struct edac_mc_layer layers[1]; layers[0].type = EDAC_MC_LAYER_ALL_MEM; - layers[0].size = mem_info.num_dimm; + layers[0].size = mem_info.dimms_per_node[nid]; layers[0].is_virt_csrow = true; mci = edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, @@ -662,43 +702,69 @@ ghes_edac_register_one(int nid, struct ghes *ghes, struct device *parent) ghes_pvt->ghes = ghes; ghes_pvt->mci = mci; - mci->pdev = parent; + dev = &ghes_pvt->dev; + dev->parent = parent; + dev->release = ghes_edac_release; + dev_set_name(dev, "ghes_mc%d", nid); + + rc = device_register(dev); + if (rc) { + pr_err("Can't create EDAC device (%d)\n", rc); + goto fail; + } + + mci->pdev = dev; mci->mtype_cap = MEM_FLAG_EMPTY; mci->edac_ctl_cap = EDAC_FLAG_NONE; mci->edac_cap = EDAC_FLAG_NONE; mci->mod_name = "ghes_edac.c"; - mci->ctl_name = "ghes_edac"; - mci->dev_name = "ghes"; + mci->ctl_name = "ghes_mc"; + mci->dev_name = dev_name(dev); mem_info_prepare_mci(mci); rc = edac_mc_add_mc(mci); if (rc < 0) { - pr_err("Can't register at EDAC core\n"); - edac_mc_free(mci); - return -ENODEV; + pr_err("Can't register at EDAC core (%d)\n", rc); + goto fail; } + return 0; +fail: + put_device(dev); + return rc; +} + +static void ghes_edac_unregister_one(struct mem_ctl_info *mci) +{ + struct ghes_edac_pvt *pvt = mci->pvt_info; + + put_device(&pvt->dev); } void ghes_edac_unregister(struct ghes *ghes) { struct mem_ctl_info *mci; + int nid; - if (!ghes_pvt) - return; - - mci = ghes_pvt->mci; - edac_mc_del_mc(mci->pdev); - edac_mc_free(mci); + for_each_node(nid) { + mci = edac_mc_find(nid); + /* stop fallback at last */ + if (mci && mci != fallback) + ghes_edac_unregister_one(mci); + } + ghes_edac_unregister_one(fallback); + fallback = NULL; kfree(mem_info.dimms); + atomic_dec(&ghes_init); } int ghes_edac_register(struct ghes *ghes, struct device *dev) { bool fake = false; int rc; + int nid; int idx = -1; if (IS_ENABLED(CONFIG_X86)) { @@ -738,7 +804,23 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) pr_info("This system has %d DIMM sockets.\n", mem_info.num_dimm); } - rc = ghes_edac_register_one(0, ghes, dev); + for_each_node(nid) { + if (!mem_info.dimms_per_node[nid]) + continue; - return rc; + rc = ghes_edac_register_one(nid, ghes, dev); + if (rc) { + ghes_edac_unregister(ghes); + return rc; + } + + /* + * use the first node's mc as fallback in case we can + * not detect the node from the error information + */ + if (!fallback) + fallback = edac_mc_find(nid); + } + + return 0; } From patchwork Mon Jun 24 15:09:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167612 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347918ilk; Mon, 24 Jun 2019 08:09:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqyWjMq8m6YvutGeO88zKQAYnYVb4Y6GZPnhGTM7ZGzPZIBgm4S4wpogUhj2YaF5KV2xZN+X X-Received: by 2002:a65:5c0a:: with SMTP id u10mr34233526pgr.412.1561388987060; Mon, 24 Jun 2019 08:09:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388987; cv=none; d=google.com; s=arc-20160816; b=OKcFsMaGNOZf5uIWYk08rDVL3hPzNr4gmEyn2gp59utMVv79kuMzIiwOjp6f4OYsiX IYdWCgvBJyD8XvZEJncLZrwihTOMGHaXvyfNFSeLrlA3cnAderyIMIk1Xdz5q7htvVcO xyqeBNQHGOMiRgj1qsHXWYj0lUNXmF39/sOqidxj8R4yjp9AN6GG8k36CZZ9MceN7Vp+ xzt0vDNcBklvyN1jNq01Ku+3USIqTmpneLPbVle3nr6VJJPJqGldQ2elfAF9R/r2Xn/c gWRV+amR+Ch/KbZgDmkuM1QUF6WnzTp+Os8LrigohKiLrthrXeanApFQY05XO7LMA1aE rDnw== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=uM9KgsvD2e9WjIvDSEv9d7g7JoMCbdcjIlzib1u3/tg=; b=lFTA7UgDjVB8XuMPGx2FwfsKPd7R6uMkfzA011k8VDtbUdgC2M2Wl11jQo2wexNGA5 jl+Xs7e8MxfnCbuJcfiXnUlowAfDv6sGHdATcMqdNb8Q7RszkfH8xIeMMTZAZLFuh0Z0 rJ576noSoA4jP1g0y2HTgSEeUVJdP/lU7qZIS5oDkyYR9ryU+/fwrPbp9Mg3h8E8sAgf MMbuRh56Tf0eGn3hwa3hSrkEwAgnqA8MUudrOM49mxWf+B97ci1ub/+dT2rdojWx+iTR 5Mnotpkq3E6y5nBbo5/7VRvvOo+oql5yK2PwOMsKkfkyc8L5u3WdPQr+7bX/VnOQ2/kf s1NQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=a6B7hSr9; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=ZtDEvpKF; 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 d21si10399469pgd.544.2019.06.24.08.09.46; Mon, 24 Jun 2019 08:09:47 -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=a6B7hSr9; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=ZtDEvpKF; 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 S1730797AbfFXPJo (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:44 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:36412 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730682AbfFXPJl (ORCPT ); Mon, 24 Jun 2019 11:09:41 -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 x5OF8Eai025899; Mon, 24 Jun 2019 08:09:35 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=uM9KgsvD2e9WjIvDSEv9d7g7JoMCbdcjIlzib1u3/tg=; b=a6B7hSr9kwxH2RaO4IifGadswW8IF9+5p0m2R9llDJeWCWY4JJ3yHuOmjAZJRz0sNUsE nN4r+DMf4BAWq8J4UQ8MLzKu1I1DoJyHaVR211Z7Ch54A2QScAjywF7OfMbrMHmjtSGz I+d8WKB91tvvM57gg8fhXY2wJMHeRlqCd8uQ3coECTySF9eTEFnijv4MEUcZY5/TyYje 58wmwqOHSLDv0kM/HHxexMuKn/QHof8jId2QAes4CZBg8N3h9jc0lNJn233B9RFQlmAn aIrrdhQaxBTTg2GXp9hLyuHdvqY9arNq6j/2vAl3dT21VBzlEzak0RHFjFukz9TEkB4Q eA== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7tw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:34 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:33 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.59) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:32 -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=uM9KgsvD2e9WjIvDSEv9d7g7JoMCbdcjIlzib1u3/tg=; b=ZtDEvpKF5ycbnE3xJg3qOT5YmypfRrD78JlrTMPMx+xQk8YKglkvZOqhx79Whp3nKzDc0wWpJ7lkLZlhtZ/gAg8Xlx4z/aG6vFSqT/3r0E8ZKsmRPhz0Izht9UfdI5uP0/DkJTDby/8kACZHIt8xrAuN8PwLswX6FIK0RLyVFrc= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:32 +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:09:32 +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 18/24] EDAC, ghes: Fill sysfs with the DMI DIMM label information Thread-Topic: [PATCH v2 18/24] EDAC, ghes: Fill sysfs with the DMI DIMM label information Thread-Index: AQHVKp7TlohNjeevI0uW0dYjj5ZrXQ== Date: Mon, 24 Jun 2019 15:09:31 +0000 Message-ID: <20190624150758.6695-19-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 70fd5ff4-65f3-4488-93d6-08d6f8b5f5b1 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:669; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(979002)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: GLgd4KeZOz4EJsKY8Wtg8ExkWyqQIeNFvBPb9BreJgIu5tzRCs5o5NL34Pn1/3LAy8EzNTM193EGeH/aXOXwDH39f9UGMKbZ1dz60QCc9q8wPmnlzvTIX3KfXgZtR1q6kWZiEF3x74xoW3ziEO+b8+IMRL2dleUIOzw8qn+1d8aiXWqSFPUKFnN4ozN7K9fBsnlLGf2qaicVK8cGPiitH7o0LDKrpxlyJQHBVj2Z9EAvb3QvoMC9nT9uinTN0jXF++PFi7IJ7I6ofMuuzurYZBU1jPEHoA5j6FeeBd2IutmGerX7ePIBlzxPOdgXBNpfe1h1ERJvISuSadd03uaOEd0R7YvIrYYn3pN2VwkBpicyFjTgoc1UZLjvOZfXAzrzo1deD07kVXB9XAj+q22Q5UGOkFrbjzSyZkpMgn4pFFc= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 70fd5ff4-65f3-4488-93d6-08d6f8b5f5b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:31.9725 (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: MN2PR18MB3197 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 This patch extracts the DIMM label from the DMI table and puts this information into sysfs. E.g. on a ThunderX2 system we found this now: # 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 Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 63de11654649..9c3495f7365b 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -265,10 +265,6 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) dimm->dtype = DEV_UNKNOWN; dimm->grain = 128; /* Likely, worse case */ - /* - * FIXME: It shouldn't be hard to also fill the DIMM labels - */ - if (dimm->nr_pages) { edac_dbg(1, "DIMM%i: %s size = %d MB%s\n", mi->idx, edac_mem_types[dimm->mtype], @@ -302,6 +298,7 @@ static int mem_info_setup(void) { struct ghes_dimm_info *dimm; bool enable_numa = true; + const char *bank, *device; int num = 0; int idx = 0; int ret; @@ -317,13 +314,27 @@ static int mem_info_setup(void) dmi_walk(ghes_edac_set_nid, NULL); for_each_dimm(dimm) { + bank = device = NULL; + dmi_memdev_name(dimm->dimm_info.smbios_handle, + &bank, &device); + if (bank && device) { + snprintf(dimm->dimm_info.label, + sizeof(dimm->dimm_info.label), + "%s %s", bank, device); + } else { + *dimm->dimm_info.label = '\0'; + } + if (dimm->numa_node == NUMA_NO_NODE) enable_numa = false; else mem_info.dimms_per_node[dimm->numa_node]++; - edac_dbg(1, "DIMM%i: Found mem range [%pa-%pa] on node %d\n", - dimm->idx, &dimm->start, &dimm->end, dimm->numa_node); + edac_dbg(1, "DIMM%i: Found mem range [%pa-%pa] on node %d, handle: 0x%.4x%s%s\n", + dimm->idx, &dimm->start, &dimm->end, dimm->numa_node, + dimm->dimm_info.smbios_handle, + *dimm->dimm_info.label ? ", label: " : "", + dimm->dimm_info.label); } if (enable_numa) @@ -381,6 +392,9 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) mci_dimm->dtype = dmi_dimm->dtype; mci_dimm->grain = dmi_dimm->grain; mci_dimm->smbios_handle = dmi_dimm->smbios_handle; + + if (*dmi_dimm->label) + strcpy(mci_dimm->label, dmi_dimm->label); } if (index != mci->tot_dimms) From patchwork Mon Jun 24 15:09:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167618 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348525ilk; Mon, 24 Jun 2019 08:10:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqweGtoop674+HMJ6xJL+ulVt3W/sGH1swAvfV9ietwZlebmQFZ4OWGRw6hD5WcaZLFExXTf X-Received: by 2002:a17:902:f216:: with SMTP id gn22mr129368709plb.118.1561389013546; Mon, 24 Jun 2019 08:10:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389013; cv=none; d=google.com; s=arc-20160816; b=vzSzLdbIcmZi4gKoC9J+Gh/eYAyQj1yOjorm14g+xkzEKqEtr5ZXSPZSxHgRyyNmY7 IPuu05eYuGuulsjrGat+Yg+cpPVxIz9YDkhlGDf+gqaKBOl2jaq+G3qankBLfjofff4L oOuG93oac4nwxP6iB7jrEUJAUzuZoZ+oYamY8qPMAfAp5m97+ptrlgy6ytHibLe4m5cC e7C6o4ftyFMG+FUv5oZ83VcxQLIRWvJaT5Erim6S4tZg8Kn5XM8kclor2X3fl27WEBxO rXNssrBRY4+t1IYPQhv476nc01VN7B3GKAmEffBuH4Ed4xjEjS98q71k0rHVOmp7nnwt puEg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=9p112X5vlP5tM0VhbyYF8Z0EJbyNYhiz5vn1s8E3Loo=; b=uzJ5mcZyZmPAyLKbQNk4oqzTgPSRbbAdlBFFbh6XQl5dCx4XEGVjPvac9f+YlvJLNt cuJSzUmHvkNolc98kSClk6/t3+B1pyDDbDjit4dXVo/mcwVM3uqKm9s7yeKVXq1Bp09b 51Mnb2Ug3OPiCpjDX70uUsYOF0Mtd8DUZiRauFJj933KjqkkWa39pLfKOXISUvkWUSw0 ZzCBYFBU5zf3DMNHYvMpPuhOW/ooxCjGG0ui9iWq4Bn1HvhmlUSOmC6hZmGa7Lzkze51 +7VBgG9WHmgIlPAnk+r3gvHGBiAoCW9bCZbjlghEJFE87Jh/XgIZEUcmioULXjNlgYtz Bybw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=pDf1lpmL; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=djqqRsjd; 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 q17si10036322pll.285.2019.06.24.08.10.12; Mon, 24 Jun 2019 08:10:13 -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=pDf1lpmL; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=djqqRsjd; 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 S1731009AbfFXPKL (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:11 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:51100 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730741AbfFXPJm (ORCPT ); Mon, 24 Jun 2019 11:09:42 -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 x5OF8Chr025865; Mon, 24 Jun 2019 08:09:37 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=9p112X5vlP5tM0VhbyYF8Z0EJbyNYhiz5vn1s8E3Loo=; b=pDf1lpmLe+6rWNvk1OROhCjMH62NX6DIMK5aOrVy89578R8rT46e6BLoSRKh5IgJ9Srt C3djJHqkdqZ6Y/pgsyzqNOY9AwujdlaRkb6GJmaloDhP4pV699hABUwq+PGSKXIhQ7mB EZy7qGUgelt6HpnQh3bqa4YGKEEYf+oyH91jc0yUsE04cPryebJmp9vZHEwH0IH1tTB1 iE0rfnJZ16KyluhGSpLlSJVZk+X8qSgmjL39y4tGwQGnLMFoslQRTibRgSJbevOEMp54 3wt4mj6OxWf2e6oMW5hKCwT7qOJw9guuUEkqDXoOvMzqieESUeLpDbK+a27otnrPPEzj WQ== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7u3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:36 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:35 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.54) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:35 -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=9p112X5vlP5tM0VhbyYF8Z0EJbyNYhiz5vn1s8E3Loo=; b=djqqRsjd7y3lER55mqP4QWzUpr9J4dSPfMg1BLiBOe8Yb+CB/U5hHGnm6G5fQpi9HiwQSwhcQV9aao9IoGz8GschdmHyL8GsQlmV+BQca2yH5jz/vSuXq7Dts07dHfPlvS9dMrZwP52Jkh9Lkzl0SS/Ql4OiitzaysIdOij+qeA= 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:09:34 +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:09:34 +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 19/24] EDAC, mc: Introduce edac_mc_alloc_by_dimm() for per dimm allocation Thread-Topic: [PATCH v2 19/24] EDAC, mc: Introduce edac_mc_alloc_by_dimm() for per dimm allocation Thread-Index: AQHVKp7UctlFYfkY5E6kkBd7Mn0FtQ== Date: Mon, 24 Jun 2019 15:09:33 +0000 Message-ID: <20190624150758.6695-20-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: b66c438e-07ad-4954-e3da-08d6f8b5f70d 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:4502; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: 4qlKn9DnbpIHx+bdG+86QbFKBdcQLvGZHupBT8CTbcISGaRXqPUgrmbeNlwgcOsb4Aanqm8OasMxHSMkBzX5/OtEjRZYI31Njs337mzgpdPkjASNlIO1x2wJrKqAmba1y68Ghd09rV7TZSJ7DkJ6n+STWZ6XQF+YorpGNgn0oi/O++6TRoy7y79SKTtc3BFLJWobQTQP5dvDn+XIQtvLDlU61ZCFAIf7A/grpOL6E+SaTduEHy9l4Ym7xuP35+hNQl+/i8Cmav4DdJxc0SsCyAbUTfudcJhpMI8ZkIyX3jxs/HW0yKFeoVsGXD+yqIQFGoZ2dHgjjkL1gfGmznBdXc/V6W/3kvYdoAtnK4ufFRHlCtq5NbDulhQ54yYeDSMczlOE6bkVMl6pp27PnDrHOzzMoFGwAS4Qm6DwFh+gaMQ= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b66c438e-07ad-4954-e3da-08d6f8b5f70d X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:34.0783 (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 Systems using ACPI GHES for error detection do not have exact knowledge of the memory hierarchy. Compared to other memory controller drivers the total size of each layer is unknown (card/module, channel/slot, etc.). But there is the total number of dimms. So add a function to allocate an mc device this way. The edac's driver uses internally a dimm index already for data access. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 83 ++++++++++++++++++++++++++++------------ drivers/edac/edac_mc.h | 17 ++++++-- drivers/edac/ghes_edac.c | 7 ++-- 3 files changed, 76 insertions(+), 31 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index eea09c6acd3e..3a40496a1973 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -303,10 +303,11 @@ static void _edac_mc_free(struct mem_ctl_info *mci) kfree(mci); } -struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, - unsigned n_layers, - struct edac_mc_layer *layers, - unsigned sz_pvt) +struct mem_ctl_info *__edac_mc_alloc(unsigned mc_num, + unsigned dimm_num, + unsigned n_layers, + struct edac_mc_layer *layers, + unsigned sz_pvt) { struct mem_ctl_info *mci; struct edac_mc_layer *layer; @@ -321,6 +322,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, bool per_rank = false; BUG_ON(n_layers > EDAC_MAX_LAYERS || n_layers == 0); + /* * Calculate the total amount of dimms and csrows/cschannels while * in the old API emulation mode @@ -336,6 +338,26 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, per_rank = true; } + /* allocate dimm_num DIMMS, layer size must be zero */ + if (dimm_num) { + if (dimm_num <= 0 || + layers[0].size || + (n_layers > 1 && layers[1].size) || + (n_layers > 2 && layers[2].size)) { + edac_printk(KERN_WARNING, EDAC_MC, + "invalid layer data\n"); + return NULL; + } + + /* + * Assume 1 csrow per dimm which also means 1 channel + * per csrow. + */ + tot_dimms = dimm_num; + tot_csrows = dimm_num; + tot_channels = 1; + } + /* Figure out the offsets of the various items from the start of an mc * structure. We want the alignment of each item to be at least as * stringent as what the compiler would provide if we could simply @@ -422,25 +444,10 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, dimm->mci = mci; dimm->idx = idx; - /* - * Copy DIMM location and initialize it. - */ - len = sizeof(dimm->label); - p = dimm->label; - n = snprintf(p, len, "mc#%u", mc_num); - p += n; - len -= n; - for (j = 0; j < n_layers; j++) { - n = snprintf(p, len, "%s#%u", - edac_layer_name[layers[j].type], - pos[j]); - p += n; - len -= n; - dimm->location[j] = pos[j]; - - if (len <= 0) - break; - } + /* unknown location */ + dimm->location[0] = -1; + dimm->location[1] = -1; + dimm->location[2] = -1; /* Link it to the csrows old API data */ chan->dimm = dimm; @@ -462,6 +469,34 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, } } + /* + * Copy DIMM location and initialize it. + */ + len = sizeof(dimm->label); + p = dimm->label; + n = snprintf(p, len, "mc#%u", mc_num); + p += n; + len -= n; + + if (dimm_num) { + n = snprintf(p, len, "dimm#%u", idx); + p += n; + len -= n; + continue; + } + + for (j = 0; j < n_layers; j++) { + n = snprintf(p, len, "%s#%u", + edac_layer_name[layers[j].type], + pos[j]); + p += n; + len -= n; + dimm->location[j] = pos[j]; + + if (len <= 0) + break; + } + /* Increment dimm location */ for (j = n_layers - 1; j >= 0; j--) { pos[j]++; @@ -480,7 +515,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, return NULL; } -EXPORT_SYMBOL_GPL(edac_mc_alloc); +EXPORT_SYMBOL_GPL(__edac_mc_alloc); void edac_mc_free(struct mem_ctl_info *mci) { diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h index c4ddd5c1e24c..e8215847f853 100644 --- a/drivers/edac/edac_mc.h +++ b/drivers/edac/edac_mc.h @@ -99,6 +99,10 @@ do { \ * edac_mc_alloc() - Allocate and partially fill a struct &mem_ctl_info. * * @mc_num: Memory controller number + * @dimm_num: Number of DIMMs to allocate. If non-zero the + * @layers' size parameter must be zero. Useful + * if the MC hierarchy is unknown but the number + * of DIMMs is known. * @n_layers: Number of MC hierarchy layers * @layers: Describes each layer as seen by the Memory Controller * @sz_pvt: size of private storage needed @@ -122,10 +126,15 @@ do { \ * On success, return a pointer to struct mem_ctl_info pointer; * %NULL otherwise */ -struct mem_ctl_info *edac_mc_alloc(unsigned mc_num, - unsigned n_layers, - struct edac_mc_layer *layers, - unsigned sz_pvt); +struct mem_ctl_info *__edac_mc_alloc(unsigned mc_num, + unsigned dimm_num, + unsigned n_layers, + struct edac_mc_layer *layers, + unsigned sz_pvt); +#define edac_mc_alloc(mc_num, n_layers, layers, sz_pvt) \ + __edac_mc_alloc(mc_num, 0, n_layers, layers, sz_pvt) +#define edac_mc_alloc_by_dimm(mc_num, dimm_num, n_layers, layers, sz_pvt) \ + __edac_mc_alloc(mc_num, dimm_num, n_layers, layers, sz_pvt) /** * edac_get_owner - Return the owner's mod_name of EDAC MC diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 9c3495f7365b..97f992006281 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -702,11 +702,12 @@ ghes_edac_register_one(int nid, struct ghes *ghes, struct device *parent) struct edac_mc_layer layers[1]; layers[0].type = EDAC_MC_LAYER_ALL_MEM; - layers[0].size = mem_info.dimms_per_node[nid]; + layers[0].size = 0; layers[0].is_virt_csrow = true; - mci = edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, - sizeof(struct ghes_edac_pvt)); + mci = edac_mc_alloc_by_dimm(nid, mem_info.dimms_per_node[nid], + ARRAY_SIZE(layers), layers, + sizeof(struct ghes_edac_pvt)); if (!mci) { pr_err("Can't allocate memory for EDAC data\n"); return -ENOMEM; From patchwork Mon Jun 24 15:09:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167613 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4347966ilk; Mon, 24 Jun 2019 08:09:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqzbkcPLs7Wu10veCtEemjP7UIyF+0UHrX/udSywTc8oDmT6rUippKfjwKonp1M8J97zRNQK X-Received: by 2002:a17:902:bf08:: with SMTP id bi8mr114474204plb.189.1561388989487; Mon, 24 Jun 2019 08:09:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388989; cv=none; d=google.com; s=arc-20160816; b=hUUZLY2xXePBbGeiJb6n8GeuRpWbqFoCetEQwXg5lFh6r0l1tve2oGMztjXljC9GQZ tP/juAqkdq0R6M2cDyF3m5x5QTo7uozhbpT9LKB82xgTgwa4u795bH7p9GAo+1JtBlKD 7EWCCNkjubyf1T1z3G2prhPPz44niX6SKgRCR1glc+aFQieXMwuahy9EpU2SuMOvQ6te WF43/GXK6rgmqYKjvdHq8W9fH87XgJKsjvKVjgyBANCTcOLjvFP3TXwZmtPp3THBMXj9 0o4qHUm1mZAkcUm7oFR0oNzjNNEZVtp14K4isbRiGExN+2OYERS0bjwdNs3aK7qsR10W i+bg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=K9GfRHH0jcdtWOydVObOCSt9IlWuHJ/kns8jWsyBVi0=; b=Tkkvx/9y2Mf+iUIC4hkuavlVqhsC1QmpfEZ3wUW0UjYI/All9CULI4tUzSX4SHRMOC nxMPSYiELQ+467EAevaCU65XTePg6ny08l5razWuA52UBwRIjavTMtMch3HS4tFltPEX oZld01SMqZRMltxoraVZDx6gKWlhNanGSj3zI+kcY8KYo2zSWLHWIA919NHR9Xd+h/gT KiQcoAAbD8EQHWkF8PD0Pmqj708SdY/7PVTRQjIryktp1Qn8HPftM3w80iWLqlNKaYw6 oujtoVDXHyaZfv4v1oedqczzipXXmMQUncY7yvePr5ILNnXXvReotakwxGGzfZlXye8o /FJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=n8+9G88U; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=QmHyjbUK; 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 a14si10905432pga.567.2019.06.24.08.09.49; Mon, 24 Jun 2019 08:09:49 -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=n8+9G88U; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=QmHyjbUK; 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 S1730844AbfFXPJr (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:47 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:14776 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730794AbfFXPJp (ORCPT ); Mon, 24 Jun 2019 11:09:45 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF053n018453; Mon, 24 Jun 2019 08:09:38 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=K9GfRHH0jcdtWOydVObOCSt9IlWuHJ/kns8jWsyBVi0=; b=n8+9G88Uvk+0A5cqfuHH6nXaJPjKH+E/xyoT8TEbieinlLkG3vOu/AeiyidowAN2Vf9J GfADM1hbBxNRkOgmI8TcoLI63Y5RVjmOHcJSkhCpQf2nYWg+QeK4xygyr3MPwQNpe5eJ 9ZxtYIaVnMX9eytn9b1GzEj1KQOIifDi4B+Z14BKVvLYQKWnExRb/cgwrA/psjk38GMA gNzu5X75ICUZdjLa75K0H0/0d4h4a1CuTxdg+tq7HMglvIwrcf3PngMPPaXy+E6xQUNR rw5dtngS+nv44NjJvsvVgkmA0SQLfNp7b8Mb0rwpHry9v0exzVznuWisc22yH8eU6ScB Yw== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9tby-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:38 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:37 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.52) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:36 -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=K9GfRHH0jcdtWOydVObOCSt9IlWuHJ/kns8jWsyBVi0=; b=QmHyjbUK+xxXjyeEme1w67qbUZ7PRN0OE7AUsbRVVO/vmyBDhsaQxS7FAIZwjFNu5hM4HKpf9gTED/687HWeaSl7+EypOQ7lg+ZsqQ401dRaVS2IgO+OM7lsu4dIzvwDfgRRDt6w215tt2t8KiJIXVRkqqA+cs3aTqYYjZDFuQ4= 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:09:35 +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:09:35 +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 20/24] EDAC, ghes: Identify dimm by node, card, module and handle Thread-Topic: [PATCH v2 20/24] EDAC, ghes: Identify dimm by node, card, module and handle Thread-Index: AQHVKp7VnLiZoYHFAEGHkRpNDru4Aw== Date: Mon, 24 Jun 2019 15:09:35 +0000 Message-ID: <20190624150758.6695-21-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: b599a715-7872-48b1-ff4c-08d6f8b5f832 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:9508; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: bUAgWDCChLW5VycNAIiwIPaki+JVuuWFthCOQksPdhSgGdEeYtKs5N351RB9KoP7pPGmqRd5zOi4OOv+BuCS6iufQYuwQCWhbDvaqLkPbXufc7C/fq9NBQpuwKJAylvC0+w4vj17jajD+eIwnDJAUkK53n9s3SUV0tcBCOzAEpgeMlDB6InlblVggtqHXhzC66aqOIt1q/A059Qqs/smDJz8n/BNv85a0p0WaN0vkQ7R5gXAN9j5I+ROeYVFXkG4Qt7rDvztd5LBAh/NFO4qAl8M0xg1zn0imNC3l44oH+weFULJRzejFQ9/zc05K90oPaiTvPjwjnINb43RFx9xu6PpuaDqaN2oAkpcxkqaSkkrj5GFcXZ9X2BKLAUS7Zg1k0Fw4YkiYXXEsRGCoM/LRBRYaUAGnO9FtAEicF4gj1g= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b599a715-7872-48b1-ff4c-08d6f8b5f832 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:35.8763 (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 According to SMBIOS Spec. 2.7 (N.2.5 Memory Error Section), a failing DIMM (module or rank number) can be identified by its error location consisting of node, card and module. A module handle is used to map it to the dimms listed in the dmi table. Collect all those data from the error record and select the dimm accordingly. Inconsistent error records will be reported which is the case if the same dimm handle reports errors with different node, card or module. The change allows to enable per-layer reporting based on node, card and module in the next patch. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 74 +++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 12 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 97f992006281..689841c5c84d 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -81,8 +81,11 @@ struct memarr_dmi_entry { struct ghes_dimm_info { struct dimm_info dimm_info; + struct dimm_info *dimm; int idx; int numa_node; + int card; + int module; phys_addr_t start; phys_addr_t end; u16 phys_handle; @@ -128,6 +131,8 @@ static int ghes_dimm_info_init(int num) for_each_dimm(dimm) { dimm->idx = idx; dimm->numa_node = NUMA_NO_NODE; + dimm->card = -1; + dimm->module = -1; idx++; } @@ -395,6 +400,13 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) if (*dmi_dimm->label) strcpy(mci_dimm->label, dmi_dimm->label); + + /* + * From here on do not use any longer &dimm.dimm_info. + * Instead switch to the mci's dimm info which might + * contain updated data, such as the label. + */ + dimm->dimm = mci_dimm; } if (index != mci->tot_dimms) @@ -402,24 +414,46 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) index, mci->tot_dimms); } -static struct mem_ctl_info *get_mc_by_node(int nid) +/* Requires ghes_lock being set. */ +static struct ghes_dimm_info * +get_and_prepare_dimm_info(int nid, int card, int module, int handle) { - struct mem_ctl_info *mci = edac_mc_find(nid); + static struct ghes_dimm_info *dimm; + struct dimm_info *di; - if (mci) - return mci; + /* + * We require smbios_handle being set in the error report for + * per layer reporting (SMBIOS handle for the Type 17 Memory + * Device Structure that represents the Memory Module) + */ + for_each_dimm(dimm) { + di = dimm->dimm; + if (di->smbios_handle == handle) + goto found; + } - if (num_possible_nodes() > 1) { - edac_mc_printk(fallback, KERN_WARNING, - "Invalid or no node information, falling back to first node: %s", - fallback->dev_name); + return NULL; +found: + if (dimm->card < 0 && card >= 0) + dimm->card = card; + if (dimm->module < 0 && module >= 0) + dimm->module = module; + + if ((num_possible_nodes() > 1 && di->mci->mc_idx != nid) || + (card >= 0 && card != dimm->card) || + (module >= 0 && module != dimm->module)) { + edac_mc_printk(di->mci, KERN_WARNING, + "Inconsistent error report (nid/card/module): %d/%d/%d (dimm%d: %d/%d/%d)", + nid, card, module, di->idx, + di->mci->mc_idx, dimm->card, dimm->module); } - return fallback; + return dimm; } void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) { + struct ghes_dimm_info *dimm; struct dimm_info *dimm_info; enum hw_event_mc_err_type type; struct edac_raw_error_desc *e; @@ -428,6 +462,9 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) unsigned long flags; char *p; int nid = NUMA_NO_NODE; + int card = -1; + int module = -1; + int handle = -1; /* We need at least one mc */ if (WARN_ON_ONCE(!fallback)) @@ -443,10 +480,23 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) spin_lock_irqsave(&ghes_lock, flags); - /* select the node's mc device */ if (mem_err->validation_bits & CPER_MEM_VALID_NODE) nid = mem_err->node; - mci = get_mc_by_node(nid); + if (mem_err->validation_bits & CPER_MEM_VALID_CARD) + card = mem_err->card; + if (mem_err->validation_bits & CPER_MEM_VALID_MODULE) + module = mem_err->module; + if (mem_err->validation_bits & CPER_MEM_VALID_MODULE_HANDLE) + handle = mem_err->mem_dev_handle; + + dimm = get_and_prepare_dimm_info(nid, card, module, handle); + if (dimm) + mci = dimm->dimm->mci; + else + mci = edac_mc_find(nid); + if (!mci) + mci = fallback; + pvt = mci->pvt_info; e = &mci->error_desc; @@ -665,7 +715,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) if (p > pvt->other_detail) *(p - 1) = '\0'; - dimm_info = edac_get_dimm_by_index(mci, e->top_layer); + dimm_info = dimm ? dimm->dimm : NULL; edac_raw_mc_handle_error(type, mci, dimm_info, e, -1, -1); From patchwork Mon Jun 24 15:09:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167614 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348053ilk; Mon, 24 Jun 2019 08:09:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqyaSyTI3oAd6BpoCyC7gIXrOHWcv/zBZJOiUxbsypceftgoQKdStFtGQlDPT0gZvkWz2MeQ X-Received: by 2002:a17:90a:8984:: with SMTP id v4mr25343845pjn.133.1561388993753; Mon, 24 Jun 2019 08:09:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388993; cv=none; d=google.com; s=arc-20160816; b=Hb8MkSisCddNCGodoest0PcuACsEKvyb5iwHPfeDv2AjdP6YgmoYB6nhWYkgw8jY4m y1EQy+CvI75+jEPBtgQop+0tmPFGVGBWwhM9VxfFYbL3RdH1o5xjHxcUxoGA/oG9u3dX /0kgGKTegZBC8cCH6dOfBTRpcWSs7Qfz8r2YqTvfiC4HZnsLqAgUzUIPD8P0s6S7X+gW TQzEoUm7rw9kwO9KY/i7Jqqp2nqGfIYQH1VrMdebK8VTgk71v+USEx5KQXb/ujxzClZN TTmoradC7YxU8S8AIkC7rxJfXGg+yquQswrnXI2dGx61phMi3zwF/R96gjlMfUMxjfgF ks2Q== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=7Z0UKMqfS8QvL2mnWEE469Otwk5nyt+5zDx8HNspP20=; b=upZXe0/P7heLiC+J4abKKliswkHv4hurl20tqxuZ4ODODsphXowN/E3bNSPE16gHbC M6NFCFl5uM41Gg7FX8mWyCRNwzwmk/J++nMiQuUDd9WDrVjCzn+BpW5ZpuSijUJsJ4pz Fv55um//aM0fbqURD2W3NsPr9ikQnMmGsZFD+3g1L2nOTy6/dvUpcdFJKEbxI5MvTO1V KJelH7ZW3jGAM7TFKcZ119Sh40ifMKY2SxzzlkZzd58Uho1g0wjIp7sTIT6tS4umes/G TYvvST/Wot4YSkregD/IiOB4SkRjxQ8cw1HNkDBlkmvpd3Nm+kc5DzJGL9rc9DSXEQ/M MhSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=crUbmuvb; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=o1VLQdEE; 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 w10si10049805plq.403.2019.06.24.08.09.53; Mon, 24 Jun 2019 08:09:53 -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=crUbmuvb; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=o1VLQdEE; 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 S1730857AbfFXPJv (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:51 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:60586 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730834AbfFXPJr (ORCPT ); Mon, 24 Jun 2019 11:09:47 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0N6n018740; Mon, 24 Jun 2019 08:09:40 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=7Z0UKMqfS8QvL2mnWEE469Otwk5nyt+5zDx8HNspP20=; b=crUbmuvbbvT3MzYaKe+2Qk1jDGdghm4FPQZYv2dhG7BKbH6Am0AyGxgz99x6DXEAif3H gCXy9Pc4kSq3wqHRFcsSuKTZjjOSL/1ya9aIWBd/N3zb6SlpjWj+83WuQqfX4ZpZ/zjo jAZDe1Tey1pIrA5ytoWbshwkjYysPHkJ89Cq8IczKKhzwavhczdun3PW3HIi211kKWE0 oTlEpGX1epDVbCB8sbmX/icUWzYL03gygYcuT7BL5dG0jtRPyDIn3I6Cy1uFxhHOa9uf S70MSZULpL1EaPbilUMkdbjEUbi5ZYTvEJVurB6q+rrpqRzIDGFREZfywwkbUHqkZt4N wA== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9tc7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:40 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:39 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.52) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:39 -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=7Z0UKMqfS8QvL2mnWEE469Otwk5nyt+5zDx8HNspP20=; b=o1VLQdEEo2+LH+4ozj9HGk44HSjbAI/zBZoJJHkBAWMVsfRf4HKwCcz8BvnArn2Llro2zpiDALY7tqichzqsEFD/MxznZHSzi5xNikm8EShrUr2BxJMd1pGV7wpJNyvxn/Ad7XtZ3ZvS/ZlnSo6pmt7BWoSeZRvPSicTNdqsldo= 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:09:38 +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:09:38 +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 21/24] EDAC, ghes: Enable per-layer reporting based on card/module Thread-Topic: [PATCH v2 21/24] EDAC, ghes: Enable per-layer reporting based on card/module Thread-Index: AQHVKp7X2ENQDwTZIEmHMk4xQwA/XQ== Date: Mon, 24 Jun 2019 15:09:37 +0000 Message-ID: <20190624150758.6695-22-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 0d14670b-2279-466b-acb7-08d6f8b5f96e 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:4125; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(346002)(376002)(366004)(136003)(189003)(199004)(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)(11346002)(76176011)(6506007)(110136005)(316002)(54906003)(446003)(25786009)(66066001); 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: iBkW0geixbLc5vk3LMdcJ5KSX9jYzKCM5k+j4mCqOuzIXsFuWlH3LeMKmHbQDTmiA3Fh2q5f/X/C8pWS8WPcvnHXuJrhqxY5hXhPkAP6tbA1zfPYiUldhxlNKeR6MK3YqVwWgnIvBNdpyls7xUttr9XKFZuvE6JHnATIgZ2pqPhMIHvgzAH/8qX9kWSjUjrGEfMBSFT9zzX5LPVKF+9tiLo1rhekAcQsMoc14BM7o8gYr+RhzliJ/1iEgyFLASRxVORPTmv08eoN8iZgV8SAflquIJPIwuNRkIGeMe1xSObUTCrjdIQzHVOBitIvrr10egZmks6PGL3kJUy5YcIFxia333xnjaJeJP2V9TCeNqmO2G0b5I3G+H9fVjrhshAjxWfcgpE8HCj3A2MrhV2t+X7omMBniaB8jWTuSTmrBAs= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 0d14670b-2279-466b-acb7-08d6f8b5f96e X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:37.9381 (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 This patch enables per-layer reporting of the GHES driver based on node, card and module. A dimm can be uniquely identified by those 3 identifiers. The mc device is selected by the node id. Thus, each ghes edac memory controller device has a 2-dimensional layer hierarchy based on card and module in the same way as most other driver have. An error log looks as follows now: [ 8902.592060] {4}[Hardware Error]: Error 6, type: corrected [ 8902.597534] {4}[Hardware Error]: section_type: memory error [ 8902.603267] {4}[Hardware Error]: error_status: 0x0000000000000400 [ 8902.609522] {4}[Hardware Error]: physical_address: 0x000000b3bb7d3000 [ 8902.616126] {4}[Hardware Error]: node: 1 card: 3 module: 0 rank: 1 bank: 771 column: 14 bit_position: 16 [ 8902.625854] {4}[Hardware Error]: DIMM location: N1 DIMM_L0 [ 8902.807783] EDAC MC1: 1 CE ghes_mc on N1 DIMM_L0 (card:3 module:0 page:0xb3bb7d3 offset:0x0 grain:0 syndrome:0x0 - APEI location: node:1 card:3 module:0 rank:1 bank:771 col:14 bit_pos:16 handle:0x0052 status(0x0000000000000400): Storage error in DRAM memory) GHES error reports are now similar to edac_mc reports. This patch moves common code of ghes and edac_mc to edac_raw_mc_handle_error(). Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 45 ++++++++++++++---------- drivers/edac/ghes_edac.c | 76 ++++++++++++++++++---------------------- include/linux/edac.h | 2 ++ 3 files changed, 63 insertions(+), 60 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 3a40496a1973..9383a1179b83 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -915,11 +915,13 @@ int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, unsigned long page) EXPORT_SYMBOL_GPL(edac_mc_find_csrow_by_page); const char *edac_layer_name[] = { - [EDAC_MC_LAYER_BRANCH] = "branch", - [EDAC_MC_LAYER_CHANNEL] = "channel", - [EDAC_MC_LAYER_SLOT] = "slot", - [EDAC_MC_LAYER_CHIP_SELECT] = "csrow", - [EDAC_MC_LAYER_ALL_MEM] = "memory", + [EDAC_MC_LAYER_BRANCH] = "branch", + [EDAC_MC_LAYER_CHANNEL] = "channel", + [EDAC_MC_LAYER_SLOT] = "slot", + [EDAC_MC_LAYER_CHIP_SELECT] = "csrow", + [EDAC_MC_LAYER_ALL_MEM] = "memory", + [EDAC_MC_LAYER_CARD] = "card", + [EDAC_MC_LAYER_MODULE] = "module", }; EXPORT_SYMBOL_GPL(edac_layer_name); @@ -1046,7 +1048,26 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type, int row, int chan) { char detail[80]; + int idx; + int pos[EDAC_MAX_LAYERS] = { e->top_layer, e->mid_layer, + e->low_layer }; u8 grain_bits; + char *p; + + /* Fill the RAM location data */ + p = e->location; + + for (idx = 0; idx < mci->n_layers; idx++) { + if (pos[idx] < 0) + continue; + + p += sprintf(p, "%s:%d ", + edac_layer_name[mci->layers[idx].type], + pos[idx]); + } + + if (p > e->location) + *(p - 1) = '\0'; /* * We expect the hw to report a reasonable grain, fallback to @@ -1233,20 +1254,6 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, else if (!*e->label) strcpy(e->label, "unknown memory"); - /* Fill the RAM location data */ - p = e->location; - - for (i = 0; i < mci->n_layers; i++) { - if (pos[i] < 0) - continue; - - p += sprintf(p, "%s:%d ", - edac_layer_name[mci->layers[i].type], - pos[i]); - } - if (p > e->location) - *(p - 1) = '\0'; - dimm = edac_get_dimm(mci, top_layer, mid_layer, low_layer); edac_raw_mc_handle_error(type, mci, dimm, e, row, chan); diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 689841c5c84d..fb5a54e27917 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -178,18 +178,6 @@ static void ghes_edac_set_nid(const struct dmi_header *dh, void *arg) } } -static int get_dimm_smbios_index(struct mem_ctl_info *mci, u16 handle) -{ - struct dimm_info *dimm; - - mci_for_each_dimm(mci, dimm) { - if (dimm->smbios_handle == handle) - return dimm->idx; - } - - return -1; -} - static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) { if (dh->type == DMI_ENTRY_MEM_DEVICE) { @@ -500,11 +488,13 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) pvt = mci->pvt_info; e = &mci->error_desc; + edac_dbg(3, "MC%d\n", mci->mc_idx); + /* Cleans the error report buffer */ memset(e, 0, sizeof (*e)); + e->error_count = 1; e->grain = 1; - strcpy(e->label, "unknown label"); e->top_layer = -1; e->mid_layer = -1; e->low_layer = -1; @@ -514,6 +504,25 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) *pvt->msg = '\0'; *pvt->other_detail = '\0'; + if (dimm) { + /* The DIMM could be identified. */ + e->top_layer = dimm->card; + e->mid_layer = dimm->module; + strcpy(e->label, dimm->dimm->label); + } else if (nid >= 0 || card >= 0 || module >= 0 || handle >= 0) { + /* + * We have at least some information and can do a + * per-layer reporting, but the exact location is + * unknown. + */ + e->top_layer = card; + e->mid_layer = module; + strcpy(e->label, "unknown memory"); + } else { + /* No error location at all. */ + strcpy(e->label, "any memory"); + } + switch (sev) { case GHES_SEV_CORRECTED: type = HW_EVENT_ERR_CORRECTED; @@ -533,8 +542,10 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) (long long)mem_err->validation_bits); /* Error type, mapped on e->msg */ + p = pvt->msg; + p += sprintf(p, "%s", mci->ctl_name); if (mem_err->validation_bits & CPER_MEM_VALID_ERROR_TYPE) { - p = pvt->msg; + p += sprintf(p, ": "); switch (mem_err->error_type) { case 0: p += sprintf(p, "Unknown"); @@ -588,8 +599,6 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) p += sprintf(p, "reserved error (%d)", mem_err->error_type); } - } else { - strcpy(pvt->msg, "unknown error"); } /* Error address */ @@ -602,8 +611,9 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK) e->grain = ~mem_err->physical_addr_mask + 1; - /* Memory error location, mapped on e->location */ - p = e->location; + /* Memory error location, mapped on e->other_detail */ + p = pvt->other_detail; + p += snprintf(p, sizeof(pvt->other_detail), "APEI location: "); if (mem_err->validation_bits & CPER_MEM_VALID_NODE) p += sprintf(p, "node:%d ", mem_err->node); if (mem_err->validation_bits & CPER_MEM_VALID_CARD) @@ -621,27 +631,8 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) if (mem_err->validation_bits & CPER_MEM_VALID_BIT_POSITION) p += sprintf(p, "bit_pos:%d ", mem_err->bit_pos); if (mem_err->validation_bits & CPER_MEM_VALID_MODULE_HANDLE) { - const char *bank = NULL, *device = NULL; - int index = -1; - - dmi_memdev_name(mem_err->mem_dev_handle, &bank, &device); - if (bank != NULL && device != NULL) - p += sprintf(p, "DIMM location:%s %s ", bank, device); - else - p += sprintf(p, "DIMM DMI handle: 0x%.4x ", - mem_err->mem_dev_handle); - - index = get_dimm_smbios_index(mci, mem_err->mem_dev_handle); - if (index >= 0) - e->top_layer = index; + p += sprintf(p, "handle:0x%.4x ", handle); } - if (p > e->location) - *(p - 1) = '\0'; - - /* All other fields are mapped on e->other_detail */ - p = pvt->other_detail; - p += snprintf(p, sizeof(pvt->other_detail), - "APEI location: %s ", e->location); if (mem_err->validation_bits & CPER_MEM_VALID_ERROR_STATUS) { u64 status = mem_err->error_status; @@ -749,11 +740,14 @@ ghes_edac_register_one(int nid, struct ghes *ghes, struct device *parent) struct ghes_edac_pvt *ghes_pvt; int rc; struct mem_ctl_info *mci; - struct edac_mc_layer layers[1]; + struct edac_mc_layer layers[2]; - layers[0].type = EDAC_MC_LAYER_ALL_MEM; + layers[0].type = EDAC_MC_LAYER_CARD; layers[0].size = 0; - layers[0].is_virt_csrow = true; + layers[0].is_virt_csrow = false; + layers[1].type = EDAC_MC_LAYER_MODULE; + layers[1].size = 0; + layers[1].is_virt_csrow = false; mci = edac_mc_alloc_by_dimm(nid, mem_info.dimms_per_node[nid], ARRAY_SIZE(layers), layers, diff --git a/include/linux/edac.h b/include/linux/edac.h index 4dcf075e9dff..40e7da735e48 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -336,6 +336,8 @@ enum edac_mc_layer_type { EDAC_MC_LAYER_SLOT, EDAC_MC_LAYER_CHIP_SELECT, EDAC_MC_LAYER_ALL_MEM, + EDAC_MC_LAYER_CARD, /* SMBIOS Type 16 Memory Array */ + EDAC_MC_LAYER_MODULE, /* SMBIOS Type 17 Memory Device */ }; /** From patchwork Mon Jun 24 15:09:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167617 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348320ilk; Mon, 24 Jun 2019 08:10:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqwSiGx+YEmEv07hD4nmDRu41daEy96MI7qeGYJW73rPBcuc2tfDDJK+tbCSMz+H3VV/6pdj X-Received: by 2002:a65:4009:: with SMTP id f9mr33326999pgp.110.1561389006196; Mon, 24 Jun 2019 08:10:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389006; cv=none; d=google.com; s=arc-20160816; b=qP1mq64YcRZ7lrspeMC5X7h+cD7RKf5AfE7HHmT5Otv4nYSIHQiOLCvDI+7r2bwaUq LVblCGtvWsJwYfhv6v2qwJZ60Ef2FzVaZCheCFpaUBiib+ZjS2NSXD2pqgQ3rkLCc8T9 ZVisX+zUxySjrOa6n04DTj0+qWkdNKQMktq7ErWoqZZYl+yFeMT+aucKdiijbDveMRjv rW8AbSr5Nk+6ef4ixB01WbW2o4CXY7T6uipAbRK6U1AO/iehcLiUJX8zhkcZ9DpIdxmn c3DSx0+bfekSFUP1eF2+0DrnyhxAWAbOE/iuzRyq08w3lUcWv6xnazcvd35oe5gNLU26 rpXA== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=Ikk2ij3rACKTpnbrxZ4dsUrvelonDMRzq529ZdMkYY8=; b=TF4q8R01SbjZpR4XhVySLhYNMDfXteNCxBCK3zO5/A2psASPOUeqKopuCGa5KfBZOx /wvaDyn6c+G08JLJJ9vsrOuRhJD8NowIskWnePBpSd8RY0+lHfpc8ZipCobRq4y9LTeI 7x7WHhinlt37vRGrY4OJ4TS2Q8zTvO63ppIbvtKRNBqyf2QlhrGLjQV4XjTyfdOaZo8K Q6Ir2xcG5X609SdhtXKEeuVG6UYEUdzLwFZaZPV50TFakP3l9ijYb1pZbkHloLeGVuf+ HJhA5HZh8cJHgzkxyTz+EoJ7fYxn/i2zYU2OR2OI8e9+MTwneLduXAisz3XZ8pbiS8Qb t0vA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=WMJfCTsB; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Gzf3dKrd; 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 o5si10466177pjp.77.2019.06.24.08.10.05; Mon, 24 Jun 2019 08:10:06 -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=WMJfCTsB; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=Gzf3dKrd; 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 S1730966AbfFXPKE (ORCPT + 30 others); Mon, 24 Jun 2019 11:10:04 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:37490 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730794AbfFXPJt (ORCPT ); Mon, 24 Jun 2019 11:09:49 -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 x5OF8Chs025865; Mon, 24 Jun 2019 08:09:42 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=Ikk2ij3rACKTpnbrxZ4dsUrvelonDMRzq529ZdMkYY8=; b=WMJfCTsBpJOVqT8ro56LPICqx5F7GHIEDSu7iTwjEvoSaiw8Om5d3ht7un2JWWrBFlAq 8M61ZW86D+rdYzJ2ScS/HNchO68TunxUg7llrIsjcVSO74wN7AESr7JTKo3mAZ/gho7G 7leDl45Yoc1SxILZDgFchc4TXAOrKdpKyuDI79Z1vwIdPePGxM7yzBsUC3Oq1VlBns5T OyP2WjBPJynxaNTTZBdXxPUOQfZqmxCVqGNJbh4O2iq984RphTXZ29W3Tr0FemI4gR8i O6pf4rUKca5lacPNG2Sr+/q80+5MiV8107+oWxWn58Bwu14En930/Wj0inoNzEO1fFoJ eQ== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2t9kujf7uw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:42 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:41 -0700 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (104.47.45.53) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:41 -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=Ikk2ij3rACKTpnbrxZ4dsUrvelonDMRzq529ZdMkYY8=; b=Gzf3dKrdyLKuRTqV4kESZvFjYQjbC3fk/KScbxyGw5voMJ/vY2SqoLTgkSaDid+uUc8RKyGEUfSatWqeAUqYHQQyUU0hzwm5lGgSNIFePMLF+8Vjw/ykiLVboNv9hxuN+KgZHeQzVYvhGT3FTigvbx+xx22Kv+Y4Xf2q0JM8NSU= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:39 +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:09:39 +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 22/24] EDAC, ghes: Move struct member smbios_handle to struct ghes_dimm_info Thread-Topic: [PATCH v2 22/24] EDAC, ghes: Move struct member smbios_handle to struct ghes_dimm_info Thread-Index: AQHVKp7YEBE65Vw/lk2wmDPTirYKWQ== Date: Mon, 24 Jun 2019 15:09:39 +0000 Message-ID: <20190624150758.6695-23-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: d66ed5c5-e459-43a7-68c5-08d6f8b5fa92 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:466; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: NT7DT70fQQB7tQa906ijvOhLzx+mdMzLyVJsgo1DIddh5BFyXmPL9JHT1Nl4WEL2yWWJNTwHoGTpdvo/PlgFpQY+uye2Ks05qQ3ZWeEIeriZq4+UcPmoDiMn8+K8Wqa8tysX4o8rkxYZ9tzOR3EjEpsbtLc8bZOUEu/hsb17EN36OqDFZEbGCEQE7vRIiCsww2cmUa4qyEwNCnQ2l064s67Svfkd1YZBcgb2KexNwgCKL3h5MqcR5ihW82zrekXCH76FQh03ZwerZcEInXZIeFilIxR8u7+H9dWkWr7Jn9sy2F1MZdbhl+WzFdYtE2zBiLE99f3hd5FFrDxk0iKSX1gMjzExWAP2Cx5WtYLQc3kJ6HrGgZkJDf12qiQSgW/z6UwlJTrrC7eW4ET2Mj7kVXfIzTfCmalpRK51/tffn3A= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: d66ed5c5-e459-43a7-68c5-08d6f8b5fa92 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:39.8800 (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: MN2PR18MB3197 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 This is private to the ghes_edac driver, so better keep that data in the struct ghes_dimm_info. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 15 +++++++-------- include/linux/edac.h | 2 -- 2 files changed, 7 insertions(+), 10 deletions(-) -- 2.20.1 diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index fb5a54e27917..714623204232 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -88,6 +88,7 @@ struct ghes_dimm_info { int module; phys_addr_t start; phys_addr_t end; + u16 smbios_handle; u16 phys_handle; }; @@ -187,6 +188,7 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) struct dimm_info *dimm = &mi->dimm_info; u16 rdr_mask = BIT(7) | BIT(13); + mi->smbios_handle = entry->handle; mi->phys_handle = entry->phys_mem_array_handle; if (entry->size == 0xffff) { @@ -268,8 +270,6 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) entry->total_width, entry->data_width); } - dimm->smbios_handle = entry->handle; - (*idx)++; } } @@ -308,8 +308,7 @@ static int mem_info_setup(void) for_each_dimm(dimm) { bank = device = NULL; - dmi_memdev_name(dimm->dimm_info.smbios_handle, - &bank, &device); + dmi_memdev_name(dimm->smbios_handle, &bank, &device); if (bank && device) { snprintf(dimm->dimm_info.label, sizeof(dimm->dimm_info.label), @@ -325,7 +324,7 @@ static int mem_info_setup(void) edac_dbg(1, "DIMM%i: Found mem range [%pa-%pa] on node %d, handle: 0x%.4x%s%s\n", dimm->idx, &dimm->start, &dimm->end, dimm->numa_node, - dimm->dimm_info.smbios_handle, + dimm->smbios_handle, *dimm->dimm_info.label ? ", label: " : "", dimm->dimm_info.label); } @@ -384,7 +383,6 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) mci_dimm->edac_mode = dmi_dimm->edac_mode; mci_dimm->dtype = dmi_dimm->dtype; mci_dimm->grain = dmi_dimm->grain; - mci_dimm->smbios_handle = dmi_dimm->smbios_handle; if (*dmi_dimm->label) strcpy(mci_dimm->label, dmi_dimm->label); @@ -415,13 +413,14 @@ get_and_prepare_dimm_info(int nid, int card, int module, int handle) * Device Structure that represents the Memory Module) */ for_each_dimm(dimm) { - di = dimm->dimm; - if (di->smbios_handle == handle) + if (dimm->smbios_handle == handle) goto found; } return NULL; found: + di = dimm->dimm; + if (dimm->card < 0 && card >= 0) dimm->card = card; if (dimm->module < 0 && module >= 0) diff --git a/include/linux/edac.h b/include/linux/edac.h index 40e7da735e48..32ad882bea15 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -384,8 +384,6 @@ struct dimm_info { unsigned csrow, cschannel; /* Points to the old API data */ - u16 smbios_handle; /* Handle for SMBIOS type 17 */ - u32 ce_count; u32 ue_count; }; From patchwork Mon Jun 24 15:09:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167615 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348122ilk; Mon, 24 Jun 2019 08:09:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqzZxZHvHdFtH1Rw6vFXXNsXkTfcnf2lRAW4v7FWfSE4z7P3RDrsyr7evOGKD2knCWptX2Pw X-Received: by 2002:a17:90a:2706:: with SMTP id o6mr26022780pje.62.1561388997059; Mon, 24 Jun 2019 08:09:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561388997; cv=none; d=google.com; s=arc-20160816; b=FNoy06aDQR245mB3oJjfsyriRV24jUBpHT8zvwriMdSqgzLv83u80lpMy56U9/ENu9 5N1YnuoxVlAkMsCbYsC49IE+sv7JdxcqKSCaiUF20f//vacMIv6ZOKzB5CGCYK5QKBlv 0KWFrXlET3/CQ9DgVqLJT0cOslZxZkUCfVpZUowvm79zOc3AOB6wDWs9SJfMgSoHYFBn MXzI7dEmQxrmuAOL9KlglG44uW7EWcPWMOSDxrZO89MIXCJeIQ1LGKBv8f5mmsisaUty /XDrib/3FBhE/9p1tZEyAnIVccp8ceHxE+VtNTb2eSwf6cQ6IGMO9oTyoEYVcCHslbjB xbBg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=WGLFp4pMQEFqnYop+HzdF+dqUTZFIfj7jmF0nxJn8Zg=; b=TY4vGWyed9JyXw1HHyqbSRGbNoraBIVAT/4Qnz2Ue+ksvsKvClYJczugpwmjwWqExa AisK1DQ/W7at7C2nwhvvSdu5EruPHKecLBOq8eVMOlhEGI68MR9kXRX8dVpx1T8/Qhp7 RM2jtiShjkZ08Bg/pTgZ2p5uevuLJ/8uUIj3TIikTnqk63vH4qRX45Eg4yzsj1FgCfIZ qeWZzTVNVSn0QFiWRO6HqvoCMoj7V/8zRd9/u3ipJa4mcssdy6kQsXZ3J4j+JrS9gyn5 Unlc3vJGvOcnUAY5uWYYS5SfC/rBWwvcJD41utyIidDF0/vtwrzxciZP5zzDvH+HisJe mPig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=eoFkrXJV; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=HgRd42z+; 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 j74si11500049pje.12.2019.06.24.08.09.56; Mon, 24 Jun 2019 08:09:57 -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=eoFkrXJV; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=HgRd42z+; 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 S1730895AbfFXPJz (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:55 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:28516 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730860AbfFXPJw (ORCPT ); Mon, 24 Jun 2019 11:09:52 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0Dhp018663; Mon, 24 Jun 2019 08:09:45 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=WGLFp4pMQEFqnYop+HzdF+dqUTZFIfj7jmF0nxJn8Zg=; b=eoFkrXJVOphEEUK0J7vYV8gCgNcDj4rkfeq2w3EoPD8CqtDKx10LgqeX2D7gQLsK0afi TBigNGdxpGgfnVJA3rpOYElU9+hVLL1Zg/EVN4YJBIDDtGx9elhBNGd12+e44O+BFRJy c0X/HvT1qNmhvRWVL8wWFyt9VM2zEy/Jcc8+O7Vim2Qi2Hx0zXsuVMHCAvqozPN8gS6L 2InfJZlbYK8C3etP90jS0XGSL5d97LjBTpPXJZ5oeeLmuDMwvHEMXBurRK7lhtGdC1Wy B6T3zVwA8yD7H0SfvKo44sUA4r3cJM4mxPrKk7+KtLQlQmEhfFeWhXt7G7ErKdOxJq+c AA== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9tcf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:44 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:43 -0700 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (104.47.45.59) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:43 -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=WGLFp4pMQEFqnYop+HzdF+dqUTZFIfj7jmF0nxJn8Zg=; b=HgRd42z+3vSbZhCy/yY+0RV0UimhQ5XYbGAJvBTQya1yNjpsMKoi3KzyUqPdxydlBZLzgvqjsA65+HNA9tAadF2Y4IX4ZnIevePosH3O3GOEoReaSymimM+oxn4QWr0cQcx9lZXAXQa0Q7NTQDBt1ihGVEMflFklxpbwzQFNxYg= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:42 +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:09:42 +0000 From: Robert Richter To: Borislav Petkov , James Morse , "Mauro Carvalho Chehab" , Tony Luck , Jonathan Corbet CC: "linux-edac@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Robert Richter , "linux-doc@vger.kernel.org" Subject: [PATCH v2 23/24] EDAC, Documentation: Describe CPER module definition and DIMM ranks Thread-Topic: [PATCH v2 23/24] EDAC, Documentation: Describe CPER module definition and DIMM ranks Thread-Index: AQHVKp7ZS8LjERln60y0i8Uoi5Y0PA== Date: Mon, 24 Jun 2019 15:09:42 +0000 Message-ID: <20190624150758.6695-24-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 8b4851e0-917e-461f-531a-08d6f8b5fc0a x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: 35kuKiqfEN76kJTUZYkkbBY/gs7U2YHYeiY/T+PE74/hVW+deFE5f0k60h//r2BmFM1Sk2dThcC2yQbhDjErIvJFWgYOX4/mAmn19RXLRy/jRZv7zKrnCn0YEqByIi1UJCpI5QnVqA59tFeHpoJi5xR40N+NeG6AAezcGVZihfHL6ENm5k6JPhLFPMhaxHHipt7lIfO2mJVHYBlF0j4I+dGKe7idN+SGkc+/WvX29iKUTwJDUB/B/zzYGO1H+uc9eGHuXy+Mdf708O7H6xrNXvCy2PHMAIGxPEvfHCd4uvUvHwh9DMwEXX/0/ifMbicAQZEPFKZ4jal4vw02C+bsCylqEp+UDsgzzbr4W79Ni5L891SipcpYTI42CGfRUWGwTjo1C89L1dUFPYfLWz9VHHTHQ+HLVirn5Jj2u0kG1UI= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 8b4851e0-917e-461f-531a-08d6f8b5fc0a X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:42.2856 (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: MN2PR18MB3197 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 Update on CPER DIMM naming convention and DIMM ranks. Signed-off-by: Robert Richter --- Documentation/admin-guide/ras.rst | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) -- 2.20.1 diff --git a/Documentation/admin-guide/ras.rst b/Documentation/admin-guide/ras.rst index c7495e42e6f4..4e2a01c77a9c 100644 --- a/Documentation/admin-guide/ras.rst +++ b/Documentation/admin-guide/ras.rst @@ -330,9 +330,12 @@ There can be multiple csrows and multiple channels. .. [#f4] Nowadays, the term DIMM (Dual In-line Memory Module) is widely used to refer to a memory module, although there are other memory - packaging alternatives, like SO-DIMM, SIMM, etc. Along this document, - and inside the EDAC system, the term "dimm" is used for all memory - modules, even when they use a different kind of packaging. + packaging alternatives, like SO-DIMM, SIMM, etc. The UEFI + specification (Version 2.7) defines a memory module in the Common + Platform Error Record (CPER) section to be an SMBIOS Memory Device + (Type 17). Along this document, and inside the EDAC system, the term + "dimm" is used for all memory modules, even when they use a + different kind of packaging. Memory controllers allow for several csrows, with 8 csrows being a typical value. Yet, the actual number of csrows depends on the layout of @@ -349,12 +352,14 @@ controllers. The following example will assume 2 channels: | | ``ch0`` | ``ch1`` | +============+===========+===========+ | ``csrow0`` | DIMM_A0 | DIMM_B0 | - +------------+ | | - | ``csrow1`` | | | + | | rank0 | rank0 | + +------------+ - | - | + | ``csrow1`` | rank1 | rank1 | +------------+-----------+-----------+ | ``csrow2`` | DIMM_A1 | DIMM_B1 | - +------------+ | | - | ``csrow3`` | | | + | | rank0 | rank0 | + +------------+ - | - | + | ``csrow3`` | rank1 | rank1 | +------------+-----------+-----------+ In the above example, there are 4 physical slots on the motherboard @@ -374,11 +379,13 @@ which the memory DIMM is placed. Thus, when 1 DIMM is placed in each Channel, the csrows cross both DIMMs. Memory DIMMs come single or dual "ranked". A rank is a populated csrow. -Thus, 2 single ranked DIMMs, placed in slots DIMM_A0 and DIMM_B0 above -will have just one csrow (csrow0). csrow1 will be empty. On the other -hand, when 2 dual ranked DIMMs are similarly placed, then both csrow0 -and csrow1 will be populated. The pattern repeats itself for csrow2 and -csrow3. +In the example above 2 dual ranked DIMMs are similarly placed. Thus, +both csrow0 and csrow1 are populated. On the other hand, when 2 single +ranked DIMMs are placed in slots DIMM_A0 and DIMM_B0, then they will +have just one csrow (csrow0) and csrow1 will be empty. The pattern +repeats itself for csrow2 and csrow3. Also note that some memory +controller doesn't have any logic to identify the memory module, see +``rankX`` directories below. The representation of the above is reflected in the directory tree in EDAC's sysfs interface. Starting in directory From patchwork Mon Jun 24 15:09:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 167616 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4348214ilk; Mon, 24 Jun 2019 08:10:01 -0700 (PDT) X-Google-Smtp-Source: APXvYqyLyeCukU7FbTsja3jWpa+K3UbIGDclPA2KdqTEOB1gucq5KWJUFtf45ccwZIqgkIcqQikD X-Received: by 2002:a17:902:ac88:: with SMTP id h8mr71148951plr.12.1561389001601; Mon, 24 Jun 2019 08:10:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561389001; cv=none; d=google.com; s=arc-20160816; b=VVRr3Uhuintswme+3HZwvm9WHqTOn+e+ExDdsnpJ0wRoLwvT2EH6wtrP5iJgxmHywT NVxAHxsgM04IbjuO4LWLJQ94Eh7KBrWLJ7Z6mHKIHJPRa9GXQSiJqrenbW9yH7Ks72x4 E8S23AdM1VWnA9Yzuaexu5O38U+CkF/I5TUYbmT5EmVhO+cgmHyFU77k1EmZKpr2S787 0NqyzL5jWJz7wCL1Bg2MbIHfuHW2iqLvz8agrsjSv7e8E/2v4oR9VegmpEr+vDVCJWSt HM/4U3efxIKuy6AYTfeMpaFbJ8v0rvoW+Aen+mbK19QTOubDO+8gfBtR7NfVb8C2zxAg pgbg== 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=Tx8UpEyPpXRqn/yZZOFXfPjItqJVXdo1VdCwoLR5kA4=; b=M1pp6SBdJcjpw9Q8SqD86swaTvb0qmnYmpX2Sq4xDxmzOUHVnqC6AYPPaH75Qtut9Q URvmrY+2Ivqt1iKT9q5qCDMCJztrGE1+f9gr/PRFOtgYDZZ9MyvthhkXHDfK5du2qI6g mZEmrAjZkdP4LmxCPneubAWETIxmC3PIZ9QYrzfJq9JK6ZIoj2+bJBgWqn/r1xpQ8Hf3 fgK3d6e8hL1tRwRBhrrLWpQ7Wvfh5kXX7aR4AY3DOpZjA7Yq+gAdBnWMgwzh73PteXw2 WIZcOFbGOw79VTUDgdXg5VL3RiVVZUEmJVcQzpMDuzUD0Ldp+AjPoiHU6O9mX4Kz3k5V XgVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0818 header.b=UZpk3s4H; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=GReAI3vu; 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 o5si10466177pjp.77.2019.06.24.08.10.01; Mon, 24 Jun 2019 08:10:01 -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=UZpk3s4H; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector2-marvell-onmicrosoft-com header.b=GReAI3vu; 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 S1730928AbfFXPJ7 (ORCPT + 30 others); Mon, 24 Jun 2019 11:09:59 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:39476 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730834AbfFXPJx (ORCPT ); Mon, 24 Jun 2019 11:09:53 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5OF0721018628; Mon, 24 Jun 2019 08:09:46 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=Tx8UpEyPpXRqn/yZZOFXfPjItqJVXdo1VdCwoLR5kA4=; b=UZpk3s4H5QWSy98Vz3/ZvpIB09ZvoCSSpJTZ7mIhKGq3h6nzilK36C161QhMupDk8zNE 6jqfkscYfhq9R8WUV+y7vm001EO3pohmjS3vnJqywF3hFagtzeSAelqUPFwcu/CLe0ec oPhDIpeics8E0FM5hdcMNgIcF6sfEZ12tRkQZxJSDN2e/zs2IZItlbvKQEL4P2aY2uZQ NjwD+Xq+QfZ5nslQU8i9fbytF0lQROqqAa94guQD7N8ZSLAUON0gun/xXnfMC8m1Hg9I Nd5j/KGaHwGRqvNpPFj60NuIE+E1BLWLjHgoQmF/c0SgFZB9hsdepy/BpvjIeAlEPDH7 fQ== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2tarxr9tck-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 24 Jun 2019 08:09:46 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 24 Jun 2019 08:09:45 -0700 Received: from NAM03-BY2-obe.outbound.protection.outlook.com (104.47.42.56) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 24 Jun 2019 08:09:45 -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=Tx8UpEyPpXRqn/yZZOFXfPjItqJVXdo1VdCwoLR5kA4=; b=GReAI3vuAlTMqio6qmTN8hLSMp7c8IJkRkf//tv+PvNqak53CU/iYP1CV8u1C9iFIG99Tg8DxJnmH47ZVCZV17Rd+jgIjGl2ExkiGxfhJHsw1Ch2nEy3dV0wSK2FSkG2KttGZhSqiU8vWRpakAs4iX9xIxz+bSGAXbXrulwQy64= Received: from MN2PR18MB3408.namprd18.prod.outlook.com (10.255.238.217) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.236.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Mon, 24 Jun 2019 15:09:44 +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:09:44 +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 24/24] EDAC, ghes: Disable legacy API for ARM64 Thread-Topic: [PATCH v2 24/24] EDAC, ghes: Disable legacy API for ARM64 Thread-Index: AQHVKp7btZJqTl0650643IuYJMBHSA== Date: Mon, 24 Jun 2019 15:09:44 +0000 Message-ID: <20190624150758.6695-25-rrichter@marvell.com> References: <20190624150758.6695-1-rrichter@marvell.com> In-Reply-To: <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: 82481c05-4725-4ff2-696f-08d6f8b5fd3a x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR18MB3197; x-ms-traffictypediagnostic: MN2PR18MB3197: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 007814487B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(346002)(376002)(199004)(189003)(36756003)(110136005)(107886003)(54906003)(81156014)(81166006)(68736007)(8676002)(25786009)(5660300002)(8936002)(305945005)(7736002)(4326008)(1076003)(186003)(6116002)(14454004)(476003)(486006)(2616005)(11346002)(256004)(14444005)(446003)(3846002)(50226002)(26005)(2906002)(52116002)(76176011)(71200400001)(71190400001)(99286004)(386003)(6506007)(102836004)(478600001)(316002)(86362001)(6512007)(66066001)(53936002)(6486002)(73956011)(66946007)(66476007)(66556008)(64756008)(66446008)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB3408.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: bm0o3OMJXooSrdPgF9EIJzSVWSAn4XfYUMc6CaLwWgSEIhO+zBxExVEKX1s+AUysyHuX8ei+a2ttgfFnW3VyGmWXNqe+fe9Cc8EDh5zMK+0HrIR2JC6x66F9SMzY6/GhEj9YC/zyXAGha1O7C/PfJpt6VcS+6CoYEVUa2uoU4pfvfWh7TU/BcQ3GkdpRzdCO4LCfELVfiKKtTms2KijAYKPsBH5aBMUVcCsrOqnJoegqgTFxlgIZNg+E177ra4kecneDRt2DZWHX1KbrmCyYGPFhWat8I6tjEFa8GfBGjE+G5K7ZoqAt4W/FlDQShQm8SHGZpdIaGq5VPFbxxrJy1UlYv3LgQcX4HauSVxEf1exKslH//00d2BWGD6OpahBgK46IPvh5Q0ZcBzlSrXzx/NXbEmHhFOgqJJgvNqiCLt4= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 82481c05-4725-4ff2-696f-08d6f8b5fd3a X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2019 15:09:44.6513 (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: MN2PR18MB3197 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 James Morse: "I'm all for removing/warning-its-broken it when ghes_edac is in use." Let's just disable legacy API for the ghes driver on arm64. Though, I don't agree with it as there still could be some userland tools that use this interface that cannot be used any longer after a transition from x86 to arm64. I leave that decision up to James. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 34 +++++++++++++++++++++++++++------- drivers/edac/edac_mc.h | 7 +++++++ drivers/edac/ghes_edac.c | 4 +++- 3 files changed, 37 insertions(+), 8 deletions(-) -- 2.20.1 diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 9383a1179b83..d7a120d7e304 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -276,16 +276,11 @@ void *edac_align_ptr(void **p, unsigned size, int n_elems) return (void *)(((unsigned long)ptr) + align - r); } -static void _edac_mc_free(struct mem_ctl_info *mci) +static void _edac_mc_free_legacy(struct mem_ctl_info *mci) { - int i, chn, row; + int chn, row; struct csrow_info *csr; - if (mci->dimms) { - for (i = 0; i < mci->tot_dimms; i++) - kfree(mci->dimms[i]); - kfree(mci->dimms); - } if (mci->csrows) { for (row = 0; row < mci->nr_csrows; row++) { csr = mci->csrows[row]; @@ -300,9 +295,34 @@ static void _edac_mc_free(struct mem_ctl_info *mci) } kfree(mci->csrows); } +} + +static void _edac_mc_free(struct mem_ctl_info *mci) +{ + int i; + + if (mci->dimms) { + for (i = 0; i < mci->tot_dimms; i++) + kfree(mci->dimms[i]); + kfree(mci->dimms); + } + + _edac_mc_free_legacy(mci); + kfree(mci); } +void edac_mc_disable_legacy_api(struct mem_ctl_info *mci) +{ +#ifdef CONFIG_EDAC_LEGACY_SYSFS + _edac_mc_free_legacy(mci); + mci->nr_csrows = 0; + mci->num_cschannel = 0; + mci->csrows = NULL; +#endif +} +EXPORT_SYMBOL_GPL(edac_mc_disable_legacy_api); + struct mem_ctl_info *__edac_mc_alloc(unsigned mc_num, unsigned dimm_num, unsigned n_layers, diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h index e8215847f853..d1bacc5f47f5 100644 --- a/drivers/edac/edac_mc.h +++ b/drivers/edac/edac_mc.h @@ -270,6 +270,13 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type, const char *msg, const char *other_detail); +/** + * edac_mc_disable_legacy_api() - Disable legacy sysfs API + * + * @mci: a struct mem_ctl_info pointer + */ +void edac_mc_disable_legacy_api(struct mem_ctl_info *mci); + /* * edac misc APIs */ diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 714623204232..804e48773f66 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -780,7 +780,9 @@ ghes_edac_register_one(int nid, struct ghes *ghes, struct device *parent) mci->dev_name = dev_name(dev); mem_info_prepare_mci(mci); - +#ifdef CONFIG_ARM64 + edac_mc_disable_legacy_api(mci); +#endif rc = edac_mc_add_mc(mci); if (rc < 0) { pr_err("Can't register at EDAC core (%d)\n", rc);