From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E03A5C4332F for ; Thu, 27 Jan 2022 20:41:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344117AbiA0Ulm (ORCPT ); Thu, 27 Jan 2022 15:41:42 -0500 Received: from mail-bn7nam10on2042.outbound.protection.outlook.com ([40.107.92.42]:24801 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344090AbiA0Ulh (ORCPT ); Thu, 27 Jan 2022 15:41:37 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nx9HV5OUV4gYycFnBy9GR83m3AvN41hmDewuO7q0Hu1h1QC0Fhj1aq6JQ8/3TC/c88hcVGCWiU6DKQpWCO51h/gXWTER0QPsMb6/g4BXGv+V7vHiNTakGCQS+yFXNdlQk7XHJ1gepcBkL0ntH6mgkcz+s+UL6nZ33xaA3N4rjl1+SpCjtrREB1GF5/mbbUywxcHaQ8tSXR/Iu4grLDTmRWA0G8RlvVOvd2ZOyQxH9FmnSYVSzIFTg23o7snguVnlGEXRmSCH4A/t6n+bqDqoqrpvco2tyMT6F5SvJl05478ILIltXlxdFNoYJI1T92uotmYxxrbpYOdZW9zsbWbn2Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=D6/OAn7qojhlagErBwD/8pHE4uH3BJi1gDS71igGXXA=; b=lqh6zVGQRSgidP6O6SKOXpVIN2qOeHVdE86fgtVI0zpJIBZWxzO/U4Qo2K6T95mohU9HEtYZN0r+d5XN5QazPd4s/3gfjRyjYSFzFMJdUp13tZcgMewEhSCPs2Yfz+9ns0ivVFtAFhHvAtbYeFoGyN9EX6dv3UdMl0iRU7dqTaJc7PUr2rDOVsPTRRkCegi59i3cy1dDpJX4+PPs8xDKsieG0qsdcHaih23p0sLulQcGilJq+UdxL0/x9Q7u8gbfxNjT0g/hd9ri//xV/fY/lNHsCg2he7kwGYZRwUdTL3VJGR0nbBl1S+Hr84F8uwFE2UmpQPWP+LX85vmoC4tYaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D6/OAn7qojhlagErBwD/8pHE4uH3BJi1gDS71igGXXA=; b=CeFOewFFN71oQ5yAPu8T6FUrvGDXI2oogtzokzQm5VAktfWI1RuIq30sad8pHe2pKmI9Je9ElrgAXFqn/lwMxOQZxagvGB3iGg+qh4bYvCxCXE8OfjgypvF+VD/30Wusc8a9mHB4LnpBbG7c57/CGMWdRudfOWRLkYByN8JqKjA= Received: from CO1PR15CA0056.namprd15.prod.outlook.com (2603:10b6:101:1f::24) by MN2PR12MB3456.namprd12.prod.outlook.com (2603:10b6:208:ca::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.12; Thu, 27 Jan 2022 20:41:35 +0000 Received: from CO1NAM11FT022.eop-nam11.prod.protection.outlook.com (2603:10b6:101:1f:cafe::af) by CO1PR15CA0056.outlook.office365.com (2603:10b6:101:1f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT022.mail.protection.outlook.com (10.13.175.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:34 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:33 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 01/24] EDAC/amd64: Define Data Fabric operations Date: Thu, 27 Jan 2022 20:40:52 +0000 Message-ID: <20220127204115.384161-2-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6bd5d02-1723-4404-9f00-08d9e1d5688a X-MS-TrafficTypeDiagnostic: MN2PR12MB3456:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +H+STWuw/Uo/gM8bIhfTu3Ki7EFDcYe1MgXWQjX7DelMiRzO4QXFbC9EGDtqthTYGd8gWY+wjLsy6MaPiOlbj/pSrLGwM49a5L5Mbqvaf7NGRjdz9dz5Dq4k0gTfrT1EUexNW3zz8WG54R/+cFWNsW32xQ4dbaZa6YlNe9rbev/2F2+SO0jJqDejBGipJYg4/V84zXya7J8ki76KOifw8EYFdGWhja9m9ZzWmMJatmry/Oe4URMIeXzd3DrqPlYcmPpF6TpLqZlnVLrtkzrxwr40TJQ8Pp3MaVqTV+iQ3FXKqs5lXFSKZNFLC+Op27kjHQctsmScoM2Y5InYXyr27r/iM7DNck5psBKi35FiD7itNVQMgq2ZHcoubbtFCaitB+msgQaeVxngv7gZuM6MF2SaYdAoRWPVUjxFvmCF7lfirFoCSXB0k/n222nvZP6WLxMZn8w2oExxpa1FwE7Q6ZRDyzUTeK7lxY5nOW6q+NiuM9exhCgRvCOTVwd/Lx+jOZPNU+yUdueHfVUfnFm/Zfs10/92/cYPX4ty+9j/cqkhFmcVRUZlVWBo0K7Fnvpn/QnejYyflOT4bPWhiahLla6vJ1OFPB5ni+XLnw8brcIcBUH6ld19lvWARWnjlrHxtcjVBZBoF65WF/FwQg23Io9y1RqbHQ+wGMItP+NBhL/HsdY7Cmr0sdSEnDHPW2VOgj2gYpojtGTAKaa1DePiqHDdx38lUxfg+Sv1O5mRNU//ksf/Nruv0q1O3CyAVADdicrFLTSMdIJ1aNFtHoUjXnmSQ8Vdbm3s9QnBNTbMtU3jUokhnXEWIRjqQuLCAyEMYRyfk8Bo+NG8WwkADARsZEoaH2lbnRYdWplZqhLvmTfcIEv1VpJNhZKk2nXkw06p X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(40470700004)(46966006)(36840700001)(356005)(82310400004)(186003)(8676002)(47076005)(2906002)(6666004)(26005)(1076003)(316002)(7696005)(44832011)(426003)(86362001)(4326008)(70206006)(508600001)(2616005)(81166007)(83380400001)(8936002)(36860700001)(54906003)(36756003)(40460700003)(6916009)(336012)(966005)(16526019)(5660300002)(70586007)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:34.5959 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6bd5d02-1723-4404-9f00-08d9e1d5688a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT022.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3456 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Define a stub to hold operations for different Data Fabric versions. This will be filled in following patches. Set the operations at init-time as appropriate for each model/family group. Also, start a glossary of acronyms used in the translation code. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-6-yazen.ghannam@amd.com v3->v4: * Started glossary. * Included pr_debug() for failing case. v2->v3: * Was patch 6 in v2. * "df_ops" is set at init time. v1->v2: * New in v2. drivers/edac/amd64_edac.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index fba609ada0e6..639dfbea3348 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -988,6 +988,12 @@ static int sys_addr_to_csrow(struct mem_ctl_info *mci,= u64 sys_addr) return csrow; } =20 +/* + * Glossary of acronyms used in address translation for Zen-based systems + * + * DF =3D Data Fabric + */ + /* Protect the PCI config register pairs used for DF indirect access. */ static DEFINE_MUTEX(df_indirect_mutex); =20 @@ -1058,6 +1064,14 @@ struct addr_ctx { u8 inst_id; }; =20 +struct data_fabric_ops { +}; + +struct data_fabric_ops df2_ops =3D { +}; + +struct data_fabric_ops *df_ops; + static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) { u64 dram_base_addr, dram_limit_addr, dram_hole_base; @@ -1072,6 +1086,11 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr =20 struct addr_ctx ctx; =20 + if (!df_ops) { + pr_debug("Data Fabric Operations not set"); + return -EINVAL; + } + memset(&ctx, 0, sizeof(ctx)); =20 /* Start from the normalized address */ @@ -3958,6 +3977,7 @@ static struct amd64_family_type *per_family_init(stru= ct amd64_pvt *pvt) if (pvt->model >=3D 0x10 && pvt->model <=3D 0x2f) { fam_type =3D &family_types[F17_M10H_CPUS]; pvt->ops =3D &family_types[F17_M10H_CPUS].ops; + df_ops =3D &df2_ops; break; } else if (pvt->model >=3D 0x30 && pvt->model <=3D 0x3f) { fam_type =3D &family_types[F17_M30H_CPUS]; @@ -3976,6 +3996,7 @@ static struct amd64_family_type *per_family_init(stru= ct amd64_pvt *pvt) case 0x18: fam_type =3D &family_types[F17_CPUS]; pvt->ops =3D &family_types[F17_CPUS].ops; + df_ops =3D &df2_ops; =20 if (pvt->fam =3D=3D 0x18) family_types[F17_CPUS].ctl_name =3D "F18h"; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C74BC433EF for ; Thu, 27 Jan 2022 20:41:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344122AbiA0Ulp (ORCPT ); Thu, 27 Jan 2022 15:41:45 -0500 Received: from mail-mw2nam12on2055.outbound.protection.outlook.com ([40.107.244.55]:43855 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344098AbiA0Ull (ORCPT ); Thu, 27 Jan 2022 15:41:41 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XTGdn5RtO3tEj1GKgtbGe8jwXX6vSerc5cyZPImVt8jUItg/2a+8ZgH6xKzTvt286sMRSgPW0qNwrfpb55W55Lb/p4Jq9KORZ599z1R1Vd1FwK1HoTRGxTLG5cqhyAiWbLDYiv6Zb8AV1hxVunADjt3+pKQgg0akgYjIfaggUkKCW741oqw7RyZkMyfbgfC0n7auqLOoptcteQs0HLlSkHXvPm2BiMixReTjM+rqggHPt0VVp37s+9TMwC4zuezUpjn9F7RzeZPm33uKnc4DENoAcxAtpGoqmdWnOPmk7DgOaCNVaGDC/Ku9mc+ehuL9wzrNeUwCzPXxzj8W2dyPcw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qaau8j8mz1VKvS54rIPbY6XGmtfiN0bZVuri4JnLClM=; b=NdU8z6gJkuhD3gXjfpQYjPASfP0fsDOfddzAOrCIbtnVOZ1FUiBxqga5l/b3K0qlt7uc/oxxqQK44nHz/JFE4bI/7sxMKwRTkiV+zI6V9TruAoCHgguoTNYsbqsvlKtMv2I4TUQsrKYrVA2ZlTvEMEb4mNQbAvKNYlKunrYd2wD/gtoWrkb/QOnzHlPfkzHRPxvrhJADnh2BDjEGvzSUb6GazmivWY8c2/TAjRB1T2JL/JEXv2PsO0511UMj/htPbIgj3hb0g6qU3GSY/V1zUHNd6zD+OjiRYNGTMNZYL1Vv9W1E3lNMOgSrIBNRGYU0LkF53XeBCDi8sXYKqqahjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qaau8j8mz1VKvS54rIPbY6XGmtfiN0bZVuri4JnLClM=; b=WYU5IuPfdWDS5XThnZT3HRivXRq0KQhieC28o0Ds0fUN6LVrFyZIDxgdeLmP9dZ6DRsDBSFfeIp17nnvA3/njiKmjfEAmJH7NdkEomaRtzdiHMkKc2X8HkDbmlAVXFjV0PsYY6p7YAMU6FspJsSc60DnkLzpeYzA3KDNUcNCYKk= Received: from MW4P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::6) by DM5PR12MB1499.namprd12.prod.outlook.com (2603:10b6:4:8::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:39 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::8d) by MW4P221CA0001.outlook.office365.com (2603:10b6:303:8b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:38 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:37 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 02/24] EDAC/amd64: Define functions for DramOffset Date: Thu, 27 Jan 2022 20:40:53 +0000 Message-ID: <20220127204115.384161-3-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3689b4b9-385b-4add-47af-08d9e1d56b1c X-MS-TrafficTypeDiagnostic: DM5PR12MB1499:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m3xSwejO64rx8vft4xGdOYOGDD6XZpZq9Lko7HhRVKSf3QsQalA4xkTjn6XOFqewtNx/cmzU9TbUc9etFeIge08erP0qsQzcWeG5tozetIKampHpJWsekkewJJqKkZNu9Kqcj4AlkruNTe9Rh++qyU5Dtuk0CyQ4EaAEajlqXUOp/KQnmoHk+41L0GOPewfOdaIe66CbKcn9epHtT3PmzzEAaAYdSMYy959QjF6ic6/7k2nzZx/fhyQ97gNMqtBQxbsg8+WTcgBoM0dJgHkxnaHHRdcn5eS2V/3Je4cqkDGvgzDvc8z6Toahdm7yGt1n/RKTe+lBncwqptnAhpL4y6SITX+uVWkKusF8Da2cGZ+CS1Qr6vyeTms38z2tqEkElh5bgCz8L4Z07iLi23/ladDLVAM1+sO0slVGJjbIRm8Oqa+ya9FnUb6OalXN0woHfmo9iHQEfW6uPJhkdSUU0t+I2zVk/v6PSimNXA4TXkoBjUKBXOPb/CI3DgueJy3+Es4bQfZsRJy/EHL9QgjvmlGKHiU/tZGBTixcW3fvQ+sj7FGfZpD28Ybdkqw0jtIngiBssPCVVqo7n8QauDHorFaS3pF8gEdU/ptyQ1g2HBgh+g3Er4bf4mJlmUiYL9qEe+CqvdwO6cRkFEoPizR9qMazd24nnTLBmSNnd3lzLAS6Blchz2jKYcxyV14SnEf85u9MUtv0N+W0xoMJWbVg1iHdZYBLYSQCh4CHvCN76PFd3yHUB9yCW7FAnR2lTrTrtk5hehI/1WoVwI/C+sV5pzWX55CPncnqSEXp8H+05Ho= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(81166007)(7696005)(6666004)(44832011)(356005)(8936002)(5660300002)(70586007)(70206006)(8676002)(4326008)(82310400004)(2906002)(86362001)(508600001)(316002)(47076005)(40460700003)(36860700001)(966005)(83380400001)(16526019)(426003)(336012)(186003)(6916009)(54906003)(1076003)(26005)(36756003)(2616005)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:38.9060 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3689b4b9-385b-4add-47af-08d9e1d56b1c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1499 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add helper functions to read the DramOffset register and to remove the offset from the calculated address. The helper functions will be expanded in future DF versions. Rename the "base" variable to "map_num" to indicate that this is the address map number. An address map is defined with a base and limit value. The map_num variable is used to select the proper base and limit registers to use for the address translation. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-7-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. * Remove leading whitespace in function pointer. v2->v3: * Was patch 7 in v2. * Dropped "df_regs" use. v1->v2: * Moved from arch/x86 to EDAC. * Add function to data_fabric_ops. drivers/edac/amd64_edac.c | 60 ++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 639dfbea3348..837bca7eb1ff 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1057,21 +1057,62 @@ static int df_indirect_read_broadcast(u16 node, u8 = func, u16 reg, u32 *lo) return __df_indirect_read(node, func, reg, DF_BROADCAST, lo); } =20 +/* Use "reg_" prefix for raw register values. */ struct addr_ctx { u64 ret_addr; u32 tmp; + u32 reg_dram_offset; u16 nid; u8 inst_id; + u8 map_num; }; =20 struct data_fabric_ops { + u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); }; =20 +static u64 get_hi_addr_offset_df2(struct addr_ctx *ctx) +{ + return (ctx->reg_dram_offset & GENMASK_ULL(31, 20)) << 8; +} + struct data_fabric_ops df2_ops =3D { + .get_hi_addr_offset =3D get_hi_addr_offset_df2, }; =20 struct data_fabric_ops *df_ops; =20 +static int get_dram_offset_reg(struct addr_ctx *ctx) +{ + /* Read D18F0x1B4 (DramOffset) */ + if (df_indirect_read_instance(ctx->nid, 0, 0x1B4, ctx->inst_id, &ctx->reg= _dram_offset)) + return -EINVAL; + + return 0; +} + +static int remove_dram_offset(struct addr_ctx *ctx) +{ + if (get_dram_offset_reg(ctx)) { + pr_debug("Failed to get DRAM Offset register"); + return -EINVAL; + } + + ctx->map_num =3D 0; + + /* Remove HiAddrOffset from normalized address, if enabled: */ + if (ctx->reg_dram_offset & BIT(0)) { + u64 hi_addr_offset =3D df_ops->get_hi_addr_offset(ctx); + + if (ctx->ret_addr >=3D hi_addr_offset) { + ctx->ret_addr -=3D hi_addr_offset; + ctx->map_num =3D 1; + } + } + + return 0; +} + static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) { u64 dram_base_addr, dram_limit_addr, dram_hole_base; @@ -1080,7 +1121,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr u8 intlv_num_dies, intlv_num_chan, intlv_num_sockets; u8 intlv_addr_sel, intlv_addr_bit; u8 num_intlv_bits, hashed_bit; - u8 lgcy_mmio_hole_en, base =3D 0; + u8 lgcy_mmio_hole_en; u8 cs_mask, cs_id =3D 0; bool hash_enabled =3D false; =20 @@ -1099,22 +1140,13 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr ctx.nid =3D nid; ctx.inst_id =3D umc; =20 - /* Read D18F0x1B4 (DramOffset), check if base 1 is used. */ - if (df_indirect_read_instance(nid, 0, 0x1B4, umc, &ctx.tmp)) + if (remove_dram_offset(&ctx)) { + pr_debug("Failed to remove DRAM offset"); goto out_err; - - /* Remove HiAddrOffset from normalized address, if enabled: */ - if (ctx.tmp & BIT(0)) { - u64 hi_addr_offset =3D (ctx.tmp & GENMASK_ULL(31, 20)) << 8; - - if (norm_addr >=3D hi_addr_offset) { - ctx.ret_addr -=3D hi_addr_offset; - base =3D 1; - } } =20 /* Read D18F0x110 (DramBaseAddress). */ - if (df_indirect_read_instance(nid, 0, 0x110 + (8 * base), umc, &ctx.tmp)) + if (df_indirect_read_instance(nid, 0, 0x110 + (8 * ctx.map_num), umc, &ct= x.tmp)) goto out_err; =20 /* Check if address range is valid. */ @@ -1137,7 +1169,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr } =20 /* Read D18F0x114 (DramLimitAddress). */ - if (df_indirect_read_instance(nid, 0, 0x114 + (8 * base), umc, &ctx.tmp)) + if (df_indirect_read_instance(nid, 0, 0x114 + (8 * ctx.map_num), umc, &ct= x.tmp)) goto out_err; =20 intlv_num_sockets =3D (ctx.tmp >> 8) & 0x1; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06B2CC433FE for ; Thu, 27 Jan 2022 20:41:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344147AbiA0Ulr (ORCPT ); Thu, 27 Jan 2022 15:41:47 -0500 Received: from mail-dm6nam12on2073.outbound.protection.outlook.com ([40.107.243.73]:3035 "EHLO NAM12-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344106AbiA0Ull (ORCPT ); Thu, 27 Jan 2022 15:41:41 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZFlQs9WSFVdB/Fw98vgTcn+MyRzuLxHRTiRxrRFjgcC7MMjcjg2VqHuIz23NbCAp8t74QBuHGHA4y/ZeB9p9D7MJje9fuUpg+/hlWkX7BvefrlFAN/3sBEPmcUT6ngLNP/OmHY4XmAgGrHtE1G9ae3oFehxFzhRtyjMgE8EIkwXYyUavjeyOM/VXgLnbJvRWyrU0z5FYQO3MtVGjvEfqJqsBFSXI+VgPhxDM3FaEskXgytaNftWUstUYAoitdj6CJvkNLktn1nmO9wyXOaB84o8v1jgZRlwNJ4t8Yy9ZHTleiW6+rrm1JU2uI+jMwA9zLkU6CDeuZN0dJyQo7P5nNA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SkILAmsQ1oRocp91pKDg0qMnUaq4snl4/KvM3FKpCVI=; b=bxCafin1ccwKKfgrL3nboxN2gXFofabcMsGPMf4jjKPQIc5gZAs27FjMGjjlTz+xy8WA8tjHmK5cHcahUzPr7HE0H+ZmA4JmpbnJVXoUTr76fq+S8DsrLioW5AM8PKwCKCXvkl/t/K23LZf9Bhw/dtblcNWlc8ntRbFQ2Es/acFLyvkmxYD2ZOejuiYfu9Bh2IJqQnsQ5f87WizsipFrJmbGMXgYhX9WJgBtJM9FiVYGrPujnsaDZLBg6qDUcA6+voZX1/QH0zGP67fN/DrYzLFTpyulv/5LwLskb/PRKt7Xmt1wjXuRkyVCf4ZqE96H0lRPmVbZ5W114yIogg4K9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SkILAmsQ1oRocp91pKDg0qMnUaq4snl4/KvM3FKpCVI=; b=il9RtIujKbguQdEP16VGql/7TzpMMFcSU9De2GYxYISEGPMKm9uypYPwNEfmWdE5xX8O8JxauU8XwwKZVKMsGNlJvRi4j0DFJ2IoMk5pH54or03YIJhmJ5RIKWRrkVGc1PAD6RmwGKOBi0pcZN2MLETtfy4SpuMhQAvb22VAb+E= Received: from MW4P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::6) by MN2PR12MB3694.namprd12.prod.outlook.com (2603:10b6:208:165::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:40 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::da) by MW4P221CA0001.outlook.office365.com (2603:10b6:303:8b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:39 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:37 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 03/24] EDAC/amd64: Define function to read DRAM address map registers Date: Thu, 27 Jan 2022 20:40:54 +0000 Message-ID: <20220127204115.384161-4-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 02362252-403b-4855-dd5d-08d9e1d56b95 X-MS-TrafficTypeDiagnostic: MN2PR12MB3694:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hNmgHyVrt2quL82bFB/qGqgx2X8SLMUMIWGpa06l3EzJzyzw5WBWys+pOAV0CtYKrPwBjCiYymZmjxNuBTfz2c5KEldxfjjo+F++FxoNF6DrXd+MiUvcx5eK0sG1jr0aZjK9e0LJ1L1ZE8eBFhiHz5OxHff8qbhwSnPNuF9k1kBABJGHouLWD5kuxCUpGBcD7k8WY7phLQvo1YS8kgqT83dAdYLCCikat6MAifqfqpVOgLSThj7lANzfGZFNBqNIfgpswz8jmdosahGT+ywr1Ni2ulmCtm8+Ak/Xjf3owvHpv34HQ7KEsWqRHHq6wq7QllHos6XGNW4Im4dU79NCq3fvj8wAXe4wcMTTKk2zCzCT2xN1BDJjx/SNk+VpLKUdRfXeDxGtD+/PEzWl8j18+FczN2zQqalkNYe8eUY+Z6AgNNIcWtKoyzVZvzYm69Nsec8Gr6alhMMHd3D3jwV0eGSZ47ELZpL7oEGeNB3VD6KW8HvLpSC1fVkWHq1JIE6Yb2imA4WkcBoi91wrGXMoueqm7L0pgdpJTqGKIzajDkqXSGmGPck8YXMx6/tHmUIdj4S+P6NE6H7ZJVm1WYpeG7tLbqbUE/xm1yOLsdGX0d8l6XuBeOBMkTY+WSe5Hh/of0O4Jf3M1dOnEKYmMvwEgZYmixaDcE4n4yjShFA4BtlEHa38/UIJQJjn6G5haLI7JwmIgt8WWJ4T7nHNX8RQ6BKaRBQe9o/4L6UrR/8f1mruU/3qGi/7gIPy34xGQJ1hghsvfsUpK6rH/szAPtaAR454h5N4qNGL3I/XPHHFRy4= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(47076005)(8676002)(54906003)(44832011)(508600001)(8936002)(36756003)(86362001)(966005)(40460700003)(316002)(5660300002)(6916009)(6666004)(7696005)(81166007)(83380400001)(356005)(16526019)(36860700001)(82310400004)(70206006)(26005)(70586007)(2906002)(1076003)(4326008)(186003)(426003)(2616005)(336012)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:39.7028 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 02362252-403b-4855-dd5d-08d9e1d56b95 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3694 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move the reading of the base and limit registers into a helper function. Save the raw values in the context struct as they will be parsed later. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-8-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. v2->v3: * Was patch 8 in v2. * Dropped "df_regs" use. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 51 ++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 837bca7eb1ff..d1af1ce716f9 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1062,6 +1062,8 @@ struct addr_ctx { u64 ret_addr; u32 tmp; u32 reg_dram_offset; + u32 reg_base_addr; + u32 reg_limit_addr; u16 nid; u8 inst_id; u8 map_num; @@ -1113,6 +1115,27 @@ static int remove_dram_offset(struct addr_ctx *ctx) return 0; } =20 +static int get_dram_addr_map(struct addr_ctx *ctx) +{ + /* Read D18F0x110 (DramBaseAddress). */ + if (df_indirect_read_instance(ctx->nid, 0, 0x110 + (8 * ctx->map_num), + ctx->inst_id, &ctx->reg_base_addr)) + return -EINVAL; + + /* Check if address range is valid. */ + if (!(ctx->reg_base_addr & BIT(0))) { + pr_debug("Invalid DramBaseAddress range: 0x%x.\n", ctx->reg_base_addr); + return -EINVAL; + } + + /* Read D18F0x114 (DramLimitAddress). */ + if (df_indirect_read_instance(ctx->nid, 0, 0x114 + (8 * ctx->map_num), + ctx->inst_id, &ctx->reg_limit_addr)) + return -EINVAL; + + return 0; +} + static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) { u64 dram_base_addr, dram_limit_addr, dram_hole_base; @@ -1145,21 +1168,15 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr goto out_err; } =20 - /* Read D18F0x110 (DramBaseAddress). */ - if (df_indirect_read_instance(nid, 0, 0x110 + (8 * ctx.map_num), umc, &ct= x.tmp)) - goto out_err; - - /* Check if address range is valid. */ - if (!(ctx.tmp & BIT(0))) { - pr_err("%s: Invalid DramBaseAddress range: 0x%x.\n", - __func__, ctx.tmp); + if (get_dram_addr_map(&ctx)) { + pr_debug("Failed to get DRAM address map"); goto out_err; } =20 - lgcy_mmio_hole_en =3D ctx.tmp & BIT(1); - intlv_num_chan =3D (ctx.tmp >> 4) & 0xF; - intlv_addr_sel =3D (ctx.tmp >> 8) & 0x7; - dram_base_addr =3D (ctx.tmp & GENMASK_ULL(31, 12)) << 16; + lgcy_mmio_hole_en =3D ctx.reg_base_addr & BIT(1); + intlv_num_chan =3D (ctx.reg_base_addr >> 4) & 0xF; + intlv_addr_sel =3D (ctx.reg_base_addr >> 8) & 0x7; + dram_base_addr =3D (ctx.reg_base_addr & GENMASK_ULL(31, 12)) << 16; =20 /* {0, 1, 2, 3} map to address bits {8, 9, 10, 11} respectively */ if (intlv_addr_sel > 3) { @@ -1168,13 +1185,9 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr goto out_err; } =20 - /* Read D18F0x114 (DramLimitAddress). */ - if (df_indirect_read_instance(nid, 0, 0x114 + (8 * ctx.map_num), umc, &ct= x.tmp)) - goto out_err; - - intlv_num_sockets =3D (ctx.tmp >> 8) & 0x1; - intlv_num_dies =3D (ctx.tmp >> 10) & 0x3; - dram_limit_addr =3D ((ctx.tmp & GENMASK_ULL(31, 12)) << 16) | GENMASK_U= LL(27, 0); + intlv_num_sockets =3D (ctx.reg_limit_addr >> 8) & 0x1; + intlv_num_dies =3D (ctx.reg_limit_addr >> 10) & 0x3; + dram_limit_addr =3D ((ctx.reg_limit_addr & GENMASK_ULL(31, 12)) << 16) = | GENMASK_ULL(27, 0); =20 intlv_addr_bit =3D intlv_addr_sel + 8; =20 --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1CFCFC43217 for ; Thu, 27 Jan 2022 20:41:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344157AbiA0Ulx (ORCPT ); Thu, 27 Jan 2022 15:41:53 -0500 Received: from mail-dm6nam11on2040.outbound.protection.outlook.com ([40.107.223.40]:18688 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344127AbiA0Ulo (ORCPT ); Thu, 27 Jan 2022 15:41:44 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TMsYAN53973BDywZS+ksbja0X2yl68q9N7QVKnL13r8YtyiI3VLhU2ZocLKWierBQq7xXj5GatBCBe4sDT8GvO7399490TIooyUBIgzKlos1RDTD06p8bMv0Er19B5+pOTCuX/BaBsqEHWj92wH+kTlNvclfSaM4+uCOEFIX+AQXBG/DIi2tW48eIA8TTUV5vERL27bPrm9K6XNk1Kf4uVZmw3WynzW/vBfHtPKQ5YzFkf207TwaExbQB3eCmmxXScN8RogNrD6+1g9WsugCYuOSbeV2l4W1RgKK96LezrLQZt6Nof28Rqcnfm2zuEpI1MPTjASkuB8LNbnOdNSi2w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MPR849nVKplE4VXOfbtINN48xlAm4o3CU5jW6NFKoHM=; b=Jkq7zcHKXusI8FiEtTpfd6OJ4WBgrcWlBncUvw6NGXhHyh052xr3AqkNQYWSwBi9tjzzihhHTBh0scELDZVB5NvFe0f0Vz1f37fjQBmR0dNy1k46wRjtzhrw1eWXSKlVS0GAy+o/hOZG9mLOXH2yTZUToEYcgYAkOXSPNlziy9KuIhvoIxKVg22/7ZRyIAG0pPfHTT127My1e+iyZ6HaWv41NxzyhiCCnKrp8JCzbbGdPwOCl0XW76mMQtKoW65o6xSQiXhkhXrSPY4Z8dojgEumAe9IDL+4d8L5UMctaPXXcILgTCcsaUBCseD170i7qQtqV271nDkqJX1nwsxTPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MPR849nVKplE4VXOfbtINN48xlAm4o3CU5jW6NFKoHM=; b=Uy6FUKOwKhlRZe48sOl5/Mxubtc9LLwHhQOGYqbCKXTRWY8cKxHPY9h1gXApN1po8RKdl5rCIzMa75IxQla48hAdFrSRgFYbc42UupU09Pse/Y3SE5JdvBvfZCDqTRoTihYrQruRHUcHfZzXNhfJYddPaX7pjwkK8wb5V3u0gz0= Received: from MW4P221CA0024.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::29) by BN8PR12MB2995.namprd12.prod.outlook.com (2603:10b6:408:41::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:41 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::69) by MW4P221CA0024.outlook.office365.com (2603:10b6:303:8b::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:40 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:38 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 04/24] EDAC/amd64: Define function to find interleaving mode Date: Thu, 27 Jan 2022 20:40:55 +0000 Message-ID: <20220127204115.384161-5-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: edc86d2e-1077-44c4-37a7-08d9e1d56c14 X-MS-TrafficTypeDiagnostic: BN8PR12MB2995:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2201; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iMlSvIeZJniqkh/OXawbo6+3+F+asQcZ/7Wd/da9gg/9vpSp8woAXox7e3GbpbKWzHEsvJBkPBbYajXyaEknJslKRjVTAJwA6uqFRvpwFEsFEzabDEEJWbAWoEMMMkLl/c0PTQl8JYAuWPA/JwV5uYukbYFmhckHXjwNUvT+OP+T5fLsbrx80PuBIBWvYerYox2Alwm/3mafQ48OJF0akDn/rjbCScMOJPQzh3qSgWXA4Khw10yoc1WJRuPF4evpTf3U99uX9aOik8ZDZCSUNSaGRaL/Je8d7JhFJhmn0XRh3UbxAuh3CnJ+z00hQaJ8Y6mvDLMvAfGjStwCUDvA8EfWTW+Dsf3Tus1qnvkFUKD9DS+v9UUfZlnxjIas6aWnj4Ib5ZG4Sh2QhZ5x9+YCvoy8VIE8oMwXYbH5iNB9l58zDRVwXkc/0R0JlXMuEe2zFtLfItgaDnvaELfR0IqzcbpmrSLr5bncKiakc5hYk/pmTtcO6Y43csQthcvEcm94jWKnJoyv48ZPEV8VSVmDoE9PLy1HUjW3o0ySmenbC59H3KGU4xL4U6Z2GKb9LAmJ2s40VwgBHKQM077//kesIRDNzZJpo9wyFIZ0MEl6fTZZt7rXZslbvYUcy4+nuMoBPJOSCdwfj0wjDv/2nfUn+kYlRmaI3bYHEkaNrU3rq1IlHIEUGWdMv8aUExHjarhQC/7cCIqIiyTiJVRXqr0vij8XyOjtLm3+1ikISTMD8ZTst2TomJmfbfIchURKGfIsMIrTzD/8q7sMWxWTz+Y+2RC/YqCRFkJ7OAHhebClx9Nt87fZaCY3GYrHqDI/2HU7 X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(316002)(6666004)(82310400004)(26005)(6916009)(54906003)(508600001)(36860700001)(966005)(47076005)(4326008)(70586007)(5660300002)(81166007)(36756003)(2616005)(336012)(426003)(2906002)(356005)(1076003)(186003)(7696005)(86362001)(16526019)(40460700003)(44832011)(83380400001)(70206006)(8676002)(8936002)(37363002)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:40.5308 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: edc86d2e-1077-44c4-37a7-08d9e1d56c14 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB2995 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Define a helper function to find the interleaving mode. Define a DF2-specific function now. Future DF versions will have their own functions. Use an enumeration for the interleaving modes to give a human-readable value. Save the interleaving mode in the context struct, since this will be used in multiple functions. Multiple interleaving modes support hashing, so save a boolean in the context struct to check if hashing is enabled. This boolean will be replaced with a function pointer in a later patch. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-9-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointer definition. * Include pr_debug() on failure. v2->v3: * Was patch 9 in v2. * Updated commit message. v1->v2: * Moved from arch/x86 to EDAC. * Add new function to data_fabric_ops. drivers/edac/amd64_edac.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index d1af1ce716f9..4e83a9be4724 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1057,8 +1057,16 @@ static int df_indirect_read_broadcast(u16 node, u8 f= unc, u16 reg, u32 *lo) return __df_indirect_read(node, func, reg, DF_BROADCAST, lo); } =20 +/* These are mapped 1:1 to the hardware values. Special cases are set at >= 0x20. */ +enum intlv_modes { + NONE =3D 0x00, + NOHASH_2CH =3D 0x01, + DF2_HASH_2CH =3D 0x21, +}; + /* Use "reg_" prefix for raw register values. */ struct addr_ctx { + enum intlv_modes intlv_mode; u64 ret_addr; u32 tmp; u32 reg_dram_offset; @@ -1067,10 +1075,12 @@ struct addr_ctx { u16 nid; u8 inst_id; u8 map_num; + bool hash_enabled; }; =20 struct data_fabric_ops { u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); + int (*get_intlv_mode)(struct addr_ctx *ctx); }; =20 static u64 get_hi_addr_offset_df2(struct addr_ctx *ctx) @@ -1078,8 +1088,26 @@ static u64 get_hi_addr_offset_df2(struct addr_ctx *c= tx) return (ctx->reg_dram_offset & GENMASK_ULL(31, 20)) << 8; } =20 +static int get_intlv_mode_df2(struct addr_ctx *ctx) +{ + ctx->intlv_mode =3D (ctx->reg_base_addr >> 4) & 0xF; + + if (ctx->intlv_mode =3D=3D 8) { + ctx->intlv_mode =3D DF2_HASH_2CH; + ctx->hash_enabled =3D true; + } + + if (ctx->intlv_mode !=3D NONE && + ctx->intlv_mode !=3D NOHASH_2CH && + ctx->intlv_mode !=3D DF2_HASH_2CH) + return -EINVAL; + + return 0; +} + struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, + .get_intlv_mode =3D get_intlv_mode_df2, }; =20 struct data_fabric_ops *df_ops; @@ -1146,7 +1174,6 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr u8 num_intlv_bits, hashed_bit; u8 lgcy_mmio_hole_en; u8 cs_mask, cs_id =3D 0; - bool hash_enabled =3D false; =20 struct addr_ctx ctx; =20 @@ -1173,6 +1200,11 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr goto out_err; } =20 + if (df_ops->get_intlv_mode(&ctx)) { + pr_debug("Failed to get interleave mode"); + goto out_err; + } + lgcy_mmio_hole_en =3D ctx.reg_base_addr & BIT(1); intlv_num_chan =3D (ctx.reg_base_addr >> 4) & 0xF; intlv_addr_sel =3D (ctx.reg_base_addr >> 8) & 0x7; @@ -1200,7 +1232,6 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr case 7: intlv_num_chan =3D 4; break; =20 case 8: intlv_num_chan =3D 1; - hash_enabled =3D true; break; default: pr_err("%s: Invalid number of interleaved channels %d.\n", @@ -1302,7 +1333,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr ctx.ret_addr +=3D (BIT_ULL(32) - dram_hole_base); } =20 - if (hash_enabled) { + if (ctx.hash_enabled) { /* Save some parentheses and grab ls-bit at the end. */ hashed_bit =3D (ctx.ret_addr >> 12) ^ (ctx.ret_addr >> 18) ^ --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EA08C4167D for ; Thu, 27 Jan 2022 20:41:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344177AbiA0Uly (ORCPT ); Thu, 27 Jan 2022 15:41:54 -0500 Received: from mail-dm6nam11on2084.outbound.protection.outlook.com ([40.107.223.84]:41569 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344097AbiA0Ulo (ORCPT ); Thu, 27 Jan 2022 15:41:44 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lcFMw49gbnIms7cvQi6pr90LYvSTfZ+EaWLmOLCGZD8t1v2jNCJhQ8oDBty51X7qMhzFOZj35cuknBCueSRca9Pwm7KiFHb6zqLlg7+ATLk7z5fJlYP6Kmz1irLOu7fVTcqFr060LmViMglINZ8m/XEexxU33C1rTTVbYW5ZPU1sy9FWfW+YJP2n8gvr5sUno1Y0GLbEqT/3G6CdEVf3FWHLYGEvT+VRz0jE3cakGUpp+SBavCQAcC0Zz38OPeDSoHG5h0mOI31HnjGmj8OMKfYR0MsCD4RI9DJhi28hZuVkrSGqttFNW6TNDa5aigTfbQEnD0WuTfNpBnE9k54yMA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PVRGfDAl8+JqU/mi1WEbTRo69GZ7ley5L2VdbqXWzrU=; b=EWedz0+nUNPRMe9QzR6w60rnHjd5sW/v+0jQJZGftsX++toOUAx4QJYABzIwoe8bNlXaeXHOMTHYJhxuGIiFYnLWM+BUxUo5gCS7KQG3INmtDvlkTjsYXFHaUTE/siV5KWtrGrMJwSjjMyPH8mOXlnevTEwphjc0bKpyjrHFgSMg+crkNFD5yw4/a73DcPMicw0xbrvMtFc/4wtXsykOTqzVtY5WpdeMVyxJZYWu/LDeUADk7kT2BTkAJq8AQyudF+jxDectt3I8YlkOtSEQPoOpTrvI2dulEQx9YgAATjuK9RWGTeYgYD6wVQL5KVKYcZ3uXXg+aFaJmZjFKK12MA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PVRGfDAl8+JqU/mi1WEbTRo69GZ7ley5L2VdbqXWzrU=; b=lL3YTMY/ayWqGwwiqTyR/tIjOImlSUME+77IIAT6YeSYobwNMLCHPL26AzYq/OZobUT18ELG60GjBzVTc1kTEKazL/4Bov6NUt7CsJ+2FWTnJ9fe8swh++tLZhh0s0o6wHn5OyfcP3ZI+i7EdU0uiR2UQHYXCp0dbWkWHc855YM= Received: from MW4P221CA0030.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::35) by MN2PR12MB4063.namprd12.prod.outlook.com (2603:10b6:208:1dc::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.10; Thu, 27 Jan 2022 20:41:42 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::aa) by MW4P221CA0030.outlook.office365.com (2603:10b6:303:8b::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:42 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:38 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 05/24] EDAC/amd64: Define function to denormalize address Date: Thu, 27 Jan 2022 20:40:56 +0000 Message-ID: <20220127204115.384161-6-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a6d2f354-bbb4-483e-3c13-08d9e1d56d00 X-MS-TrafficTypeDiagnostic: MN2PR12MB4063:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1417; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CDTuMCs+pGuhNKVAUuDdiT+Cv5gXQ4z3Hzq8yuAKVK8no51hVfxTKbI7CrH/kcdMYaBISKkZGFR8n0gxQZ8zI0DIYkQzcO0E2M8PbUGGYIRnmkH+2B9hqwhYMeyzI/uHJV3+hf4mj33QmQ6ZGem6ZDAShDTuVRJOjTSBaLEgOdqcIDtbhKxattjVpXIGrYmWW8/q2ELuUhs0pkd4DgyzWzoUpvgF3QxsqNzE9X4mdDvxrzp3R+DciK5cLZrj5yXAeUSozMuSKgoMZUhomMC9zKHzCkV5mcDXlk5xlYVhX0/59TGTQ/m7HakKeNFQxj/bVNL0LY9cI3rDJhRY+YB4ItA4RAPpBXnd1jYZQMR6D9iDAwX9SG5JlXBjl7CJiG6lVItb2fduEXbvx6ZB/h7zgdQvGArhyqh+Q4nwGVeeGWD1zLpMaMS+Dji6/LVndv5yfYn0WdwRyehUdSBiJL6rOYjzfu13kk+OOFsqpcTD6shc9lB6AqsCBC3kI0FKDDKWwdSz1TDptIy0Y7ydGyN3BOLC/C2oZ3wI4w6WnR35UFt/wjyeNlQlXHzI5b7RFkGjvPduOx25dvJLd0GkDBPTwzoym641n90op6mV17ozfpm9IaSofRaYQJlg42kuNqj2CRFszFXs/mhPRY68zWFcPIcrD1Pp69o0C3oaQ6+Si3BS3LAJWp5CcCslHlfIE3AkY93+kM2uwyabylKQRHNwiPRsc2zztdNG+5GlxLHK3Qz9AtqsZsnD7dFICaZyBxjPNPY6TcRxgShHZ7MbaZ5xXT2qvHtUA5PHs/fCUV1YJZIKsupIBucY5axf2jZ7zBn43W50aTjRbKtFWePPsFs1/WQfEMK/xFR+uPdALmm7K/q0WKDJHkwV1lqhxtQjmqIq X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(36840700001)(46966006)(40470700004)(36756003)(82310400004)(86362001)(5660300002)(70206006)(2616005)(83380400001)(6916009)(8936002)(26005)(2906002)(966005)(47076005)(6666004)(336012)(36860700001)(54906003)(356005)(316002)(44832011)(7696005)(4326008)(426003)(81166007)(508600001)(1076003)(40460700003)(70586007)(16526019)(186003)(8676002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:42.0776 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6d2f354-bbb4-483e-3c13-08d9e1d56d00 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4063 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move the address denormalization into a separate helper function. This will be further refactored in later patches. Add the interleave address bit and the CS ID to the context struct. These values will be used by multiple functions. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-10-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. v2->v3: * Was patch 10 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 153 +++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 69 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 4e83a9be4724..9c61e3fa231a 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1075,6 +1075,8 @@ struct addr_ctx { u16 nid; u8 inst_id; u8 map_num; + u8 intlv_addr_bit; + u8 cs_id; bool hash_enabled; }; =20 @@ -1164,64 +1166,24 @@ static int get_dram_addr_map(struct addr_ctx *ctx) return 0; } =20 -static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) +static int denormalize_addr(struct addr_ctx *ctx) { - u64 dram_base_addr, dram_limit_addr, dram_hole_base; - u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; u8 intlv_num_dies, intlv_num_chan, intlv_num_sockets; - u8 intlv_addr_sel, intlv_addr_bit; - u8 num_intlv_bits, hashed_bit; - u8 lgcy_mmio_hole_en; - u8 cs_mask, cs_id =3D 0; - - struct addr_ctx ctx; - - if (!df_ops) { - pr_debug("Data Fabric Operations not set"); - return -EINVAL; - } - - memset(&ctx, 0, sizeof(ctx)); - - /* Start from the normalized address */ - ctx.ret_addr =3D norm_addr; - - ctx.nid =3D nid; - ctx.inst_id =3D umc; - - if (remove_dram_offset(&ctx)) { - pr_debug("Failed to remove DRAM offset"); - goto out_err; - } - - if (get_dram_addr_map(&ctx)) { - pr_debug("Failed to get DRAM address map"); - goto out_err; - } - - if (df_ops->get_intlv_mode(&ctx)) { - pr_debug("Failed to get interleave mode"); - goto out_err; - } - - lgcy_mmio_hole_en =3D ctx.reg_base_addr & BIT(1); - intlv_num_chan =3D (ctx.reg_base_addr >> 4) & 0xF; - intlv_addr_sel =3D (ctx.reg_base_addr >> 8) & 0x7; - dram_base_addr =3D (ctx.reg_base_addr & GENMASK_ULL(31, 12)) << 16; + u8 intlv_addr_sel =3D (ctx->reg_base_addr >> 8) & 0x7; + u8 num_intlv_bits, cs_mask =3D 0; =20 /* {0, 1, 2, 3} map to address bits {8, 9, 10, 11} respectively */ if (intlv_addr_sel > 3) { pr_err("%s: Invalid interleave address select %d.\n", __func__, intlv_addr_sel); - goto out_err; + return -EINVAL; } =20 - intlv_num_sockets =3D (ctx.reg_limit_addr >> 8) & 0x1; - intlv_num_dies =3D (ctx.reg_limit_addr >> 10) & 0x3; - dram_limit_addr =3D ((ctx.reg_limit_addr & GENMASK_ULL(31, 12)) << 16) = | GENMASK_ULL(27, 0); + intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; + intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; =20 - intlv_addr_bit =3D intlv_addr_sel + 8; + ctx->intlv_addr_bit =3D intlv_addr_sel + 8; =20 /* Re-use intlv_num_chan by setting it equal to log2(#channels) */ switch (intlv_num_chan) { @@ -1236,7 +1198,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr default: pr_err("%s: Invalid number of interleaved channels %d.\n", __func__, intlv_num_chan); - goto out_err; + return -EINVAL; } =20 num_intlv_bits =3D intlv_num_chan; @@ -1244,7 +1206,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr if (intlv_num_dies > 2) { pr_err("%s: Invalid number of interleaved nodes/dies %d.\n", __func__, intlv_num_dies); - goto out_err; + return -EINVAL; } =20 num_intlv_bits +=3D intlv_num_dies; @@ -1256,7 +1218,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr if (num_intlv_bits > 4) { pr_err("%s: Invalid interleave bits %d.\n", __func__, num_intlv_bits); - goto out_err; + return -EINVAL; } =20 if (num_intlv_bits > 0) { @@ -1269,41 +1231,43 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr * umc/channel# as instance id of the coherent slave * for FICAA. */ - if (df_indirect_read_instance(nid, 0, 0x50, umc, &ctx.tmp)) - goto out_err; + if (df_indirect_read_instance(ctx->nid, 0, 0x50, ctx->inst_id, &ctx->tmp= )) + return -EINVAL; =20 - cs_fabric_id =3D (ctx.tmp >> 8) & 0xFF; + cs_fabric_id =3D (ctx->tmp >> 8) & 0xFF; die_id_bit =3D 0; =20 /* If interleaved over more than 1 channel: */ if (intlv_num_chan) { die_id_bit =3D intlv_num_chan; cs_mask =3D (1 << die_id_bit) - 1; - cs_id =3D cs_fabric_id & cs_mask; + ctx->cs_id =3D cs_fabric_id & cs_mask; } =20 sock_id_bit =3D die_id_bit; =20 /* Read D18F1x208 (SystemFabricIdMask). */ if (intlv_num_dies || intlv_num_sockets) - if (df_indirect_read_broadcast(nid, 1, 0x208, &ctx.tmp)) - goto out_err; + if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->tmp)) + return -EINVAL; =20 /* If interleaved over more than 1 die. */ if (intlv_num_dies) { sock_id_bit =3D die_id_bit + intlv_num_dies; - die_id_shift =3D (ctx.tmp >> 24) & 0xF; - die_id_mask =3D (ctx.tmp >> 8) & 0xFF; + die_id_shift =3D (ctx->tmp >> 24) & 0xF; + die_id_mask =3D (ctx->tmp >> 8) & 0xFF; =20 - cs_id |=3D ((cs_fabric_id & die_id_mask) >> die_id_shift) << die_id_bit; + ctx->cs_id |=3D ((cs_fabric_id & die_id_mask) + >> die_id_shift) << die_id_bit; } =20 /* If interleaved over more than 1 socket. */ if (intlv_num_sockets) { - socket_id_shift =3D (ctx.tmp >> 28) & 0xF; - socket_id_mask =3D (ctx.tmp >> 16) & 0xFF; + socket_id_shift =3D (ctx->tmp >> 28) & 0xF; + socket_id_mask =3D (ctx->tmp >> 16) & 0xFF; =20 - cs_id |=3D ((cs_fabric_id & socket_id_mask) >> socket_id_shift) << sock= _id_bit; + ctx->cs_id |=3D ((cs_fabric_id & socket_id_mask) + >> socket_id_shift) << sock_id_bit; } =20 /* @@ -1314,12 +1278,63 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr * bits there are. "intlv_addr_bit" tells us how many "Y" bits * there are (where "I" starts). */ - temp_addr_y =3D ctx.ret_addr & GENMASK_ULL(intlv_addr_bit - 1, 0); - temp_addr_i =3D (cs_id << intlv_addr_bit); - temp_addr_x =3D (ctx.ret_addr & GENMASK_ULL(63, intlv_addr_bit)) << num_= intlv_bits; - ctx.ret_addr =3D temp_addr_x | temp_addr_i | temp_addr_y; + temp_addr_y =3D ctx->ret_addr & GENMASK_ULL(ctx->intlv_addr_bit - 1, 0); + temp_addr_i =3D (ctx->cs_id << ctx->intlv_addr_bit); + temp_addr_x =3D (ctx->ret_addr & GENMASK_ULL(63, ctx->intlv_addr_bit)) + << num_intlv_bits; + ctx->ret_addr =3D temp_addr_x | temp_addr_i | temp_addr_y; } =20 + return 0; +} + +static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) +{ + u64 dram_base_addr, dram_limit_addr, dram_hole_base; + + u8 hashed_bit; + u8 lgcy_mmio_hole_en; + + struct addr_ctx ctx; + + if (!df_ops) { + pr_debug("Data Fabric Operations not set"); + return -EINVAL; + } + + memset(&ctx, 0, sizeof(ctx)); + + /* We start from the normalized address */ + ctx.ret_addr =3D norm_addr; + + ctx.nid =3D nid; + ctx.inst_id =3D umc; + + if (remove_dram_offset(&ctx)) { + pr_debug("Failed to remove DRAM offset"); + goto out_err; + } + + if (get_dram_addr_map(&ctx)) { + pr_debug("Failed to get DRAM address map"); + goto out_err; + } + + if (df_ops->get_intlv_mode(&ctx)) { + pr_debug("Failed to get interleave mode"); + goto out_err; + } + + if (denormalize_addr(&ctx)) { + pr_debug("Failed to denormalize address"); + goto out_err; + } + + lgcy_mmio_hole_en =3D ctx.reg_base_addr & BIT(1); + dram_base_addr =3D (ctx.reg_base_addr & GENMASK_ULL(31, 12)) << 16; + + dram_limit_addr =3D ((ctx.reg_limit_addr & GENMASK_ULL(31, 12)) << 16) = | GENMASK_ULL(27, 0); + /* Add dram base address */ ctx.ret_addr +=3D dram_base_addr; =20 @@ -1339,12 +1354,12 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr (ctx.ret_addr >> 18) ^ (ctx.ret_addr >> 21) ^ (ctx.ret_addr >> 30) ^ - cs_id; + ctx.cs_id; =20 hashed_bit &=3D BIT(0); =20 - if (hashed_bit !=3D ((ctx.ret_addr >> intlv_addr_bit) & BIT(0))) - ctx.ret_addr ^=3D BIT(intlv_addr_bit); + if (hashed_bit !=3D ((ctx.ret_addr >> ctx.intlv_addr_bit) & BIT(0))) + ctx.ret_addr ^=3D BIT(ctx.intlv_addr_bit); } =20 /* Is calculated system address is above DRAM limit address? */ --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F31AC433FE for ; Thu, 27 Jan 2022 20:42:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344209AbiA0Ul5 (ORCPT ); Thu, 27 Jan 2022 15:41:57 -0500 Received: from mail-bn8nam11on2077.outbound.protection.outlook.com ([40.107.236.77]:50912 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344130AbiA0Ulp (ORCPT ); Thu, 27 Jan 2022 15:41:45 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cu172d39rSmtzXtjdCMFt/jhOWZb6d9NuXxZ+ZmzuWn7crPL9KI5VJyjKWOMFG2634z3QTAM8+MbQNQEvjEZMGRet3EWkwy0GJcOkqi/PPlEmQIe18e6QWdqt2Odknl9PFRtYM0hLZV9vSvsadVMFQkC/baKPlQiEk/vgj72zZSGQEHZ9Lye5GlYMWwXuJ7VU6HuF7S6n6J/jZjkwZfuzGJJrleFgBNg6GEK9qUh4HX3bYKhysgh/4qQyfC8SVlFwRD7QvAWDYKTfs2mr+U2eTYGY+Jv/lt1sZ0UKGOZf+ApBanK+89x20bCYGx/8oJT1rOltng3qMI78Plh9YFqyw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pIItoB4O5A4fequkqbJr7XycrtyOwA2kp2GXm2APyes=; b=iILl3pb5oTxALpWrdc3MLy+Qr49/x8BZSETwAqCQu4rvmU9Q8HcGbkTdTKR+NcgBtASZJNaudnDXfu1p88YW4ppzK0yRpIidvo8Ygm4VrRQFJjsuumtybvL8I+QWHF4sYFX/gKBmgJd7Rv8PbQz7vhH1tBTqQgjNUPzVm6uhDbTAoVjsSBhjVa+wgamN/vT5l2EVFwHVLOalkGpJoXG6MQkpFJjKBHP1PQGNPNYTqjz8L9/XTDS5qQ6xZU544NgsT2vIDp7gLy6bb989IHxYci07PnBsrC12igEH7M5aejsfkb2fPsucZiGXUamGKuJRySLouorXPRwJtDwXwwTLqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pIItoB4O5A4fequkqbJr7XycrtyOwA2kp2GXm2APyes=; b=KSlKw8IbwD7KNAezs4Mqs8/v8tvittzLNDDoH9EwMcVI8FF+cHlyZ/CvV8B+JAMbXzELzO+3MR2MkwTHGi5FoXtLho/bVyfoj2OH8Z6Ajj6x4D50G09ogoB7pugwId4z0NHi5nRfG/PdgYG0vcFhaUFMi7rJjUpridjCAa3haxo= Received: from MW4P221CA0017.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::22) by MWHPR12MB1199.namprd12.prod.outlook.com (2603:10b6:300:10::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:43 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::6d) by MW4P221CA0017.outlook.office365.com (2603:10b6:303:8b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:42 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:39 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 06/24] EDAC/amd64: Define function to add DRAM base and hole Date: Thu, 27 Jan 2022 20:40:57 +0000 Message-ID: <20220127204115.384161-7-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ea53beee-c25b-436b-3414-08d9e1d56d7c X-MS-TrafficTypeDiagnostic: MWHPR12MB1199:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xPKIJGjIs5DW7Z5CT2vARsYJdZQabSZzhUrXHTa2G6DIwHbQmNGHypKr0fjZP0l96wMFVcPSzNAF3VxT2so/YFCGwmV0AkVtwwzyA7HNEuYDKHTUEtVDtoli+pmXVqK+PV8VkfMT8SSWxmp3jSXR5k14okTMRFWjc8IlmYS0qHTy6WzzXbhL/lH5voCOTc9X1dTyE24iB7XWwld4lrLn9HweESllz8a5BmFcgfQ3h12Jmxh0FmJna/QJ2FCnBCTfo3a+K8VQR5+1XtwY9OaQgcN5oregU3SCA+xuYqhCI+Ip56A+iZNWb+pLVgT1P4+WbQTUPZ75FR3Ui40x1UoSIUQcJIbAp/jy//POtLGSeWO7IEDNzdXuoyFMWKDzfBhixHlRDhAm/+Z6Q5elcYS6NtK2IlU2flvzhNkB4w8/rE1emcYfWxGXqMg4UmYcrxZw5zZfsu9Qbg3YUjO6Hll4zoutzWQ0whPntLzJ2XiomQRYDtLX8fPs2qRxM29dFyamtVUY3k6ZzZZ/hRaDa0+iNCcPORJ2mXijvEBjvx1ArrhuUJH9r4yXscmIc6G+JJzn43RsAbDaJzQXuFvKkIvE5G09+QVrS91LqMvO0wP6KfXJtpFZvT40T4qkQMz0iVYI85w1IVUUHwUkyzPeLkJc3CtTBpst3LBE79hnkDooVv+sF5OnJ1vikXt5i9melO/BijOBRbcliKCNccm8d8hpt6K3gbWNnmwXyqkWk7EsE82NNpfFPAQb6QkhtnZcs4anIXjwActNr5UfN5vHAi/ylVLQmtMyc3WZG/snA6Vkaqk= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(5660300002)(44832011)(82310400004)(2906002)(83380400001)(8676002)(4326008)(36756003)(70206006)(70586007)(8936002)(2616005)(186003)(426003)(336012)(1076003)(16526019)(81166007)(26005)(86362001)(36860700001)(47076005)(40460700003)(356005)(6666004)(7696005)(508600001)(6916009)(54906003)(316002)(966005)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:42.8900 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ea53beee-c25b-436b-3414-08d9e1d56d7c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1199 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move adding of DRAM base and hole into a separate helper function. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-11-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. v2->v3: * Was patch 11 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 43 +++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 9c61e3fa231a..350204eadb27 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1288,12 +1288,32 @@ static int denormalize_addr(struct addr_ctx *ctx) return 0; } =20 -static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) +static int add_base_and_hole(struct addr_ctx *ctx) { - u64 dram_base_addr, dram_limit_addr, dram_hole_base; + u64 dram_base_addr =3D (ctx->reg_base_addr & GENMASK_ULL(31, 12)) << 16; + + /* Add dram base address */ + ctx->ret_addr +=3D dram_base_addr; + + /* If legacy MMIO hole enabled */ + if (ctx->reg_base_addr & BIT(1)) { + u32 dram_hole_base; + + if (df_indirect_read_broadcast(ctx->nid, 0, 0x104, &dram_hole_base)) + return -EINVAL; + + dram_hole_base &=3D GENMASK(31, 24); + if (ctx->ret_addr >=3D dram_hole_base) + ctx->ret_addr +=3D (BIT_ULL(32) - dram_hole_base); + } + + return 0; +} =20 +static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) +{ + u64 dram_limit_addr; u8 hashed_bit; - u8 lgcy_mmio_hole_en; =20 struct addr_ctx ctx; =20 @@ -1330,22 +1350,11 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr goto out_err; } =20 - lgcy_mmio_hole_en =3D ctx.reg_base_addr & BIT(1); - dram_base_addr =3D (ctx.reg_base_addr & GENMASK_ULL(31, 12)) << 16; - dram_limit_addr =3D ((ctx.reg_limit_addr & GENMASK_ULL(31, 12)) << 16) = | GENMASK_ULL(27, 0); =20 - /* Add dram base address */ - ctx.ret_addr +=3D dram_base_addr; - - /* If legacy MMIO hole enabled */ - if (lgcy_mmio_hole_en) { - if (df_indirect_read_broadcast(nid, 0, 0x104, &ctx.tmp)) - goto out_err; - - dram_hole_base =3D ctx.tmp & GENMASK(31, 24); - if (ctx.ret_addr >=3D dram_hole_base) - ctx.ret_addr +=3D (BIT_ULL(32) - dram_hole_base); + if (add_base_and_hole(&ctx)) { + pr_debug("Failed to add DRAM base address and hole"); + goto out_err; } =20 if (ctx.hash_enabled) { --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7FC31C3525C for ; Thu, 27 Jan 2022 20:41:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344197AbiA0Ulz (ORCPT ); Thu, 27 Jan 2022 15:41:55 -0500 Received: from mail-mw2nam12on2059.outbound.protection.outlook.com ([40.107.244.59]:41440 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344135AbiA0Ulp (ORCPT ); Thu, 27 Jan 2022 15:41:45 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LRCU/PGhHHhg1BQeCSz11a/p25yGtUjiXuU/xAIqnmRqO7dPGeITqkorkm3g14XhwP+Z3bdWnbWdqmPMtHbMBOUZ+APG2OfLWBxJ5iszuirIvClVDhaA/QXl/0aeHJUZXwf3bttKtFo0mFMwd8SuTQ8cHzqS/KeFi5cXdXruQehLPs4jELxmod3cczssnAQg0vVSIf/b00zxwrGEE5AHKBeg8fFEEtdT7e3/ANWY6vdsXzB5GCBC/uc5Ew+ma4TYCC6j36EUrru3haVulKUEwITDBil1+Q/Ly6AgWRokgNVdgGMDkWNZK7BOXxRvBVBwL/0cnqjfBg/wmyJf3B/dKA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uNjJjX8uuea18mo71qrUYE4EumvUeatpTW6zPu0L0EY=; b=VUDa/mMnypex8r4BJ2KpO5XIzKJA2cnw1wHtW91ggXMTPgSwwQLpzl+cGRENUONN07jcyjAAowYbEmXDJSOs3Tubcs6R7QDXXAUc9gH4bv+P0QOPrxHDbfDr8ErKCdYmA+PrjJqRZ4chUcCnBlpUIrKp0f2zDQWoxRDRvrDP6x5pCC2IUY7M7nPZGNAxmJGWhgeJIBBCvG2yzRiFYAKvDnTemcgZFXTKhYmm3G4HLuRlGQEjNwTIt62R1gGXPi6Mzv8V6tPXjQdzwRyegutO689Z617Y1GRjNW9vfdG6N6qAiH4HHpyZqPD2H1MnNhXYouEevmINVqsdVaZE0kx5Dw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uNjJjX8uuea18mo71qrUYE4EumvUeatpTW6zPu0L0EY=; b=rmmOo5MnIUukqukbtbHV0n92Hj0VVijn7eW3Y7T3JVZePs6/kryB94dk4zKnAIVIKq15DXTLENxKVV7oR8xhj+9rkCSllORs76DL/FGJKgjwt2E+uGOJ0ZtZhFGzaSY+/wW9VjpmpPdGTaGX0zl994cpJtsiYRLN7aTmUUggUN4= Received: from MW4P221CA0023.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::28) by MWHPR1201MB0206.namprd12.prod.outlook.com (2603:10b6:301:55::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:43 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::7a) by MW4P221CA0023.outlook.office365.com (2603:10b6:303:8b::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:43 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:39 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 07/24] EDAC/amd64: Define function to dehash address Date: Thu, 27 Jan 2022 20:40:58 +0000 Message-ID: <20220127204115.384161-8-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4ca49c76-bbf1-4380-0727-08d9e1d56dd2 X-MS-TrafficTypeDiagnostic: MWHPR1201MB0206:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OJa2a1Yh4+cdnAKVDg9yW2sJ56YTvvaf5kGk47TwUH/ydHEKoUR3JZKoxijjSj2NHQPbSNMeBB6oJApvanDB+som9SzOjD7BE9ylG6WSyHWROs0V65uBcmHPZiBI0p3IpiC3VBoCy3hE4zxuKGshI51b5e94usD4SMBBlwIdppZcUhOFaAXFRPV9e7tgK5MWYEjx/5BMYk0RePpIskDBMSd7dSjZOuj5DF8b8YRtM/chkjox8LRnm3QwKx30VuDy7xGt8dSaKCceAyu8IbpTZP+nYub9noDsHZ7HOVSgFZOTyD9VfWzsW2rRRzbQyk7ejaSbMkiHfNCQ0n4XtLLgNlvgf+g9k0jHo9gSqnSlvUaVWYHd+O9mq+0keGptSeVy4kBAgJPR02p2QVHRD5Ap/UvMiQpCHu/KiPAT9LGZ/IGb9/8WEVJTh4HZlRVn41xp8Jgm5Rc2vnCKKO16q5XcM/3BPLJTgpeL2ejQkdOCcSK8B3gR7mNYXwoncX1E3mdQnEr/glUHY/ms4akeOsp8wjZJQDfO9cDahRLVNd5yKKtz07oh9TejP4gaNZ8ddfsX5GywwkTDurvm9xPG6rcqkR623vFPRT9xb0hs+TqR0UTdB8dY4mIpw+to9T0SqgFzCRxmLrZwD0fOaL9Vl6z98SAA18WvChrAFPjTjoHdv33DXHWy+1pymQzQDjIUPDhIKee8vYMYsnr2/3eQi8/jLHme+mgju0upMSUZXHS9hmDRZrUompmYZV9c0B07A4ddWGyuoHhnDx3/RRvq8em6AmXTx0HSHeRuBjVO9Ik9Uis= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(47076005)(2616005)(1076003)(6666004)(508600001)(426003)(86362001)(82310400004)(36756003)(336012)(966005)(186003)(40460700003)(26005)(36860700001)(7696005)(4326008)(16526019)(83380400001)(6916009)(44832011)(8936002)(81166007)(70206006)(356005)(54906003)(5660300002)(8676002)(2906002)(316002)(70586007)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:43.4525 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4ca49c76-bbf1-4380-0727-08d9e1d56dd2 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1201MB0206 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move the dehashing code into a separate helper function. Define a DF2-specific function for the current code. Specific helper functions will be added for future DF versions. The dehashing function used is based on the interleaving mode rather than the Data Fabric version. So save the function pointer in the context struct. The use of "df2" in the name of the current function is only because the interleaving mode using it only appears on Data Fabric 2 systems. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-12-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. v2->v3: * Was patch 12 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Add new function pointer in ctx struct. drivers/edac/amd64_edac.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 350204eadb27..da2d0d9ce406 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1077,7 +1077,7 @@ struct addr_ctx { u8 map_num; u8 intlv_addr_bit; u8 cs_id; - bool hash_enabled; + int (*dehash_addr)(struct addr_ctx *ctx); }; =20 struct data_fabric_ops { @@ -1090,13 +1090,29 @@ static u64 get_hi_addr_offset_df2(struct addr_ctx *= ctx) return (ctx->reg_dram_offset & GENMASK_ULL(31, 20)) << 8; } =20 +static int dehash_addr_df2(struct addr_ctx *ctx) +{ + u8 hashed_bit =3D (ctx->ret_addr >> 12) ^ + (ctx->ret_addr >> 18) ^ + (ctx->ret_addr >> 21) ^ + (ctx->ret_addr >> 30) ^ + ctx->cs_id; + + hashed_bit &=3D BIT(0); + + if (hashed_bit !=3D ((ctx->ret_addr >> ctx->intlv_addr_bit) & BIT(0))) + ctx->ret_addr ^=3D BIT(ctx->intlv_addr_bit); + + return 0; +} + static int get_intlv_mode_df2(struct addr_ctx *ctx) { ctx->intlv_mode =3D (ctx->reg_base_addr >> 4) & 0xF; =20 if (ctx->intlv_mode =3D=3D 8) { ctx->intlv_mode =3D DF2_HASH_2CH; - ctx->hash_enabled =3D true; + ctx->dehash_addr =3D dehash_addr_df2; } =20 if (ctx->intlv_mode !=3D NONE && @@ -1313,7 +1329,6 @@ static int add_base_and_hole(struct addr_ctx *ctx) static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) { u64 dram_limit_addr; - u8 hashed_bit; =20 struct addr_ctx ctx; =20 @@ -1357,18 +1372,9 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr goto out_err; } =20 - if (ctx.hash_enabled) { - /* Save some parentheses and grab ls-bit at the end. */ - hashed_bit =3D (ctx.ret_addr >> 12) ^ - (ctx.ret_addr >> 18) ^ - (ctx.ret_addr >> 21) ^ - (ctx.ret_addr >> 30) ^ - ctx.cs_id; - - hashed_bit &=3D BIT(0); - - if (hashed_bit !=3D ((ctx.ret_addr >> ctx.intlv_addr_bit) & BIT(0))) - ctx.ret_addr ^=3D BIT(ctx.intlv_addr_bit); + if (ctx.dehash_addr && ctx.dehash_addr(&ctx)) { + pr_debug("Failed to dehash address"); + goto out_err; } =20 /* Is calculated system address is above DRAM limit address? */ --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83BADC433EF for ; Thu, 27 Jan 2022 20:42:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344275AbiA0UmE (ORCPT ); Thu, 27 Jan 2022 15:42:04 -0500 Received: from mail-sn1anam02on2055.outbound.protection.outlook.com ([40.107.96.55]:12311 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344143AbiA0Ulr (ORCPT ); Thu, 27 Jan 2022 15:41:47 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DUZr6HaR23JsDx3WWD16RPLmrXseoyLBkoh8ZE1jzJztmFI8k2nwIpewfvlxU0oPbGwTJdiwospFxw5tTXYBam8jCZH4P9G8vTWF2KfwwFlM667QdN4o0IgL62E0M5wh7AQGiqCtTtXJ4V0qtry6VwMVMHURse6uG10J3HLKabB511MnTew0i97PWV0NlHqGilaPUwmeUzp/btetmI0KrYHIqtMFG1XdPJtbGfaeuLsEwmgjRSnpl6UNmu1goJIS5wgfwPaiJr1Ssb67fPgYmw17UV5FQ/VnDlwtj057ctz+jUH/b68whQwFhywU+3X3/WuRELBmRiDo/ZYzXTeWCA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EWPLQYKGGDXgy6/QO2OZP7uX/u1b7OKhAksZpE1GT+E=; b=Thz17q5I/3pn1N7/pqj4A0pOcpiCInhheRbX18u+L0yQ1iyiMPUdVuM6VRHCD0HOnqp7aTX4MokBiyIhWbAQMQBxlxdKd/DdVg4F+grFFWhXg6pHoTVB/oeMHyxM7wzl3ftZnMK+XTUukmSKizFyYsC5HZ1YRV2K2Jpjoz5YRDSOtzbBvQXBUKNv2iWxIPwj0uADzfxCS2eiG2KkVgfyVihpMMN7+kXmzmZw0xSUVgbeprqWI9OfXca9HHhzd0GZ6PeZIBRmoga0eiEDUimqnrbfC7YA7rU9xl/NZxYWm8jeX/zjDamvHXAR/nQ7DJgEUqwpkwJd4EmevaAl5Fb87w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EWPLQYKGGDXgy6/QO2OZP7uX/u1b7OKhAksZpE1GT+E=; b=RUVdCBbAq2E1bQMqqmvmzS0c5flaDLSDL5xMRx10Wbopj9BK5MKG65vv2BvMxVdYikWQkBUFRwjfEuZYKHLB8n9ZyW3SRjugIWsUvbsR9PhxbOgOIPQSm9ndqyOuLoYJ7tLNHfXixopoAaTLEIqnFFUch/6nGEj9bJBP3npgVXg= Received: from MW4P221CA0011.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::16) by MN2PR12MB4080.namprd12.prod.outlook.com (2603:10b6:208:1d9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Thu, 27 Jan 2022 20:41:44 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::36) by MW4P221CA0011.outlook.office365.com (2603:10b6:303:8b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:44 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:40 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 08/24] EDAC/amd64: Define function to check DRAM limit address Date: Thu, 27 Jan 2022 20:40:59 +0000 Message-ID: <20220127204115.384161-9-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d12171fa-50f5-42ca-da3a-08d9e1d56e27 X-MS-TrafficTypeDiagnostic: MN2PR12MB4080:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TdYjQ1iv2a40AMPBJeG8f7CeEZBIHu8RYkDzYUuVXvVqruSUlYMge967lzSeNa0fF2E3q99+wA0pylpkTe9pf+vK+Ea2jvVmrdpJGOsn4YrhncUU8UKFuhur4I0YZroTV1QNIvJsAeye2iNTv4w8o+Kx9KwQwAtG1148ke/pMt/LZjxEHRnAiXDalAG44FAiEMyuPXZ8mmVOefMtlv45lIl2hnK6fCEWL2fMWHmEWiGa4KnkEUUUxAbGLKCobuopWeQfNf9NSvuSrondPAkMuRJpRNNJBQauKZ1KKkA26eWoxDY6Z8DINj2zIr0id8M1q3PICi3/Fr0evdq1F199KCkSEqti+rAkZDwJws3KFi9GKcQz9Gzcs6dEO61Nv1sfeepXrqL36GBdOOW4IPyL0iOJbt2t9jkx43gZvonAnozPi7WDMkZD72JmkthSXSpAR2BaFO4fwLb8IR7P89q/hAATrjt0xRzHjpDECKhFFDDVxBUunkxVebuROPEJ/1AFC9DE6mELqSz0hgToPP7VlNWNaCiyR6gnNgtOkimfFZgvBs+A6Dl1phHOm8+daQ85tWYih9gEUNXAeBFoxnBiEak+pQZ/VDHhnUN+tAXwK9lcTDZKgXUidiUdn3Eqm6pQV8T+HJQzAO6v8F1hybvH5PgeEho75JYJ1sTxAtRDxqotsjU1b5gjKQ2h5Cxzq1W7unr2YrRwYKq6amFnU6mKJqAjsJrUtLV+2PtIl2rke+zdtYOijF/u7nZ7glrE20dq6cRHGa+H6VCndbFSpT/LYZu1vnw3gIpwf8a3IH+Jrzc= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(1076003)(83380400001)(26005)(16526019)(40460700003)(36860700001)(336012)(82310400004)(186003)(426003)(47076005)(36756003)(8936002)(8676002)(70586007)(70206006)(4326008)(316002)(6916009)(5660300002)(44832011)(2906002)(7696005)(54906003)(86362001)(81166007)(356005)(2616005)(6666004)(966005)(508600001)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:44.0150 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d12171fa-50f5-42ca-da3a-08d9e1d56e27 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4080 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move the DRAM limit check into a separate helper function. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-13-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. v2->v3: * Was patch 13 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index da2d0d9ce406..139dca3a3ba4 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1326,10 +1326,20 @@ static int add_base_and_hole(struct addr_ctx *ctx) return 0; } =20 -static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) +static int addr_over_limit(struct addr_ctx *ctx) { - u64 dram_limit_addr; + u64 dram_limit_addr =3D ((ctx->reg_limit_addr & GENMASK_ULL(31, 12)) << = 16) + | GENMASK_ULL(27, 0); + + /* Is calculated system address above DRAM limit address? */ + if (ctx->ret_addr > dram_limit_addr) + return -EINVAL; + + return 0; +} =20 +static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sy= s_addr) +{ struct addr_ctx ctx; =20 if (!df_ops) { @@ -1365,8 +1375,6 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16= nid, u8 umc, u64 *sys_addr goto out_err; } =20 - dram_limit_addr =3D ((ctx.reg_limit_addr & GENMASK_ULL(31, 12)) << 16) = | GENMASK_ULL(27, 0); - if (add_base_and_hole(&ctx)) { pr_debug("Failed to add DRAM base address and hole"); goto out_err; @@ -1377,9 +1385,10 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr goto out_err; } =20 - /* Is calculated system address is above DRAM limit address? */ - if (ctx.ret_addr > dram_limit_addr) + if (addr_over_limit(&ctx)) { + pr_debug("Calculated address is over limit"); goto out_err; + } =20 *sys_addr =3D ctx.ret_addr; return 0; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 418E6C433EF for ; Thu, 27 Jan 2022 20:42:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344330AbiA0UmM (ORCPT ); Thu, 27 Jan 2022 15:42:12 -0500 Received: from mail-sn1anam02on2075.outbound.protection.outlook.com ([40.107.96.75]:47424 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344174AbiA0Ulu (ORCPT ); Thu, 27 Jan 2022 15:41:50 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cIYZF4ppMGke1Sn+GaAZ+Z9/fcZ73uaTF4IAyclEhHkB/eIJOOek2gEPfh8rlE51fNCDp2diu7xmBxlDa6nWl2v+VpKap65W6W6I1/HfNXm24PNRdZREpgF8rtd80L/YfLkNclzLXzpfAAbxi42D4oKoyMElvr3sFBh5wPI78aWabRk0lmvB6EfUI1QTwkT/grD2G7OruG0UajRw3bDa58rsMRcyfB+RoiosRyLKdv1m2339scwEBsGDBDioyGY4E0rS68+bqSJl6HKfDw5RlhHIiCQDcG3EUKaPTQGroKdGgTGs0DMGJDoGKP0/6YcqrlYdk+B0QiBN/8nx5WB1XQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5ty7K66SnbulvwJdWXbojI73+6GHrFwB4r+/UzNU9yA=; b=Qj9Fc3L8tsY2pQk239p+z7+XIt69wFS6gdwEt5ke3dFrQRtJYMXNfeg1Hk9VCWgxzIQhT3lHvxXGOagpgTX6N1Z2jNSahjCE8/glvPBDRmWIT+eWqP1+gsjus6nixnsxs06dPgk/uuNZcPHIf57YhZFJfy6E0xlsatIoiwAN4aI6XRQLunOUjUVXckNyhS6NXmIxUM3tJGuL+MkHeV1QuONld160IqEjX15Zbo+2IvEN6+aw+vsQD54JAvibYjpc07hzZ7jLI/39DfO5CTNZV+EwchDD0ZWI6EtUtYK+woaN3nakbjg0xO7BLtJoHoX38a/Oj4JYDd/XF6Lt5tpoQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5ty7K66SnbulvwJdWXbojI73+6GHrFwB4r+/UzNU9yA=; b=Ul+CJoQceYrCe+NXcT8+iElmF43AlFK2HYA55JBM74PLg0n60otw7ypHGC5w/1GQNN+cPtLiycYnyCBsBAsPJeh7SQpec4tfUWiUma8gMH31K1XECKaHrm/VOLJHYYuBqS98YKHqBSjgk8hg9k9O+0rcaMShZGvEXovJi4fl1AU= Received: from MWHPR17CA0077.namprd17.prod.outlook.com (2603:10b6:300:c2::15) by CO6PR12MB5427.namprd12.prod.outlook.com (2603:10b6:5:358::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:45 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::ea) by MWHPR17CA0077.outlook.office365.com (2603:10b6:300:c2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.18 via Frontend Transport; Thu, 27 Jan 2022 20:41:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:45 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:40 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 09/24] EDAC/amd64: Remove goto statements Date: Thu, 27 Jan 2022 20:41:00 +0000 Message-ID: <20220127204115.384161-10-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ce1eca47-221d-4cc8-3e38-08d9e1d56efe X-MS-TrafficTypeDiagnostic: CO6PR12MB5427:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2276; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VovFsceUefgWjuB4T9TGM9xPrXOV99xMsHls58zFKIZjCW2cpgvk9R1W9BsHFvSejNqzWLDxHnOoVkgK/52TUo3xXesKkXFe6uwqmCTif71E+Agc3X1wiNWezNQkOA+RlXthx2j/oqfczs5yk6ecDeVzzUrWXJV5ddYUCqQuNjFc62UhrimrM2A51N23rLK/i4k3daYUmNDEwjaiPQFQOGZovQ6XIpqIvIimbKLZgI9vHgImh89j/KRMcNq0TvhdF0LyJBDlOtemK3Ztx527xqIXNoa8LGW5/9cw7NraiC9hdmqPmljJmFQ9ch61MQOfMUMWqybiJaxVL2hCCivyvV1/jInRS8vgygpSBcJhPql69RdsQP4jXZsDMSBW+mj2ijrUCTJNC60XVZtzGeD9bjFu71faonnhhS/J3SMV1S86qZSW/x+c9eqQ8lcVkUf+Yl7o156hm3aFO01z0xXia5T4tuRuBj26fL+/STruiRp9flubcHrP3vi131ns4Alpk6lZvX7oevybwqB/El9ctwOWM0ye5s5pA6aga7ataFS6Z4o1OLowQwywyN6p1sS0GOXiPlYmFsRkjToT/nlBppc0a2ZdHB9Ufmt/OrIQArHsLViwhe7bZfHpVL1ZVfcPV/NvIRZRWbAjugpH2UfP9RBgM5vfHnzW8dEpbndzifHCdjVd4+nE8Fb7/EhXlCfrtUkSUJtv1EihvOTJ2Do3pi3B6mEOkvNwid9DOCjAtDuRqp73kJlQVeVzgSz1NHh2OoPsPGKq1FxJYqqlUk+E+5a0IlKDOQe+2JHo97gig6s= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(86362001)(6916009)(316002)(508600001)(47076005)(6666004)(70206006)(70586007)(4326008)(44832011)(5660300002)(8936002)(8676002)(7696005)(36860700001)(356005)(36756003)(26005)(40460700003)(966005)(81166007)(82310400004)(2906002)(2616005)(1076003)(54906003)(16526019)(426003)(186003)(336012)(83380400001)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:45.4044 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ce1eca47-221d-4cc8-3e38-08d9e1d56efe X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR12MB5427 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" ...and just return error codes directly. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-14-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 14 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 139dca3a3ba4..d568ad886d35 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1357,44 +1357,41 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u= 16 nid, u8 umc, u64 *sys_addr =20 if (remove_dram_offset(&ctx)) { pr_debug("Failed to remove DRAM offset"); - goto out_err; + return -EINVAL; } =20 if (get_dram_addr_map(&ctx)) { pr_debug("Failed to get DRAM address map"); - goto out_err; + return -EINVAL; } =20 if (df_ops->get_intlv_mode(&ctx)) { pr_debug("Failed to get interleave mode"); - goto out_err; + return -EINVAL; } =20 if (denormalize_addr(&ctx)) { pr_debug("Failed to denormalize address"); - goto out_err; + return -EINVAL; } =20 if (add_base_and_hole(&ctx)) { pr_debug("Failed to add DRAM base address and hole"); - goto out_err; + return -EINVAL; } =20 if (ctx.dehash_addr && ctx.dehash_addr(&ctx)) { pr_debug("Failed to dehash address"); - goto out_err; + return -EINVAL; } =20 if (addr_over_limit(&ctx)) { pr_debug("Calculated address is over limit"); - goto out_err; + return -EINVAL; } =20 *sys_addr =3D ctx.ret_addr; return 0; - -out_err: - return -EINVAL; } =20 static int get_channel_from_ecc_syndrome(struct mem_ctl_info *, u16); --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0354CC43217 for ; Thu, 27 Jan 2022 20:42:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344262AbiA0UmC (ORCPT ); Thu, 27 Jan 2022 15:42:02 -0500 Received: from mail-mw2nam12on2063.outbound.protection.outlook.com ([40.107.244.63]:55008 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344150AbiA0Ulr (ORCPT ); Thu, 27 Jan 2022 15:41:47 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NiVpun23tLwqn3c3kWNwJ82mGtNTa4OGvq3Xg9C4JE/eMZb+L5Q0zBETLs5VZxsn+eAG1F2wdTh6sTAzUkNzuXjlXXt7oYe/iIMFW5Kw4I5Yk/AzTJHvLJzjJHMHeeWbnkbsdVw+95MyFz5g7nLDtOwyD7sJSCalT7AgTetIftqTvRRMOFu7ZLMuqjL3026kZgg3BzeuyKAD9G1rYvdXaVE8KPTlw9bUzdgDQEMbvJNvdiBRRuigFZ0SDGVsDJhKSRBVqAN4pj/9k/Lc0atfUBd417nD2TxgzNufaGXK29hlKuKqQL1aSlI9H/nVtxlaeHgfgNvnmFxOXs1KjiEneQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6i8etN7xUscmHlPUCXecT9Uana7wKxVAsgjFnwAsFDw=; b=l/MYFTQR7SUPrUarjj87kg284q2aWp2aFqRJYF2ww2KrqJPLiSsgKf1KklsCs9+K+u1l3Do4aL+y63I/GZiYiO1fHGfgukuvGLtKxO1eQAsFYsUXiPWQl8zmc3QcrElBkXAd/nvxRWO3QlioYdBIoVAWK8al/ro6U0hY7j0st4gavWAi7VJPpu/5qKf4dUg9tdYxNvcrMgAgrQ84wLORXRXTJlC63ws+Un4uimZz51ox24PhY0Lj3AODEg2hzBCFC95xSwf/XqU6VHqT5V3EQnXifyCP73H5WBS9f0T/CI0wNUVsnL/562Eqe/wF0SlYScWlEfHejD35GGzMLTqdMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6i8etN7xUscmHlPUCXecT9Uana7wKxVAsgjFnwAsFDw=; b=ZwoSToi+I5bghxgsVfdmsb0tax2Mray8C1ZSeN2kxySwpxHDpkcZANNEMiRqy6gYIZ2uBsIfCxrsqx9tzCbQdR2ibcm5Adp/lQ4Zef2pn9OODmE1uQri8GUcvpNLkEgKJPqpBtgBjldPZBcytRjI8MO2AGTWoQnybGkYVcgY6qM= Received: from MW4P221CA0018.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::23) by DM6PR12MB4418.namprd12.prod.outlook.com (2603:10b6:5:28e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:46 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::e4) by MW4P221CA0018.outlook.office365.com (2603:10b6:303:8b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.14 via Frontend Transport; Thu, 27 Jan 2022 20:41:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:45 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:41 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 10/24] EDAC/amd64: Define function to get Interleave Address Bit Date: Thu, 27 Jan 2022 20:41:01 +0000 Message-ID: <20220127204115.384161-11-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 678671f8-5ad9-4536-c82d-08d9e1d56f3e X-MS-TrafficTypeDiagnostic: DM6PR12MB4418:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bhEdCuTeId93Mi8HUqEgqw2J+gJT9ELS93QJZ7ch4zalRt+DTqwOXq/Ouo10mWBQpfy/ymFmKSh6vcuVxhA5xndWnj6wj7lw7AZLyw1zOy+vN6FHucEz6MpJBFmap/LfhjaONr7EIzxFXe90U2RZemcmUE+ljzr44SrPyZlboh0Ue/ac/WOryJPSLva1OWlJHEqejR0jbkXxAIa6ny69d+XMjtwUHa06OYQZeveXzjLWpzTASE1WWZK39GEA7xp0RhV/ViQyyxHBlOtrcV/XobnJOdPzbs65h3ETR5L+0Yc+5Tq0eebSPak6DuuIFk8FrH+ks1VX+1v5l7gW6Yo/E8wyTsrRvX7MUEGLDJ3VOKB2BwkDvIaDZHhmgU4Oj5Z0FhKGzMCob1sfttCGEuptLFIXCwhqS2L656WBZKi7cNYdbPsMsWlBk1Y/7iqR2e8j2rsH5SVoD3pT1nYUNrj7hUrZ7lZ9vQ6vLAUi6Dq5nzZ3FB2nUXbt/wFSnDfhrOHADyJVKu8RkqhdWQTUHbNmqAlPm9MiTVUGxN0nAY2pJYclpNQ3iM2wIpzVnh/yCoTgZCjpYWbzrri438z/6g46qIT7kgtbpar+OTj9QaQrmS2OR9JtSmpVoubnj84AwQFh8i5bjnYa9f/zqtmwWZyWGdtWRvZqvE0jA5mbZFOp0d0y/hZcMDLKWu3IIUmTgRiDv6niwuuXxLvBAthfCPLlomlWlOSvJjfilmBjzF0Xzya82cyQ08/MZotw7RGS0xJUxdRK+VL16e8wfKt4NLMRV59fgipIT0LCo7ynLCRc3ks= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(8676002)(36756003)(4326008)(70206006)(70586007)(8936002)(47076005)(5660300002)(6916009)(44832011)(40460700003)(316002)(36860700001)(54906003)(82310400004)(83380400001)(81166007)(356005)(186003)(7696005)(86362001)(2616005)(26005)(6666004)(16526019)(426003)(336012)(1076003)(966005)(2906002)(508600001)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:45.8430 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 678671f8-5ad9-4536-c82d-08d9e1d56f3e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4418 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move code to find the interleave address bit into a separate helper function. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-16-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 16 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index d568ad886d35..53d9c4b1c233 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1182,25 +1182,33 @@ static int get_dram_addr_map(struct addr_ctx *ctx) return 0; } =20 -static int denormalize_addr(struct addr_ctx *ctx) +static int get_intlv_addr_bit(struct addr_ctx *ctx) { - u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; - u8 intlv_num_dies, intlv_num_chan, intlv_num_sockets; u8 intlv_addr_sel =3D (ctx->reg_base_addr >> 8) & 0x7; - u8 num_intlv_bits, cs_mask =3D 0; =20 /* {0, 1, 2, 3} map to address bits {8, 9, 10, 11} respectively */ if (intlv_addr_sel > 3) { - pr_err("%s: Invalid interleave address select %d.\n", - __func__, intlv_addr_sel); + pr_debug("Invalid interleave address select %d.\n", intlv_addr_sel); return -EINVAL; } =20 + ctx->intlv_addr_bit =3D intlv_addr_sel + 8; + + return 0; +} + +static int denormalize_addr(struct addr_ctx *ctx) +{ + u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; + u8 intlv_num_dies, intlv_num_chan, intlv_num_sockets; + u8 num_intlv_bits, cs_mask =3D 0; + + if (get_intlv_addr_bit(ctx)) + return -EINVAL; + intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; =20 - ctx->intlv_addr_bit =3D intlv_addr_sel + 8; - /* Re-use intlv_num_chan by setting it equal to log2(#channels) */ switch (intlv_num_chan) { case 0: intlv_num_chan =3D 0; break; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 227FBC433F5 for ; Thu, 27 Jan 2022 20:42:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344210AbiA0UmG (ORCPT ); Thu, 27 Jan 2022 15:42:06 -0500 Received: from mail-mw2nam12on2080.outbound.protection.outlook.com ([40.107.244.80]:53376 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344148AbiA0Ulr (ORCPT ); Thu, 27 Jan 2022 15:41:47 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tkb4Vli0Z7BlJKKWgolpzQueVT0MYKATifR+8S91YYP495Dk7YkR3iGXkh8+lF46NL+YF3rw29ce5wkAd1JLVZpBy7/Yo20dsI5pGlXNhuoZWE9vouiKw/huohI7LHMW0yleY03rtIMJEZ2mFIQMKj0bu1N/7kkjQIk9waDu4gm77+dZBi1HMJiNNL68uhk1HtAWvr109Yx1f9dBZMUHa9W6rvZYItr3EcftzmmzMX/Yc6GYxd0WdltjTQleJD9FWCF1Z3I5KMKQO0UAivJVWVyYyKpDDx+vigPXfPnwXl9O9tAskSC1R7bNouh9vz5lgPg+2GEcEs8Dwx9BMW4Ppg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1cuvvJHvi9N30OVAfBrOItujXER/Ie064fNeEsrd9GU=; b=a9zAuMdyRp/oB2EFz8vvvjQwXoeOHBp0Ldi6eu56w0YQuLOo3LlCl1Ie+iYpwpGcWHUr7ZJe17NE18jTIHG4nWDEQ0V1oS9z/sfHr5lvoGinTu8a+Jf37rdfMfcLcjoDRv2jb1xJJ56BOHCtDlQGaxv7HHX4TCAmen3DQH8Rp0nbUbzaelp0M+a9lx6KbUzA+5yq/ls1vOYWgZCt1b/ldDljciw/RTQOcuZKFaflzz04VrYjpgJa/8IfRnNvpgEoxgL1MOsTcBNHYNme6AHsPmp5S4TGNrYUT8NRG/NQtiCR68wS/bk01K7JWVfrHjXxpoHF+a/AIonFjWgi2hApNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1cuvvJHvi9N30OVAfBrOItujXER/Ie064fNeEsrd9GU=; b=SIwTOfJLLObEfHx/U/i5yajoGBJxGiMvc3krZstX1iqsXNj1pu5H0hJY4OOdk9/D8yoXlkkEfkX9pw3kGZUH+ALqpfpvXnPTwz2dsSPkiMxnMsumnu7sKtCW3tXrd7vnJJjEr/3oyY/xlvXVOyTl+Bm3rjQ7Iv9W+in2Gx7bRrA= Received: from MWHPR17CA0086.namprd17.prod.outlook.com (2603:10b6:300:c2::24) by DM5PR12MB2407.namprd12.prod.outlook.com (2603:10b6:4:b4::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.8; Thu, 27 Jan 2022 20:41:46 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2::4) by MWHPR17CA0086.outlook.office365.com (2603:10b6:300:c2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:45 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:41 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 11/24] EDAC/amd64: Skip denormalization if no interleaving Date: Thu, 27 Jan 2022 20:41:02 +0000 Message-ID: <20220127204115.384161-12-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a0bd9119-e304-407c-ea77-08d9e1d56f4c X-MS-TrafficTypeDiagnostic: DM5PR12MB2407:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: k0O1HniytTaa3wNV7/MgdlWiyOFTdid76r9AgGQ5lPBJcPbc8qg/IsFOQ26mrt8+kQNWb+kQFwRMCIBR/3Y43iEXTW/3C337Mn2ygsv8ZkTuJYIQkc6O2o3IYJuUjURlHPG0TCxxYx0iISo4bYCRE49t0iZ4zBWUc3ecW0f5KRoarY5wzEmw/PZ0wYgZcU71DSJMc9Ls8/a5+XeI3AWvoSHnfUNYO24eUOTVxlqvnNvB2WCV5GvlfjsGqvcBbdyIEUzflDL56jsWqH96ys3ZS0tPiUrW4mVHGCaGfXZWlGQMMF+GwtRTR2zJsCsktH77JFdfuW1Un78HkRA2Ssdmv7B+EG3VvpSXryMMffAmMqHqP5mbE+fB6T/oojXqaYohPhTBsQX4d8mTP2LDJgpdlceX5C4jURH3NscUMuukk3C9S85Y+wmvAJXjU7hP0OMlWeFObWjZj1WiSwNxEdzOitYNZUb1Nhx8k+fNMhkdAxFcsx9INncdSWa6w0iIseUXM6oSX/Bhf26J25shmn+ny2d+Ui4uFLNnf59u/1i3HNwzv72TD3qGEFuGVECXTMU5CKoLx/xj6wb2dHQtXSSLJ1mkQXW20n6xmxe04PIc0yXK+nYaGSPeqUWp/6rB9y8ErfB1fugoQLH3oYZJr/rSZZK27kPBE6iqqq6jwoidW0EwUFVOqb7dj+HAcnlrV48bHyL0KymJIZAoiBnbxe+9zZJvD+Rpl+qYkqFWmwEu/rMd28uNM6Te+cZmEHtXNQR4gg+KFQBwK4ePVQM1QPj3vWiQUvH/0TYIsFLx4EyLbzKBrtq2CpKYNYG9PAxmTch7hYNprmit8+KUh89mXRR8IONTpLTYAXPpf6AAatJSopV9th2u+raKYFP0T3TVZjh5 X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(46966006)(40470700004)(36840700001)(4744005)(1076003)(316002)(44832011)(5660300002)(8936002)(54906003)(40460700003)(4326008)(81166007)(86362001)(8676002)(426003)(2906002)(82310400004)(70586007)(2616005)(47076005)(16526019)(186003)(6666004)(7696005)(6916009)(36756003)(26005)(36860700001)(70206006)(966005)(508600001)(356005)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:45.9200 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a0bd9119-e304-407c-ea77-08d9e1d56f4c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB2407 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Denormalization doesn't apply to the "no interleaving" mode, so return early without error in this case. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-17-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 17 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 53d9c4b1c233..b75311acbe13 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1203,6 +1203,10 @@ static int denormalize_addr(struct addr_ctx *ctx) u8 intlv_num_dies, intlv_num_chan, intlv_num_sockets; u8 num_intlv_bits, cs_mask =3D 0; =20 + /* Return early if no interleaving. */ + if (ctx->intlv_mode =3D=3D NONE) + return 0; + if (get_intlv_addr_bit(ctx)) return -EINVAL; =20 --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95F46C433F5 for ; Thu, 27 Jan 2022 20:42:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344378AbiA0UmX (ORCPT ); Thu, 27 Jan 2022 15:42:23 -0500 Received: from mail-dm6nam11on2054.outbound.protection.outlook.com ([40.107.223.54]:31584 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344170AbiA0Ult (ORCPT ); Thu, 27 Jan 2022 15:41:49 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mc9dMgF0AU9ZKo5OksVNfbB5uUtedmbTX9sZppFR3uoPujLw6nzRaS5dyEkYEcEGRGYNFjATaoJ+NFVZI69drdunNXGXJ+HWy89uuqY/qN1JJCa+AbpTRMOcxJXYYOCm1GclT52wD+qLmM1geKlbnWzaHbW8MR7X5A3SYld0bLC0qyF/FIApXSlcwRdVEY1r56YucFmMJ4dsEae0wyElKOEpLOwEOw03Sl3XmMLX7BZtK+UZIgbKhaDq1pD09SwgDO45DKuchuhXVaIdXgKqxdRyBQjGP7kzpcL7LMuHUc5H+g5HcIaeF8JCgJ88G330vQPnzkyONTK0hPECULdN0A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Jo/Et5VALcn6tpVqXVhBUxbxss74AMhNtlpjV2aYE1A=; b=WO/mv3qkYaMyXGH26bVcp3kpM9HjlhwZAFsPxiBXrxJgYOophXxW86GdtnYybTZE5QENKPApdEwJyDLJHqo4COYpIy/yr78hGz8IppOT1FAllkkAeUlcDb8NK3paBNelwNip7WmBmiyC67Dhly548/efig1PmUj4MPPcepJdWJfWyif6y8pSs+Swq4UEku5Z+u6sBWEiLvqS195EzFNxmr5hkdXLfn960z6t/OANatlC3Yw6zzcDKzX4+wpclqcg1bFNH457ZzeubA+hp04XTtk6oFsMwEf0F5HCsexLVIf2e2qNVmgcjwp3N4W1DQncfl6wx2jZmXwtgIDCxYCBJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Jo/Et5VALcn6tpVqXVhBUxbxss74AMhNtlpjV2aYE1A=; b=s9jjhRgbp7C/odQwvofjVM/ei2TMKlIFWmdCa80OVOZJt5BIQ++oz9A6OsjiiqdeIlue6ibBwX1VnvMxpCnTt5eyyvCgfdNkFW8iwcYcrr18l3/2wij1tfOYbu4nXGEUhD7qBtzzCg+rfpg72eyfZK1NMU3mM76//5+g7eJindU= Received: from MWHPR17CA0084.namprd17.prod.outlook.com (2603:10b6:300:c2::22) by BY5PR12MB4115.namprd12.prod.outlook.com (2603:10b6:a03:20f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:46 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::2d) by MWHPR17CA0084.outlook.office365.com (2603:10b6:300:c2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:46 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:41 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 12/24] EDAC/amd64: Define function to get number of interleaved channels Date: Thu, 27 Jan 2022 20:41:03 +0000 Message-ID: <20220127204115.384161-13-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79944e87-69bc-4276-d024-08d9e1d56fb5 X-MS-TrafficTypeDiagnostic: BY5PR12MB4115:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:530; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0JHcvOGvSXIclGDOpobCC503EVg1lZME1Wkq3/e7hjaB4VEff4Rqc+ub7uWl9nDcoaHk5bTAgPrOi/dIiVihQul8p4pAr1wLfyHlT0SLm+jLRfLb/x8sL0PzkBqlaHAQNBD7hO17/kYX9JSTEOoUsj6MC7iACytb3895DCXKVZptB6ukSMN+kXJZIL9cY1j+7U3eK+f0ClmO9W69z/uLTqz6YjJAuCcl1uvFdwXjrLK3Xz4Rzm2VUauT8rvcDIW8Q5sLXPrDHjoUdON4/qw/x03NH+Nb2+/mLaZJF304dGXd8W1Rng0uDqE6zd+2DcKLCRksfJsxOPu0Q3Me7ZEOSDC/DUwZc7C9ttyZ3jtxZx59fzKyNXzEgslhiT+mTB+l4mQ0OxtcI0l0INGgwRI9QCLrMQyn4P/3OKyR3Z/yWgFyKDJ6Sq95fM+CRpXHTqpzgRxXX5HPqTxAmb675o8hxCRR7fOmhd8YiwDtQgPRezu9Gf2inGE3Yed9V1kgZmzOuADxctajrQrIexJWC50KoFHCIFOlsqqQNUuNqIzLwvK6t6ch5kvoG92B2g0s5TkRGJ23P5pw06vyD5BANkQhqweAYvwmfTHSeVziXoOdfVFCp9AVrQrroOqGIEngrBPNyEXGpwCTI7F5SpMHkJ3CC3f7HrmVqrGHPCIEGo/sAs2PhIDtUS+//OZxL56rBcEb8HToVzDVEEK66oC/HIIpiB+sVSbFw5trDS2tounxa7+ayokmDdZzZ1/QA0jx7BPQGLeYbrnppZNhIMS4A0WrbJiCKfJjyQvICiwY2s0Ears= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(82310400004)(2906002)(426003)(186003)(316002)(26005)(5660300002)(47076005)(86362001)(1076003)(2616005)(336012)(6916009)(54906003)(16526019)(83380400001)(4326008)(966005)(36756003)(70206006)(70586007)(356005)(8676002)(6666004)(8936002)(7696005)(44832011)(508600001)(81166007)(40460700003)(36860700001)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:46.6074 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 79944e87-69bc-4276-d024-08d9e1d56fb5 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4115 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move number of interleaved channel calculation to a separate helper function. Drop unused cases. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-18-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 18 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 42 +++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index b75311acbe13..87439374a076 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1076,6 +1076,7 @@ struct addr_ctx { u8 inst_id; u8 map_num; u8 intlv_addr_bit; + u8 intlv_num_chan; u8 cs_id; int (*dehash_addr)(struct addr_ctx *ctx); }; @@ -1197,10 +1198,27 @@ static int get_intlv_addr_bit(struct addr_ctx *ctx) return 0; } =20 +static void get_intlv_num_chan(struct addr_ctx *ctx) +{ + /* Save the log2(# of channels). */ + switch (ctx->intlv_mode) { + case NONE: + ctx->intlv_num_chan =3D 0; + break; + case NOHASH_2CH: + case DF2_HASH_2CH: + ctx->intlv_num_chan =3D 1; + break; + default: + /* Valid interleaving modes where checked earlier. */ + break; + } +} + static int denormalize_addr(struct addr_ctx *ctx) { u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; - u8 intlv_num_dies, intlv_num_chan, intlv_num_sockets; + u8 intlv_num_dies, intlv_num_sockets; u8 num_intlv_bits, cs_mask =3D 0; =20 /* Return early if no interleaving. */ @@ -1213,23 +1231,9 @@ static int denormalize_addr(struct addr_ctx *ctx) intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; =20 - /* Re-use intlv_num_chan by setting it equal to log2(#channels) */ - switch (intlv_num_chan) { - case 0: intlv_num_chan =3D 0; break; - case 1: intlv_num_chan =3D 1; break; - case 3: intlv_num_chan =3D 2; break; - case 5: intlv_num_chan =3D 3; break; - case 7: intlv_num_chan =3D 4; break; - - case 8: intlv_num_chan =3D 1; - break; - default: - pr_err("%s: Invalid number of interleaved channels %d.\n", - __func__, intlv_num_chan); - return -EINVAL; - } + get_intlv_num_chan(ctx); =20 - num_intlv_bits =3D intlv_num_chan; + num_intlv_bits =3D ctx->intlv_num_chan; =20 if (intlv_num_dies > 2) { pr_err("%s: Invalid number of interleaved nodes/dies %d.\n", @@ -1266,8 +1270,8 @@ static int denormalize_addr(struct addr_ctx *ctx) die_id_bit =3D 0; =20 /* If interleaved over more than 1 channel: */ - if (intlv_num_chan) { - die_id_bit =3D intlv_num_chan; + if (ctx->intlv_num_chan) { + die_id_bit =3D ctx->intlv_num_chan; cs_mask =3D (1 << die_id_bit) - 1; ctx->cs_id =3D cs_fabric_id & cs_mask; } --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B9AAC433F5 for ; Thu, 27 Jan 2022 20:42:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344312AbiA0UmK (ORCPT ); Thu, 27 Jan 2022 15:42:10 -0500 Received: from mail-bn7nam10on2059.outbound.protection.outlook.com ([40.107.92.59]:47457 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344172AbiA0Ulu (ORCPT ); Thu, 27 Jan 2022 15:41:50 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ktU5omiB/ILQTO9hn7AhCNh/9/FLvcPe8oQtVe7CPqNNOFJi/6XDfTF0ZzYcwJHDv1FCORlIZjnT5qZ3iI9t3PuV0/SNBnkA2MRe91E3bdhDEJz6kDjQdW1YoPj3g0bu43al/jKYmI+Bby+VbWRqMco/mKMppJ+B1MMSIaLXGTpGd147k+RAJcTcq/8gseKINXdkRa7wPaFUNO+IkFT2vRg+6AafvYnXsMnkW2g3d68m8vj4WVX899f9Kx4tae0eAMZ1hJgwL3Wd7Pte0Tm40sUk2K7Sgl6hvLS72syC4+W1RnMrfBTBNcIWhhlG2TJcyiVXF5BpH6r4RJp7g5giaA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FUj7BSkw/bLaqtZbyvLo1nKr+QEFPKOf9ud3q5dgwMA=; b=VyfJlheAkC/znfQCBi7wWToc1a9DqJBDx1vPLyNdlu63Rgxpt4L4uR/LrJL4bHv8Ml4V4xDxQf2brEP4nFGHpOLUEU6dqUPu1dLpkVPgBEhevaI+HJScrgjm0oyfPL6nvsRkp/CPvTM2HMKBwFUEu9rzVtyCa6LpSjZz2Uo3+/5B6OhP5CzYsOZ7nG2ezdJB5znelNLgtAPuLm638FE+fIYjdy4bAd8QQtuWHIxQgoUwof0kzIMBXrlnXDlmEtn2lB/ixEJz6vByFKTyp23eNdtiYBOR9gaEY5iQpdEbujGbRinPN3MsOOiP48bZjle4YblosgnQmGo2RNqA79YQoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FUj7BSkw/bLaqtZbyvLo1nKr+QEFPKOf9ud3q5dgwMA=; b=CezQifB/xEky4nLJPTtcDJemqygE2UgtDa1hcsiVd1NoZrEMnOxtCtIS+FueKnKSZD0O+QrZRFIuCyO8O9+0om/gw31Ri50cx/XHkL3wjtsLmCytgKKz90yzqbU74BDpIbNncCNMA1TFG0iMq97qoAJOduMqsio0JvJE8Gyj9+o= Received: from MW4P221CA0028.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::33) by MN2PR12MB3936.namprd12.prod.outlook.com (2603:10b6:208:16a::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:47 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::2a) by MW4P221CA0028.outlook.office365.com (2603:10b6:303:8b::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:46 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:42 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 13/24] EDAC/amd64: Define function to get number of interleaved dies Date: Thu, 27 Jan 2022 20:41:04 +0000 Message-ID: <20220127204115.384161-14-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: da71b557-d95b-4f68-abb1-08d9e1d56fc6 X-MS-TrafficTypeDiagnostic: MN2PR12MB3936:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0bCTEGBDDLpxyATMYEEuB/mGyMD/WahUe2wCYzMZdj5L21eZZH4kMPFDHnKe31QIpDmDi7BLsSaCpGEDkqXiNUDWqVdHnPaegyVqK/ygFaQiJ/qN+BwY3GhWcoF3OatbuYuwJte8WarLe/NW+uRuqXBW8g1N6wD067a3In4Tvt23sTQOs36Ot4mMjmNcs8bbPCv+O4u6GpG1dXnLlrqDznAEN8ydRGeJDJ5vHXui7iZlJyzxXG54BeJAoqJPtJh21lJPJ9uJFLXfHibBEF9JtRInFLTJ6WQmDRvzYUKrjdnAc0x8yj0ZRmLY7svlKRxt8gwiDzWfs50fx15SXu3ZMtYHH+fwcpth5GYcII1gz2HN/zIiBCKrOkCrg0S17zH2uq9ZxKkYgukruMBL+z+Rf6XZCBOszQdmrflAT8jwc5ppH7c1FeMa7LQCO0jLVIT0f6vySmB3AmHuEPc0pxioKBm7mePmWwVLjvWcVdsYK9PlvEHzk32CcFQfks5STjpIX+HfL14vN/n7G1ouGL0/HyK1LJosU+gq3YB6TOSFs9m6bh5MH+0b600xdkPUC6xQXLrhgpVl5oQkjlR2ETpWZHz0V1k+rfhChAdIjp9lWkN8rEaovXSYZloZvp11zEQGvt3/cSWRo583sv65oF65Mu/0wXb+HkB/Ym9bcHeNiFRbZXM1iUyQoTLclo2lIRCMf7MB2vIlvYgOjoB4zpV/Q8PE3qx4jUkyr8tjIUpxEyC7oUCMtcZSaYfKM7ZYQG/qNi/hqKeKMQCvJ7A1EPUIYuNqyP5TLgiM90Zhcz01eCg= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(44832011)(2616005)(8676002)(36860700001)(81166007)(356005)(5660300002)(4326008)(70586007)(26005)(8936002)(70206006)(16526019)(83380400001)(186003)(1076003)(426003)(336012)(36756003)(508600001)(86362001)(966005)(82310400004)(2906002)(54906003)(316002)(6916009)(7696005)(6666004)(40460700003)(47076005)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:46.7335 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: da71b557-d95b-4f68-abb1-08d9e1d56fc6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3936 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move parsing of the number of interleaved dies to a separate helper function. This will be expanded for future DF versions. Also, drop an unneeded assert to match the reference code. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-19-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointer. v2->v3: * Was patch 19 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Add new function to data_fabric_ops. drivers/edac/amd64_edac.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 87439374a076..2973b7b5e8a2 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1077,6 +1077,7 @@ struct addr_ctx { u8 map_num; u8 intlv_addr_bit; u8 intlv_num_chan; + u8 intlv_num_dies; u8 cs_id; int (*dehash_addr)(struct addr_ctx *ctx); }; @@ -1084,6 +1085,7 @@ struct addr_ctx { struct data_fabric_ops { u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); int (*get_intlv_mode)(struct addr_ctx *ctx); + void (*get_intlv_num_dies)(struct addr_ctx *ctx); }; =20 static u64 get_hi_addr_offset_df2(struct addr_ctx *ctx) @@ -1124,9 +1126,15 @@ static int get_intlv_mode_df2(struct addr_ctx *ctx) return 0; } =20 +static void get_intlv_num_dies_df2(struct addr_ctx *ctx) +{ + ctx->intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; +} + struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, .get_intlv_mode =3D get_intlv_mode_df2, + .get_intlv_num_dies =3D get_intlv_num_dies_df2, }; =20 struct data_fabric_ops *df_ops; @@ -1218,7 +1226,7 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) static int denormalize_addr(struct addr_ctx *ctx) { u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; - u8 intlv_num_dies, intlv_num_sockets; + u8 intlv_num_sockets; u8 num_intlv_bits, cs_mask =3D 0; =20 /* Return early if no interleaving. */ @@ -1229,19 +1237,12 @@ static int denormalize_addr(struct addr_ctx *ctx) return -EINVAL; =20 intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; - intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; =20 get_intlv_num_chan(ctx); + df_ops->get_intlv_num_dies(ctx); =20 num_intlv_bits =3D ctx->intlv_num_chan; - - if (intlv_num_dies > 2) { - pr_err("%s: Invalid number of interleaved nodes/dies %d.\n", - __func__, intlv_num_dies); - return -EINVAL; - } - - num_intlv_bits +=3D intlv_num_dies; + num_intlv_bits +=3D ctx->intlv_num_dies; =20 /* Add a bit if sockets are interleaved. */ num_intlv_bits +=3D intlv_num_sockets; @@ -1279,13 +1280,13 @@ static int denormalize_addr(struct addr_ctx *ctx) sock_id_bit =3D die_id_bit; =20 /* Read D18F1x208 (SystemFabricIdMask). */ - if (intlv_num_dies || intlv_num_sockets) + if (ctx->intlv_num_dies || intlv_num_sockets) if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->tmp)) return -EINVAL; =20 /* If interleaved over more than 1 die. */ - if (intlv_num_dies) { - sock_id_bit =3D die_id_bit + intlv_num_dies; + if (ctx->intlv_num_dies) { + sock_id_bit =3D die_id_bit + ctx->intlv_num_dies; die_id_shift =3D (ctx->tmp >> 24) & 0xF; die_id_mask =3D (ctx->tmp >> 8) & 0xFF; =20 --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3942AC433EF for ; Thu, 27 Jan 2022 20:42:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344212AbiA0Um0 (ORCPT ); Thu, 27 Jan 2022 15:42:26 -0500 Received: from mail-sn1anam02on2063.outbound.protection.outlook.com ([40.107.96.63]:15973 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344167AbiA0Ult (ORCPT ); Thu, 27 Jan 2022 15:41:49 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L7BrCM5wWNjHvcK0qcWtzyoIe6zCKjLabroXRBf3XhypUtnTcXnfOwVGzdDDr7RY54ndJqEvH1mehmRjsAlHBT93KkyQGDZPU6x4u76Or6RH0SywkzG1iLQc166ls2nWSdUkCbuJH3j5tJpGbxC7Pg2qJXiDfzN3+XSCBFPwm+qjm8gBKSOdAbsbWNDJYa2lisp593O3QULAo7R+nmYc6tm3bxtXcdL6gdjAiWlsQw1GZZ8NXO49AGlHZ4PehDZBl9CoJBALckEbCfobTDgW9HtS1xpmiPeTcqo9HMSBHJPNM3GTh/H0T8LAXYSYbewJrsrYF07ICfw1Q9Z1kCwKmw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=c2k5RH0xDD5PmnNqMWa784AFiIaZh/HozpAT5x1Sbzs=; b=mPNdsEXFz33nipoyzRbYvfoJeYPLafa2ptJchG9ylBzM47i3qsSwlxNeixOGjhNKurAs14RzkRF3plZ6UN+CikgMNo1tgvP/h9sHw5Ivzf0ZaebacghO1ek9Hir2pH+1LagTf93/9GBETVa1VFmxOY6JyBskmDAvxNIQVb8erw+IMApsknkwDUR3EZ/DhpUm4TXRNYamAKAth51c2qUSDoKGBot/Jul8y6M9kwmRHTDwW7mEnkJma/6U5ofZDC/+YlN+JjqqaHnTkXJ6uTBCd9O8bDMk4NYYWKP0TNCwKbLjS8fNDUtvcpHHiTHlo5NJA+1+ApA7d1bPKPpT+iGp5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c2k5RH0xDD5PmnNqMWa784AFiIaZh/HozpAT5x1Sbzs=; b=bu8rG0++oZFqLwPEAeqisYoSlOt2T2BLipi0DROTMkR7Gzno1FpiZ+4mABEnrGmLxEaoqHvAwZp45txJVEBPHw7eFLg4OMTtTX2VepPqLIOUtWkj92svRB2CwNg+E+ssd3fMlXZJrYRTrTcFGd1/ExIBDLHLz2rm7fegXdEHJE8= Received: from MWHPR17CA0076.namprd17.prod.outlook.com (2603:10b6:300:c2::14) by BYAPR12MB2790.namprd12.prod.outlook.com (2603:10b6:a03:69::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.13; Thu, 27 Jan 2022 20:41:47 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::f6) by MWHPR17CA0076.outlook.office365.com (2603:10b6:300:c2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.18 via Frontend Transport; Thu, 27 Jan 2022 20:41:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:47 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:42 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 14/24] EDAC/amd64: Define function to get number of interleaved sockets Date: Thu, 27 Jan 2022 20:41:05 +0000 Message-ID: <20220127204115.384161-15-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e577b19c-dd83-4e99-67f8-08d9e1d57010 X-MS-TrafficTypeDiagnostic: BYAPR12MB2790:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3e43JqwW9NL87Ija0JSiHOJ6rHc7CaDayslL7ERmvxMSRE6MEjUse0zSPJ4XD65yER4SwprUJoIYzEJq9N3eeyaCQLlLfLjpHhOqZl4UeZsUjBbuY0xGJ6udaYTSDOSB+T/d8hH+FfAFye+HSCEisUWA+KclNOlVekh7PgjVJddJ7IEf13QJfkgpiyty3qfPyeVhht2ZzDqRK+i1GDpOHJUVH1Sbt/rZrv+JxbBwSHriAltnOrjnT//iN0oEtmu2YXaz1cc1w5mTp8icaMX/hfXsU1VSLWa+NmAYaiz/xZPbXmrdUeltIZ3olPcsU6V62hNPMGqDpuciURxeY3fiMvZXMR41+Jw2tYJ67dqPTMWE8jAOcIXr5d9wZHoY5ryNWOtdu6zoFkiXYPQrGHntBbwNBwh7EbexFkEJ/Y1ydygY5mlV4+ezUgGC4JnTL62lV4sFr0qwIbMnJYCm/BrmqYu8c3puMy+VeNo6sBYQjJBXpfoBJyP8hfUS6K6RBapI4bPxC3a222lml8XDIwMpQbVX1xE755WaSYiIzTyVTnzpevtedjcLct+SK9Q5TAzLBL7kNnPg7lOABHAii+WjZR+2FbjSRj3DbvfSTfbPDKrsMNoIzAvXvms4qqbEl5d0Tg+cwoaCtvK5ed5dHpzRhr7SW/iOhKfXrr4e2dn5h8TXdjs2MTCoT2ONL9mQ/l+uBt2PZ48b4LfaR1DO+aOAK5mH+ONyZ705f2ey0/e1IaP/AUxebfd3f1UMgYZHg/ib8qjX0t09Bb70aHAmaADxvcMSEd94TWL3pm8IG4X38bkdjMwJ0MBus9YHJpFmvC9rIST9Hf3fAtQNO701H9y7eQ6A8H26Q/cgn3ZQw9GfFmc7gvHxNnN2VRQTKAuMzsvg X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(46966006)(40470700004)(36840700001)(70586007)(26005)(2906002)(47076005)(2616005)(7696005)(36756003)(508600001)(356005)(8676002)(54906003)(40460700003)(5660300002)(82310400004)(4326008)(316002)(86362001)(36860700001)(6666004)(966005)(8936002)(16526019)(70206006)(81166007)(44832011)(6916009)(426003)(83380400001)(186003)(1076003)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:47.2011 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e577b19c-dd83-4e99-67f8-08d9e1d57010 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB2790 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move parsing of the number of interleaved sockets to a separate helper function. This will be expanded for future DF versions. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-20-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointer. v2->v3: * Was patch 20 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Add new function to data_fabric_ops. drivers/edac/amd64_edac.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 2973b7b5e8a2..898f53eaaff3 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1078,6 +1078,7 @@ struct addr_ctx { u8 intlv_addr_bit; u8 intlv_num_chan; u8 intlv_num_dies; + u8 intlv_num_sockets; u8 cs_id; int (*dehash_addr)(struct addr_ctx *ctx); }; @@ -1086,6 +1087,7 @@ struct data_fabric_ops { u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); int (*get_intlv_mode)(struct addr_ctx *ctx); void (*get_intlv_num_dies)(struct addr_ctx *ctx); + void (*get_intlv_num_sockets)(struct addr_ctx *ctx); }; =20 static u64 get_hi_addr_offset_df2(struct addr_ctx *ctx) @@ -1131,10 +1133,16 @@ static void get_intlv_num_dies_df2(struct addr_ctx = *ctx) ctx->intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; } =20 +static void get_intlv_num_sockets_df2(struct addr_ctx *ctx) +{ + ctx->intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; +} + struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, .get_intlv_mode =3D get_intlv_mode_df2, .get_intlv_num_dies =3D get_intlv_num_dies_df2, + .get_intlv_num_sockets =3D get_intlv_num_sockets_df2, }; =20 struct data_fabric_ops *df_ops; @@ -1226,7 +1234,6 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) static int denormalize_addr(struct addr_ctx *ctx) { u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; - u8 intlv_num_sockets; u8 num_intlv_bits, cs_mask =3D 0; =20 /* Return early if no interleaving. */ @@ -1236,16 +1243,13 @@ static int denormalize_addr(struct addr_ctx *ctx) if (get_intlv_addr_bit(ctx)) return -EINVAL; =20 - intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; - get_intlv_num_chan(ctx); df_ops->get_intlv_num_dies(ctx); + df_ops->get_intlv_num_sockets(ctx); =20 num_intlv_bits =3D ctx->intlv_num_chan; num_intlv_bits +=3D ctx->intlv_num_dies; - - /* Add a bit if sockets are interleaved. */ - num_intlv_bits +=3D intlv_num_sockets; + num_intlv_bits +=3D ctx->intlv_num_sockets; =20 /* Assert num_intlv_bits <=3D 4 */ if (num_intlv_bits > 4) { @@ -1280,7 +1284,7 @@ static int denormalize_addr(struct addr_ctx *ctx) sock_id_bit =3D die_id_bit; =20 /* Read D18F1x208 (SystemFabricIdMask). */ - if (ctx->intlv_num_dies || intlv_num_sockets) + if (ctx->intlv_num_dies || ctx->intlv_num_sockets) if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->tmp)) return -EINVAL; =20 @@ -1295,7 +1299,7 @@ static int denormalize_addr(struct addr_ctx *ctx) } =20 /* If interleaved over more than 1 socket. */ - if (intlv_num_sockets) { + if (ctx->intlv_num_sockets) { socket_id_shift =3D (ctx->tmp >> 28) & 0xF; socket_id_mask =3D (ctx->tmp >> 16) & 0xFF; =20 --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64C1AC433EF for ; Thu, 27 Jan 2022 20:42:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344295AbiA0Um2 (ORCPT ); Thu, 27 Jan 2022 15:42:28 -0500 Received: from mail-dm6nam10on2071.outbound.protection.outlook.com ([40.107.93.71]:59360 "EHLO NAM10-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344185AbiA0Ulw (ORCPT ); Thu, 27 Jan 2022 15:41:52 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lmYvGOk/myLOaCQ2eKR9AW9p4hMFn7KgzmyQZHnyjobmmrceb/cDJSFp6aE5f7y6TnhqjGsPCeq2oetSP/tcBt3bLcZKsi4TlwCqIJEhooMQhBdlvHQJNEyAOfn9/h9URPZYUqhiFaN5PEDqxVBRQB7J/ZH9wHua3EqIc5Rdl+NwBO5p1IV+THw2BLQdwqmavU9Dj670ftn4fseDUyUIqhD9mbK1SC3Yod5q3Fmv6bmGelbXiBedaBnuYvd6mAbglMT8Thjf2FEh9UCgmPt1AVIRZQIP4mR9Y59LX1I0kHcz++ncvlrLcx8LBBjtiONgIGkxJobYBssnDWJsj1mh5A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W1urEYCI+qsQvgCx4ebOJ1X6FBDJxM1yLkviCB6AQro=; b=e7WjLYOy0kfcDEtwDWg2qSySvhWpnru6O5fX8SkWjGfNBTNDRVgJGIF5UV7iSYg7jEnHN7oUcha/Ya5CrYmVo0SixV/fTKVTBl2R8DjnPrJeNUdYfWfISO7PFYKFVLVBNlrgnrRaTt8SjHTuAPE6iy0Cn2oqKsQC1b3CLoAVoTr1r+7dBuAzpjC1kLtQswJX2a9N8vy+WqVXT8C/3aHtuNdMH+R/PfPv+zO0Sbih0iTWb6nz1ZvLSzSTXhqTr5xIROBqIXNxHaSm1++EbpqnH9ukN81bfc1xrwFtRg3u3XTSAtq6SSxmWbxR4700lBXUuFPvH6UTO8uob1fcNJdoWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W1urEYCI+qsQvgCx4ebOJ1X6FBDJxM1yLkviCB6AQro=; b=QTqKnCjs8CEXgCn57daFiFuKyB8MJ1bvvoqJSG4bhV9hfrW36ZCVpR94KacYdkZpJyj4bTodbZ361TYB2Ro4CG/cG5HIw083wOaXstPQlUC7baZnXDFq45Dn+80R0NIPVRn591V2NwKIrMJN6k3RBolt4tOsfz14CO1tdXlG1xk= Received: from MW4P221CA0014.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::19) by MW2PR12MB2346.namprd12.prod.outlook.com (2603:10b6:907:4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Thu, 27 Jan 2022 20:41:47 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::4) by MW4P221CA0014.outlook.office365.com (2603:10b6:303:8b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:47 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:43 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 15/24] EDAC/amd64: Remove unnecessary assert Date: Thu, 27 Jan 2022 20:41:06 +0000 Message-ID: <20220127204115.384161-16-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4016249b-1289-4850-05fc-08d9e1d57045 X-MS-TrafficTypeDiagnostic: MW2PR12MB2346:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: e8afZxvSocMRHloDSuZr2pjNxMZH6kIXRSOIwIQ1O/mLNZ1Z1QdtHOUVADDca5wYJzBSKGKI5HMEXUEon5XH5EMg0UFztalfVUuTkuRBfDGtDsUsHFxIL4xwsl+woCk5BEA+6UvBU/IovNQ8EvXvmIU0QesUvZXAIi7hgn5tXR/m6Dk+qOtyazHrEaXyQpZDr9Ek2j/ydurvr2HHRlYjE4It9XLjXx2BQ1BD/7kive6R1KMjuMMWedNE6XG3TsZsc0zqcSCOVxQZsohZSyFYdMu+VZ8OXy30Q+bp2BXB8mUBp0irDaqKjVkflcjhRET9LrGD1ynmRjN3GkYUCTD3+ZjJSv2VQUNw7A0mEkUjvvcVjVy01UN0fqr4EYKk5zW68/gY/GWGa9y+mY92FlmBHO6FomYIYxPqjvnbD8/wnc94SMCwfAXuuTZm3HDt0JqDdrhfgFiML4OUWsQxko/Gk6+R6TAYt3rGKnt0TE06HYlbXTEBv1r+z6gZEQ55Bex8ptjJHbEyxZDTmMgW+m+pWTc3yaV1pbs8GSM1i+VrE3BCU9vf/+9weUjVVtW2vJO6GPFLB8hbKmf9zKkUyi1dHGV+6bctniCaZiKcDfy5x1FHfl3LVzWi/f8Y7vDzJB9YYLMKvrXrxvseuzxGkG4yaATzTRSK6RX3ffy47z3u/nnLlm/O/UApfEEzbNhUjtFe8bEAZSAG4ivmaKOzpJyu6rz3owIHYNZOleu9ul0Z3ibH8EmyVUJb7a41xgFvm/mL1gS4vmgeqryP5xRHxq5S7yQLL7oUnmngGS7/h4pBkGQ= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(83380400001)(86362001)(336012)(2906002)(54906003)(40460700003)(6666004)(6916009)(426003)(47076005)(7696005)(5660300002)(36756003)(4326008)(82310400004)(508600001)(8936002)(966005)(8676002)(36860700001)(186003)(16526019)(44832011)(356005)(81166007)(70586007)(26005)(4744005)(1076003)(2616005)(70206006)(316002)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:47.5616 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4016249b-1289-4850-05fc-08d9e1d57045 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2346 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It was removed in the reference code, so remove it here. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-21-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 21 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 898f53eaaff3..c3342f0bec45 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1251,13 +1251,6 @@ static int denormalize_addr(struct addr_ctx *ctx) num_intlv_bits +=3D ctx->intlv_num_dies; num_intlv_bits +=3D ctx->intlv_num_sockets; =20 - /* Assert num_intlv_bits <=3D 4 */ - if (num_intlv_bits > 4) { - pr_err("%s: Invalid interleave bits %d.\n", - __func__, num_intlv_bits); - return -EINVAL; - } - if (num_intlv_bits > 0) { u64 temp_addr_x, temp_addr_i, temp_addr_y; u8 die_id_bit, sock_id_bit, cs_fabric_id; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9F0BC433EF for ; Thu, 27 Jan 2022 20:42:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344190AbiA0UmO (ORCPT ); Thu, 27 Jan 2022 15:42:14 -0500 Received: from mail-co1nam11on2062.outbound.protection.outlook.com ([40.107.220.62]:58319 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344120AbiA0Ulv (ORCPT ); Thu, 27 Jan 2022 15:41:51 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J+f8crMAKGBHT0Bdqkx6y1KQuIz8KXoda3l9WsWtgXrNCnQGN2+FB0wouBLUZRaOuekhAxoJfAP075hqbyfftWCEorhlU15EGFqACWwChdBqM8Io9HPw1Lq12QnSvkwXuZf8utu9keekhVDwhGIoFrSQbG79tLMknGm6ZOZCOheTHL/qqZ9AWQbyF5IMQZOwlx1kFn29/ltTSn8DFsZW333+OurOhSViHoTpHqCxJ3ogXm3LeF0i0TG+w8RJSmskypJMR66jDjSE5CrRqsMO12PiKuoxaXg+wRZm0DXz9sHuAvX6bWWlNNhopXHIMzTsYuyQ9KPGbJINnvtpYac5ng== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=18USAuhqdwQEqtpE2BcndsWE6n6AOxUla4I5EsQvU/A=; b=c0uuNWjROXA20CfSp10T0SQPB9ePSgxkeNvphn/LExqkkGdK/Od8m4PgGa9+EQgufbcxf+6NufLHGyVLQo+BANHNMK6FzeCtkCUhJxdazdzM+2NI8fmZdFB5/s3qMS+yajBnK2MlPB6p/yua+nAZ2QjafFhO9UYuHZI8Bk2f7iSNTmk8XdLl6OMXUqH7Gbrb5NZCBCX4aXecXFawzYwhlW+Kh8iiztJyUNSEUqeSk/AyKGP652K9+TffgBTwu0WwHu6GNVJT6uTQKCCkNWLguVxxND17Etw+Sif6iRffn8yjfK90Xj4KhlWOCa6Uj9yfunpTu5etVFK3xL8kKlLXlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=18USAuhqdwQEqtpE2BcndsWE6n6AOxUla4I5EsQvU/A=; b=D2CTwvxQ8S1Mlxj56jq/OBtBvfjXkc/0FjaUGwFWAX/lBhz0274d2GGF8Din94/tPnkFHgsQdBwAw2v0jjKnoUDwYzAFh2ua0kifW3buvgoFwXyp+Kdy2KJYSro+1Y/AlQqGMHAJErK5CVGfmJ3yhMFySa2+FH9wYDIoqMp469o= Received: from MWHPR17CA0090.namprd17.prod.outlook.com (2603:10b6:300:c2::28) by DM5PR12MB2519.namprd12.prod.outlook.com (2603:10b6:4:b5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Thu, 27 Jan 2022 20:41:49 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::aa) by MWHPR17CA0090.outlook.office365.com (2603:10b6:300:c2::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:49 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:43 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 16/24] EDAC/amd64: Define function to make space for CS ID Date: Thu, 27 Jan 2022 20:41:07 +0000 Message-ID: <20220127204115.384161-17-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7a0c4294-6e42-44a3-0497-08d9e1d57157 X-MS-TrafficTypeDiagnostic: DM5PR12MB2519:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5cYPoqNRTDuWKk1dNi1BQKWAS3cTWuylvGrkU+1xKEIJ0mlshi6KAv420pjsJTdv7K0DXpPnKzaoQXa/6MspZXJJGJNlR+nW5id6L/48YWA5//ybCfSgxbxgU0jh/40ZIqS8D8v7rqPd+dwryNm0Lr4f/wJm3P75XwUA7iVkUH5rD1lB54UOAuJiuEjBfSkZSGDhnearYDLaSTGWtsA9XAk1k70uO1CkG/XtGi48b85DZikT4nfk9sIKdwZqMqad7Itl13aoggDf4Z+O7/d69gn8JHrwdjT98HiAZVvxAkMF/7kZUYY+XvFO2qdxiez8SxbtZl4sluqSzAagUZAL1E8zKCcvLK4j4epnhQWubfXgC/QclG+5YJ7uCQGZ1BBPWkUyrVxQHWFMPfS5O0IKkMDOLxxASA/gSdFE38PowBnKjca9tmhh0sWV1QNVaqDbhec60YoFNos2iNcl9ZJtSc6wZGjzdHjLxbA2By3bXMnhnYYgSuhwk7BxwOlPfsSN9gv+I6JzDK89s7Qjaf68iZCWjP06i9PP9zKGVAUv46igV/nYRYCb1D6qv6VKUwKqQJeiYx0S65TMBK8rLQQii9RwqNtWPdBfmUEvg8u00xV3qA7q4REDQT30sGfaSskxvL440GNs+cC9fFQW3GbADL6rqmIntcbyb7FtGKpKc4KcaEabC0rCOK3tVq+iAGqb32XEZOAgKSrYhxMpwsrlYOk5i1HP8Z/WvFEELBzINFpOiCCu+vp1V3rcNKFUjfM/axaIhzPV0z/7pCP/h6DvWk5NfyZEldJEHnpABzq/xxE= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(8676002)(8936002)(70206006)(4326008)(70586007)(36860700001)(86362001)(316002)(356005)(5660300002)(36756003)(81166007)(2906002)(44832011)(40460700003)(54906003)(426003)(336012)(6916009)(82310400004)(47076005)(26005)(966005)(7696005)(6666004)(2616005)(508600001)(186003)(1076003)(16526019)(83380400001)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:49.3416 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7a0c4294-6e42-44a3-0497-08d9e1d57157 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB2519 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move code that makes a gap for the CS ID into a separate helper function. The exact bits to use vary based on interleaving mode. New interleaving modes in future DF versions will be added as new cases. Also, introduce a helper function that does the bit manipulation to make the gap. The current version of this function is "simple", and future interleaving modes may reuse this or use a more advanced function. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-22-yazen.ghannam@amd.com v3->v4: * Added glossary entry. v2->v3: * Was patch 22 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Added new function pointer to ctx struct. drivers/edac/amd64_edac.c | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index c3342f0bec45..f5b1902e04ac 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -991,6 +991,7 @@ static int sys_addr_to_csrow(struct mem_ctl_info *mci, = u64 sys_addr) /* * Glossary of acronyms used in address translation for Zen-based systems * + * CS =3D Coherent Slave * DF =3D Data Fabric */ =20 @@ -1081,6 +1082,7 @@ struct addr_ctx { u8 intlv_num_sockets; u8 cs_id; int (*dehash_addr)(struct addr_ctx *ctx); + void (*make_space_for_cs_id)(struct addr_ctx *ctx); }; =20 struct data_fabric_ops { @@ -1090,6 +1092,29 @@ struct data_fabric_ops { void (*get_intlv_num_sockets)(struct addr_ctx *ctx); }; =20 +static void expand_bits(u8 start_bit, u8 num_bits, u64 *value) +{ + u64 temp1, temp2; + + if (start_bit =3D=3D 0) { + *value <<=3D num_bits; + return; + } + + temp1 =3D *value & GENMASK_ULL(start_bit - 1, 0); + temp2 =3D (*value & GENMASK_ULL(63, start_bit)) << num_bits; + *value =3D temp1 | temp2; +} + +static void make_space_for_cs_id_simple(struct addr_ctx *ctx) +{ + u8 num_intlv_bits =3D ctx->intlv_num_chan; + + num_intlv_bits +=3D ctx->intlv_num_dies; + num_intlv_bits +=3D ctx->intlv_num_sockets; + expand_bits(ctx->intlv_addr_bit, num_intlv_bits, &ctx->ret_addr); +} + static u64 get_hi_addr_offset_df2(struct addr_ctx *ctx) { return (ctx->reg_dram_offset & GENMASK_ULL(31, 20)) << 8; @@ -1120,6 +1145,8 @@ static int get_intlv_mode_df2(struct addr_ctx *ctx) ctx->dehash_addr =3D dehash_addr_df2; } =20 + ctx->make_space_for_cs_id =3D make_space_for_cs_id_simple; + if (ctx->intlv_mode !=3D NONE && ctx->intlv_mode !=3D NOHASH_2CH && ctx->intlv_mode !=3D DF2_HASH_2CH) @@ -1247,13 +1274,11 @@ static int denormalize_addr(struct addr_ctx *ctx) df_ops->get_intlv_num_dies(ctx); df_ops->get_intlv_num_sockets(ctx); =20 - num_intlv_bits =3D ctx->intlv_num_chan; - num_intlv_bits +=3D ctx->intlv_num_dies; - num_intlv_bits +=3D ctx->intlv_num_sockets; + ctx->make_space_for_cs_id(ctx); =20 if (num_intlv_bits > 0) { - u64 temp_addr_x, temp_addr_i, temp_addr_y; u8 die_id_bit, sock_id_bit, cs_fabric_id; + u64 temp_addr_i; =20 /* * Read FabricBlockInstanceInformation3_CS[BlockFabricID]. @@ -1308,11 +1333,8 @@ static int denormalize_addr(struct addr_ctx *ctx) * bits there are. "intlv_addr_bit" tells us how many "Y" bits * there are (where "I" starts). */ - temp_addr_y =3D ctx->ret_addr & GENMASK_ULL(ctx->intlv_addr_bit - 1, 0); temp_addr_i =3D (ctx->cs_id << ctx->intlv_addr_bit); - temp_addr_x =3D (ctx->ret_addr & GENMASK_ULL(63, ctx->intlv_addr_bit)) - << num_intlv_bits; - ctx->ret_addr =3D temp_addr_x | temp_addr_i | temp_addr_y; + ctx->ret_addr |=3D temp_addr_i; } =20 return 0; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC702C433FE for ; Thu, 27 Jan 2022 20:42:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344451AbiA0Umh (ORCPT ); Thu, 27 Jan 2022 15:42:37 -0500 Received: from mail-bn7nam10on2048.outbound.protection.outlook.com ([40.107.92.48]:20192 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344178AbiA0Ulv (ORCPT ); Thu, 27 Jan 2022 15:41:51 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aLqjjQaVxd3wJaaXUC2AFWEUrvDkixqIxdYh5aFTinbNIlVO57q1IFryOohdu2Ad1+4rEC6hjEerQxD/yu6LshBG3pE7/mwZxtRMS50O/e17Yk23OqA/BmWrFABLw3vY5bXS4Pi6Tf9J9TRy91Mo9WalfAtAipLhqPDGSAVkQG5YWygw3eS27U/KkKVheCAnT52a2UwdXRnGRkHywIZ0DKn5LucYug1HD+I3GAP4HkH2ZAPa8WE8qcFwM0sJxruJo0wcyW0IGQpSX0NC2AwOrlBDYl+l4RKuGNfhjcHBrCJBNjxSxjAncMDVbcfPLQQZetYTqbyuQYRejm8xedNQ/w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1y8IFmwNgNBTw7DYyoyabirsWA/lcCbFtNrvlMWqsfo=; b=aNOP6M7AeFGEHp7mexwQkH4Z+QH2XoQx7MidaYjGOLEUlH+4PA9qGn51/mmzbcF57qDcOXjebOBMYjRl7jTqoD/jWmxGsUZrC6jUK2r1kLvCyaL+lzk4Da+tdYT5WqPK4Aq7TVAxmdb0JMY9Le/slCduxzDWUCGij70YNvRaDAEZQp6lyT77f4nieECXhM3QRzDrMOQkCEuc3/ZgLH4A3dIk16v3tRLsNyjd78mME3/+GTiUs5g0c5C4gyDHBzWz2dpnHFkmsdChM6afE1Hs0HwZ+hk61ntHwSdXS8NZxlek+yfOZkvDZ9ogejliTIQoDgxBs1qxH3DHCfNjPRQcnQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1y8IFmwNgNBTw7DYyoyabirsWA/lcCbFtNrvlMWqsfo=; b=Lj4GVdgxvCI05DiunKDBzoFxHex807L9R3TOpKuEF+Nmr+D/sECb/BQg6YTsiqusWXFDWzu+R6DMEC7OZI3vjvuHaDLGPFk/J3CRf36NM5Zu6j69jfaU1tS5m1uKrYnZOLpWulWrP4gRaFu3bCks+YUej1lufoUVfrvaWo1Mdqc= Received: from MW4P221CA0023.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::28) by DM6PR12MB4716.namprd12.prod.outlook.com (2603:10b6:5:34::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Thu, 27 Jan 2022 20:41:49 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::39) by MW4P221CA0023.outlook.office365.com (2603:10b6:303:8b::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:49 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:44 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 17/24] EDAC/amd64: Define function to calculate CS ID Date: Thu, 27 Jan 2022 20:41:08 +0000 Message-ID: <20220127204115.384161-18-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ed089ab5-c444-45d5-a419-08d9e1d5716c X-MS-TrafficTypeDiagnostic: DM6PR12MB4716:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sc8ZRJTvRrNFxQD8zqTuqeg9gMUvXJBfyJqX5AgUvrADrVJmOosIZlhFLVByOd/am8Ve1vLeZhrXv8/WY/43Qi2V3Ky19qkSN2JE5Hmfs41JJzOZyf6FPYPSOMY6rSsuAirr0WvDbm0kagr3PYMLq2V3SSupjRbVotBMZfPiphPMdeswgxEWCCHEARqLc0cXrHmwMOmg4LrM0INOc7b99bEzmb5R5UIMSMHGpPV7hD/oTwFCmVHDhNeQvzxrZVZZT4JGPYHt8vf55epmKkkAxnBLPGj3uZAFIeMkYgkddnQKaEdzTKX+mEm7GKrHujtFVfQz62WBj2GmNFchQ7DI39FnLqrXuJQ3AepG3k2xv+bnp5b4wA72gEKEUZrfJBfEXo6ctaGEz6DVxIobEHdV+9TRybHxVNCOiZBKPL5uDEFBWax5LHRDLvT9rPANQWl7ZTvZFydI2StIyKOoN67Ye9J8+q2yXLterVp2hOE6+07/e4Y4t5oMoVONDYdavfBP+4Johm+1w6r8LTnA0NX48PBM10XMhSV2fzB+ymiGkk8KzRDJvkRSRMPa0ROtwHfM2+W/GeyQafvNChrmSf5Ac9Yfpqy+PLA8EflfUtIft60rZQF2aS9z++gKOdafEGrMlPMRtHlqvDObY5uSYepNaCRCmXEROPlMs5LVN52pW0IdaoUJAAN77hvqVLlUilIG4n6DBEVIf1ZonaybXh7hhiuoO8Fde8tbwiXgMI/BF7DSbuTnutKSx7MSlXwLrAGtQr5YogX2AUOAIUi6R1uCwl1tI/IH16eTnOXbHJxk02A= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(2906002)(6916009)(2616005)(54906003)(40460700003)(186003)(508600001)(966005)(36756003)(26005)(44832011)(5660300002)(336012)(426003)(86362001)(8936002)(8676002)(70586007)(70206006)(4326008)(1076003)(16526019)(83380400001)(316002)(81166007)(82310400004)(36860700001)(356005)(6666004)(7696005)(47076005)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:49.4989 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ed089ab5-c444-45d5-a419-08d9e1d5716c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4716 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move code used to calculate the CS ID into a separate helper function. Drop redundant code comment about reading DF register. The "num_intlv_bits" variable is left uninitialized as it will be removed in a later patch. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-23-yazen.ghannam@amd.com v3->v4: * Include pr_debug() on failure. v2->v3: * Was patch 23 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 100 ++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 48 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index f5b1902e04ac..b2bcd8ea1a06 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1258,10 +1258,55 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) } } =20 -static int denormalize_addr(struct addr_ctx *ctx) +static int calculate_cs_id(struct addr_ctx *ctx) { u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; - u8 num_intlv_bits, cs_mask =3D 0; + u8 die_id_bit, sock_id_bit, cs_fabric_id, cs_mask =3D 0; + + /* Read D18F0x50 (FabricBlockInstanceInformation3). */ + if (df_indirect_read_instance(ctx->nid, 0, 0x50, ctx->inst_id, &ctx->tmp)) + return -EINVAL; + + cs_fabric_id =3D (ctx->tmp >> 8) & 0xFF; + die_id_bit =3D 0; + + /* If interleaved over more than 1 channel: */ + if (ctx->intlv_num_chan) { + die_id_bit =3D ctx->intlv_num_chan; + cs_mask =3D (1 << die_id_bit) - 1; + ctx->cs_id =3D cs_fabric_id & cs_mask; + } + + sock_id_bit =3D die_id_bit; + + /* Read D18F1x208 (SystemFabricIdMask). */ + if (ctx->intlv_num_dies || ctx->intlv_num_sockets) + if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->tmp)) + return -EINVAL; + + /* If interleaved over more than 1 die: */ + if (ctx->intlv_num_dies) { + sock_id_bit =3D die_id_bit + ctx->intlv_num_dies; + die_id_shift =3D (ctx->tmp >> 24) & 0xF; + die_id_mask =3D (ctx->tmp >> 8) & 0xFF; + + ctx->cs_id |=3D ((cs_fabric_id & die_id_mask) >> die_id_shift) << die_id= _bit; + } + + /* If interleaved over more than 1 socket: */ + if (ctx->intlv_num_sockets) { + socket_id_shift =3D (ctx->tmp >> 28) & 0xF; + socket_id_mask =3D (ctx->tmp >> 16) & 0xFF; + + ctx->cs_id |=3D ((cs_fabric_id & socket_id_mask) >> socket_id_shift) << = sock_id_bit; + } + + return 0; +} + +static int denormalize_addr(struct addr_ctx *ctx) +{ + u8 num_intlv_bits; =20 /* Return early if no interleaving. */ if (ctx->intlv_mode =3D=3D NONE) @@ -1276,55 +1321,14 @@ static int denormalize_addr(struct addr_ctx *ctx) =20 ctx->make_space_for_cs_id(ctx); =20 + if (calculate_cs_id(ctx)) { + pr_debug("Failed to calculate CS ID"); + return -EINVAL; + } + if (num_intlv_bits > 0) { - u8 die_id_bit, sock_id_bit, cs_fabric_id; u64 temp_addr_i; =20 - /* - * Read FabricBlockInstanceInformation3_CS[BlockFabricID]. - * This is the fabric id for this coherent slave. Use - * umc/channel# as instance id of the coherent slave - * for FICAA. - */ - if (df_indirect_read_instance(ctx->nid, 0, 0x50, ctx->inst_id, &ctx->tmp= )) - return -EINVAL; - - cs_fabric_id =3D (ctx->tmp >> 8) & 0xFF; - die_id_bit =3D 0; - - /* If interleaved over more than 1 channel: */ - if (ctx->intlv_num_chan) { - die_id_bit =3D ctx->intlv_num_chan; - cs_mask =3D (1 << die_id_bit) - 1; - ctx->cs_id =3D cs_fabric_id & cs_mask; - } - - sock_id_bit =3D die_id_bit; - - /* Read D18F1x208 (SystemFabricIdMask). */ - if (ctx->intlv_num_dies || ctx->intlv_num_sockets) - if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->tmp)) - return -EINVAL; - - /* If interleaved over more than 1 die. */ - if (ctx->intlv_num_dies) { - sock_id_bit =3D die_id_bit + ctx->intlv_num_dies; - die_id_shift =3D (ctx->tmp >> 24) & 0xF; - die_id_mask =3D (ctx->tmp >> 8) & 0xFF; - - ctx->cs_id |=3D ((cs_fabric_id & die_id_mask) - >> die_id_shift) << die_id_bit; - } - - /* If interleaved over more than 1 socket. */ - if (ctx->intlv_num_sockets) { - socket_id_shift =3D (ctx->tmp >> 28) & 0xF; - socket_id_mask =3D (ctx->tmp >> 16) & 0xFF; - - ctx->cs_id |=3D ((cs_fabric_id & socket_id_mask) - >> socket_id_shift) << sock_id_bit; - } - /* * The pre-interleaved address consists of XXXXXXIIIYYYYY * where III is the ID for this CS, and XXXXXXYYYYY are the --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DE67C433F5 for ; Thu, 27 Jan 2022 20:42:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344397AbiA0Uma (ORCPT ); Thu, 27 Jan 2022 15:42:30 -0500 Received: from mail-dm3nam07on2085.outbound.protection.outlook.com ([40.107.95.85]:24033 "EHLO NAM02-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344152AbiA0Ulx (ORCPT ); Thu, 27 Jan 2022 15:41:53 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WDknd3vntE9C9RGORB15njk0KdTibaVRVc34FofeVMZXxb8b6/akxtXK11TamR4ydoO/dhwAyluXjDF15GR+/C7A2fJmF6qW8V41q91UAI9hVSWnK+W/cOytg0Mr71TF26lRl/akE5uITHU772if3X5rb3b4MdFUvLZeOQIrKho4N9sSr5LVmouAz/mqheu+H8sqmDLq5aQz1DLPcaAFY6kleT+TM57rGuuZmAMqtRnUQAeulW9hjEg4H9gu7XRrKWmZrHeuP5d+uCdlHDYzAFP0fwOrzdItRxhiRT/6VlBlQHTkXEsR2N4CYxDaJ3V+M2YFhq4EPr2gyM26oKlvGA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AuRU05uXLh7sYFRoSUxhrvUgk/kPSebc8ED11vgWSAk=; b=BECuMSZy7c2oPW1ftWpLLdlizngNUToifoV+0fR6lFEUT0sHWYA2VmP7J8LG18TkXyMye69SUNvcwYbFk2U2I6XoCmN0P/s5CEsm/KFVrR9VPbf+vlptZ3DEr40Xc16YKT8bi7TuuuJxzxqhnKp3s7xe40L3hHRQh7LCcGXWrfdf2kOx9OdKNG7mm0aqWbvvmRDBlkENzlm0g8qa3LsWtYYyRHGyWgRK5xe+7ET5rYqhHWflmcqxYLnh9nzt86BLrjXh1KGsrqJn5Meo9itHsUsJ/2JT4jiUoitr4Wbrp7+q7k9A18MQ07Yyb/8vWi/ueVb435+SUCqOLIbSJ7Xjbg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AuRU05uXLh7sYFRoSUxhrvUgk/kPSebc8ED11vgWSAk=; b=Ydu7RFJF5Mao59AsPeNuTYsXVHAh2J1nZZlTglZoZkVFsL4aHpoI9+tOcJw+fgb45Oysxu+VIgvv0UiBHxx0YyJidIT1raJtJXHjqykRV0BJ0XlDCr+68whcLy3qmiaDLOB8qKff/1SkTekkuVAMuE068i+vCtTCLfIFCQoyVBA= Received: from MWHPR17CA0096.namprd17.prod.outlook.com (2603:10b6:300:c2::34) by BYAPR12MB3191.namprd12.prod.outlook.com (2603:10b6:a03:133::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.12; Thu, 27 Jan 2022 20:41:50 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::a8) by MWHPR17CA0096.outlook.office365.com (2603:10b6:300:c2::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:49 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:44 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 18/24] EDAC/amd64: Define function to insert CS ID into address Date: Thu, 27 Jan 2022 20:41:09 +0000 Message-ID: <20220127204115.384161-19-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2e5786e-c047-48a5-25ad-08d9e1d571bb X-MS-TrafficTypeDiagnostic: BYAPR12MB3191:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: h9fXSUCSW572x5KNkNIfNdmLnTKBDxp/W9/9x2Jam/Ewn/Hgdh+LLFeByphpCyA2VROpH7ZDVdNPUR5YARntbubcf+MDNOtKmATIeQUz15RXnlTYCbAgj6A3WsyvaPDsm38MI3KOC9n/R73f6i7J+zSusvFW903T43ZzM1AQBt/c/XOGCyGnfJq7q63f/yo23sHkoNA4IX+JHnQARinz9uvyM3rJ9JmjwCCJVpCor0K6dG40Xsd5hCsrgwzs2pKA5TDpbyiJ60M+MSRrh8wN7NZ7wZ6ustH46bZG6CjvXbLu9ZVBEVLnJ88+P3wG8Y5YJ2DdrVVGrqX0sv301Jl1YXxCkVbwEMp26sveTyuSmRxhSQ4c9Gd3LadD6RrQ74MnSYmr+nAZJMHP5IzcPo/lWZIBbP6ICVYMq1mG9mz+8YkTzo2hstrCkdKSBvnnAS4AIOoMLss6ju+C5VfUTneUpYyW+YKdGo8rgZEOMnAIX9St4UUKNYwCXEAIfJGyTwUMhiSUnDUia+CD8qEggDPrPk+kBzuGbWAUInXPljUa9nzMrBvzORYnRt//OKCaqqkoVyjEv+cIs6iIb3M/cJAoPpaRzuu6nkU4OPQSzIxckhkLmlc2CLdYGNbDj1Qbkm4OWFN3fiImUqsCsgK5SkIosIUAfNMJlfp/3L6GDXa7ghZCCVofO1i7EqeAPOucrss7IzD48c1OcG0zQX9UmQyQK9shuL6NfAUD1k7bI7kmU/sj9nhfCAWy9aiGCZUPqKr9jslNFf8oq5faaT00Cb2ABjEJLGVtbyyuE6jJyhajHQMA/vw0deZJKK/HLdF2yt7JXvcWHUdS/AKDlD0iSw8LR+pa7IO1ZBZGbiUKN7RR99XfBjO3tUQxvSVL9CSrkVhR X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(40470700004)(36840700001)(46966006)(83380400001)(16526019)(8936002)(356005)(8676002)(36860700001)(6666004)(40460700003)(82310400004)(47076005)(4326008)(81166007)(2616005)(44832011)(1076003)(336012)(54906003)(426003)(70586007)(316002)(70206006)(26005)(2906002)(186003)(966005)(6916009)(36756003)(7696005)(508600001)(86362001)(5660300002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:49.9978 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c2e5786e-c047-48a5-25ad-08d9e1d571bb X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3191 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move the code that inserts the CS ID into the address into a separate helper function. Save the function pointer in the context struct. It will be set based on interleaving mode rather than Data Fabric version. This will be expanded for new interleaving modes added in future Data Fabric versions. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-24-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 24 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Added function pointer to ctx struct. drivers/edac/amd64_edac.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index b2bcd8ea1a06..e3db4e98fe58 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1083,6 +1083,7 @@ struct addr_ctx { u8 cs_id; int (*dehash_addr)(struct addr_ctx *ctx); void (*make_space_for_cs_id)(struct addr_ctx *ctx); + void (*insert_cs_id)(struct addr_ctx *ctx); }; =20 struct data_fabric_ops { @@ -1115,6 +1116,11 @@ static void make_space_for_cs_id_simple(struct addr_= ctx *ctx) expand_bits(ctx->intlv_addr_bit, num_intlv_bits, &ctx->ret_addr); } =20 +static void insert_cs_id_simple(struct addr_ctx *ctx) +{ + ctx->ret_addr |=3D (ctx->cs_id << ctx->intlv_addr_bit); +} + static u64 get_hi_addr_offset_df2(struct addr_ctx *ctx) { return (ctx->reg_dram_offset & GENMASK_ULL(31, 20)) << 8; @@ -1146,6 +1152,7 @@ static int get_intlv_mode_df2(struct addr_ctx *ctx) } =20 ctx->make_space_for_cs_id =3D make_space_for_cs_id_simple; + ctx->insert_cs_id =3D insert_cs_id_simple; =20 if (ctx->intlv_mode !=3D NONE && ctx->intlv_mode !=3D NOHASH_2CH && @@ -1306,8 +1313,6 @@ static int calculate_cs_id(struct addr_ctx *ctx) =20 static int denormalize_addr(struct addr_ctx *ctx) { - u8 num_intlv_bits; - /* Return early if no interleaving. */ if (ctx->intlv_mode =3D=3D NONE) return 0; @@ -1326,20 +1331,7 @@ static int denormalize_addr(struct addr_ctx *ctx) return -EINVAL; } =20 - if (num_intlv_bits > 0) { - u64 temp_addr_i; - - /* - * The pre-interleaved address consists of XXXXXXIIIYYYYY - * where III is the ID for this CS, and XXXXXXYYYYY are the - * address bits from the post-interleaved address. - * "num_intlv_bits" has been calculated to tell us how many "I" - * bits there are. "intlv_addr_bit" tells us how many "Y" bits - * there are (where "I" starts). - */ - temp_addr_i =3D (ctx->cs_id << ctx->intlv_addr_bit); - ctx->ret_addr |=3D temp_addr_i; - } + ctx->insert_cs_id(ctx); =20 return 0; } --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38988C433EF for ; Thu, 27 Jan 2022 20:42:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235870AbiA0Umg (ORCPT ); Thu, 27 Jan 2022 15:42:36 -0500 Received: from mail-dm6nam12on2069.outbound.protection.outlook.com ([40.107.243.69]:31360 "EHLO NAM12-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344166AbiA0Uly (ORCPT ); Thu, 27 Jan 2022 15:41:54 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GMY7D/w5L7wPLlnq3QbkB4jW5HrGqsj5Z1vwtjSyoLI9jC58dUP3y4w+k37Y5bVfqDz89dQEhSkwqN/bjCfjc6Ctm6xbtqsxAk6UudiOeVbc64cvZqiUMnoqskN7Nk0Uv4XziM6xTYiQPA7QhJpNVidW+SpngRN5JJnhZQBScntEwtAmPwmoQaBQGeL62+7BPBNkfuP0dPi30/x6SqHE1LGk/hZM5scDFPBATQWon8ZLduEvdUCWm4XiPGvX6mL8jUyikp0hWxsEVY0LjztYXQaRhZWmrGVHaNRQY/ixStWpt7z6Mc9TsqlxSNhV6KTe9vkal75za8OZYd2hfkSkgw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rar7/cDyMbjETAmhVbmutqlb77s6xTf4p9SjhqMLs4Q=; b=AZmCBbXqZjTgz81t+gsKI1CjCMx9A883dokZPJW5Noki0YQ7HjOBNXocxly2FFVYiPcCBb2sNYa5k4zynFlbDAXFr4x0TZfbnAxZkkpaBLTBQWVm8QXdwwnTndyGoKk7P3qmtPLCrSPQfFaWVoX4q84ZVyMot/F87jiVTsArYOo7gEsclDkFObK0isX+NIjnRviduU+A5XymRuCqPl5BOblfG+DFNGNWlXcSynK4y5atPtjwRcX0Tq3QHOPo06pRsjEFPBcyPPaumPYYaPhwKKax8Q8WXz2OmMjz9S+E1rEUzQVE6Q+pAIgLNMZnAbyyfq/+8BbpGRcItWmqzqdFSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rar7/cDyMbjETAmhVbmutqlb77s6xTf4p9SjhqMLs4Q=; b=vTLZvvududuU6XjHMjZg4utngZP/DiDTl7SEo4osGSwMImSxlc/4fm9k3kcPbLaVcP9+hHtNUQoD9ducTq2R0CBF8CvXNe0NVcg6i9uiH1RKI5TT1Okgg8arGH96pejIxa9EcbfNfD7eBDJ0Hx18A0x+IvqobhIwyQ81W2GfUYQ= Received: from MW4P221CA0025.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::30) by MN2PR12MB4256.namprd12.prod.outlook.com (2603:10b6:208:1d2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:50 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::1d) by MW4P221CA0025.outlook.office365.com (2603:10b6:303:8b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:50 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:45 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 19/24] EDAC/amd64: Define function to get CS Fabric ID Date: Thu, 27 Jan 2022 20:41:10 +0000 Message-ID: <20220127204115.384161-20-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bafc23e4-6016-4c6b-b093-08d9e1d571dc X-MS-TrafficTypeDiagnostic: MN2PR12MB4256:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: k0qFxMkIMCov/vf9xgAQ2uoAkv20X4fRHuxwUVo9/G9NRQwaoOXjSi4BeE4dcj7qtmR0dVRwoYZ9xa9v6aN+obs0m6NOt2TC1MjBYwcdffkzGJXVFPsfMLFk6oFizhbnZIXe4pHbEp/aeOntv4oe7K8mqaebbCswma8zoD60d2Lm5Ju/AMK2IOGywkpfnbYUIsfXyILXDaBRq9F/xCS1Tgn51HgEKcH+F4wckHTGZM4JYLjO/URatVEO/MN2/skJfUhzf3ynm09qv1IIwzjNMLdI2idBl3BXGaDgmnUOu+1fvaLjQkUPX9gD0HeHTHGEwBXC83Lm/ryQtT7pu+DzStRRcQlZvEbuHQr5ju0XZ6uMJcJK/aoyz6wPXU4bClpDEAdHYox7urCXxCY/J57HpIVEVk4By1Bzb6/C/m06AuZIdrRoOxn6KwlthvPIJv0dCf3thZRImcgaScgJcdV761RY0Sk/n3MSWPFw1CvA0n0vN5jV/feEhus0bWgpnNb2qbOefoYU8xuMaNJvfJBiGqVZEG2SdgtJs9bID88jysPjn5dslhGlxfVInnsJOwyz7kS7Ut/Y5FFLbzmDP4QP46t6Bs/aoR2m7UXrkr+p9RFgOYOYQjlvwrmgYsuQ6l6DV2+ItSJER4lPzqDrX77VjhOYnMmAwpiCPpw3IOV+PqPeK4idMEDMc+Di0wunKiuQKlc4MbIi0GGc5DpAxTPmxgSBY/SLwOuV6oDu9qY51oyIW4GRKjuJGwlQnKsyDw99dU22Giejw/et642w7iYxMZ0DEMpRGNwpKnZWI7dAb50= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(54906003)(8936002)(508600001)(70586007)(4326008)(8676002)(426003)(316002)(82310400004)(336012)(70206006)(86362001)(83380400001)(966005)(5660300002)(6916009)(26005)(44832011)(40460700003)(47076005)(186003)(36756003)(1076003)(16526019)(81166007)(36860700001)(356005)(6666004)(2616005)(7696005)(2906002)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:50.2333 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bafc23e4-6016-4c6b-b093-08d9e1d571dc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4256 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move code that gets the CS Fabric ID into a separate helper function. This will be expanded for future DF versions. The bitfield used for this value may be larger than the 8 bits currently used. So make it a u16 type which is large enough to hold all known sizes of this bitfield across DF versions. Also, call this function early as future DF versions may need the value early. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-25-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointer. * Include pr_debug() in failure. v2->v3: * Was patch 25 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Added function to data_fabric_ops. drivers/edac/amd64_edac.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index e3db4e98fe58..7891c2e93d53 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1073,6 +1073,7 @@ struct addr_ctx { u32 reg_dram_offset; u32 reg_base_addr; u32 reg_limit_addr; + u16 cs_fabric_id; u16 nid; u8 inst_id; u8 map_num; @@ -1089,6 +1090,7 @@ struct addr_ctx { struct data_fabric_ops { u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); int (*get_intlv_mode)(struct addr_ctx *ctx); + int (*get_cs_fabric_id)(struct addr_ctx *ctx); void (*get_intlv_num_dies)(struct addr_ctx *ctx); void (*get_intlv_num_sockets)(struct addr_ctx *ctx); }; @@ -1172,11 +1174,23 @@ static void get_intlv_num_sockets_df2(struct addr_c= tx *ctx) ctx->intlv_num_sockets =3D (ctx->reg_limit_addr >> 8) & 0x1; } =20 +static int get_cs_fabric_id_df2(struct addr_ctx *ctx) +{ + /* Read D18F0x50 (FabricBlockInstanceInformation3). */ + if (df_indirect_read_instance(ctx->nid, 0, 0x50, ctx->inst_id, &ctx->tmp)) + return -EINVAL; + + ctx->cs_fabric_id =3D (ctx->tmp >> 8) & 0xFF; + + return 0; +} + struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, .get_intlv_mode =3D get_intlv_mode_df2, .get_intlv_num_dies =3D get_intlv_num_dies_df2, .get_intlv_num_sockets =3D get_intlv_num_sockets_df2, + .get_cs_fabric_id =3D get_cs_fabric_id_df2, }; =20 struct data_fabric_ops *df_ops; @@ -1268,20 +1282,13 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) static int calculate_cs_id(struct addr_ctx *ctx) { u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; - u8 die_id_bit, sock_id_bit, cs_fabric_id, cs_mask =3D 0; - - /* Read D18F0x50 (FabricBlockInstanceInformation3). */ - if (df_indirect_read_instance(ctx->nid, 0, 0x50, ctx->inst_id, &ctx->tmp)) - return -EINVAL; - - cs_fabric_id =3D (ctx->tmp >> 8) & 0xFF; - die_id_bit =3D 0; + u8 die_id_bit =3D 0, sock_id_bit, cs_mask =3D 0; =20 /* If interleaved over more than 1 channel: */ if (ctx->intlv_num_chan) { die_id_bit =3D ctx->intlv_num_chan; cs_mask =3D (1 << die_id_bit) - 1; - ctx->cs_id =3D cs_fabric_id & cs_mask; + ctx->cs_id =3D ctx->cs_fabric_id & cs_mask; } =20 sock_id_bit =3D die_id_bit; @@ -1297,7 +1304,7 @@ static int calculate_cs_id(struct addr_ctx *ctx) die_id_shift =3D (ctx->tmp >> 24) & 0xF; die_id_mask =3D (ctx->tmp >> 8) & 0xFF; =20 - ctx->cs_id |=3D ((cs_fabric_id & die_id_mask) >> die_id_shift) << die_id= _bit; + ctx->cs_id |=3D ((ctx->cs_fabric_id & die_id_mask) >> die_id_shift) << d= ie_id_bit; } =20 /* If interleaved over more than 1 socket: */ @@ -1305,7 +1312,8 @@ static int calculate_cs_id(struct addr_ctx *ctx) socket_id_shift =3D (ctx->tmp >> 28) & 0xF; socket_id_mask =3D (ctx->tmp >> 16) & 0xFF; =20 - ctx->cs_id |=3D ((cs_fabric_id & socket_id_mask) >> socket_id_shift) << = sock_id_bit; + ctx->cs_id |=3D ((ctx->cs_fabric_id & socket_id_mask) + >> socket_id_shift) << sock_id_bit; } =20 return 0; @@ -1387,6 +1395,11 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr ctx.nid =3D nid; ctx.inst_id =3D umc; =20 + if (df_ops->get_cs_fabric_id(&ctx)) { + pr_debug("Failed to get CS Fabric ID"); + return -EINVAL; + } + if (remove_dram_offset(&ctx)) { pr_debug("Failed to remove DRAM offset"); return -EINVAL; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C42AFC433EF for ; Thu, 27 Jan 2022 20:42:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344316AbiA0Umc (ORCPT ); Thu, 27 Jan 2022 15:42:32 -0500 Received: from mail-bn8nam12on2050.outbound.protection.outlook.com ([40.107.237.50]:48352 "EHLO NAM12-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344106AbiA0Ulx (ORCPT ); Thu, 27 Jan 2022 15:41:53 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QHtc25ypmwE0Z/LEuiQtlre/uBiUcTRqbp5nzbir2GSuohIh/V8XJYefK4WpuAXD7zqlJPT+YtzUl0im5aQuENw2Hq1CejuCqVhBbCBFhxUZ2y4k1xwL4qOKZw/zg3QL+XUOJxYS74p0GH/c6dXP1G4Vg/zBD4+NcrFX1uxmb8FESyMVK9EahQRx5aPB5DTSONWjekWvfo97/wtgcK3C8lKT7Z0EcRUNKSNbGW8S071OOd/b0gkGqKYA0MvEmnFB/AHt+ENKobDpFjvs1CwZT4mbDAMWzHI5sEV/mqYLr/cwPqtU0bupbTRe69WLrAEny575UcWH4ddVyBgYCNvNBw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=clL+xtDpOALo/XDwO3QqUpRPuQEZPD2/bL+erk1ov0Q=; b=irlBdsvBLq65VmO/xsdA8bDERwPmBLMIZbzA+aBo9+1hNtD5LGE3bRNM5k0EUXJ4kM6dV7/8wYrJWHhr8leYkMlxdR+YAOxeQUvY4mbKvCU7IS3DOxwc6FKdKCR4eSfH3vHKPKzfqSam6nVAlkU0Q1U5bHWQ+hcIB0Bm1FQzIrHpoCPnqqdGrNm9U0knH/Syfb+0PkysaRnliq0zVCcr7qVSKDt6P+v1LTvZoMbhhhgAeodZNfoBY3N5P0pNxS7nMw/zeoVwvtIf8/u2ybX9nVdMY7wDuV1uyt9L37lgr+kk/frB1uQw+u3UsslS64pREke2OGNgN36i9ZxvV7/dpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=clL+xtDpOALo/XDwO3QqUpRPuQEZPD2/bL+erk1ov0Q=; b=NaCzqnpK1YafLbsqHgaYppYJpiYiX4i26criw+vgjsE2waKL50JRF9VC5fYB8WqnTeYJHfwlfY66yVfleJBdS6I5WaJhfs1hUX/xIcyrCgv9icO6ExTKVDvMhdWDlcEZ81n/bsFFQU3yB8YQlojGKUb7wzmVg5btIzTjM9M42o0= Received: from MW4P221CA0015.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::20) by MW3PR12MB4394.namprd12.prod.outlook.com (2603:10b6:303:54::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Thu, 27 Jan 2022 20:41:51 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::e8) by MW4P221CA0015.outlook.office365.com (2603:10b6:303:8b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:51 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:45 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 20/24] EDAC/amd64: Define function to find shift and mask values Date: Thu, 27 Jan 2022 20:41:11 +0000 Message-ID: <20220127204115.384161-21-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5b0642f1-89c6-452d-463c-08d9e1d57256 X-MS-TrafficTypeDiagnostic: MW3PR12MB4394:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MFx4pLzjPWxRMAYts3H0e9/TUpNJnPyUAdoyHLSezZu3dbDQr1sO9mxqHlB3XdpdtIy8yHLCu4N5zejj/2I5OH84Kn1caQv/T9e+aQc68yndBUYS7RmlligD0bC2xyd2b1WHUgdimx1aoB7bY7B2vWTb5OoxOzhkzWigz16m9ReNl0RkL9oheFr7maESs8Aim6IMjWsfNlQwqvx8wBoAzDLk1TgVjxxJ0+t+gQOx5aLzjwF3FluQnZW4aLn86hKngLBmiMWEHiJvB05GG7GEDQMr5XB8xI8xFYFPRl6UdwWGF+8j3+4W7KyTPeKtmKBWQ/kMjXPRHquqRHoO6lOyETDn1hT+dFkPpc+dRCRai/VMhLlVAbTnO6OA9fRhHRdBtQ5+iANe0QJMB8u4+IlDaRMjjk+9ZSibgpKEj7b2vF7+I2kspud5eXUvIWTq4XvUPQFrR0kt19ItRhJktkg8VbBLXHCtbmCevog0TltT14i9Fvpw4PVJPHFUMpLTKg975HpQDUsgNXZ2M+0ouPMY/7GxegSz6l96k0FF9kAFIOCpeYAKjpnYCPTxlEwmshBwWDafkJnv7crS66zNt0VK8YdaV8TEQyHR7hqqlmMucnnyg4ca1p0T4b/WXuaRQbiHyMjOMapQ+cZHGNyR2d5e62/tB6qw+NXN3R6MWx2ghQs3TA8qQBdjLT7yPYQRd10ZXj8GqO7eX1BHGIEsa8HaD0xyAROcUcm0LXpve3OZsavwaC12/0CRXyWWa9fj68FxCbPLSE6Gx5LDNs1C2Z7U5dlTb9Xb8WzFxOTJwSInTqpv5LXsvHR1KuF6b6qztcZO X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(36860700001)(81166007)(82310400004)(356005)(47076005)(6666004)(7696005)(26005)(44832011)(966005)(36756003)(5660300002)(2616005)(54906003)(2906002)(6916009)(186003)(508600001)(40460700003)(1076003)(16526019)(4326008)(8936002)(8676002)(70586007)(70206006)(83380400001)(316002)(86362001)(336012)(426003)(37363002)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:51.0301 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5b0642f1-89c6-452d-463c-08d9e1d57256 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4394 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move code to find the shift and mask values used in die and socket interleaving into separate helper functions. These will be expanded for future DF versions. Make the die_id_mask and socket_id_mask values u16 type to accommodate larger bitfields in future DF versions. Also, move reading of the System Fabric ID Mask register into get_masks(). This will be expanded for future DF versions. Call get_masks() early since future DF versions may need these values early. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-26-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointers. * Include pr_debug() in failure. v2->v3: * Was patch 26 in v2. * Remove early code related to "df_ops". v1->v2: * Moved from arch/x86 to EDAC. * Added functions to data_fabric_ops. drivers/edac/amd64_edac.c | 59 ++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 7891c2e93d53..ac7919010063 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1073,7 +1073,10 @@ struct addr_ctx { u32 reg_dram_offset; u32 reg_base_addr; u32 reg_limit_addr; + u32 reg_fab_id_mask0; u16 cs_fabric_id; + u16 die_id_mask; + u16 socket_id_mask; u16 nid; u8 inst_id; u8 map_num; @@ -1089,8 +1092,11 @@ struct addr_ctx { =20 struct data_fabric_ops { u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); + u8 (*get_die_id_shift)(struct addr_ctx *ctx); + u8 (*get_socket_id_shift)(struct addr_ctx *ctx); int (*get_intlv_mode)(struct addr_ctx *ctx); int (*get_cs_fabric_id)(struct addr_ctx *ctx); + int (*get_masks)(struct addr_ctx *ctx); void (*get_intlv_num_dies)(struct addr_ctx *ctx); void (*get_intlv_num_sockets)(struct addr_ctx *ctx); }; @@ -1185,12 +1191,37 @@ static int get_cs_fabric_id_df2(struct addr_ctx *ct= x) return 0; } =20 +static int get_masks_df2(struct addr_ctx *ctx) +{ + /* Read D18F1x208 (SystemFabricIdMask). */ + if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->reg_fab_id_mask0= )) + return -EINVAL; + + ctx->die_id_mask =3D (ctx->reg_fab_id_mask0 >> 8) & 0xFF; + ctx->socket_id_mask =3D (ctx->reg_fab_id_mask0 >> 16) & 0xFF; + + return 0; +} + +static u8 get_die_id_shift_df2(struct addr_ctx *ctx) +{ + return (ctx->reg_fab_id_mask0 >> 24) & 0xF; +} + +static u8 get_socket_id_shift_df2(struct addr_ctx *ctx) +{ + return (ctx->reg_fab_id_mask0 >> 28) & 0xF; +} + struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, .get_intlv_mode =3D get_intlv_mode_df2, .get_intlv_num_dies =3D get_intlv_num_dies_df2, .get_intlv_num_sockets =3D get_intlv_num_sockets_df2, .get_cs_fabric_id =3D get_cs_fabric_id_df2, + .get_masks =3D get_masks_df2, + .get_die_id_shift =3D get_die_id_shift_df2, + .get_socket_id_shift =3D get_socket_id_shift_df2, }; =20 struct data_fabric_ops *df_ops; @@ -1281,7 +1312,6 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) =20 static int calculate_cs_id(struct addr_ctx *ctx) { - u8 die_id_shift, die_id_mask, socket_id_shift, socket_id_mask; u8 die_id_bit =3D 0, sock_id_bit, cs_mask =3D 0; =20 /* If interleaved over more than 1 channel: */ @@ -1291,28 +1321,26 @@ static int calculate_cs_id(struct addr_ctx *ctx) ctx->cs_id =3D ctx->cs_fabric_id & cs_mask; } =20 - sock_id_bit =3D die_id_bit; + /* Return early if no die interleaving and no socket interleaving. */ + if (!(ctx->intlv_num_dies || ctx->intlv_num_sockets)) + return 0; =20 - /* Read D18F1x208 (SystemFabricIdMask). */ - if (ctx->intlv_num_dies || ctx->intlv_num_sockets) - if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->tmp)) - return -EINVAL; + sock_id_bit =3D die_id_bit; =20 /* If interleaved over more than 1 die: */ if (ctx->intlv_num_dies) { - sock_id_bit =3D die_id_bit + ctx->intlv_num_dies; - die_id_shift =3D (ctx->tmp >> 24) & 0xF; - die_id_mask =3D (ctx->tmp >> 8) & 0xFF; + u8 die_id_shift =3D df_ops->get_die_id_shift(ctx); =20 - ctx->cs_id |=3D ((ctx->cs_fabric_id & die_id_mask) >> die_id_shift) << d= ie_id_bit; + sock_id_bit =3D die_id_bit + ctx->intlv_num_dies; + ctx->cs_id |=3D ((ctx->cs_fabric_id & ctx->die_id_mask) + >> die_id_shift) << die_id_bit; } =20 /* If interleaved over more than 1 socket: */ if (ctx->intlv_num_sockets) { - socket_id_shift =3D (ctx->tmp >> 28) & 0xF; - socket_id_mask =3D (ctx->tmp >> 16) & 0xFF; + u8 socket_id_shift =3D df_ops->get_socket_id_shift(ctx); =20 - ctx->cs_id |=3D ((ctx->cs_fabric_id & socket_id_mask) + ctx->cs_id |=3D ((ctx->cs_fabric_id & ctx->socket_id_mask) >> socket_id_shift) << sock_id_bit; } =20 @@ -1395,6 +1423,11 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u1= 6 nid, u8 umc, u64 *sys_addr ctx.nid =3D nid; ctx.inst_id =3D umc; =20 + if (df_ops->get_masks(&ctx)) { + pr_debug("Failed to get masks"); + return -EINVAL; + } + if (df_ops->get_cs_fabric_id(&ctx)) { pr_debug("Failed to get CS Fabric ID"); return -EINVAL; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D939C433EF for ; Thu, 27 Jan 2022 20:43:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245187AbiA0UnC (ORCPT ); Thu, 27 Jan 2022 15:43:02 -0500 Received: from mail-dm6nam12on2086.outbound.protection.outlook.com ([40.107.243.86]:33902 "EHLO NAM12-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344175AbiA0Uly (ORCPT ); Thu, 27 Jan 2022 15:41:54 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aZU73uytRDJpu9CZ98TuJqDQSq9e/vBaVXxLfVgzJxHDgFa9hzns3+0haB3RVxwZBCYspMTCoyoczltMHNBK7Gio1XXVdAIoRtfHxLC/mTQJ4IUKEYiwvp06xOsahnlWyB5WRViOt6BFFeyGb727ffWi6+oT9Wo84Uz9B4D8FEI6ocMOGgZU6gJtbg32uAoihutEVSOPuNb3C+F6sG1jHehPXGnM5rdODntk6OgzfjFNVZUyf+UAhumfQAKMdL37CK3YNKTL8JoNlqkuBAGJ6ZdE3JtXiatEjmospMwFHpncep6JiSpOcTdNRFLYWTccZ9RmIvvhAVKJNJzwL05h/Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9AIDGn/HJxSy+KH6BelcUoYYdGJEl6keohWsSPNXFME=; b=kTo7VbxUqsaWWyK/AjMethsNQ0Wz4PogV3sNJ30x44w6UkuQv30Owa3ij6dxfqWRqTnO3/2ezLEGeyi3P903mrf/soxtH0wz7GUBUkCgGaSXOZSHMidXSbh5IQ6vG/i7BYcRPiTc+ElHlbb8l2WFhIk8RKlseZmhMMVdBX2CHL4KqXkfXyE4yPJ9ytzjTn3s3vFc+V0FtsE/kb6DaKw468+ywn895jGyA9RYPjLUQYEQHSTI+a+JpcPCYa53dAAzKup/4iu5Shtg7GJCEOhhHWZFLEtqHkLjOKH5Ok9fXeQQOVe9OVruQGMsXbH+NS4einbgqMX0/49bRHMRizh32w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9AIDGn/HJxSy+KH6BelcUoYYdGJEl6keohWsSPNXFME=; b=KV88zr59B1QR+nwTxIdX5PecidnZO/vPKlBIScWJbPVPSHySmd/zUvx093Pnbe3dFD2VoBeTPDFXy6znSQL6EjxDb1B+tOB1LV8k1Qe5qXkBoRlIUAscH2URb0UKGPB7rGQHuv03l/buGzge7r1doQHikkb2+g2bLbJHxTNLnSs= Received: from MW4P221CA0015.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::20) by BYAPR12MB5704.namprd12.prod.outlook.com (2603:10b6:a03:9d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.13; Thu, 27 Jan 2022 20:41:51 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::fa) by MW4P221CA0015.outlook.office365.com (2603:10b6:303:8b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:51 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:45 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 21/24] EDAC/amd64: Update CS ID calculation to match reference code Date: Thu, 27 Jan 2022 20:41:12 +0000 Message-ID: <20220127204115.384161-22-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 39659b0a-4336-44cd-2dbe-08d9e1d572a0 X-MS-TrafficTypeDiagnostic: BYAPR12MB5704:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CVH0SHHTLqucE2HTIgwbaeaXGFDCUJ5MsjCjtjDLQiTqutFe7vGHpLQDIa88CZZVWOK8yKH6wUqv21Mr26vI7Ng8cJpWEmxeZfNHUoaXNUeUjSb8FIwY7h45zc5w1uYDfKFQBoAGvYt2fxZKtUaGlYRu/x9O5T/RIb5q7TC1TXRt++OekoSTqaJiG5EaaA+gE9Vr9X4sUz+fDGPsEK1aWWAoEVT1Rxb5Z11ID6aB049j0kWTs/2SwuwKlYbsEU1M6wF1x7wK1PpCLoPH7jYLq687WzrjLu6fxIQHc1iOHC6vIwCP7cWKuVTRHFdn2lCdL2mclCWmHVrT9aOIYS0uSe/09b3sdRBCzk0OKMKpHWMx3s/P3xV6ExnZBaEkVpZt9/YtU/MZw6j0ymoMLddguNNOKLh6dwYW+9d3/Uy6VKUex8PEbd+pdhxw3YEistVtu9lwpzpLqmw6RHav8DtZMnFGeXfUneuBsV5D9zs+vW5Eey+hnItS80AWPHroKokq1CtthNwq6/zkcGreKiZb6BvyW+wkkZZewYbwpEEkN6vUvy6mtfTR2sMEd67AWuH2FHmIGgIsxYJkOQgCx2bpNU7nLCCumql7sMeiV8DWj67glkgC4sy2WxDjmxbBibENdORF+iK86aL3YBdPKwE5VQqGh/jqqlnN8ZatTAS7n+nRxLM5h+ZuAsnRG1VtDvKt+Vsix3C3cKbdBqif/qrBdl2IpNUxaj51/pNMkhAuYWvd2CAgT0xaSr9UUTx8cWAzE53h4Ooswtkb+utsIk/rJYEmiSTcrXuVb4l5wDJ8YDUKfIg3Dy6tATxJncV3Urvy1DbGwh8vClZcIi3imoV8w2uEqHuPzs6BlmLKGMcD+Po0gAqbdQNxi/zMnFuQs3mR X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(40470700004)(36840700001)(46966006)(7696005)(16526019)(40460700003)(82310400004)(8676002)(83380400001)(186003)(6916009)(26005)(70206006)(86362001)(426003)(36756003)(508600001)(2616005)(4326008)(8936002)(47076005)(966005)(6666004)(70586007)(36860700001)(44832011)(2906002)(1076003)(336012)(316002)(81166007)(54906003)(5660300002)(356005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:51.5144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39659b0a-4336-44cd-2dbe-08d9e1d572a0 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB5704 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Redo the current CS ID calculations to match the reference code. Helper functions are introduced that will be expanded for future DF versions. Use u16 type for dst_fabric_id and component_id_mask values to accommodate larger bitfields in future DF versions. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-27-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointers. v2->v3: * Was patch 27 in v2. v1->v2: * Moved from arch/x86 to EDAC. * Added functions to data_fabric_ops. drivers/edac/amd64_edac.c | 52 ++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index ac7919010063..e293aefd486e 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1092,6 +1092,8 @@ struct addr_ctx { =20 struct data_fabric_ops { u64 (*get_hi_addr_offset)(struct addr_ctx *ctx); + u16 (*get_dst_fabric_id)(struct addr_ctx *ctx); + u16 (*get_component_id_mask)(struct addr_ctx *ctx); u8 (*get_die_id_shift)(struct addr_ctx *ctx); u8 (*get_socket_id_shift)(struct addr_ctx *ctx); int (*get_intlv_mode)(struct addr_ctx *ctx); @@ -1213,6 +1215,16 @@ static u8 get_socket_id_shift_df2(struct addr_ctx *c= tx) return (ctx->reg_fab_id_mask0 >> 28) & 0xF; } =20 +static u16 get_dst_fabric_id_df2(struct addr_ctx *ctx) +{ + return ctx->reg_limit_addr & 0xFF; +} + +static u16 get_component_id_mask_df2(struct addr_ctx *ctx) +{ + return (~(ctx->socket_id_mask | ctx->die_id_mask)) & 0xFF; +} + struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, .get_intlv_mode =3D get_intlv_mode_df2, @@ -1222,6 +1234,8 @@ struct data_fabric_ops df2_ops =3D { .get_masks =3D get_masks_df2, .get_die_id_shift =3D get_die_id_shift_df2, .get_socket_id_shift =3D get_socket_id_shift_df2, + .get_dst_fabric_id =3D get_dst_fabric_id_df2, + .get_component_id_mask =3D get_component_id_mask_df2, }; =20 struct data_fabric_ops *df_ops; @@ -1310,38 +1324,42 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) } } =20 -static int calculate_cs_id(struct addr_ctx *ctx) +static u8 calc_level_bits(u8 id, u8 level_mask, u8 shift, u8 mask, u8 num_= bits) { - u8 die_id_bit =3D 0, sock_id_bit, cs_mask =3D 0; + return (((id & level_mask) >> shift) & mask) << num_bits; +} =20 - /* If interleaved over more than 1 channel: */ - if (ctx->intlv_num_chan) { - die_id_bit =3D ctx->intlv_num_chan; - cs_mask =3D (1 << die_id_bit) - 1; - ctx->cs_id =3D ctx->cs_fabric_id & cs_mask; - } +static int calculate_cs_id(struct addr_ctx *ctx) +{ + u16 dst_fabric_id =3D df_ops->get_dst_fabric_id(ctx); + u16 mask, num_intlv_bits =3D ctx->intlv_num_chan; =20 - /* Return early if no die interleaving and no socket interleaving. */ - if (!(ctx->intlv_num_dies || ctx->intlv_num_sockets)) - return 0; + mask =3D df_ops->get_component_id_mask(ctx); + ctx->cs_id =3D (ctx->cs_fabric_id & mask) - (dst_fabric_id & mask); =20 - sock_id_bit =3D die_id_bit; + mask =3D (1 << num_intlv_bits) - 1; + ctx->cs_id &=3D mask; =20 /* If interleaved over more than 1 die: */ if (ctx->intlv_num_dies) { u8 die_id_shift =3D df_ops->get_die_id_shift(ctx); =20 - sock_id_bit =3D die_id_bit + ctx->intlv_num_dies; - ctx->cs_id |=3D ((ctx->cs_fabric_id & ctx->die_id_mask) - >> die_id_shift) << die_id_bit; + mask =3D (1 << ctx->intlv_num_dies) - 1; + + ctx->cs_id |=3D calc_level_bits(ctx->cs_fabric_id, ctx->die_id_mask, + die_id_shift, mask, num_intlv_bits); + + num_intlv_bits +=3D ctx->intlv_num_dies; } =20 /* If interleaved over more than 1 socket: */ if (ctx->intlv_num_sockets) { u8 socket_id_shift =3D df_ops->get_socket_id_shift(ctx); =20 - ctx->cs_id |=3D ((ctx->cs_fabric_id & ctx->socket_id_mask) - >> socket_id_shift) << sock_id_bit; + mask =3D (1 << ctx->intlv_num_sockets) - 1; + + ctx->cs_id |=3D calc_level_bits(ctx->cs_fabric_id, ctx->socket_id_mask, + socket_id_shift, mask, num_intlv_bits); } =20 return 0; --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 615D0C433F5 for ; Thu, 27 Jan 2022 20:42:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240520AbiA0Umz (ORCPT ); Thu, 27 Jan 2022 15:42:55 -0500 Received: from mail-bn7nam10on2058.outbound.protection.outlook.com ([40.107.92.58]:34074 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344202AbiA0Ul5 (ORCPT ); Thu, 27 Jan 2022 15:41:57 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d5iSLRb9xHd7yl95xCrz6e6RUGSceivpyt90KfylzhcKmoVSU/148n6FJP5ex6fbdaoUZqZc6CAvT1latXJ9hguuj4s3vIO0+WAWaw90Knly5dyHjNVBck4b0ULSF3dOWMOlHXr+dEo6NAiYsWVmpKvWUlCHEnQXtfR0iY4cntIjupg9b+p8/b+PZdmcRsgR6g43+RtZrtW8yH0JiEfykznGZAbnZyA2vByDjj71pBBMNNKybzuCPCOwlp+0hK+HKeKJ8JrQV9d854Ktx2vSRzRwDrwAAp7xNwTyri1CK41rm6dkgj/YII3mr26+77IWt/Ax0VEhurdao6QFNPLP4A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KI6Co5wbDhFFbCxLKnRvWExh9uSAPyJGVPXo7WMf6I8=; b=nuXMbS1F7CbHWzggFkXKB7moFU0qLd/IeGpsDg9KxfETyyMr3s39ezKiekvLL7jMZK0A028Pnq/XnIj3x384YSs1a9B7bBqjaXnEJuWrz1rVyKW29gC9TEDWS+SWkI9x8Ix9/bx+zasTE0+Jy45sTc4UvetDNSW54yt05B8otRKWqy3NxeHvvi+V1Ni8kWC4MZHWPA5AZ0t7wtK/qWIvPLyn8MtzeMuXOtkMuxItTp8mg0HamAoLVS6hjZf0iDWKRJSwc51hGD3ydfS93fSzljWmVySfuQawIthAuIZFXGBHodbq4uJHmLUM4F2lnVXfIn/oxjWsYZ5aTb3pkh8gkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KI6Co5wbDhFFbCxLKnRvWExh9uSAPyJGVPXo7WMf6I8=; b=l4G8CIjFrcNluQHIoxkPF7N2R/RJQB5oHk8jnoMgePD8FDgd4JgVlxCmtmyYQK15lLKwjcmrvfuvmJdvRC9fVgt3XpIt/tlO7j9ZJZ3LiXl2JDHfwKFcI2Ftik9m8XxD9JeRyzzmylABS1qG0lDdZwZPntdV6kKoodERrdXWEZ4= Received: from MWHPR17CA0089.namprd17.prod.outlook.com (2603:10b6:300:c2::27) by CH2PR12MB4040.namprd12.prod.outlook.com (2603:10b6:610:ac::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:52 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::f7) by MWHPR17CA0089.outlook.office365.com (2603:10b6:300:c2::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:51 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:46 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 22/24] EDAC/amd64: Match hash function to reference code Date: Thu, 27 Jan 2022 20:41:13 +0000 Message-ID: <20220127204115.384161-23-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 186d5c3f-aa1d-4abd-0199-08d9e1d572bf X-MS-TrafficTypeDiagnostic: CH2PR12MB4040:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WUpcXRYNE2LL1RH15uRX10oAD1csYnC4CqxSbmXtuHtumaNUGLP7NhzhP+LtTh+QSuwwc7QPOHx7Xe61NJY9xYXSyeXGDnDMxqZ3O4rh1OTRZL+FlPAO7amrcvKaJKhdyhkSamBnQd72Qy1E5hR7e4Knhp4GohEVTa0RVAQTqKuELLzWWSR70CF2s28pPPHTHwskn98Jqpx7gqyz4syxsL1znhyAFf0RKhruoBB0uStCLxh2UhF9P/ImOZ8ZsW3Xq76PXN6zQ/EGofnvK7iIhhnhEz6g1p+ZUwSBcnpf0buvA/Vr3c1x0wJvR/S54gR/WkSpHhZ/N7lWG2yjQ0oQjS0UTy+tspfXEm49UpUcjCcEvldWyaBqZLlAg+3d+chgJiw0J7eZtvP0ZYGl3x2LTycpSI7vKvfrYcoNhUZx1x4CJCIPR2NIiD4136WzMd4UQwEUntjCqLBwjTq47gZUI2iSSDHfqAaNbwUsxu3RWGAbhLfJfF1t/+Ko+kL6eCtnOMqvin9G12PXiXuNozABcpHkcuX39RzqYwepoVs9J51OSDNpZ+Kp3UAcrnG4S6ZNYkLS41kV7GQGplZ+NL302WxpFkZ9/X6oc5EX1qcZHR8QgHx5cAd3cAteKBGr2ObLWFTK24+o4Jt+87bBdPdd0moUk+7X8rhnkIwC84TQNpQuz9J8RNI8CXANbMGT/RVWaSqfN9WX6LPeV2+eAIau0gCGbIqizhzNKSLH9+747mNMZ5nVlqsbVA+S2A1NcORj2TxJU/7v9r1707wlxm2LNjBMUoeRGy6LaXdG/jDZONk= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(6666004)(47076005)(2906002)(36860700001)(7696005)(966005)(83380400001)(82310400004)(2616005)(16526019)(1076003)(54906003)(508600001)(426003)(336012)(186003)(26005)(356005)(44832011)(86362001)(4744005)(40460700003)(8676002)(5660300002)(8936002)(4326008)(70206006)(6916009)(70586007)(316002)(81166007)(36756003)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:51.7008 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 186d5c3f-aa1d-4abd-0199-08d9e1d572bf X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4040 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The reference code for DF2 hashing was changed to XOR the interleave address bit rather than the CS ID. Match that here. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-28-yazen.ghannam@amd.com v3->v4: * No change. v2->v3: * Was patch 28 in v2. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index e293aefd486e..601ececf5106 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1142,7 +1142,7 @@ static int dehash_addr_df2(struct addr_ctx *ctx) (ctx->ret_addr >> 18) ^ (ctx->ret_addr >> 21) ^ (ctx->ret_addr >> 30) ^ - ctx->cs_id; + (ctx->ret_addr >> ctx->intlv_addr_bit); =20 hashed_bit &=3D BIT(0); =20 --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72464C433EF for ; Thu, 27 Jan 2022 20:43:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344236AbiA0UnG (ORCPT ); Thu, 27 Jan 2022 15:43:06 -0500 Received: from mail-dm6nam10on2067.outbound.protection.outlook.com ([40.107.93.67]:15424 "EHLO NAM10-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344191AbiA0Uly (ORCPT ); Thu, 27 Jan 2022 15:41:54 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pl/0k5hyF/HfIkgjabrhIJnjQhuWk6O539Ez4xcPtIxjfluImKXPmYJO4XSV5FYZ6ncfkI8+UKUL/HhYrVFcu2NAXRsZYlIS9nG1pTR7wBPxRyEXprMlMKHV4z5IX8kf1cyJU0PMuTwOKBYO8m29D+7Thj4OExlYDNR0Oqhu4LTMQBvz7os0HaIhxy7b3Jrn7DGzglEHfqHQqu5nVEGDDVNbwZT6aCdPi9AdcfIWJbkDWhm4Hs+6lWDaJAXjdHuS4HBFF2rUHXAxw6ao0J62ChpMeVLtf0u5YuyszN9ddeUnhuvMXfeL7EHS/0VpjShQthPSLg52jpbse3PO/RqA5A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mJyUZOmrtiMZLoe6L4nVlVC3r0qZGISOQdFaiAqTHWs=; b=SWG+YndE4+B8iv/tURdjZXVOCMFyTTQNfotqSV/Ft5k2C6b60Tt8FGZD46/3+bnm0HNhMntAbgE8+hA7+VHrOJWJyK5TF93H1p10yvpfYeXhbn1WvCb+tBG7TfKPvh/mSBtZoQdVcECoG0AiLGkNdSQeYXX9p7k8U94qfk803hEePVF8mdGcGLYjx3449xEgFyjLApuR17UQTrib8IKA6E6N9cxDKExIosUHNtBqaLybTxeuoj1losBuBNxwaLAmCUfmAnXJWM6TYZ4EBexHdcdX7AD/+ihZU5lGrCWMlyRgDnQme1rf/YOEmnRo05QZCQJukQJ+0yLPt3G6Y3th9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mJyUZOmrtiMZLoe6L4nVlVC3r0qZGISOQdFaiAqTHWs=; b=EvoLJ6LDEu7aw/sgi8RlY35NEPfubvRoHmqY7/UIXdgq2M6NlbudCa0LCF1BgxraCY3xC1hQvvFJBqAHY1ZicH/3JVBmTKvZmT+/u8XZg/1A8YdQXMj1nR64+ennBZkW1G/vjZB/yv2u/62FmAffX+OOP/DjSSYP1UsvpZFvINo= Received: from MW4P221CA0003.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::8) by BL0PR12MB5507.namprd12.prod.outlook.com (2603:10b6:208:1c4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 20:41:53 +0000 Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8b:cafe::67) by MW4P221CA0003.outlook.office365.com (2603:10b6:303:8b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17 via Frontend Transport; Thu, 27 Jan 2022 20:41:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:52 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:46 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 23/24] EDAC/amd64: Define function to get interleave address select bit Date: Thu, 27 Jan 2022 20:41:14 +0000 Message-ID: <20220127204115.384161-24-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0c4e6769-8097-4c77-7596-08d9e1d5730b X-MS-TrafficTypeDiagnostic: BL0PR12MB5507:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3173; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9SnBt1hAGBwRVrvAvfYWcIf2A8hK839fUZryBpe4sRIE7LDR5YMc5zFtKQVL6NzK2LwGQnyxZygwrgjU5FCGS/R0ki+53ifKhTlxOGcBYXzVmYKv06GijYWtz9UCQSiFQR0se1+tFX539Z6CJgQDi2/O02qcYVVQ4biwcdfE34tx0Q9JS+Wx++U7qWN4KRjrJ62zzMBod+fzMndXzYSN5w8k9nqbQREzKkAXiGu1FQyosZWzwQgjrBMpexfqWboeFIlsDjqlCzp+b4UkY07T5HeqmPBSMt6Y96K9XoV1Nf9rFPCNtWxAz0H2JdXWPhka4L5Ev1hAZot/G50ImOg+qTLWgsypWu7N2RgarqX0kHXUQp7AJLZKo2gdn2kGlwEO48UJVEGc+czRd51I/Ekg9OL0KIwSl+1nofDulZ+Q3ipMqgonoAb+N3BL0XUdYaWkS+KVPJ4+hGd+y+pDd4p/pfOg1R9b1SJqADAaUtZJhkHjgPX1ZJ5aCsKCSv0gS95Cejjlg4OAbCRZ5OqBjfnZrvnwMXCOWOTaOyStTXGRbqvq7cr8plMKYSTd9y1kLPum/UO+bTN/hOKB8muQnTfAVt/5ja9/j7G0lc8xVeoyP3HqfWktQQVYm4lwdUIIZ/cq2tKz+CxgEFc74AdGKwMFscxlJx68zhaZCyQBip2hqvfoyYcCTGLYeZ/caGgBURwO32tbLYmZud3bx0+Xg/fKsPfsvriK/UxRsUmaVAh1CM0z5Qp00/6McJ/4NwplNj2hwme8A6yMRSWkEzqLxp1hAZBtUJ+wUaZTKKxeerJMhdo= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(7696005)(6666004)(54906003)(47076005)(508600001)(82310400004)(83380400001)(86362001)(316002)(966005)(81166007)(6916009)(40460700003)(36756003)(4326008)(44832011)(1076003)(16526019)(336012)(426003)(186003)(26005)(36860700001)(2616005)(70586007)(356005)(8936002)(5660300002)(70206006)(2906002)(8676002)(36900700001)(20210929001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:52.2019 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0c4e6769-8097-4c77-7596-08d9e1d5730b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB5507 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" ...this will be expanded for future Data Fabric versions. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-29-yazen.ghannam@amd.com v3->v4: * Remove leading whitespace in function pointer. v2->v3: * Was patch 29 in v2. v1->v2: * New in v2. drivers/edac/amd64_edac.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 601ececf5106..34405c8940fb 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1096,6 +1096,7 @@ struct data_fabric_ops { u16 (*get_component_id_mask)(struct addr_ctx *ctx); u8 (*get_die_id_shift)(struct addr_ctx *ctx); u8 (*get_socket_id_shift)(struct addr_ctx *ctx); + u8 (*get_intlv_addr_sel)(struct addr_ctx *ctx); int (*get_intlv_mode)(struct addr_ctx *ctx); int (*get_cs_fabric_id)(struct addr_ctx *ctx); int (*get_masks)(struct addr_ctx *ctx); @@ -1172,6 +1173,11 @@ static int get_intlv_mode_df2(struct addr_ctx *ctx) return 0; } =20 +static u8 get_intlv_addr_sel_df2(struct addr_ctx *ctx) +{ + return (ctx->reg_base_addr >> 8) & 0x7; +} + static void get_intlv_num_dies_df2(struct addr_ctx *ctx) { ctx->intlv_num_dies =3D (ctx->reg_limit_addr >> 10) & 0x3; @@ -1228,6 +1234,7 @@ static u16 get_component_id_mask_df2(struct addr_ctx = *ctx) struct data_fabric_ops df2_ops =3D { .get_hi_addr_offset =3D get_hi_addr_offset_df2, .get_intlv_mode =3D get_intlv_mode_df2, + .get_intlv_addr_sel =3D get_intlv_addr_sel_df2, .get_intlv_num_dies =3D get_intlv_num_dies_df2, .get_intlv_num_sockets =3D get_intlv_num_sockets_df2, .get_cs_fabric_id =3D get_cs_fabric_id_df2, @@ -1294,7 +1301,7 @@ static int get_dram_addr_map(struct addr_ctx *ctx) =20 static int get_intlv_addr_bit(struct addr_ctx *ctx) { - u8 intlv_addr_sel =3D (ctx->reg_base_addr >> 8) & 0x7; + u8 intlv_addr_sel =3D df_ops->get_intlv_addr_sel(ctx); =20 /* {0, 1, 2, 3} map to address bits {8, 9, 10, 11} respectively */ if (intlv_addr_sel > 3) { --=20 2.25.1 From nobody Tue Jun 30 01:43:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 77E03C433EF for ; Thu, 27 Jan 2022 20:42:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344277AbiA0Umj (ORCPT ); Thu, 27 Jan 2022 15:42:39 -0500 Received: from mail-mw2nam12on2054.outbound.protection.outlook.com ([40.107.244.54]:37152 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1344189AbiA0Uly (ORCPT ); Thu, 27 Jan 2022 15:41:54 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EfHJGUqem2Sd1C4Ou7XyaYV1Sj9sm4z2PWqr3L0x/e68dFrd+YW3SLQY3n2mnQ8tuXrg9H0iuTtDaGKnXDKYiT1eEPVB/gcDsHMNoA6kKTPSb3hWbhUkTpPWh/TgaJ6jhEVNjSaGcdC4wxcJQZJgdKqob67jXgJfb9bA32BTenYA8LaV40NJR9POC5o4DbAVC+MDgzb/gu3INnUePS93A4HUysmPgSlo6f34jRFYOWsW+hYamjD/cR8WmI4HIsNbB/FtqYcKPAcKmxDH4m6Rc6Wdbu+hof3eBUtTIzQ618mYVAHKEmOvsP69X7oMTEjS3D4H+OKHzDRzP7f3YYdl6Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NsAgl5IzAguiZ4HVqyiWLCVQ2XppYBxPAYdfYIPTvY8=; b=B4lGCYi7cSPs4DydlSvMfg67SFV9Qngq0F3ezfRCAZjgqoGNrswrvlrCGd3IrZLgMItsahjmHU/ies0d2z052RORHeaV+QbRBJ77Tk8rPsVEqJASR1yqVOJE/H73zJ0pqDIuKONij9BNzS4/WLWQ/duG2UZiCHFN3s/6rG4JIFs49ksk0EFbly/KGhQvTkWzTRO82v3h7Y7cUv4xPbXpIoQcXG2xNzPxRLGC0/6ZhMe2MelSlxOGPR3uHy17quZRvwmYJJpHjLPHT0IHaCoQzAseAV7hRK28xuapsfHUgCen/t6rXZOb3MALl0G+kfJn86ECW7tq6u3K4xuZ/TFhJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NsAgl5IzAguiZ4HVqyiWLCVQ2XppYBxPAYdfYIPTvY8=; b=fcRQxvhIDODDWDraARUMdqu9Z37W+aogoNIMRF2zx2W8RRHFQDDk0640iMAQFbIFOgywY4bSzssg7YzLrD7HWn9cznY9JMJJW2PYIWKWDqoSC+dUyLZpfcL19NGd4uV9wPb+2jTPiWyrHaVRDjy/3joBcXfjGIyV/ZJnOpjNcy0= Received: from MWHPR17CA0076.namprd17.prod.outlook.com (2603:10b6:300:c2::14) by PH0PR12MB5403.namprd12.prod.outlook.com (2603:10b6:510:eb::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.10; Thu, 27 Jan 2022 20:41:53 +0000 Received: from CO1NAM11FT028.eop-nam11.prod.protection.outlook.com (2603:10b6:300:c2:cafe::ae) by MWHPR17CA0076.outlook.office365.com (2603:10b6:300:c2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.18 via Frontend Transport; Thu, 27 Jan 2022 20:41:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT028.mail.protection.outlook.com (10.13.175.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4930.15 via Frontend Transport; Thu, 27 Jan 2022 20:41:52 +0000 Received: from yaz-ethanolx.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Thu, 27 Jan 2022 14:41:47 -0600 From: Yazen Ghannam To: CC: , , , , , , , Yazen Ghannam Subject: [PATCH v4 24/24] EDAC/amd64: Add support for address translation on DF3 systems Date: Thu, 27 Jan 2022 20:41:15 +0000 Message-ID: <20220127204115.384161-25-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220127204115.384161-1-yazen.ghannam@amd.com> References: <20220127204115.384161-1-yazen.ghannam@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 39f3dd8b-c110-4068-0e36-08d9e1d5732f X-MS-TrafficTypeDiagnostic: PH0PR12MB5403:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WiwT/OUBwsZvTqdmllbHQt/BSldy4T5PhKyRj8bw9SJnFRbhZHdhLOJUX1QzP8ZZVS5POyNzPUMnZ0FENgFXcKG2sFHzsmdE5jCuV3mCHrM6RYa1EBUYlP3FGhki0bcnpQeEEHsOAHQqrhdf8/tGdWmsllTsPuuRF101N97wYGXkQMh36C5/2VM2Q4i9+YUvo5m81d3nhs9TTZtM0MrwudjOVmwVoSlcuBpnRh9NOq1UDTdl91x/HSxYqLKz/3bl6fsPh8Zjy9qV5HhE8bgYWMyZTNFmjdbIiVaBXWX4g2B8jC0jyV4zA7b91NubDswnoBZIvZFHQHZiynCbNetHwTB7WQ2AfjO5375MxbpEgtcslI2SPqRdz0d48iPFj7zAVR5skR7+UvpZgeeukOGfM3O8nnqn+w4hUEf2xURrn2nXDs3RsJnpblCtgHthnfvmW83ZBSKWQvkXY3fgpvSDODF1nguE4oy7P6p4YJ2I7TQDvucUQYEc1xzE3lttf+VC4VpmgBnYO7fwORDEI2jbu32AimuTBPqbw4Lv0xh1j3/gJzrCVnda4pWTrS6uf17SRPqlfCtbKVrjvkU4huNTnGhjc5auls8Jp7T7CtpPlZFU2u1gE9DSX/77MV1YO1XcuqDmUHZQAK6nPBbuwvrjC+7e9Qw5OT16PDuoKBdtThlSwodK2BownJ0bCZ7wHU+1E1EHyDWlcdyf6qYm5Je1xkapweZqMispHcrhDqTucFdT9kM4q8mtzmBvV0BpR8KS9PBUAboVqIgq7raWM5NjDXF45ftaiIq4bWF9LGdRGy+hzpB2B9Qaso/TbI1zYIunTVP1Bre7ZHQ0i0XyMclHy1rBenWvMck/wb6IvFGUHY/XStEPR5sQqKth0tfd17+k X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(36840700001)(40470700004)(46966006)(356005)(1076003)(508600001)(70586007)(5660300002)(82310400004)(40460700003)(26005)(316002)(36756003)(6666004)(6916009)(44832011)(8676002)(7696005)(2616005)(86362001)(966005)(2906002)(4326008)(70206006)(36860700001)(81166007)(54906003)(16526019)(8936002)(186003)(47076005)(83380400001)(336012)(426003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 20:41:52.4352 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39f3dd8b-c110-4068-0e36-08d9e1d5732f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT028.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5403 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" DF3-based systems (Rome and later) support new interleaving modes and a number of bit fields have changed or moved entirely. Add support for these new modes and fields. Refactoring should be minimal due to earlier changes, and most updates will be additions. Signed-off-by: Yazen Ghannam --- Link: https://lore.kernel.org/r/20211028175728.121452-30-yazen.ghannam@amd.com v3->v4: * Added glossary entry. v2->v3: * Was patch 30 in v2. * Drop "df_regs" use. * Set "df_ops" during module init. v1->v2: * Moved from arch/x86 to EDAC. * Use function pointers as needed. drivers/edac/amd64_edac.c | 188 +++++++++++++++++++++++++++++++++++++- 1 file changed, 186 insertions(+), 2 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 34405c8940fb..d213f9ecab16 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -991,6 +991,7 @@ static int sys_addr_to_csrow(struct mem_ctl_info *mci, = u64 sys_addr) /* * Glossary of acronyms used in address translation for Zen-based systems * + * COD =3D Cluster-on-Die * CS =3D Coherent Slave * DF =3D Data Fabric */ @@ -1062,6 +1063,11 @@ static int df_indirect_read_broadcast(u16 node, u8 f= unc, u16 reg, u32 *lo) enum intlv_modes { NONE =3D 0x00, NOHASH_2CH =3D 0x01, + NOHASH_4CH =3D 0x03, + NOHASH_8CH =3D 0x05, + HASH_COD4_2CH =3D 0x0C, + HASH_COD2_4CH =3D 0x0D, + HASH_COD1_8CH =3D 0x0E, DF2_HASH_2CH =3D 0x21, }; =20 @@ -1074,6 +1080,7 @@ struct addr_ctx { u32 reg_base_addr; u32 reg_limit_addr; u32 reg_fab_id_mask0; + u32 reg_fab_id_mask1; u16 cs_fabric_id; u16 die_id_mask; u16 socket_id_mask; @@ -1085,6 +1092,7 @@ struct addr_ctx { u8 intlv_num_dies; u8 intlv_num_sockets; u8 cs_id; + u8 node_id_shift; int (*dehash_addr)(struct addr_ctx *ctx); void (*make_space_for_cs_id)(struct addr_ctx *ctx); void (*insert_cs_id)(struct addr_ctx *ctx); @@ -1245,6 +1253,168 @@ struct data_fabric_ops df2_ops =3D { .get_component_id_mask =3D get_component_id_mask_df2, }; =20 +static u64 get_hi_addr_offset_df3(struct addr_ctx *ctx) +{ + return (ctx->reg_dram_offset & GENMASK_ULL(31, 12)) << 16; +} + +static void make_space_for_cs_id_cod_hash(struct addr_ctx *ctx) +{ + u8 num_intlv_bits =3D ctx->intlv_num_chan; + + num_intlv_bits +=3D ctx->intlv_num_sockets; + expand_bits(ctx->intlv_addr_bit, 1, &ctx->ret_addr); + if (num_intlv_bits > 1) + expand_bits(12, num_intlv_bits - 1, &ctx->ret_addr); +} + +static void insert_cs_id_cod_hash(struct addr_ctx *ctx) +{ + ctx->ret_addr |=3D ((ctx->cs_id & 0x1) << ctx->intlv_addr_bit); + ctx->ret_addr |=3D ((ctx->cs_id & 0xE) << 11); +} + +static int dehash_addr_df3(struct addr_ctx *ctx) +{ + u8 hashed_bit, intlv_ctl_64k, intlv_ctl_2M, intlv_ctl_1G; + + /* Read D18F0x3F8 (DfGlobalCtrl). */ + if (df_indirect_read_broadcast(0, 0, 0x3F8, &ctx->tmp)) + return -EINVAL; + + intlv_ctl_64k =3D !!((ctx->tmp >> 20) & 0x1); + intlv_ctl_2M =3D !!((ctx->tmp >> 21) & 0x1); + intlv_ctl_1G =3D !!((ctx->tmp >> 22) & 0x1); + + hashed_bit =3D (ctx->ret_addr >> 14) ^ + ((ctx->ret_addr >> 18) & intlv_ctl_64k) ^ + ((ctx->ret_addr >> 23) & intlv_ctl_2M) ^ + ((ctx->ret_addr >> 32) & intlv_ctl_1G) ^ + (ctx->ret_addr >> ctx->intlv_addr_bit); + + hashed_bit &=3D BIT(0); + + if (hashed_bit !=3D ((ctx->ret_addr >> ctx->intlv_addr_bit) & BIT(0))) + ctx->ret_addr ^=3D BIT(ctx->intlv_addr_bit); + + if (ctx->intlv_mode !=3D HASH_COD2_4CH && + ctx->intlv_mode !=3D HASH_COD1_8CH) + return 0; + + hashed_bit =3D (ctx->ret_addr >> 12) ^ + ((ctx->ret_addr >> 16) & intlv_ctl_64k) ^ + ((ctx->ret_addr >> 21) & intlv_ctl_2M) ^ + ((ctx->ret_addr >> 30) & intlv_ctl_1G); + + hashed_bit &=3D BIT(0); + + if (hashed_bit !=3D ((ctx->ret_addr >> 12) & BIT(0))) + ctx->ret_addr ^=3D BIT(12); + + if (ctx->intlv_mode !=3D HASH_COD1_8CH) + return 0; + + hashed_bit =3D (ctx->ret_addr >> 13) ^ + ((ctx->ret_addr >> 17) & intlv_ctl_64k) ^ + ((ctx->ret_addr >> 22) & intlv_ctl_2M) ^ + ((ctx->ret_addr >> 31) & intlv_ctl_1G); + + hashed_bit &=3D BIT(0); + + if (hashed_bit !=3D ((ctx->ret_addr >> 13) & BIT(0))) + ctx->ret_addr ^=3D BIT(13); + + return 0; +} + +static int get_intlv_mode_df3(struct addr_ctx *ctx) +{ + ctx->intlv_mode =3D (ctx->reg_base_addr >> 2) & 0xF; + + if (ctx->intlv_mode =3D=3D HASH_COD4_2CH || + ctx->intlv_mode =3D=3D HASH_COD2_4CH || + ctx->intlv_mode =3D=3D HASH_COD1_8CH) { + ctx->make_space_for_cs_id =3D make_space_for_cs_id_cod_hash; + ctx->insert_cs_id =3D insert_cs_id_cod_hash; + ctx->dehash_addr =3D dehash_addr_df3; + } else { + ctx->make_space_for_cs_id =3D make_space_for_cs_id_simple; + ctx->insert_cs_id =3D insert_cs_id_simple; + } + + return 0; +} + +static u8 get_intlv_addr_sel_df3(struct addr_ctx *ctx) +{ + return (ctx->reg_base_addr >> 9) & 0x7; +} + +static void get_intlv_num_dies_df3(struct addr_ctx *ctx) +{ + ctx->intlv_num_dies =3D (ctx->reg_base_addr >> 6) & 0x3; +} + +static void get_intlv_num_sockets_df3(struct addr_ctx *ctx) +{ + ctx->intlv_num_sockets =3D (ctx->reg_base_addr >> 8) & 0x1; +} + +static u8 get_die_id_shift_df3(struct addr_ctx *ctx) +{ + return ctx->node_id_shift; +} + +static u8 get_socket_id_shift_df3(struct addr_ctx *ctx) +{ + return ((ctx->reg_fab_id_mask1 >> 8) & 0x3) + ctx->node_id_shift; +} + +static int get_masks_df3(struct addr_ctx *ctx) +{ + /* Read D18F1x208 (SystemFabricIdMask). */ + if (df_indirect_read_broadcast(ctx->nid, 1, 0x208, &ctx->reg_fab_id_mask0= )) + return -EINVAL; + + /* Read D18F1x20C (SystemFabricIdMask1) */ + if (df_indirect_read_broadcast(0, 1, 0x20C, &ctx->reg_fab_id_mask1)) + return -EINVAL; + + ctx->node_id_shift =3D ctx->reg_fab_id_mask1 & 0xF; + + ctx->die_id_mask =3D (ctx->reg_fab_id_mask1 >> 16) & 0x7; + ctx->die_id_mask <<=3D ctx->node_id_shift; + + ctx->socket_id_mask =3D (ctx->reg_fab_id_mask1 >> 24) & 0x7; + ctx->socket_id_mask <<=3D ctx->node_id_shift; + + return 0; +} + +static u16 get_dst_fabric_id_df3(struct addr_ctx *ctx) +{ + return ctx->reg_limit_addr & 0x3FF; +} + +static u16 get_component_id_mask_df3(struct addr_ctx *ctx) +{ + return ctx->reg_fab_id_mask0 & 0x3FF; +} + +struct data_fabric_ops df3_ops =3D { + .get_hi_addr_offset =3D get_hi_addr_offset_df3, + .get_intlv_mode =3D get_intlv_mode_df3, + .get_intlv_addr_sel =3D get_intlv_addr_sel_df3, + .get_intlv_num_dies =3D get_intlv_num_dies_df3, + .get_intlv_num_sockets =3D get_intlv_num_sockets_df3, + .get_cs_fabric_id =3D get_cs_fabric_id_df2, + .get_masks =3D get_masks_df3, + .get_die_id_shift =3D get_die_id_shift_df3, + .get_socket_id_shift =3D get_socket_id_shift_df3, + .get_dst_fabric_id =3D get_dst_fabric_id_df3, + .get_component_id_mask =3D get_component_id_mask_df3, +}; + struct data_fabric_ops *df_ops; =20 static int get_dram_offset_reg(struct addr_ctx *ctx) @@ -1303,8 +1473,8 @@ static int get_intlv_addr_bit(struct addr_ctx *ctx) { u8 intlv_addr_sel =3D df_ops->get_intlv_addr_sel(ctx); =20 - /* {0, 1, 2, 3} map to address bits {8, 9, 10, 11} respectively */ - if (intlv_addr_sel > 3) { + /* {0, 1, 2, 3, 4} map to address bits {8, 9, 10, 11, 12} respectively */ + if (intlv_addr_sel > 4) { pr_debug("Invalid interleave address select %d.\n", intlv_addr_sel); return -EINVAL; } @@ -1322,9 +1492,18 @@ static void get_intlv_num_chan(struct addr_ctx *ctx) ctx->intlv_num_chan =3D 0; break; case NOHASH_2CH: + case HASH_COD4_2CH: case DF2_HASH_2CH: ctx->intlv_num_chan =3D 1; break; + case NOHASH_4CH: + case HASH_COD2_4CH: + ctx->intlv_num_chan =3D 2; + break; + case NOHASH_8CH: + case HASH_COD1_8CH: + ctx->intlv_num_chan =3D 3; + break; default: /* Valid interleaving modes where checked earlier. */ break; @@ -4197,14 +4376,17 @@ static struct amd64_family_type *per_family_init(st= ruct amd64_pvt *pvt) } else if (pvt->model >=3D 0x30 && pvt->model <=3D 0x3f) { fam_type =3D &family_types[F17_M30H_CPUS]; pvt->ops =3D &family_types[F17_M30H_CPUS].ops; + df_ops =3D &df3_ops; break; } else if (pvt->model >=3D 0x60 && pvt->model <=3D 0x6f) { fam_type =3D &family_types[F17_M60H_CPUS]; pvt->ops =3D &family_types[F17_M60H_CPUS].ops; + df_ops =3D &df3_ops; break; } else if (pvt->model >=3D 0x70 && pvt->model <=3D 0x7f) { fam_type =3D &family_types[F17_M70H_CPUS]; pvt->ops =3D &family_types[F17_M70H_CPUS].ops; + df_ops =3D &df3_ops; break; } fallthrough; @@ -4226,6 +4408,7 @@ static struct amd64_family_type *per_family_init(stru= ct amd64_pvt *pvt) fam_type =3D &family_types[F17_M70H_CPUS]; pvt->ops =3D &family_types[F17_M70H_CPUS].ops; fam_type->ctl_name =3D "F19h_M20h"; + df_ops =3D &df3_ops; break; } else if (pvt->model >=3D 0x50 && pvt->model <=3D 0x5f) { fam_type =3D &family_types[F19_M50H_CPUS]; @@ -4241,6 +4424,7 @@ static struct amd64_family_type *per_family_init(stru= ct amd64_pvt *pvt) fam_type =3D &family_types[F19_CPUS]; pvt->ops =3D &family_types[F19_CPUS].ops; family_types[F19_CPUS].ctl_name =3D "F19h"; + df_ops =3D &df3_ops; break; =20 default: --=20 2.25.1