From patchwork Wed Apr 22 11:58:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503575 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EEBA2112C for ; Wed, 22 Apr 2020 11:59:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D0BF020780 for ; Wed, 22 Apr 2020 11:59:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="xAX6UH70"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="dEZtbG2Z" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728225AbgDVL7b (ORCPT ); Wed, 22 Apr 2020 07:59:31 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:29342 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728203AbgDVL73 (ORCPT ); Wed, 22 Apr 2020 07:59:29 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpS8v031960; Wed, 22 Apr 2020 04:58:51 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=y9OSyDZiDyHUyPp0nql0h+G17NB5aioZk3SV919nq50=; b=xAX6UH70Cabev7GVYwRo8bWikpq3BoCVnMaCCK39yxgdKfW27uJEZgWkWYYlk4uhxSaW F2uDVI0TdYa0W45KO+T7LsS28hvjdfZNFyVMrF1PvGRFdcELMht4s9W7R3DOgjM3E+s3 9JxuWyWI+jnt9cYPAHNPlffqaZ11At+C73e6rQXLLOXnh77cTFbH0qpa0QOxXQG8xp6r cPnbnqouD28gFOywcM620klmUhaSWc5ceQ/pswyTd+lMVhf7KmREz41SRYPj/Xlk9Yri xS6OqOwzVDtypaGV0oqft7V19/711D7v9FKc+HDgeu0zCtg+ITzC4qNzKuVDBb+fi9I+ /A== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 30jd011w43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:58:51 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Apr 2020 04:58:48 -0700 Received: from SC-EXCH03.marvell.com (10.93.176.83) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Apr 2020 04:58:48 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.175) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:58:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kg2Ck1YrdoXSYW5MRFUEQ1cGeu2oP9dh5TwgWz8hg+RdrdD4KHMgpA0fL/sOEFQ/Ld3oadw1NNi3fc1M97/ahjzvpj0eII1r793GVzFMvV3QOOlDRQAR7TXSpTaPm//ZZzcgeqa8NXJ8cvyaHNkPbLIM7ZVytS4B5J137DU2xXSoW5cDIiDynF2pR9HmSHEgSAqVHgdwwL6GZDQVHuYJjlTlwIrwxmnboMi+ALNHJZCtY2ubQKZdzGwq0eLRbIb9pc8vCLfRGv3Iq077zzh3DUwADAK7jHfm88Ek1S2Vx+qQ6j7hzbJ7DCLWFprm8+4NRqSfzHWmxO0Uhnc57RR89Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y9OSyDZiDyHUyPp0nql0h+G17NB5aioZk3SV919nq50=; b=c4UMq+0VrJExaoaY5iJA2t1KrIRDgquNu6mZFctgK2lxXq131Pzq7bhvyoOFFpgX2aY52Obmtj5rb2K9r4HMYRrws81URPXnMu/qnz68XYcpIvpOKTFrgWO8hY67+ZqaR8S1/x7zwINc/8P/6TFbCXcPIVQQT+fnWjXvkr4E+EC16QBotFBROjSodjex7FN7MQG1oH/uK/0l30SXRE5qIR6YJBO641XP+BJEdUf1LjIICjm+Aahx3p6ORG+vqkPdLcEI7D6KCo0w7cDXJ6qLcGisAut9XDOuKmGvtTkQlrDrWqbC0cGsVztABCI+1vGgc61bXTFM2DEbTu1Xb0UXjA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y9OSyDZiDyHUyPp0nql0h+G17NB5aioZk3SV919nq50=; b=dEZtbG2ZNroHk+H4zbw5yRa9bolAtQIjCbTmdX7DP71ljYSv75E3/akv0jZBDDfmqlMatqNrmRYRP+m4z8o4cVFSFr4xy6Qr7WRcqOvWqENIkwRSuDDd7mRnDm1dNVz+zmF5TK8GItSsZoyUtBCWz5jP8oTYMh+L6QFs0MPggdc= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2566.namprd18.prod.outlook.com (2603:10b6:a03:12f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.27; Wed, 22 Apr 2020 11:58:47 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:58:47 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 01/10] EDAC/mc: Fix usage of snprintf() and dimm location setup Date: Wed, 22 Apr 2020 13:58:05 +0200 Message-ID: <20200422115814.22205-2-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:58:44 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d475e871-e7b8-4e0e-078b-08d7e6b48368 X-MS-TrafficTypeDiagnostic: BYAPR18MB2566: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:792; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(136003)(376002)(39850400004)(396003)(366004)(6506007)(66556008)(478600001)(2616005)(5660300002)(2906002)(8936002)(6512007)(6666004)(36756003)(16526019)(66476007)(186003)(66946007)(316002)(1076003)(6486002)(4326008)(52116002)(26005)(956004)(110136005)(8676002)(86362001)(81156014)(54906003);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FIehxfIFc1BBnZ58txEHmilfvbESX9A3mA8zGDK5SReVu8J+h67VwpDlaRUsJQOgPunzhD7ViBcp/fCGQg+zNbRr3dp/kgFIn/HkGgejA4cPPNwTqGJCc7MFJ7g5SonkrbfzMqeS4nDWskxckedcnwFAabnnqemHSHVxmC+ultk3CAERCYaPKETxIyxdMg+CyGk/RK0JJ/wTe5nca7fepHd9xIyepy1HDUF/PjFYUkQdf8U+C+5hHeIDemzqnu0EclJsYYspsoJQsHERvWcMBzGawPZ1V3E1rmG8rTR5yOpgKoUNnlsrimQ/o0wJO4gQhd8/549rqObZUKZ89D1f/+exLUe7NwbTh/U3apbnBIr0UL5LkX7bZCxwsb4C96gFslqXw42aHi2foF0qbJaJQvMD+ekHfoaWZAleY7NSuOnAFVwpohbh1mk7/qNCqsCh X-MS-Exchange-AntiSpam-MessageData: UFVznkGtVTcDABCVY9hTxg8yM6ZGdVC1dAl7R4O8zgmf3+3dgdZt5MBduSoeGTPVASNfJtcDWsBPIGxYjtOXA3ziCFT5oiJFXdsJwfNIxMgzbjOj3PcBw52pwVaOecteMS76+Yb4znz0GMqLnDdoOA== X-MS-Exchange-CrossTenant-Network-Message-Id: d475e871-e7b8-4e0e-078b-08d7e6b48368 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:58:47.2477 (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: BMP3ZERQVvqLvNHznOtxs96S9BwX7iJ0W2k1EjRf5rBbqbM1TjnQZ6Ks1w8SbFrTYQkYdIZ1+xnEK6JIEzFDuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2566 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The setup of the dimm->location may be incomplete in case writing to dimm->label fails due to small buffer size. Fix this by iterating through all existing layers. Also, the return value of snprintf() can be higher than the number of bytes written to the buffer in case it is to small. Fix usage of snprintf() by either porting it to scnprintf() or fixing the handling of the return code. It is very unlikely the buffer is too small in practice, but fixing it anyway. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 75ede27bdf6a..107d7c4de933 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -130,11 +130,11 @@ unsigned int edac_dimm_info_location(struct dimm_info *dimm, char *buf, n = snprintf(p, len, "%s %d ", edac_layer_name[mci->layers[i].type], dimm->location[i]); + if (len <= n) + return count + len - 1; p += n; len -= n; count += n; - if (!len) - break; } return count; @@ -397,19 +397,19 @@ static int edac_mc_alloc_dimms(struct mem_ctl_info *mci) */ len = sizeof(dimm->label); p = dimm->label; - n = snprintf(p, len, "mc#%u", mci->mc_idx); + n = scnprintf(p, len, "mc#%u", mci->mc_idx); p += n; len -= n; + for (layer = 0; layer < mci->n_layers; layer++) { - n = snprintf(p, len, "%s#%u", - edac_layer_name[mci->layers[layer].type], - pos[layer]); + dimm->location[layer] = pos[layer]; + if (len <= 1) + continue; + n = scnprintf(p, len, "%s#%u", + edac_layer_name[mci->layers[layer].type], + pos[layer]); p += n; len -= n; - dimm->location[layer] = pos[layer]; - - if (len <= 0) - break; } /* Link it to the csrows old API data */ From patchwork Wed Apr 22 11:58:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503587 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5AF2A1575 for ; Wed, 22 Apr 2020 11:59:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3D28620882 for ; Wed, 22 Apr 2020 11:59:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="LMSVV4MW"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="JnOBa09n" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728427AbgDVL7x (ORCPT ); Wed, 22 Apr 2020 07:59:53 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:39926 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728228AbgDVL7b (ORCPT ); Wed, 22 Apr 2020 07:59:31 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpH1i031933; Wed, 22 Apr 2020 04:58:53 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=JGX6tt0ew2crDOsj0H/XjraC++kVsKN9IeEIeGx9I1I=; b=LMSVV4MWg4B3ICwFKSm94OWGv+oAH7bDpdajE7pujY0rkMgGeknaxJLa3zechKOFMJFo cuCojWVJIORBFqG4qA0IMHW/AmOb3j+9nsmDtNuUhboiPoMasqDP1BTNlBMrViG6x25W 7P+Q+t5MezLsoPkJ9BE3KPEl0IE2IQwxJNlXbJZ1KKsaHaD0GJHQ45Hpy46GUfBe/UDY PBfEAaHVFp51woeVBz17lN50rNk5LCmZNgSWq8h3azDTVTU2o49OTcJuXj2VkpQ0pHk6 zkYipXuCyiNuYtbIlabgBy4eeXRAoNbZd4Tuyiv6A7yuxkAEj3Idmw9K5Cj5/yU8qsUl rQ== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0b-0016f401.pphosted.com with ESMTP id 30jd011w47-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:58:53 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Apr 2020 04:58:51 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.42) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:58:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KislZ0VCMKXqBw3q+Mb+MRXZpjNPkaSmNgA/KfQAHUfNG2zrDwHIg0RYoOGcxbu7NSixcBCdwpOipFYxDhEXwQhsy8xz3bIJqtRoqudjeTLVPxgi0UiGkqw8AhtMHiVnINisjWwb94wSV9iTDtw1tTRellqEotjyjdLJxpfdumw5Nl3EElbMEgXGNC/psopZSFlN/FYln3hxNBO7BrgpJySCOUnst3HKpuoqWcJYZD9x2fwmiOAyJEwMVT6Z5CuCXIs4EkGEEng3PPL6+umqX3P+35u5HbYg3eG+f6P3pRDgzRto8i9X0W00eRBeIGFo3YBoGf2LPWajgwVhm1sX3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JGX6tt0ew2crDOsj0H/XjraC++kVsKN9IeEIeGx9I1I=; b=gFlw0zDP92lJ1YtMynyjx7qv/Bczc5fx1E4vbRZ3ec6wA8IJ0XcF6Eb+E8KVaWBd0IPxUvqwwrYi8wdOx6zXvVSyTAP+uM1FqAN8Zn0ClMvpmqHyuCkNDWQX/sovkDSzlqYzeOBgiFoU/sJKZIL49l//O8UeLFVQf4+y7BnaAu7/2piJ2bgcXYCbqDd5vFlaZ8vxWaQaaMHxFdyArYP4inJPgwugBosatzGmAOnqB+grm6eaPWi2QaavBw86BkbLFzPceaf7UAmJUCwo7Qqri78rrseqHBaDhvby+YKkwk5agUb89MeJNottiTJCQJsMcKZTstEXlficcy23xvWSRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JGX6tt0ew2crDOsj0H/XjraC++kVsKN9IeEIeGx9I1I=; b=JnOBa09nU9ARsjyGrMpf2dXgHcGbFvGGQ5e+GQ720sXDDcdTRKh0owU81YLkM+PYAFXKF1095a+mPYPLHlx7DQJF/kJzEQthkmYkTpaDTDqgORq0uN9QNjgrIHHLBAsrS1eoOjlJcdCitEvkhMjq/8E2on5N80HIpPwXLMfIZLU= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:58:50 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:58:50 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 02/10] EDAC/mc: Use int type for parameters of edac_mc_alloc() Date: Wed, 22 Apr 2020 13:58:06 +0200 Message-ID: <20200422115814.22205-3-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:58:47 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 430a66eb-e9ee-46f7-7dd0-08d7e6b48547 X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vh2BQzG5HdBMQ3LmrRV+KCtk3BNZ13GqsvCrWUv31o4zegMqs0l8RHtt7jMFCnJrEfo0u9hVm7f4JKYeqYMr7gHQkYPAkMbsqBif1QOU6olOmiPXiZLZvyw94+31h3DD3InGMZxCXJZ6v8+Vhj58jUOc+cxwGhGdiVhE9eXxNhlu7FlU2kHYm89Y7ILr1AELgwZtNebjFEz642qp5LL+hG0BX4VVgU3HyWYiULXQPaADWrHAVGyus4IEKpKn9YJHn8KkC/kehGb88nPp7qIOcNRFIVh7LVUXue/9cJwO6JvroGcZ1T/a2+2kBJQTy/It6I+J4mBcVijlvGYng+j2tN1jIjsZJHpXmCM22I+N8LYSiTPqe7ZtXiXhYXFUq6VnhwttC4UXOqXYqG5Glomx+FN680EaW1FMbKzw7bleGh1R6kaQFWBNDMBcugPq2iIo X-MS-Exchange-AntiSpam-MessageData: icFgKIg5UBw3RAw/pPhM48IE7Xq1KofYSQ6muEJ/LtR+v/fskiAxyD8kEvfDxMgOXjvDnZtcUeUjaCiAnsc7JjPKzCRshuDQ1Aa0pVn/r55eE2nuJ6Fip65ByYLZTHd2hfi9W7KTQir91KzESBYSyA== X-MS-Exchange-CrossTenant-Network-Message-Id: 430a66eb-e9ee-46f7-7dd0-08d7e6b48547 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:58:50.5428 (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: 6fV2H0cMRlrN5Wgc1DlAPiUNsiddtIgEApxwpDJ/YVgXgdXgp8V3wgUjvQlRLZxJqbYN+uz/6+7TT2+HnF132A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org Most iterators use int type as index. mci->mc_idx is also type int. So use int type for parameters of edac_mc_alloc(). Extend the range check to check for negative values. There is a type cast now when assigning variable n_layers to mci->n_layer, it is safe due to the range check. While at it, rename the users of edac_mc_alloc() to mc_idx as this fits better here. Signed-off-by: Robert Richter --- drivers/edac/edac_mc.c | 7 +++---- drivers/edac/edac_mc.h | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 107d7c4de933..57d1d356d69c 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -444,8 +444,7 @@ static int edac_mc_alloc_dimms(struct mem_ctl_info *mci) return 0; } -struct mem_ctl_info *edac_mc_alloc(unsigned int mc_num, - unsigned int n_layers, +struct mem_ctl_info *edac_mc_alloc(int mc_idx, int n_layers, struct edac_mc_layer *layers, unsigned int sz_pvt) { @@ -456,7 +455,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned int mc_num, void *pvt, *ptr = NULL; bool per_rank = false; - if (WARN_ON(n_layers > EDAC_MAX_LAYERS || n_layers == 0)) + if (WARN_ON(mc_idx < 0 || n_layers < 1 || n_layers > EDAC_MAX_LAYERS)) return NULL; /* @@ -505,7 +504,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned int mc_num, pvt = sz_pvt ? (((char *)mci) + ((unsigned long)pvt)) : NULL; /* setup index and various internal pointers */ - mci->mc_idx = mc_num; + mci->mc_idx = mc_idx; mci->tot_dimms = tot_dimms; mci->pvt_info = pvt; mci->n_layers = n_layers; diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h index 881b00eadf7a..4815f50afea0 100644 --- a/drivers/edac/edac_mc.h +++ b/drivers/edac/edac_mc.h @@ -98,7 +98,7 @@ do { \ /** * edac_mc_alloc() - Allocate and partially fill a struct &mem_ctl_info. * - * @mc_num: Memory controller number + * @mc_idx: Memory controller number * @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,8 +122,8 @@ do { \ * On success, return a pointer to struct mem_ctl_info pointer; * %NULL otherwise */ -struct mem_ctl_info *edac_mc_alloc(unsigned int mc_num, - unsigned int n_layers, +struct mem_ctl_info *edac_mc_alloc(int mc_idx, + int n_layers, struct edac_mc_layer *layers, unsigned int sz_pvt); From patchwork Wed Apr 22 11:58:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503569 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BCE071392 for ; Wed, 22 Apr 2020 11:59:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9FB3520780 for ; Wed, 22 Apr 2020 11:59:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="I8KhAKI+"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="JMMObG+0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728084AbgDVL7K (ORCPT ); Wed, 22 Apr 2020 07:59:10 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:56564 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727782AbgDVL7J (ORCPT ); Wed, 22 Apr 2020 07:59:09 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBqNri003094; Wed, 22 Apr 2020 04:58:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=Xy5jsoBOkC1Icj9iza/OgH4TD4RCI1kU7Vb1PQNU3wM=; b=I8KhAKI+YwA5LQtMoyJJVx2aNOlBy24BtWaIdQcmycNC7WmFpYWo72mRlu9azraNygon DM1frGftqWKitDL0dFdsYaVlpdJZGCOfnpAUsltOrRZfYbsnWUTUdxt02vp4xcAM5i6U We51naqkxTA0rI6OZz1ez/rIsTdessc+oRws9k7jyUQD9or1g1U+3t2Wsv/pXeWZHAAO aARt2Qiwf0ZjFuDAnh8/6Xjt0B/wV1endSt9CqSwf2yCWlfLSEApTTE1+JMf2KLTCRMp TtwmUHTVyYz7w+EAMNv5KG7odDxFUPcaO0OevLoThP1ppuKZsC/x4Jzb6eimTxvXguGM iQ== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 30fxwph9df-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:58:55 -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.1497.2; Wed, 22 Apr 2020 04:58:54 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.49) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:58:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LxgdR2pktWgOWZQfe4GX4Zle5zvDh9+n0w4fdYHEttAkyqkZaJsWA/VS4NlvyALl064TXlXBg4wAjVJ84PvPXu+7MuRAqo57H9n+wepLg+23raT9XJeV9ORQdGNe1lzXe4ZCnQk1ZxMpMTwlEKSvJsUUBP1/LDJ9UdathPxG5kflS2sSPC24Q2CTKV1Sozc6cmBwdPUW70xIiatZaq9zSzV31v8oo1TFOfuNHWNOqIMENrkH39LfTVuE3ALOKcCca07O9Yv/lRFfrtYbItdanjWokLzH/MM70IKJWPhHEQ2JFZH+NAdCk3zDSFlLBMYTd0gjiXgF421n7fEBzpOrtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xy5jsoBOkC1Icj9iza/OgH4TD4RCI1kU7Vb1PQNU3wM=; b=AZ53N0hf6dvnauyUC73xm1kIv57ABzdZPQChWfA2s0qrTEWqA+f+5RTs0RjDye6BtxbQg5o/GQfyoUjcXXnOIo6JC0wtgU1t2QPikmaVCq09mBo+AiUk8d+KT7GhcYL+7sJDZM2WHYBbBRRKbqEUZZpjIptRExizpT6kHnueNdQyl629UYH1S1ne2fbEv0Ur8m6eEkpseOSwv+vd+X6hGbc+4Rhg2GJj/Ac2NDaAnG2lKU05u0vmAv4lLnRFbNRJJk+pCulRv+zYgyk4xljp1L5ji1QoXA9DsWdZ3H2H9ZiVm3JR6OHF7IVU7zT/0dhER+D2on0y8/EBuV6l6mrzwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xy5jsoBOkC1Icj9iza/OgH4TD4RCI1kU7Vb1PQNU3wM=; b=JMMObG+0PUb9jreWDH89zt/KoKKmYrDU4M/ScUxK4V6ZmR0EVJN0aKf1m5b5+2RIRKOfTzP434NLjrFbPbfw2oW1t1wgZM+aVb+p/wL0knz6wR+38JbTGpSh1w8Xr74XQ2dulpBKuKXwPkLZDrr7Oul9zmdCq857yXO15DzyW0s= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:58:53 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:58:53 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 03/10] EDAC/ghes: Remove unused members of struct ghes_edac_pvt, rename it to ghes_mci Date: Wed, 22 Apr 2020 13:58:07 +0200 Message-ID: <20200422115814.22205-4-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:58:51 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d78359de-5a6e-43a1-00e4-08d7e6b4872a X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1107; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1dw/1MqtY8h4cxaWb6zwg/sMQb2CP0LH02g7jo6UXzrVZvT7htwtNxvf5uj7IkHiLaPn2Vf9l/5hUmDzlcMbf6uQLteAbbvgpERBi+KxPNY9la5/9vsdBtFXjtGCTR3An2BJVTV5/2XQQuTeANLNNpVX51Shq70N8ieGjddspoXeYjNTK5xcKoeCF7NbiNu8Lhm0a4Je89Ck+wYHQsOxqtUtUu39wXG1/XKE2VTW2XXdDNwprqx4als1qRY/Bg9dIAs4LfAFtf5Zk2d7gK4Yqn7k/dXsJgT0tL4V3Kdqu95D0lP7AeX5hGnBsc1Qjxebp7+xSFCvVWZcMM53xwXsmTQWcXuzTWW+FkC1WoBSrIdLwbvC/zbrATdicqNT7+P2aA8Vq/BGctALg5uDhwuw47SckMNnYq8h/8+98vNtfBEmGFsENeJVn/ThyiCxTCi3 X-MS-Exchange-AntiSpam-MessageData: wQTuGfBraoUvnCy3D7cYVpLnjD+FN8I3FO/56b6p54Y3DE7bYZSJdqakcVCVVZattsh3xDLClKFSLnGan3xFAqBMDd0hW/1Cr1oWoHez9rXUMr6P4zx9MLx3YENehtcqTsTkYryYEFUlScXoFUarbw== X-MS-Exchange-CrossTenant-Network-Message-Id: d78359de-5a6e-43a1-00e4-08d7e6b4872a X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:58:53.5581 (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: z/N7DQmEUxIYkGiCqU3SJa9DyyQZvdJ/Or/QKqawOUNlbLEb080fWZ95CR4t5nhq4zqFr8LoGvsNec4B65PgFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The struct members list and ghes of struct ghes_edac_pvt are unused, remove them. On that occasion, rename it to struct ghes_mci. This is shorter and aligns better with the current naming scheme. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index cb3dab56a875..39efce0df881 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -15,9 +15,7 @@ #include "edac_module.h" #include -struct ghes_edac_pvt { - struct list_head list; - struct ghes *ghes; +struct ghes_mci { struct mem_ctl_info *mci; /* Buffers for the error handling routine */ @@ -32,7 +30,7 @@ static refcount_t ghes_refcount = REFCOUNT_INIT(0); * also provides the necessary (implicit) memory barrier for the SMP * case to make the pointer visible on another CPU. */ -static struct ghes_edac_pvt *ghes_pvt; +static struct ghes_mci *ghes_pvt; /* GHES registration mutex */ static DEFINE_MUTEX(ghes_reg_mutex); @@ -203,7 +201,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) { struct edac_raw_error_desc *e; struct mem_ctl_info *mci; - struct ghes_edac_pvt *pvt; + struct ghes_mci *pvt; unsigned long flags; char *p; @@ -457,7 +455,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) bool fake = false; int rc = 0, num_dimm = 0; struct mem_ctl_info *mci; - struct ghes_edac_pvt *pvt; + struct ghes_mci *pvt; struct edac_mc_layer layers[1]; struct ghes_edac_dimm_fill dimm_fill; unsigned long flags; @@ -494,7 +492,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) layers[0].size = 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(0, ARRAY_SIZE(layers), layers, sizeof(*pvt)); if (!mci) { pr_info("Can't allocate memory for EDAC data\n"); rc = -ENOMEM; @@ -502,7 +500,6 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) } pvt = mci->pvt_info; - pvt->ghes = ghes; pvt->mci = mci; mci->pdev = dev; From patchwork Wed Apr 22 11:58:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503581 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EEDD91893 for ; Wed, 22 Apr 2020 11:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D327D20CC7 for ; Wed, 22 Apr 2020 11:59:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="yO1hMcZI"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="EfuhOnom" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728297AbgDVL7i (ORCPT ); Wed, 22 Apr 2020 07:59:38 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:1896 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728262AbgDVL7e (ORCPT ); Wed, 22 Apr 2020 07:59:34 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpHUD031930; Wed, 22 Apr 2020 04:59:00 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=mcDQEeW2rakWfmNe9ZMrfIjiaxOcVDiG2lohL2UMB1s=; b=yO1hMcZIUArBL6NUHGcEO9iwseCEAJpWpJUVrG8fAUkhAeieGM0/+dyJB+yiM96RDriz hGRwTwvXR0c9DO2G7p01bdlx/6nVfmY6BXeVpcuR6m6uRwE9bcOfcYDGrZKRFr1eHs1J LRtwU50XQ/Bl+rROYIT2PTqf+h4LMo0zRCXBRtCqX/3P84QqyX9r3/7MnuJ5+5vawJbR Yem6ltolt2APTLgKS/QNjeRkLLx6mAqLxMcKh2O6ZUhpcXphBd+osoTDBtc9GXR7hSGy uXm6D6nJXmac5EW/K7dtZbx1JZfoSMmT0zuHBv+4JYGSCdwxDBp+NcMDa4C4213qj2Oy rw== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0b-0016f401.pphosted.com with ESMTP id 30jd011w4h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:58:59 -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.1497.2; Wed, 22 Apr 2020 04:58:57 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.43) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:58:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HhUrwLp1Uj0fE785sJxWICkUXmnjXb8uCvnEUe6Sg9zGhb3J02YcgA7a4yhkLm3qTe72Q2sS0encglx/3tiYd6VWmfDOyPm4MMr9F6ITWKRk9U6ssz/lWNXCkWMCxlYPEXB3ILQg4l60K2IiPRYCeCjdX3KaPTSw7k493RuXPt0131XIW0GPVPeUDNEN/igSQf7hKaiIqiJo9oM0imR8pKfQRu6tZ4621DIsbYhl9ZEq4LkwfkSvKNyS445b7pzFzyX/li0CzmldepFHBwegTFQtRZtXjFomJlIRif/AbHAvzjrGOEka1iYhyRXb5k0cQKQ1tddDmgPY0nNs1RUzpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mcDQEeW2rakWfmNe9ZMrfIjiaxOcVDiG2lohL2UMB1s=; b=M7kQ+gx+Dp/J5ebN3qz412foFc/2LOUSY3xo2ljFf+u9VjjKM56pnfy6OB4siu9qw8cbh4ufOd3waGRLUIunGuPQaAytlZPCJWuQwv7tbeHaUN5iE6Q2jChrDBYJpTulxHbibBUWnqLQ7RGSEPOWE9GToHllKjW7dwqllVExjB4R9NNnFlrnHqXW5EMrsERuKLi21peOzPxu+p/pN/6cuKqp36rVrwW36kQY6QFSszBhsOZH5wUSEc04LjdXtCtYBeYJ4V00COyxDbBIcq3TPz6/PjsHKFhnHExk7rQvGWWqUVVOjXmMYv2UwPFq5xayvhyCIlRcZ8qrQQvNOX6iAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mcDQEeW2rakWfmNe9ZMrfIjiaxOcVDiG2lohL2UMB1s=; b=EfuhOnomuxIRpjVFFip9eR7fColk3vHmcjRG58KZlOgC5IL3etPcFOcs1B+RZ1Agi5nvIxR6bCI0V7WzLNmz6SGlMu+TfupIUNa2L2MYbYA7MYMGJ+hML1noMre6RWes1INUNJwj1S/qEY3MAXzCr+08rTH5tMXtetC1dlc7SIM= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:58:56 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:58:56 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 04/10] EDAC/ghes: Make SMBIOS handle private data to ghes Date: Wed, 22 Apr 2020 13:58:08 +0200 Message-ID: <20200422115814.22205-5-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:58:54 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a3913935-426d-4fc6-35e1-08d7e6b4890c X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1850; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3CIqUyrj1a4OdepsfaVpnD/+3POwlW01A7HQTIpYf+IG0xN7XtZjhfgv0Ffw7ZEwnaMQGf5XFsRl3TeqxZ1v6swh4s0PLu3ZCViW6oW49wPmG5vzcNhcBdZ/Dck8u9WG6j3pV5Si2dnJor9odgOzJmXcKaqd7IUecYIsncQEfCg2fwpl7PoLxoka9JUfd2QqjoAFwD3UtH3XYRkXdaqcwczoGOho0nAo9LwtvkHh75gpZSaplVSwUcmEd0v1y3brb+81bN3BG8cr7EzooC7LcQECT7O46ck9RQYo+0Phs9dyeubyoVFoSndyCvt0HGB5MA7R9VMhyjAgRJVgr5KVpyajUcc54QvkoOZXRFl9gmn0BOjrbbM4AtewnnSfmPrF4Zu2p6pFd1wuAhoVDXfZ+EyKTU/+JHMFqf8FhQbRXP0VhGkueMyf0aJIqM90hECY X-MS-Exchange-AntiSpam-MessageData: RGO1TdXau2xjcaNRI6PwldmELRJFkc0c8ZYoF2D9Y4hfT9aYSxPgdshPZK0GzChbEaDK3vETFst2uQfW6+ofL3kp9XWLCj4eMkIy21Rj3xSx6yhCVhajEfZfNOqgVDRIKLeusqwamrUBHGJnv3FMWQ== X-MS-Exchange-CrossTenant-Network-Message-Id: a3913935-426d-4fc6-35e1-08d7e6b4890c X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:58:56.7383 (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: Y7/KhE7aGqJ6WzGw9WTuOmcwbUBJN+kCkeqf1mQULr+VDnfSvpdS0SKZDQSjj6+hl/ZyF4ILqvm64FmuO4v/uw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org To identify a hw error's location, the ghes driver needs to know the mapping between a DIMM and the used SMBIOS handle. The handle is stored in struct dimm_info in the smbios_handle field where other drivers carry it too. Make the SMBIOS handle private and implement an own SMBIOS handle mapping table that is only used by the ghes driver. As a consequence, smbios_handle is removed from struct dimm_info. The mapping table is implemented as a list. This makes the locking and the allocation of table entries when adding or removing DIMMs much easier. Since the list is accessed by the interrupt handler it must be protected by a spinlock. Thanks to the use of a list, multiple entries can be prepared in advance without a lock being held. Once ready, the entries are added to an active list of DIMMs (ghes_dimm_list) by just a single list operation that needs the locking. The same list entry is also used for memory allocation, all entries are created at once using a single array allocation and are put in a pool (ghes_dimm_pool) that holds unused entries for later use. While at it, rename struct ghes_edac_dimm_fill to struct dimm_fill. Signed-off-by: Robert Richter Reported-by: kbuild test robot --- drivers/edac/ghes_edac.c | 117 ++++++++++++++++++++++++++++++++++----- include/linux/edac.h | 2 - 2 files changed, 104 insertions(+), 15 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 39efce0df881..23adb7674f9b 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -15,6 +15,12 @@ #include "edac_module.h" #include +struct ghes_dimm { + struct list_head entry; + struct dimm_info *dimm; + u16 handle; +}; + struct ghes_mci { struct mem_ctl_info *mci; @@ -42,6 +48,16 @@ static DEFINE_MUTEX(ghes_reg_mutex); */ static DEFINE_SPINLOCK(ghes_lock); +/* + * Locking: + * + * dimms, ghes_dimm_pool: ghes_reg_mutex + * ghes_dimm_list: ghes_lock + */ +static struct ghes_dimm *dimms; +static LIST_HEAD(ghes_dimm_list); +static LIST_HEAD(ghes_dimm_pool); + /* "ghes_edac.force_load=1" skips the platform check */ static bool __read_mostly force_load; module_param(force_load, bool, 0); @@ -72,11 +88,63 @@ struct memdev_dmi_entry { u16 conf_mem_clk_speed; } __attribute__((__packed__)); -struct ghes_edac_dimm_fill { +struct dimm_fill { + struct list_head dimms; struct mem_ctl_info *mci; unsigned int count; }; +static int ghes_dimm_pool_create(int num_dimm) +{ + struct ghes_dimm *ghes_dimm; + + if (!num_dimm) + return 0; + + lockdep_assert_held(ghes_reg_mutex); + + dimms = kcalloc(num_dimm, sizeof(*dimms), GFP_KERNEL); + if (!dimms) + return -ENOMEM; + + for (ghes_dimm = dimms; ghes_dimm < dimms + num_dimm; ghes_dimm++) + list_add(&ghes_dimm->entry, &ghes_dimm_pool); + + return 0; +} + +static void ghes_dimm_pool_destroy(void) +{ + lockdep_assert_held(ghes_reg_mutex); + INIT_LIST_HEAD(&ghes_dimm_pool); + kfree(dimms); +} + +static struct ghes_dimm *ghes_dimm_alloc(struct dimm_info *dimm, u16 handle) +{ + struct ghes_dimm *ghes_dimm; + + lockdep_assert_held(ghes_reg_mutex); + + ghes_dimm = list_first_entry_or_null(&ghes_dimm_pool, + struct ghes_dimm, entry); + + /* should be always non-zero */ + if (!WARN_ON_ONCE(!ghes_dimm)) { + ghes_dimm->dimm = dimm; + ghes_dimm->handle = handle; + list_del(&ghes_dimm->entry); + } + + return ghes_dimm; +} + +static void ghes_dimm_release(struct list_head *dimms) +{ + lockdep_assert_held(ghes_reg_mutex); + list_splice(dimms, &ghes_dimm_pool); +} + static void ghes_edac_count_dimms(const struct dmi_header *dh, void *arg) { int *num_dimm = arg; @@ -85,13 +153,15 @@ static void ghes_edac_count_dimms(const struct dmi_header *dh, void *arg) (*num_dimm)++; } -static int get_dimm_smbios_index(struct mem_ctl_info *mci, u16 handle) +static int get_dimm_smbios_index(u16 handle) { - struct dimm_info *dimm; + struct ghes_dimm *ghes_dimm; - mci_for_each_dimm(mci, dimm) { - if (dimm->smbios_handle == handle) - return dimm->idx; + lockdep_assert_held(&ghes_lock); + + list_for_each_entry(ghes_dimm, &ghes_dimm_list, entry) { + if (ghes_dimm->handle == handle) + return ghes_dimm->dimm->idx; } return -1; @@ -99,8 +169,9 @@ static int get_dimm_smbios_index(struct mem_ctl_info *mci, u16 handle) static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) { - struct ghes_edac_dimm_fill *dimm_fill = arg; + struct dimm_fill *dimm_fill = arg; struct mem_ctl_info *mci = dimm_fill->mci; + struct ghes_dimm *ghes_dimm; if (dh->type == DMI_ENTRY_MEM_DEVICE) { struct memdev_dmi_entry *entry = (struct memdev_dmi_entry *)dh; @@ -191,7 +262,10 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) entry->total_width, entry->data_width); } - dimm->smbios_handle = entry->handle; + + ghes_dimm = ghes_dimm_alloc(dimm, entry->handle); + if (ghes_dimm) + list_add_tail(&ghes_dimm->entry, &dimm_fill->dimms); dimm_fill->count++; } @@ -352,7 +426,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(mci, mem_err->mem_dev_handle); + index = get_dimm_smbios_index(mem_err->mem_dev_handle); if (index >= 0) e->top_layer = index; } @@ -457,7 +531,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) struct mem_ctl_info *mci; struct ghes_mci *pvt; struct edac_mc_layer layers[1]; - struct ghes_edac_dimm_fill dimm_fill; + struct dimm_fill dimm_fill; unsigned long flags; int idx = -1; @@ -482,6 +556,10 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) /* Get the number of DIMMs */ dmi_walk(ghes_edac_count_dimms, &num_dimm); + rc = ghes_dimm_pool_create(num_dimm); + if (rc < 0) + goto unlock; + /* Check if we've got a bogus BIOS */ if (num_dimm == 0) { fake = true; @@ -494,7 +572,6 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt)); if (!mci) { - pr_info("Can't allocate memory for EDAC data\n"); rc = -ENOMEM; goto unlock; } @@ -523,6 +600,8 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) pr_info("This system has %d DIMM sockets.\n", num_dimm); } + INIT_LIST_HEAD(&dimm_fill.dimms); + if (!fake) { dimm_fill.count = 0; dimm_fill.mci = mci; @@ -539,7 +618,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) rc = edac_mc_add_mc(mci); if (rc < 0) { - pr_info("Can't register at EDAC core\n"); + ghes_dimm_release(&dimm_fill.dimms); edac_mc_free(mci); rc = -ENODEV; goto unlock; @@ -547,12 +626,18 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) spin_lock_irqsave(&ghes_lock, flags); ghes_pvt = pvt; + list_splice_tail(&dimm_fill.dimms, &ghes_dimm_list); spin_unlock_irqrestore(&ghes_lock, flags); /* only set on success */ refcount_set(&ghes_refcount, 1); unlock: + if (rc < 0) { + ghes_dimm_pool_destroy(); + pr_err("Can't register at EDAC core: %d\n", rc); + } + mutex_unlock(&ghes_reg_mutex); return rc; @@ -562,6 +647,7 @@ void ghes_edac_unregister(struct ghes *ghes) { struct mem_ctl_info *mci; unsigned long flags; + LIST_HEAD(dimm_list); mutex_lock(&ghes_reg_mutex); @@ -574,14 +660,19 @@ void ghes_edac_unregister(struct ghes *ghes) spin_lock_irqsave(&ghes_lock, flags); mci = ghes_pvt ? ghes_pvt->mci : NULL; ghes_pvt = NULL; + list_splice_init(&ghes_dimm_list, &dimm_list); spin_unlock_irqrestore(&ghes_lock, flags); + ghes_dimm_release(&dimm_list); + if (!mci) goto unlock; mci = edac_mc_del_mc(mci->pdev); - if (mci) + if (mci) { edac_mc_free(mci); + ghes_dimm_pool_destroy(); + } unlock: mutex_unlock(&ghes_reg_mutex); diff --git a/include/linux/edac.h b/include/linux/edac.h index 0f20b986b0ab..6b7f594782c0 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -382,8 +382,6 @@ struct dimm_info { unsigned int csrow, cschannel; /* Points to the old API data */ - u16 smbios_handle; /* Handle for SMBIOS type 17 */ - u32 ce_count; u32 ue_count; }; From patchwork Wed Apr 22 11:58:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503585 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 52E2C1575 for ; Wed, 22 Apr 2020 11:59:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2E49F21473 for ; Wed, 22 Apr 2020 11:59:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="pmVXXhid"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="dy5CoDa4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728302AbgDVL7i (ORCPT ); Wed, 22 Apr 2020 07:59:38 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:56962 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728203AbgDVL7f (ORCPT ); Wed, 22 Apr 2020 07:59:35 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpHUF031930; Wed, 22 Apr 2020 04:59:03 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=c3VCTPNGha8txuWMZs0ZsuMZ6FPrtsFxHmkSjGZrUbQ=; b=pmVXXhidGfv0y7yT9Uv1w77HOG03WuFVK43Fbu3rGPlWCzrnIrc4gcRehuCbCAXcmK3/ ylJf37GQ8It9stQa9EOAkfSG5wJil3IL1XJIP0VNj4LfoZr7HR8O7ouCJyoaisGkjTjD ppTDaKBsN+1ZGVj0/aILun27OjJXIhKuahHaH2ceCdo+kXrYA83zTKzOgNYSW0j2P8aY FE4S2Ff38wPMSYKKMaSP1qF0tSLFXXuX2B8sZcXtUFEym2QsDJwVCtqYpFAk6AuGw9e+ SrGzt9gvqWT8HCcQQcz9UvMQznVqP7Cd3GXhIyeu5hrIjJpJ8Vt7EVvDkSV6dLJ32BdO Bw== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 30jd011w4n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:59:03 -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.1497.2; Wed, 22 Apr 2020 04:59:01 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:59:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h2pUZvrnz9Dt0yOWqWT3N5srr0/Dh/KUjQI617N3TxaM4xxAx7g+9o0fuVhtA9gXQpuMu/Edo6XUlg0NUcUbGVjgSuxEk0LZAs38eTLwnbi4neJqupiowL6Vh3RYsryyKP1PPBc+SD8yWqnCL3N3v0hApgOYIU3kixeY6Q5XcWcHoGn9vQQE/rIGW3xhsifJcAcciZY++nPzYS0G41ZbVPzvS9tQ+svNdRGzKkqVW1zdeTGeuWvrZP4d24YIrOCFUS8G5BUSVbZuPkUw4+9s55tQ8EnnvE6wqOBV7+vjQoZauWaCrHnr0CXCw26bMu3R5eDPnCep90huidgqOL0qRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c3VCTPNGha8txuWMZs0ZsuMZ6FPrtsFxHmkSjGZrUbQ=; b=KHoyDPMSsaODL2ECeyMoaI/FUMJLbK2RqWaPZqUArVfJuJSzn+jITa0s7YDJzE5mG87mBZEZnZov0MKDjSegVMWNAFiU3M4lTNbBbgUqEi8h7slyLK+NmHwo1mHt/40cMuHSImVjGmI6z7aMABY5iML6Wu8tNJCdYRrgbRTbu3W7hPN75t8dqaxZzldI5eRGb4LrnaQSKB3iEXgs7O3K1D7JHBtw6+g7CdwL0X34052iZK3+Z0ON8vFeaGwmj8WqmzA4xTQcv3dhlLyRznPPdDiA6JQpREpKO/nZ873bAwX3OByBTpHWWTXm4obs2Lb4djrodNl03dMcRJZYPJ4Z8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c3VCTPNGha8txuWMZs0ZsuMZ6FPrtsFxHmkSjGZrUbQ=; b=dy5CoDa4Panh9Es3bO6tPZ90P5OacR+AT3wq/gKBO5gaZ+ST9RKgXyR8BoZqXOXSEr5br5bMG7knNXNMiPLclLrAIMn017mh1GjBcpFGwrtLX9oT+4I5oaY2dzg3xUen5NkaRi01xxItACWb6Zw6JWEgmIIbD5LhkI+4VmEV4Sw= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:59:00 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:58:59 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 05/10] EDAC/ghes: Setup DIMM label from DMI and use it in error reports Date: Wed, 22 Apr 2020 13:58:09 +0200 Message-ID: <20200422115814.22205-6-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:58:57 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78a94d37-ed23-4558-4471-08d7e6b48ae5 X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:873; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x8QSFnGZoessV6gme9pFIYLttjQmN82+zSirNqq9+muSb0LRDaoM5cqc0gTQ+Vpc7CBIpkQZHsTvQ+G5E+WHhQEmGrqKuX3aYkw9KuZVSldkXXIny5uSQLCKSFIv85ofPQEOn/w4D3YIBiA4YcznixfKD8XcqUQB2NUL+PV4+RwAM+3xJk+0928rYs4nLoEJExdrvt9I2JNv1auNQdWwvBtbw11OD8MVZuc8ADIugvqN1p2KhmQoZZn5rQJifldp5mTD9F17TueXutBCFRxbH7rai9UCt5wkH2+pqpMQR+GXEl4HftbA6QU5wrZvqKAEEEwnyKYdf6EVZRDQP79Fm1qW5aO8QDXfVlx606gezyFCb2P7J6w9QyoEybQpqcArW8UGi2/XQsqY243IyvfE/PsLpT8MxhzIN00fvIxlqFZCGTKpcczo5QuW6fvHaSSt X-MS-Exchange-AntiSpam-MessageData: 3CtpnLhCTgdLkiuwVrVnQyJrDsf3ciHWX0aelsEXbhOZgi5YKo/0/KWFtvygi2VpLA1ATskx6lTOvwm1xwdkBxTIyrl7WQPnI0Df1f9lSTQzPINGy1ko+K5bjllfGlvVWt7QvC9fzd9vJ9axc44VWA== X-MS-Exchange-CrossTenant-Network-Message-Id: 78a94d37-ed23-4558-4471-08d7e6b48ae5 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:58:59.8565 (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: ENG069KpXlPkcZ+87sdoTqD3c3Aju0NlTbspOhF5QSWtuTbUuj58M1c0K6TUVmt/pK4JW1eZJHftAjmuGf0MOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The ghes driver reports errors with 'unknown label' even if the actual DIMM label is known, e.g.: EDAC MC0: 1 CE Single-bit ECC on unknown label (node:0 card:0 module:0 rank:1 bank:0 col:13 bit_pos:16 DIMM location:N0 DIMM_A0 page:0x966a9b3 offset:0x0 grain:1 syndrome:0x0 - APEI location: node:0 card:0 module:0 rank:1 bank:0 col:13 bit_pos:16 DIMM location:N0 DIMM_A0 status(0x0000000000000400): Storage error in DRAM memory) Fix this by using struct dimm_info's label string in error reports: EDAC MC0: 1 CE Single-bit ECC on N0 DIMM_A0 (node:0 card:0 module:0 rank:1 bank:515 col:14 bit_pos:16 DIMM location:N0 DIMM_A0 page:0x99223d8 offset:0x0 grain:1 syndrome:0x0 - APEI location: node:0 card:0 module:0 rank:1 bank:515 col:14 bit_pos:16 DIMM location:N0 DIMM_A0 status(0x0000000000000400): Storage error in DRAM memory) The labels are initialized by reading the bank and device strings from DMI. Now, the label information can also read from sysfs. E.g. a ThunderX2 system will show the following: /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/mc0/dimm8/dimm_label:N1 DIMM_I0 /sys/devices/system/edac/mc/mc0/dimm9/dimm_label:N1 DIMM_J0 /sys/devices/system/edac/mc/mc0/dimm10/dimm_label:N1 DIMM_K0 /sys/devices/system/edac/mc/mc0/dimm11/dimm_label:N1 DIMM_L0 /sys/devices/system/edac/mc/mc0/dimm12/dimm_label:N1 DIMM_M0 /sys/devices/system/edac/mc/mc0/dimm13/dimm_label:N1 DIMM_N0 /sys/devices/system/edac/mc/mc0/dimm14/dimm_label:N1 DIMM_O0 /sys/devices/system/edac/mc/mc0/dimm15/dimm_label:N1 DIMM_P0 Since dimm_labels can be rewritten, that label will be used in a later error report: # echo foobar >/sys/devices/system/edac/mc/mc0/dimm0/dimm_label # # some error injection here # dmesg | grep foobar [ 2119.784489] EDAC MC0: 1 CE Single-bit ECC on foobar (node:0 card:0 module:0 rank:0 bank:769 col:1 bit_pos:16 DIMM location:foobar page:0x94d027 offset:0x0 grain:1 syndrome:0x0 - APEI location: node:0 card:0 module:0 rank:0 bank:769 col:1 bit_pos:16 DIMM location:foobar status(0x0000000000000400): Storage error in DRAM memory) Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 43 +++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 23adb7674f9b..a5890afa9c71 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -153,7 +153,7 @@ static void ghes_edac_count_dimms(const struct dmi_header *dh, void *arg) (*num_dimm)++; } -static int get_dimm_smbios_index(u16 handle) +static struct dimm_info *find_dimm_by_handle(u16 handle) { struct ghes_dimm *ghes_dimm; @@ -161,10 +161,25 @@ static int get_dimm_smbios_index(u16 handle) list_for_each_entry(ghes_dimm, &ghes_dimm_list, entry) { if (ghes_dimm->handle == handle) - return ghes_dimm->dimm->idx; + return ghes_dimm->dimm; } - return -1; + return NULL; +} + +static void ghes_dimm_setup_label(struct dimm_info *dimm, u16 handle) +{ + const char *bank = NULL, *device = NULL; + + dmi_memdev_name(handle, &bank, &device); + + /* both strings must be non-zero */ + if (bank && *bank && device && *device) + snprintf(dimm->label, sizeof(dimm->label), + "%s %s", bank, device); + else + snprintf(dimm->label, sizeof(dimm->label), + "unknown memory (handle: 0x%.4x)", handle); } static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) @@ -248,9 +263,7 @@ 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 - */ + ghes_dimm_setup_label(dimm, entry->handle); if (dimm->nr_pages) { edac_dbg(1, "DIMM%i: %s size = %d MB%s\n", @@ -416,19 +429,17 @@ 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; + struct dimm_info *dimm; - 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 + dimm = find_dimm_by_handle(mem_err->mem_dev_handle); + if (dimm) { + e->top_layer = dimm->idx; + strcpy(e->label, dimm->label); + p += sprintf(p, "DIMM location:%s ", dimm->label); + } else { p += sprintf(p, "DIMM DMI handle: 0x%.4x ", mem_err->mem_dev_handle); - - index = get_dimm_smbios_index(mem_err->mem_dev_handle); - if (index >= 0) - e->top_layer = index; + } } if (p > e->location) *(p - 1) = '\0'; From patchwork Wed Apr 22 11:58:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503583 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2539317EA for ; Wed, 22 Apr 2020 11:59:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 053B52082E for ; Wed, 22 Apr 2020 11:59:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="aRVvIYCa"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="BK/RHbRS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726519AbgDVL7s (ORCPT ); Wed, 22 Apr 2020 07:59:48 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:35474 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728326AbgDVL7l (ORCPT ); Wed, 22 Apr 2020 07:59:41 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpJqc031947; Wed, 22 Apr 2020 04:59:06 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=IkA9br3+xRFBqWpoHR3xpUv3vB3zjDM0I/9Bw11lJQY=; b=aRVvIYCa+HWq3znsHV2GhSiofWAboQeA/N8PUKTnIQ9PzK1y23783Hdw1wqv/CuN0Til 99FT7sABNWHlKiw6PA2wQSNk9IidZMgOb4HcHKKnG4Vineyvn3t2/gqNtPc467Y011Vv +Qc7aRLvkl83bVWKCL5mOtTvS4shfV/E7NZByL+lsyvko5FufAV+p2pSB1emf+oRn1tW myfY/VdN3QAB/YWwRHM+/XLl73ga1hxE7uo7no9D1Ditj9yCSSUMFpPa2z1Neds5oPBf niAA4brd1IDwvk6sorg+Ti+mcf+HgbrSjddA5RQhiRmYDFki85sYGaYEzBgiAbZxBSDD ZQ== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 30jd011w4t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:59:06 -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.1497.2; Wed, 22 Apr 2020 04:59:04 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.102) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:59:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m0PGz1qKb35kphDMfiJn+FQ3u7gk73c5/0guu8jYOwF7GQ867vGKiOlUtHDal+DYRxXPW2BVS3y1/4kT3n6PAnSqjfID9FbNS1qOvK8/nLWfWoW0oiGJa+FPIgPBTaM9LO/jEaxMFRhmR6ZUlMJ/HzPokxqwQDlJBlX+rmHo1ZaeUBlP3eR6hFohQRF9zIbaw01sPNjpzJIqhCEvaKqRcUcIUjeS6JihEd3Y1MdLm8yO2x2u5lqpIodG0m2fvSLMOkVadq7NbZemFEr9PFVKTn12M06WAx69hrHSOegqNIOTIfSGXNhMcXahEgnLXV+BBHp4VVnRWw3CXvWyHsrz9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IkA9br3+xRFBqWpoHR3xpUv3vB3zjDM0I/9Bw11lJQY=; b=cY1GJQi5lHbWrEzuRkBwLM4s6da8k7+CIX1ZphxPa33sJ+8oVQM5sSTon4fIvd6sn0aELnus0V8dZR8KgoPAdgvV3JDHgYv0ILZPkSqXGqs4+6ECLWe7cTO9psrksPA3NudFgb4sgsHht+UGDwHohR7dt0oinhXcKKT4fD5M0Cpr1maVcE7Xco688B5fBN/1zDj0rfq4VEzjjVj9Ro387VAtUhK/LSGxSytLTBbY4taMzuhxFKUShGp62Sls08jB3Ij+Iynnaao3GdJfX3atfJ4Tz6rA3QlbhkJSk8iibY3rXFWRz/u2JFumfnIO1LEE+WIJnZ2GyVUuQrl+VgQg9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IkA9br3+xRFBqWpoHR3xpUv3vB3zjDM0I/9Bw11lJQY=; b=BK/RHbRSzYt56VNDsN0bHwp2YuaZkqFdDFyFbvwpAphnTIRYHv3r8RJVhh7BJ8O5wMMnhrG1URcPJGMMLyFn/6eewWICA8z3L59uCsj03KECj4Be6WHyWgBB53v/Y7SQryqRdNDBD9uRr1bXILLbut37XjdgchxJ5LWUqjyl9nY= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:59:03 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:59:03 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 06/10] EDAC/ghes: Remove local variable rdr_mask in ghes_edac_dmidecode() Date: Wed, 22 Apr 2020 13:58:10 +0200 Message-ID: <20200422115814.22205-7-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:59:00 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5b953180-b936-42fe-e261-08d7e6b48cbb X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1122; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: um2R5ffdWZQx8TqBPJxUrdt73lJPpXPbnZe7mlKI5VvPhep0p5IgP0Ceuk2IMs19hQ6JAPy+pXc+uSB1daZz8ZPynVcdrzyjUDBIN+tJokORWnxOIPGy8Umlu+TALx9S0Kx39BsFfpB5tk2eeW9Isz/3t5u6OhCSTD1L30xU0HtyyWfMUMAvu3wF7fnJaGKTijCaKQNqZs/P3CzKwj3cfUEf+oyY9nscMoajJ/WG3vac5jFHAMoC/cU6zu2r+8CJ1cM6J6adJtApFHRzj5SgePWhDr3hN7xyAXSD5U32Qz+6GYJygYzVY1jLhK3WCvoq2VisqgNFVyD30cZKPMr17ZJtGdGDtR8tGOcoj8Hr1C5BHosoXIIvN0yu1cp9c0D5RNGBMChhlR4+RKc1azE8wWIFVAwuZEQToUMm8DC4rgfygMf6a9MtZ0/bAM9mFqt4 X-MS-Exchange-AntiSpam-MessageData: UOm1YSC1hxyIg1Nu3qDiuBvnhfDR7YoNcRVVQLKZXo4AEwYQdAGlKlIJ2UVSXl7JWOZPZrToPZHhgUGL1Y1wxQw/bMV6ttAthRFgKJ3QVUZ6A7zDnMI2zK55EKjKMa1MpfaO00SziZ0jEhsJl3cjvA== X-MS-Exchange-CrossTenant-Network-Message-Id: 5b953180-b936-42fe-e261-08d7e6b48cbb X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:59:03.0886 (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: /lndd0G6mRxtBw47ki4GqeMNa1OaFuDF6yEa1Z3//R5cB38E21pWz5vsfqj4+vhH3mxj9PniW3Jkk1d1jEeZ3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The local variable rdr_mask serves as a static constant here. It hides what the code is doing. Remove it and replace it with the actual logic that checks some bits. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index a5890afa9c71..038e560fd332 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -191,7 +191,6 @@ 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_get_dimm(mci, dimm_fill->count, 0, 0); - u16 rdr_mask = BIT(7) | BIT(13); if (entry->size == 0xffff) { pr_info("Can't get DIMM%i size\n", @@ -241,7 +240,8 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) default: if (entry->type_detail & BIT(6)) dimm->mtype = MEM_RMBS; - else if ((entry->type_detail & rdr_mask) == rdr_mask) + else if ((entry->type_detail & BIT(7)) && + (entry->type_detail & BIT(13))) dimm->mtype = MEM_RDR; else if (entry->type_detail & BIT(7)) dimm->mtype = MEM_SDR; From patchwork Wed Apr 22 11:58:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503571 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5E6E11392 for ; Wed, 22 Apr 2020 11:59:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3F8DD20780 for ; Wed, 22 Apr 2020 11:59:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="eKZFJ10D"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="UR1oS+M2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726539AbgDVL7T (ORCPT ); Wed, 22 Apr 2020 07:59:19 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:55078 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726519AbgDVL7T (ORCPT ); Wed, 22 Apr 2020 07:59:19 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBq3N0002632; Wed, 22 Apr 2020 04:59:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=OVUkuliCuJYoxa2r32d45JPdmZPm20SXxguMDv3BRQI=; b=eKZFJ10DVrLKxxeZK4i1LDBEf0Yg+j2wf7wnDrH/QeuQjjyczVex/iPMPx2ooTFRq1bY j5wL92K043+Dqr3JlwHVnplhPLW8RMlatz9U2kasHbVlu4f0TsQ8iqsphFDCZvZqOm3h 1U1kl2JS8hunrDJo7/aXC13Oa60SDHSDOd4CLbPu5upa1kx7+PsxAbf7rhVvgHfqCTkO yUsvTyoZfJ15MNwBPXM6cAoS16IgLAnqO71oxzI9qjofA3nuJq95LouRDTTOwTu3ZuQf QuBr4jM8jht/S2aD3jxAXSSHURV/Clm+d/fyfzg4wCP47EDRlwuNvnnrdxm51ktbW+PG 2w== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0a-0016f401.pphosted.com with ESMTP id 30fxwph9dv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:59:08 -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.1497.2; Wed, 22 Apr 2020 04:59:07 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:59:06 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=COGivUyXPv2UdYD2HI9wMmGoojp5k3zn/lAeNAqqrIxVxHVOGlxdjKfKaNvS4KbCSwz7Jh4jYZmOev4DIxc6t8AbLzXslvSVn/V+ztEom4dT+IgQUM6b4AL1se6alcMvpYMl8zvLAcAvTY1SWDEknsFQx19ZDTO4MmSJ1fLhHtY2ip0FzX5hvLetXQWF3WO1YPfS1v7eX/I1EBw8cODpaRG9JIJ3yY+64H+RuW+yAF/ZZZNsP0NoTzdmenNDqZvljIxsop9/2fMFMgrx6ZXH4beyV3KQj5EnyNVjxAxUPZinhLvune5R/D+OEX4kxBQ8t6LPLj2pR61MlWKQjc1ZPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OVUkuliCuJYoxa2r32d45JPdmZPm20SXxguMDv3BRQI=; b=OnW/1bFcbuUN1knX4mYQMnAXli5v/4upaPFvhuJeOnjsh/8uiFvFArwMR7m6gCWWwQM8vXD71rWxWhUBZRpAcfvS30YxICOighEIaR67UVPIbPb9jmj3Iqc7VrATgP+tspYdiUe2HZZAds4/+T0j4XdD3/ZWNhadzTejZqia1jtKJZnH7X6dnUuxjjZWZjF83CIwdo7tYZzCojDlNhOKCkiMC3cyEllrBTYmr+hFwIQFi/mRaJahucr5zrIXhBwAgMqRWfmsRWihYpMR8H54lmvdeS/KY+Y02jLqy14tetB+JZd6XkW2KpP4hJkvDw2EMVnVnFTkzdsNovfr4gZoLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OVUkuliCuJYoxa2r32d45JPdmZPm20SXxguMDv3BRQI=; b=UR1oS+M2KCeMdFOKHyq8aOGgkMWQtjPKCX0qzddgukPso9oP4AbZSAPVij+KVFcch2tBeuA3rNEzrenYce+lEaRFEmZO7ZyJdLJkiP1t5wtTmGYxxd3vIMKp8FvldZHyPBeXIKMH0T1iK89FNh8ltgRT4YeXT5rrUtxS0PosmAE= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:59:06 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:59:06 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 07/10] EDAC/ghes: Cleanup struct ghes_edac_dimm_fill, rename it to ghes_dimm_fill Date: Wed, 22 Apr 2020 13:58:11 +0200 Message-ID: <20200422115814.22205-8-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:59:03 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fedcac11-003c-4ef0-b2e8-08d7e6b48ea7 X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:191; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x16sueIF1+4AE/ZHEodupo8E5yJmKF76CasUcmiwATovnZo8HKU1zlKyEKO+TpHBzADRxxJQ3xyKYpx+C9fhN1yoyV7NWj0e/u5P5Auu/3+2BdLETCvnnMWHzhmZMgAHl6MMp95SuM61YwGjYklbysSrQurLyU8EH1s9OMbk4K+hoCBPO5rJuXuJwJQVoRYzJwFCOk7eEt6hmrCjWtkw9yTSK1y0aiRRTgEiBfOS7/ZaIx25zBZYRB4XNToxzmoDJ0T2QViDAWskqYJupausqAkbb2dqP/qgFKno0li/XZg7R5UOHK5cgcgazjhc/XCMDwZsS4HsKp7a/NeXPQxKSTZShZI5j9GBl8qev1QnZ9XOYm0nsap19r2WTFlU19C//7O0VcTjsFrnIB6w4PSxuddINLzx+K0W2kjptCT+IC5FMzaex1AeMVOI6LI4XBCT X-MS-Exchange-AntiSpam-MessageData: VBxFUPGGaDO+GOrwd07ur5bTzXS6JwOIIOntG3wDXUOyoxIuRefUkKVUetvqusk205QQOsZ5HYv3PIx40IsbjeZc8kCsbdL4h/ZiJrFw9ePvnftJAYiP7nKfexbAI/U5moZqWmAr7/VbJIBIYJlQKg== X-MS-Exchange-CrossTenant-Network-Message-Id: fedcac11-003c-4ef0-b2e8-08d7e6b48ea7 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:59:06.1359 (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: Be/PAXAgDtyZlzDSPh1173ijDgyNCJS33XuzhvpMwUEsnnGdn0Ueup4dbCTNjOatlgdCkm1LcRyhYQXQCFOpTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The struct is used to store temporary data for the dmidecode callback. Clean this up a bit: 1) Rename member count to index since this is what it is used for. 2) Move code close to ghes_edac_dmidecode() where it is used. 3) While at it, use edac_get_dimm_by_index(). Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 038e560fd332..4eadc5b344c8 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -88,12 +88,6 @@ struct memdev_dmi_entry { u16 conf_mem_clk_speed; } __attribute__((__packed__)); -struct dimm_fill { - struct list_head dimms; - struct mem_ctl_info *mci; - unsigned int count; -}; - static int ghes_dimm_pool_create(int num_dimm) { struct ghes_dimm *ghes_dimm; @@ -182,6 +176,12 @@ static void ghes_dimm_setup_label(struct dimm_info *dimm, u16 handle) "unknown memory (handle: 0x%.4x)", handle); } +struct dimm_fill { + struct list_head dimms; + struct mem_ctl_info *mci; + int index; +}; + static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) { struct dimm_fill *dimm_fill = arg; @@ -190,11 +190,11 @@ 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_get_dimm(mci, dimm_fill->count, 0, 0); + struct dimm_info *dimm = edac_get_dimm_by_index(mci, dimm_fill->index); if (entry->size == 0xffff) { pr_info("Can't get DIMM%i size\n", - dimm_fill->count); + dimm_fill->index); dimm->nr_pages = MiB_TO_PAGES(32);/* Unknown */ } else if (entry->size == 0x7fff) { dimm->nr_pages = MiB_TO_PAGES(entry->extended_size); @@ -267,7 +267,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], + dimm_fill->index, 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", @@ -280,7 +280,7 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) if (ghes_dimm) list_add_tail(&ghes_dimm->entry, &dimm_fill->dimms); - dimm_fill->count++; + dimm_fill->index++; } } @@ -614,11 +614,11 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) INIT_LIST_HEAD(&dimm_fill.dimms); if (!fake) { - dimm_fill.count = 0; + dimm_fill.index = 0; dimm_fill.mci = mci; dmi_walk(ghes_edac_dmidecode, &dimm_fill); } else { - struct dimm_info *dimm = edac_get_dimm(mci, 0, 0, 0); + struct dimm_info *dimm = edac_get_dimm_by_index(mci, 0); dimm->nr_pages = 1; dimm->grain = 128; From patchwork Wed Apr 22 11:58:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503573 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A3D7D159A for ; Wed, 22 Apr 2020 11:59:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 80BD420787 for ; Wed, 22 Apr 2020 11:59:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="x66HuhxN"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="rhD+NAV2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726477AbgDVL72 (ORCPT ); Wed, 22 Apr 2020 07:59:28 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:34454 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728059AbgDVL70 (ORCPT ); Wed, 22 Apr 2020 07:59:26 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBppmw002236; Wed, 22 Apr 2020 04:59:12 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=Z474HLBQpSxyuynsKsN/EtOH2r1lKy1dIpQCpDfc6Ks=; b=x66HuhxNx/0EtTmbQM3LE0ujo7dw4Y62vJIbnu8GumyZJEqX92wbj+zniCAxa1LeBP2A Qbw/yvoyFtYzdUOGwAUlrell/DJCsFtjdWdY2Qq7hcDNULKewZoOmYxIKPblPluqxgXw BhJkxm7QUVeWldlRZVhgJNuNf1htl8d/0p3JBlpNOYVzv6XOHh8NpZmxrcAfiow8RSF9 /560H3r8cjAcsKIguBMdiibkk/9y1PT+mdagaGu3jsgNkDdfy/q7Pad0MtmY/V+rTRUG 3Bk04irzB4bFIDIO+1LVLAOcX0fVIJ0O/oHK0nhI9NNnaYoRpl3qL4kvsdcZWHVWHzZq hw== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 30fxwph9e1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:59:11 -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.1497.2; Wed, 22 Apr 2020 04:59:10 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:59:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xo92V9+ml8pJ17upoWDEStaHQ7/b8HZWnfBSgt+CLOVdFpbWDndDOgvMJvNDD75VzXOg05g5AHEQKmK1MxNttu3gxr9Uf8mw+hDYgxxDIT9RFIjZAid87Ard7KwuzRDrPGzFVBoIqXObQOnE8LaejBLf8ogKhynGR64bpqmGuoLqOc6U6xuNRpCb6IeB6ji/IYZW3gjRDHolPJN8/MZYNnFxKIHzz9At99H2XYEWYTzPR8mXbKgqscY4NqmOhqmJCSHMg6QgGjbwCAv6Bbi3zKJjGe0J1mGDRsUUYqDXsfYBt7o6QK6+MOLPEIf+HQoIktLHxyvxEPqJf30UxP+oig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z474HLBQpSxyuynsKsN/EtOH2r1lKy1dIpQCpDfc6Ks=; b=k4Kdxa2XacLXove/BXtxG/BBH3QsinVACs3zlwM7TqG9gFXZplXLrwUJZDSjF4LNlxluwW+HHBklQXD4C7Kw7tcjjBr4zPvw8TV7/WH/rHkNzM47av+VEyGhp0xKXY1jt7Wjs9vaWdcRJ2CpgouWH8CpfTTw9Shtmh1k/5ZnjpXsdxA0WoaQQWDtYEcz7jg20DvPoCSK9j1iCpGNhdlPGpaFoVkzP3/JPSSNxyc2hudnwRRJDG+yYr12X5kUm04lYzRzDU6k4lYfle+o10GgbfO0OFcTYnhGHgS++H6Ldo5VIord1h6qyYJ/C6etgJSEUC6DEZ7qzf8kDHodcv/9wA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z474HLBQpSxyuynsKsN/EtOH2r1lKy1dIpQCpDfc6Ks=; b=rhD+NAV2JZkANO2Phfye2Ls+43Q8a1WyY0Rp9Cj404t1Z5+LeMjqnaKxyBKRZ0A/whKOT86zChv7yPs9WtwLpGkGj1t0KGXsBQ9XayI3ThBpBuqHo1eDFn5U2ytASYZ9hn5g0SOKo6lB8Yn6hDFr44YiipYoePlmQqOmBVcHLN4= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:59:09 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:59:09 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 08/10] EDAC/ghes: Carve out MC device handling into separate functions Date: Wed, 22 Apr 2020 13:58:12 +0200 Message-ID: <20200422115814.22205-9-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:59:06 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 59b08fd7-b6e2-4aad-e039-08d7e6b4907b X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:335; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sA9p7/4VBnOum09MiqSHvaNE7OtgWK/zYVY/SfdweDeJow8kMyKycG1hePVDqwyyPA/dLx9qy//OnYYHaEvvnU1qbCfQDE8ReSSQrsByvd35i805bAcwQRRcTlhW7XOA8oNMVT5wrXtSba8ZQbbmpCZX4on9hriSZcPs0DtbmXkUWT4CkDGHKjqUw6qF5Dl7eSvwPPuUIVaIlGTmg92bWCFfBrxFZTq2vYcWDGlOh61p0GpW812e/ugO3wjIIT6Rw7UIlFyHbfS8rKFsj9B6hmS4S2t0IXYvls2JVG4I0DN3VmlaNNBfi5v6/b7f+mG1aYMhGoKMWFZ4WjCaDtRug+fBPY0Nnf7qfOL1mSUAtJ38GylSXS7tlBORg5h9LLbl1L2vXSKKXsC9tS5OonhjenJya/0kDkjCc7pBPD6nWSL+KrGce+fjIDWjJXwdWcw/ X-MS-Exchange-AntiSpam-MessageData: XMhzQXKl6BlGOgiABWvPeHA+ofJcD6vMeVAwyEDCLca3BqiCn/vpNY7JcN62iSt/oNA2qPa5xqbILBbwrSfBY8ihkG01n4i2hLZN2OM+sAgIG3+jHTf/+Slt+m+2zZRPz5hBrK6CQxsfiWoclFeLfQ== X-MS-Exchange-CrossTenant-Network-Message-Id: 59b08fd7-b6e2-4aad-e039-08d7e6b4907b X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:59:09.1801 (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: ApQK3/r+fle7kmMDG45Ze41BK/YPHYB5sC3H4cmyX5ATBI/Z0MyeexHnLxQKYLx6uBecUiuFL4HjiVwfyEptSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The functions are too long, carve out code that handles MC devices into the new functions ghes_mc_create(), ghes_mc_add_or_free() and ghes_mc_free(). Apart from better code readability the functions can be reused and the implementation of the error paths becomes easier. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 141 +++++++++++++++++++++++---------------- 1 file changed, 83 insertions(+), 58 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 4eadc5b344c8..af0a769071f4 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -535,16 +535,88 @@ static struct acpi_platform_list plat_list[] = { { } /* End */ }; -int ghes_edac_register(struct ghes *ghes, struct device *dev) +static struct mem_ctl_info *ghes_mc_create(struct device *dev, int mc_idx, + int num_dimm) { - bool fake = false; - int rc = 0, num_dimm = 0; + struct edac_mc_layer layers[1]; struct mem_ctl_info *mci; struct ghes_mci *pvt; - struct edac_mc_layer layers[1]; - struct dimm_fill dimm_fill; + + layers[0].type = EDAC_MC_LAYER_ALL_MEM; + layers[0].size = num_dimm; + layers[0].is_virt_csrow = true; + + mci = edac_mc_alloc(mc_idx, ARRAY_SIZE(layers), layers, sizeof(*pvt)); + if (!mci) + return NULL; + + pvt = mci->pvt_info; + pvt->mci = mci; + + 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"; + + return mci; +} + +static int ghes_mc_add_or_free(struct mem_ctl_info *mci, + struct list_head *dimm_list) +{ unsigned long flags; - int idx = -1; + int rc; + + rc = edac_mc_add_mc(mci); + if (rc < 0) { + ghes_dimm_release(dimm_list); + edac_mc_free(mci); + return rc; + } + + spin_lock_irqsave(&ghes_lock, flags); + ghes_pvt = mci->pvt_info; + list_splice_tail(dimm_list, &ghes_dimm_list); + spin_unlock_irqrestore(&ghes_lock, flags); + + return 0; +} + +static void ghes_mc_free(void) +{ + struct mem_ctl_info *mci; + unsigned long flags; + LIST_HEAD(dimm_list); + + /* + * Wait for the irq handler being finished. + */ + spin_lock_irqsave(&ghes_lock, flags); + mci = ghes_pvt ? ghes_pvt->mci : NULL; + ghes_pvt = NULL; + list_splice_init(&ghes_dimm_list, &dimm_list); + spin_unlock_irqrestore(&ghes_lock, flags); + + ghes_dimm_release(&dimm_list); + + if (!mci) + return; + + mci = edac_mc_del_mc(mci->pdev); + if (mci) + edac_mc_free(mci); +} + +int ghes_edac_register(struct ghes *ghes, struct device *dev) +{ + struct dimm_fill dimm_fill; + int rc = 0, num_dimm = 0; + struct mem_ctl_info *mci; + bool fake = false; + int idx; if (IS_ENABLED(CONFIG_X86)) { /* Check if safe to enable on this system */ @@ -577,27 +649,12 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) num_dimm = 1; } - layers[0].type = EDAC_MC_LAYER_ALL_MEM; - layers[0].size = num_dimm; - layers[0].is_virt_csrow = true; - - mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt)); + mci = ghes_mc_create(dev, 0, num_dimm); if (!mci) { rc = -ENOMEM; goto unlock; } - pvt = mci->pvt_info; - pvt->mci = mci; - - 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"; - 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"); @@ -627,18 +684,9 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) dimm->edac_mode = EDAC_SECDED; } - rc = edac_mc_add_mc(mci); - if (rc < 0) { - ghes_dimm_release(&dimm_fill.dimms); - edac_mc_free(mci); - rc = -ENODEV; + rc = ghes_mc_add_or_free(mci, &dimm_fill.dimms); + if (rc < 0) goto unlock; - } - - spin_lock_irqsave(&ghes_lock, flags); - ghes_pvt = pvt; - list_splice_tail(&dimm_fill.dimms, &ghes_dimm_list); - spin_unlock_irqrestore(&ghes_lock, flags); /* only set on success */ refcount_set(&ghes_refcount, 1); @@ -656,35 +704,12 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) void ghes_edac_unregister(struct ghes *ghes) { - struct mem_ctl_info *mci; - unsigned long flags; - LIST_HEAD(dimm_list); - mutex_lock(&ghes_reg_mutex); - if (!refcount_dec_and_test(&ghes_refcount)) - goto unlock; - - /* - * Wait for the irq handler being finished. - */ - spin_lock_irqsave(&ghes_lock, flags); - mci = ghes_pvt ? ghes_pvt->mci : NULL; - ghes_pvt = NULL; - list_splice_init(&ghes_dimm_list, &dimm_list); - spin_unlock_irqrestore(&ghes_lock, flags); - - ghes_dimm_release(&dimm_list); - - if (!mci) - goto unlock; - - mci = edac_mc_del_mc(mci->pdev); - if (mci) { - edac_mc_free(mci); + if (refcount_dec_and_test(&ghes_refcount)) { + ghes_mc_free(); ghes_dimm_pool_destroy(); } -unlock: mutex_unlock(&ghes_reg_mutex); } From patchwork Wed Apr 22 11:58:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503579 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CD9DD112C for ; Wed, 22 Apr 2020 11:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B53D720CC7 for ; Wed, 22 Apr 2020 11:59:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="Z0U+dvS0"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="Iaja+Is8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726835AbgDVL7i (ORCPT ); Wed, 22 Apr 2020 07:59:38 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:17644 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728288AbgDVL7f (ORCPT ); Wed, 22 Apr 2020 07:59:35 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpgLT002215; Wed, 22 Apr 2020 04:59:14 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=JxTXLycuasncFz8Ofz7Gf3EqNG5pVBNMvsNhrBZ4GI8=; b=Z0U+dvS0AS65d/yTMDLuo0GZjNc8VInk5NSFq2xAxX3WTzxZaFBmlV4xe1LbZvB4z7wz x3ePcZ4yXdLjVfDO/ET5Vdf8cU649Y8UiIKA8OeJLOevf3q14bZZdMumSLOZjgpy1BZK HpVHqEaXVzutLy35Dm0gZ4rf4MgNbl4QIr3K2/lxWfx8m1tWGSGCTDN9hwLqyInPVYnW kzy/MNnO3Ec14QpFq77P06r3m/njK/93EF3BjPeu1L0cN+5kLxOEre/xOnQUlZSeoDEt cb86s0Ftaisssx1XJiNpOCrca7q3N/yjNH4R2irRKlcxDA0FrSdf0ZMPpSHzdOjAwWSe OA== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0a-0016f401.pphosted.com with ESMTP id 30fxwph9ea-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:59: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.1497.2; Wed, 22 Apr 2020 04:59:12 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.45) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:59:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MN/2MdFNDeB1YdNDox3YBbbphqCO7X60KRlA1IGbaMlkl75bLDZrBqqx4+3XYF0eYiKQPgnidoZ/3DAJVxn3y9hbusI2icVqwBCadeUPSuPbwGPThwS51D1QpJgfFQjc9m3DErawAAro5W8VFF6ezfIzSANGysygcWokzOSfGYn2p+AnGCzOBUEGCRkGRhW7Epk/BGQQV/p8Ps5NBuDyxJLEYAidREYioJGTj/kXnDW65tX2SKWnBv5YP5q9lAzxX2oRQ3y5zf6QhWOAlZNwPhb428oie/qPinptJMN3mEyFmM1TqQU2csJDa3QwLmz+vBR9B/XQc2qnH02gW1UBmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JxTXLycuasncFz8Ofz7Gf3EqNG5pVBNMvsNhrBZ4GI8=; b=UmMHiVG9f5cyMwKJdyo9GN3dCHu0D4KOOdoFZI0CzoefSPYICYa6Jos/7LSb8VE7hOHErTVj8j1u4s5wwIyyAAk9VM7fYpStvzMIajGyqJUKcSdQ0uuGewV/yAzRESNdTOEvEluiy7DypA8ggvbk8kH5MavVOPqaEVCJU8uMmrTBvWMXVqIdElVoNKHjGzPLqtBW4pYIPPsXI5jZ+uNqESMpK49obZG19LBfFKxfIruKJnDkFOdTCHariGNdlPAPOCzo1ExWbYPSET+mjb8v9gcnJVUWECoseczQCk/KhO4QwDxaLGfS4JZ8zmvbqhzkbM1aie5sc86pki7kqUW/DQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JxTXLycuasncFz8Ofz7Gf3EqNG5pVBNMvsNhrBZ4GI8=; b=Iaja+Is8E3CcZFWqwTJTNgM9Domz7UXkdAeyqUpfqrrhqc5sg9trA8ZhptuxIm/rq0w2dZdhbbJBWUCuARd0RRWL6uwkiJ+kFHl1fYoeN/2nJhRwMzBAzUUJTxFVgYzmLZ3kyvd80RZtUJGtlNHuAZX+JRB4qlle+1N+OzV5G9w= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:59:12 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:59:12 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 09/10] EDAC/ghes: Have a separate code path for creating the fake MC Date: Wed, 22 Apr 2020 13:58:13 +0200 Message-ID: <20200422115814.22205-10-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:59:09 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ccd420f3-ce1a-4780-0530-08d7e6b4924b X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2657; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(6666004)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b5tNxIM985ocoNRNYOBRj/w/JniEToBM1ngdKxG/Q9b3PTxloS2p8Nws6ridCuHv0TagEbbZsCWZ42K64XFMFQQ132+e1VQ/eyTTOqzQKEtWsHt9JkzRFRZk4LXNAZ3vFZaJBgQ4GkH7n6ytxldiK0+p1xQmmWsEh5EwO9xfXZAKwWNRGiVuzVwMmlVf/NP7APYTXdI+EnSy3EityZwkr/YjzmnYXTasud98iI8gLNk4oEDX/UAu8x2sINK2pd7mFX7orodKBW8gy5odrY5SKBEcbyZ1gfbB+y1rSwMid9P9zuA6LJYwSwRZMMyfN24bF2d/eMw6PBhJ4EQO1tZZV0ZItn+FzUkBDo54cd3A8eoK0iQO6fg6puuzwTt8HOzy4MEiy6HHxTqYzFZ6P7b/jPldv3s/9qvUJ/x+bxmQxt8dp/EM5+ypAo2uhLG7FvsO X-MS-Exchange-AntiSpam-MessageData: bHAWjwTYrM7cBXL6MkXMCK6kpA34+e1N9RdjxQ3Y/EQQ59GgokbA6Zr8vPBqQR7mOWfvGsY3svCtt+DjC7BSHZCmnwM42AED5jIn/NskSAvecitWDdYK5h8IYR+VBP9bFUTiyBMgKCGf1tbHEzsFlg== X-MS-Exchange-CrossTenant-Network-Message-Id: ccd420f3-ce1a-4780-0530-08d7e6b4924b X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:59:12.2194 (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: CAUk0DHuo3Lt4mFMWn9LcItOa81W2HlzKUy3BUZuRf14hAjTYQc0/iGn7V4f4SXg0ksJgB0eaMdbO7bDkKXzxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org The code in ghes_edac_register() switches back and forth between standard and fake controller creation. Do one thing only and separate the code path that creates the fake MC. Note: For better review the code is not yet carved out in separate functions. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 68 +++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index af0a769071f4..af72da156696 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -615,7 +615,6 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) struct dimm_fill dimm_fill; int rc = 0, num_dimm = 0; struct mem_ctl_info *mci; - bool fake = false; int idx; if (IS_ENABLED(CONFIG_X86)) { @@ -643,23 +642,43 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) if (rc < 0) goto unlock; - /* Check if we've got a bogus BIOS */ - if (num_dimm == 0) { - fake = true; - num_dimm = 1; - } + if (!num_dimm) { + /* + * Bogus BIOS: Ignore DMI topology and use a single MC + * with only one DIMM for the whole address range to + * catch all errros. + */ + struct dimm_info *dimm; + LIST_HEAD(empty); - mci = ghes_mc_create(dev, 0, num_dimm); - if (!mci) { - rc = -ENOMEM; - goto unlock; - } + mci = ghes_mc_create(dev, 0, 1); + if (!mci) { + rc = -ENOMEM; + goto unlock; + } + + dimm = edac_get_dimm_by_index(mci, 0); + + dimm->nr_pages = 1; + dimm->grain = 128; + dimm->mtype = MEM_UNKNOWN; + dimm->dtype = DEV_UNKNOWN; + dimm->edac_mode = EDAC_SECDED; + + snprintf(dimm->label, sizeof(dimm->label), "unknown memory"); + + rc = ghes_mc_add_or_free(mci, &empty); + if (rc) + goto unlock; - 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) { + + goto out; + } + + 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"); @@ -668,26 +687,23 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) pr_info("This system has %d DIMM sockets.\n", num_dimm); } - INIT_LIST_HEAD(&dimm_fill.dimms); + mci = ghes_mc_create(dev, 0, num_dimm); + if (!mci) { + rc = -ENOMEM; + goto unlock; + } - if (!fake) { - dimm_fill.index = 0; - dimm_fill.mci = mci; - dmi_walk(ghes_edac_dmidecode, &dimm_fill); - } else { - struct dimm_info *dimm = edac_get_dimm_by_index(mci, 0); + dimm_fill.index = 0; + dimm_fill.mci = mci; + INIT_LIST_HEAD(&dimm_fill.dimms); - dimm->nr_pages = 1; - dimm->grain = 128; - dimm->mtype = MEM_UNKNOWN; - dimm->dtype = DEV_UNKNOWN; - dimm->edac_mode = EDAC_SECDED; - } + dmi_walk(ghes_edac_dmidecode, &dimm_fill); rc = ghes_mc_add_or_free(mci, &dimm_fill.dimms); if (rc < 0) goto unlock; +out: /* only set on success */ refcount_set(&ghes_refcount, 1); From patchwork Wed Apr 22 11:58:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Richter X-Patchwork-Id: 11503577 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AC22F159A for ; Wed, 22 Apr 2020 11:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8A1B520784 for ; Wed, 22 Apr 2020 11:59:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="GaiLwRPk"; dkim=pass (1024-bit key) header.d=marvell.onmicrosoft.com header.i=@marvell.onmicrosoft.com header.b="nHFU2OWa" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728247AbgDVL7c (ORCPT ); Wed, 22 Apr 2020 07:59:32 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:1332 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728059AbgDVL7a (ORCPT ); Wed, 22 Apr 2020 07:59:30 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03MBpH1k031933; Wed, 22 Apr 2020 04:59:19 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=pfpt0818; bh=6bZMa9OFDw6qIGMoEgf9SrLzVCWwZUnKd3XeIxGW3S8=; b=GaiLwRPk06+qVjtdVr/8QyhI1FCc5MYk8grIe8vHJtDn/guQ4Sak6HC2L9N2B1qXObi5 I5JyICJC4EQo/oSTlsbtQgxEAbt+hGg6yf0gJO2WpM+57eKx3/U5Vl2dg7LQmbIpvTOz 9R/xtSxgMgU7mN+qdCvOd4cL1Wa78znE0nV+h478JiyIKtcHNMZWKn4ZnztXI1Yqq08c T2uOWjTMpy1Mvz6nR4CoKB7WcRD26j8rzJD/e2SJWkFgSesoJT72PGQpJbCWfz3eO3l+ wXlM1a9n6OMfLVr70emArp6QOKtN9Hp1MxKjubtCeaW/4VcjTRnkurPqRsI4QZ9yb3Vb kQ== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 30jd011w5n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Apr 2020 04:59:19 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Apr 2020 04:59:17 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Apr 2020 04:59:16 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.41) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Apr 2020 04:59:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UF464J7dcxOYryPBXWxoxXAtauZXrwHzajYNC5CqDFk2KL9EmpC5Xa40KXqYj03am3kCfm0y6dIVtjPIS1h3SLtWFWyy3rdYjlHhJrHxyZjHNp6vmfzPfXvpOsnou+o6abCHFS6zqFGs59Y2kEvdNaDVfBHJY2ihd6jysQSVEJ6Z7ZSUvsfq1IavEn2IBK79W79NWoSmmx06SKiDdE5EToGibT6IqCMRoCFwUIf8BmTRatdWESsvZGa/+qFFVap5TTovJOZR0qAazZm1A7fx479SiDrS1aSwhDYiihkDpwEHLQ/BZhQTsUDl4VEJ8913UNI1YCiU0tjvXY3ay8CsEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6bZMa9OFDw6qIGMoEgf9SrLzVCWwZUnKd3XeIxGW3S8=; b=NfYWNFmP9rDPBk+NIl37MvxgOR1Vji5heuSEevcX5zGRdYQ7tu1/fJxtao1fHVd/u/k/hHG9HsO/vhc+Si54yklWkA2KnKPs7NkO/hBlqH5Y+bnvfHX0daaXzDKZm5HzYuLXhLg1xTC7Em5KDcyNtWSnjg3fP+sliWUJe6DmEKawtKw3UsvnQTzw0aBdWwKK83UVPbnY1DAZzJzgMVN7trcHUeWy6f7owEmMPFgKIhrP26h6X8hwynitzQAQ0tdi0WW1pru5MrpfAOsCfL11bmkfmvdRnUP61SzrLYDpR528ig+90hbbUZqbUFpt31Abel4KfGRORuvT+cmkp+/wrw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6bZMa9OFDw6qIGMoEgf9SrLzVCWwZUnKd3XeIxGW3S8=; b=nHFU2OWa4lwTF4NnO6cJ4mOZ9gqfl/wy5RG31r5QEjhUEfdjmd2pgT9AB7G7m7LrhsRV2DSdC6MkMXNVxEqkZLKXWW5WTAgF0Wqrk1he5Wz5KVcbC5oTX31plaQvnRQlMR5RhE/8HCfw6qcCHp/jHrZz7Rq8bwEuSW2us4pBK8U= Received: from BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) by BYAPR18MB2933.namprd18.prod.outlook.com (2603:10b6:a03:10e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 11:59:15 +0000 Received: from BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d]) by BYAPR18MB2661.namprd18.prod.outlook.com ([fe80::a165:ffa5:f3eb:d62d%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 11:59:15 +0000 From: Robert Richter To: Borislav Petkov , Mauro Carvalho Chehab , Tony Luck CC: James Morse , Aristeu Rozanski , Robert Richter , Matthias Brugger , , Subject: [PATCH v2 10/10] EDAC/ghes: Carve out code into ghes_edac_register_{one,fake}() Date: Wed, 22 Apr 2020 13:58:14 +0200 Message-ID: <20200422115814.22205-11-rrichter@marvell.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200422115814.22205-1-rrichter@marvell.com> References: <20200422115814.22205-1-rrichter@marvell.com> X-ClientProxiedBy: HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) To BYAPR18MB2661.namprd18.prod.outlook.com (2603:10b6:a03:136::26) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from rric.localdomain (31.208.96.227) by HE1PR0701CA0076.eurprd07.prod.outlook.com (2603:10a6:3:64::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.6 via Frontend Transport; Wed, 22 Apr 2020 11:59:12 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [31.208.96.227] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6a24f55c-5507-4988-078e-08d7e6b49418 X-MS-TrafficTypeDiagnostic: BYAPR18MB2933: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2000; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR18MB2661.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(346002)(366004)(396003)(39850400004)(376002)(136003)(6512007)(1076003)(81156014)(8936002)(4326008)(6486002)(8676002)(2616005)(110136005)(52116002)(186003)(16526019)(86362001)(956004)(6506007)(66476007)(2906002)(66946007)(54906003)(26005)(66556008)(36756003)(5660300002)(478600001)(316002)(142933001);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xq4iZsAznlgD7IaRDP0z0aPD1wn22Iit69XVTdk1r5JU3WjV2LVXQ3vCevCqUGwSTcEYMslcj/jsKHoGx7I85s0+3YCR2bE+Mpl10iU22xMZwbnnGvG5Tdhl5sPPo6yUw4KYwgAZHHObBy5LOQ5w5wpbItaNzzo4S2i+PyqD3HSBKkq15XRDrYzMwPyiMsx9Z6CjL7vxpcqm1ZmhbotFDneReV2mz1u27Fw0x4fWgJo2pYKiXZ9H2lRIQXJSSUJ9kOrs8SanaG4ldlUMNYWfzrm48hcO9twFkm0H09N/m2rgeW//7aZm87mIGB9AEVPoSnm+ZVQxdtR+aTwAdbZNf6xUEE3fQb8zTDYE5y3zMCxUxuVQjvfIOtSzD7NuNtodVKD8jpgdiZ95pXQ+gXk0PKEJ7z0iptAtc+yc32RoYbA9npzBtwEIghfRqtjg17U300nkkYw2+BT0VpQc4+G/wn9NPj0Yp4MQO8kFtiR6E0mahmYXgK4MKjdRKQxHjzot X-MS-Exchange-AntiSpam-MessageData: 3BXofJt8R7mSXnO2h0mfOsrliQ4mC2KLsKfOsXBetBRAk0/Xcq+kmrmwYqZH+t8wRihCSsI/6MYT1I9B13jDELz0c3LwZJTcagvAdvY86KK9BPLd/Csz7UdvJIs6lVbbcAZ0C+685M6HbnVeviQ12g== X-MS-Exchange-CrossTenant-Network-Message-Id: 6a24f55c-5507-4988-078e-08d7e6b49418 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 11:59:15.2667 (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: xIPxa57bCk2ziiZQkT2dL6YRNjZwG9kbiv1Ldeh7UYHoHSY8jO5bHx6dBSsflMEA4u8uJ6jAH9yQJfGNKWEiJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2933 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-22_03:2020-04-22,2020-04-22 signatures=0 Sender: linux-edac-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-edac@vger.kernel.org Factor out code to register a memory controller including DIMMs. Do this for standard and fake memory controller in the two functions ghes_edac_register_one() and ghes_edac_register_fake(). Function ghes_edac_register_one() could be reused to register multiple *mci structs. Signed-off-by: Robert Richter --- drivers/edac/ghes_edac.c | 80 ++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index af72da156696..ee1e95e9b59b 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -610,11 +610,50 @@ static void ghes_mc_free(void) edac_mc_free(mci); } -int ghes_edac_register(struct ghes *ghes, struct device *dev) +static int ghes_edac_register_fake(struct device *dev) +{ + struct mem_ctl_info *mci; + struct dimm_info *dimm; + LIST_HEAD(empty); + + mci = ghes_mc_create(dev, 0, 1); + if (!mci) + return -ENOMEM; + + dimm = edac_get_dimm_by_index(mci, 0); + + dimm->nr_pages = 1; + dimm->grain = 128; + dimm->mtype = MEM_UNKNOWN; + dimm->dtype = DEV_UNKNOWN; + dimm->edac_mode = EDAC_SECDED; + + snprintf(dimm->label, sizeof(dimm->label), "unknown memory"); + + return ghes_mc_add_or_free(mci, &empty); +} + +static int ghes_edac_register_one(struct device *dev, int mc_idx, int num_dimm) { struct dimm_fill dimm_fill; - int rc = 0, num_dimm = 0; struct mem_ctl_info *mci; + + mci = ghes_mc_create(dev, mc_idx, num_dimm); + if (!mci) + return -ENOMEM; + + dimm_fill.index = 0; + dimm_fill.mci = mci; + INIT_LIST_HEAD(&dimm_fill.dimms); + + dmi_walk(ghes_edac_dmidecode, &dimm_fill); + + return ghes_mc_add_or_free(mci, &dimm_fill.dimms); +} + +int ghes_edac_register(struct ghes *ghes, struct device *dev) +{ + int rc = 0, num_dimm = 0; int idx; if (IS_ENABLED(CONFIG_X86)) { @@ -648,27 +687,8 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) * with only one DIMM for the whole address range to * catch all errros. */ - struct dimm_info *dimm; - LIST_HEAD(empty); - - mci = ghes_mc_create(dev, 0, 1); - if (!mci) { - rc = -ENOMEM; - goto unlock; - } - - dimm = edac_get_dimm_by_index(mci, 0); - - dimm->nr_pages = 1; - dimm->grain = 128; - dimm->mtype = MEM_UNKNOWN; - dimm->dtype = DEV_UNKNOWN; - dimm->edac_mode = EDAC_SECDED; - - snprintf(dimm->label, sizeof(dimm->label), "unknown memory"); - - rc = ghes_mc_add_or_free(mci, &empty); - if (rc) + rc = ghes_edac_register_fake(dev); + if (rc < 0) goto unlock; pr_info("This system has a very crappy BIOS: It doesn't even list the DIMMS.\n"); @@ -687,19 +707,7 @@ int ghes_edac_register(struct ghes *ghes, struct device *dev) pr_info("This system has %d DIMM sockets.\n", num_dimm); } - mci = ghes_mc_create(dev, 0, num_dimm); - if (!mci) { - rc = -ENOMEM; - goto unlock; - } - - dimm_fill.index = 0; - dimm_fill.mci = mci; - INIT_LIST_HEAD(&dimm_fill.dimms); - - dmi_walk(ghes_edac_dmidecode, &dimm_fill); - - rc = ghes_mc_add_or_free(mci, &dimm_fill.dimms); + rc = ghes_edac_register_one(dev, 0, num_dimm); if (rc < 0) goto unlock;