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; +}