From patchwork Thu Jul 11 07:33:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730104 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2077.outbound.protection.outlook.com [40.107.220.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52E9B14B978 for ; Thu, 11 Jul 2024 07:33:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.77 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683221; cv=fail; b=DqJkxxK2Y2MtTi6SGZOhw9pjq+hSltWKkcfuiEiitUiYmNvyHfdBAXk+oIigeFQTiyih5cXCnf1NOeAWHTsf8Lq7JeVTr8aktF9wbyJqQ/NuvPGDzSttErBuGk+DwcjTGqv+9a/XeXjEm5Pf+D+0Rjb//qxAlGlguywse6uFaz0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683221; c=relaxed/simple; bh=h+QCMvgAyrZ9+MbPqPKfZ0dhaEnnjAPS3UEmgic3jTM=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=jKiIzWFI1cWDOMXehdiBljsol+WU+L+PqatSsnrIPYpq3Xf3quNIMA5AzKiM0tEK/plCzwzd7NdI94FUIYFejeRsZ5fz3M6hL7Qrk6xzrVwNdt0K5s1e+ibYunbgbG0LhtsSqqfQJHelhX8t9lMRGO4tx4qJl/2UnGf0miu4aJM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=uHNciMI9; arc=fail smtp.client-ip=40.107.220.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="uHNciMI9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kTVFl6xe1G9QkkHJqQuC0RvIjlOYwPz2tbEd2/CZLIHlUZ0aWK6fkekx+Asca+PmyJaQXsTwdGfIZJgoL8o5aqefr/BViJGWIZGhWMfHLpJidEjdqZPTkmf8y4a7XBUWE+UxNIv8s7jP9IRb6PDlZL7rua/E19gAyeGTs9KOOl+xvZvbeVzInbH1IWjNWytRi4wDziMnX+AN+FPVBHo5G08uRLJzCi94Ed98hDNCeuB6LXABBYFfNYegh2rUcIvsJ+xEgN9pu1ge72bOhA1wSc4uXKAawXyvUAk1uMU1h800/bkU2n+hqbaZgkCqANoQ7dCXfsW45NMEF/h2AVirQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=SjLUmVrql1SGcfqAwELFYnY2A+pDJR1ldEBNlWfqH4Q=; b=hkeN25v2KSkIHPgwaAxmhHkV+LCIAAv5BHzkrFmm+NQzz1UHuXTrSMgraEiUhdfzY1FSRRVNmtcSJRusFEtgz6B8AM/AJI1ypwz2R67SN0FajyvokmmH7PFwlAPGxX7mPgLfdJfTtVaOeAQ1JtAZOae/qITdGMfy77k9lCtTV5EhFeFR8OowBM7jd8Grm+ObpMmN45Ki/3P1gQ/D2oEYxSEgqboyfr3bIBAz3uvKRDDHxkcH6VL2I+SB94LNlAhdy8mxxlMLA3U6L+VOKw3QhU5FLk6n+JiWyKMSrFHp4rhLIILnQnyXCvO9g8vIypgccVZ5/F4qBg8bOtecdegEgQ== 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 (0) 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=SjLUmVrql1SGcfqAwELFYnY2A+pDJR1ldEBNlWfqH4Q=; b=uHNciMI9AZHMeYKcgwBHWxtO63ha2YMAX9a5fHqNYUqMUZfGgHU9rdvhVTQxoQK+18UqVkxFrWhrqtXFV2tRVYv3231oEZBgYKLKyIhlAm+nqdvNY1ETXmMtvsU16FVd9QGGG/Bk+YxPh/t5bDCGkS3QnJh11ZPY7nN2dEKrh74= Received: from BL0PR01CA0032.prod.exchangelabs.com (2603:10b6:208:71::45) by CY8PR12MB7705.namprd12.prod.outlook.com (2603:10b6:930:84::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Thu, 11 Jul 2024 07:33:36 +0000 Received: from BL02EPF0001A104.namprd05.prod.outlook.com (2603:10b6:208:71:cafe::21) by BL0PR01CA0032.outlook.office365.com (2603:10b6:208:71::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.20 via Frontend Transport; Thu, 11 Jul 2024 07:33:36 +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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A104.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:36 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:34 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 01/11] platform/x86/amd/hsmp: Create hsmp/ directory Date: Thu, 11 Jul 2024 07:33:04 +0000 Message-ID: <20240711073314.2704871-1-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A104:EE_|CY8PR12MB7705:EE_ X-MS-Office365-Filtering-Correlation-Id: 1427f65d-13e3-4ac8-0610-08dca17bc6a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: RsKnJozq4X6omCB2eaAXcuPo5xDpaD81/LUTimz+YMTJAMveVKDVDuBo76LuFUSZNJsx12CBxsO+amdJ5aUGvIPOFpZIVas8jyUBDVCbPtiPFhRZ+doi/10t4ZcMV6uH6EY6YEa9Tl9L9+NUxlI7hjuqP/cDG6LX65bRINIOP77Gmq3dp//MIvzpRNclvtOynQhD0A5u+JP5rnAFDIB35/J6n3LJRUZ0XU4ZDcnB5AUd1xERYrdLFtyp06EhTTzoROxVi6L/zY7Eh3y80itshQnF7ESjRncCUxhzpzmt6+SNvm6uBRT9B1Nb6xvtMya/5f0W0/LajaDPtPqi2G2/3vE1S408y2wFJVfZMXVJKUCrvxjULs/2PuoN/u7TELxyOnPPXahYDg7Wh7iqQsjk+a5ZebbSTUR666axpoW+NebKxB2hq50pUEA+FDMvoomAUI3H5cPHB7yvI5rF5D9P3D+6dgkkgGut2k3J264G8S7LeYape7yDlhrt71yeLmrkqRd355nSX2mR/7j+kQEHiswOv2q1ER5vIp7divyiKQs5NTljagzbC4rSvFTfOXG6IDmRAv5tUqrj0Td5gghTtH2KTnpH7vKZsGMvLNRSxS0U0ijV2zLyTqhyvKxQdJp/RoBbKEdJVAQS5hN70vEc6FZw625zJS+/kHD9CcYNFIwe59VyEQE+i2mYD6LBMX8Wng+QNX2WlDKzFF+m4GcgBYcxfDwk+t0G945Nd71R9i0OgnqD3noFnlZMzp8HsGcegidJAaYijPRA3oTxYx/E/QDQv4rMGjUZFhnvJh/SHgmBIW2hcM0phr0Ov3bB9aOXOyd0mnlVIBVl19yZfocD37TZVrJbXZnUkmJs2qcSdttNp6M2NLOrMay1bz2yW8etRd8slX2XtyB4RUf99W1+OUvSsg3+7ockaWBUY+EJWdS5nB04lK7b/tG/uj8B27M3N+p2V1Upjrq5J2jqKDaXQYpEyE0jhEs+uUstOuR/IFYfPecJYarFbnN1s1uVeGKvKIzhPD6e0lZQskeO+zchVg9Ox36rMFW24/GAq5U+GdvJzbm4S4r1IRFrqNxFtx+Hk/LLWXipvO9n9XNrWqe1uQMnVUdQDwwAS77f8kyDZpVJYPIE0NYzXnnw7vPjpO2jmg9zNbf9Vu44LVsKi36diTYq11SSApH7o+H64odU8IQ1OVSBR73wYp/R3kpxqwv8q8Dv3UA+24AcExoNW7I3frQgomrR6rVvfa6lNc6yoe9yQGEMZFMIay6/jOalXDD0O4PQtu7j7eYaAocvXAxu4q76zN0gVFVWW9yG0wrlW3vJwWbs5mcigH0rJA09jTMM5EPusKY7Fb0pNffXUmmixPzmJ7XslEunxPT9l4h0bMRaFpuUsx7vo51YX8uwfi2Mdio82GSRdlNzVthP4xKq0PVVZanqi7FQK3au9FJQi9cxTRCaaGosmcajNjbnnZ3H 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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:36.4411 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1427f65d-13e3-4ac8-0610-08dca17bc6a0 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: BL02EPF0001A104.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7705 This is in preparation to splitting ACPI and platform device drivers. Create and move hsmp specific code into its own directory, no logical changes. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: None MAINTAINERS | 2 +- drivers/platform/x86/amd/Kconfig | 14 +------------- drivers/platform/x86/amd/Makefile | 3 +-- drivers/platform/x86/amd/hsmp/Kconfig | 17 +++++++++++++++++ drivers/platform/x86/amd/hsmp/Makefile | 8 ++++++++ drivers/platform/x86/amd/{ => hsmp}/hsmp.c | 0 6 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 drivers/platform/x86/amd/hsmp/Kconfig create mode 100644 drivers/platform/x86/amd/hsmp/Makefile rename drivers/platform/x86/amd/{ => hsmp}/hsmp.c (100%) diff --git a/MAINTAINERS b/MAINTAINERS index d6c90161c7bf..a7d79d1f7ec1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1037,7 +1037,7 @@ S: Maintained F: Documentation/arch/x86/amd_hsmp.rst F: arch/x86/include/asm/amd_hsmp.h F: arch/x86/include/uapi/asm/amd_hsmp.h -F: drivers/platform/x86/amd/hsmp.c +F: drivers/platform/x86/amd/hsmp/ AMD IOMMU (AMD-VI) M: Joerg Roedel diff --git a/drivers/platform/x86/amd/Kconfig b/drivers/platform/x86/amd/Kconfig index f88682d36447..2c671cc17d63 100644 --- a/drivers/platform/x86/amd/Kconfig +++ b/drivers/platform/x86/amd/Kconfig @@ -3,22 +3,10 @@ # AMD x86 Platform Specific Drivers # +source "drivers/platform/x86/amd/hsmp/Kconfig" source "drivers/platform/x86/amd/pmf/Kconfig" source "drivers/platform/x86/amd/pmc/Kconfig" -config AMD_HSMP - tristate "AMD HSMP Driver" - depends on AMD_NB && X86_64 && ACPI - help - The driver provides a way for user space tools to monitor and manage - system management functionality on EPYC server CPUs from AMD. - - Host System Management Port (HSMP) interface is a mailbox interface - between the x86 core and the System Management Unit (SMU) firmware. - - If you choose to compile this driver as a module the module will be - called amd_hsmp. - config AMD_WBRF bool "AMD Wifi RF Band mitigations (WBRF)" depends on ACPI diff --git a/drivers/platform/x86/amd/Makefile b/drivers/platform/x86/amd/Makefile index dcec0a46f8af..96ec24c8701b 100644 --- a/drivers/platform/x86/amd/Makefile +++ b/drivers/platform/x86/amd/Makefile @@ -5,7 +5,6 @@ # obj-$(CONFIG_AMD_PMC) += pmc/ -amd_hsmp-y := hsmp.o -obj-$(CONFIG_AMD_HSMP) += amd_hsmp.o +obj-y += hsmp/ obj-$(CONFIG_AMD_PMF) += pmf/ obj-$(CONFIG_AMD_WBRF) += wbrf.o diff --git a/drivers/platform/x86/amd/hsmp/Kconfig b/drivers/platform/x86/amd/hsmp/Kconfig new file mode 100644 index 000000000000..b55d4ed9bceb --- /dev/null +++ b/drivers/platform/x86/amd/hsmp/Kconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# AMD HSMP Driver +# + +config AMD_HSMP + tristate "AMD HSMP Driver" + depends on AMD_NB && X86_64 && ACPI + help + The driver provides a way for user space tools to monitor and manage + system management functionality on EPYC server CPUs from AMD. + + Host System Management Port (HSMP) interface is a mailbox interface + between the x86 core and the System Management Unit (SMU) firmware. + + If you choose to compile this driver as a module the module will be + called amd_hsmp. diff --git a/drivers/platform/x86/amd/hsmp/Makefile b/drivers/platform/x86/amd/hsmp/Makefile new file mode 100644 index 000000000000..fda64906a5e8 --- /dev/null +++ b/drivers/platform/x86/amd/hsmp/Makefile @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Makefile for drivers/platform/x86/amd/hsmp +# AMD HSMP Driver +# + +obj-$(CONFIG_AMD_HSMP) += amd_hsmp.o +amd_hsmp-objs := hsmp.o diff --git a/drivers/platform/x86/amd/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c similarity index 100% rename from drivers/platform/x86/amd/hsmp.c rename to drivers/platform/x86/amd/hsmp/hsmp.c From patchwork Thu Jul 11 07:33:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730105 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2081.outbound.protection.outlook.com [40.107.94.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C06314B978 for ; Thu, 11 Jul 2024 07:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683223; cv=fail; b=oMte4Uss0hzY20O1cyuh93gvmfITQ88875FF4T4ZxZNHPVcBLeXcwNar0ODPc3IZuL1FB5uH6Kh6lMQnfGy5VVPSRtihiTN3zO6VmDEtjlKDTW1ldugo+ozBPV7dtSnjoOr88WYyb93/wEoBRwn43eJFbMPcPWYH8s7qt4/gmJs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683223; c=relaxed/simple; bh=TFv5Y03eXRapwLxvXhe46TkvZsVApwtxP0n2vIABWS8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Xyz9VQJPDNxCvuppJA3ddSfMU99VebddjFJkw/Iwu+MkLZLXTyw3qAu4RE0B/ZvddrcmlvHfkKYvxG/O0+4Cgjlr9dXKPjMLSnVSMG9dIbbuBsWRjKFUMIy98YeRbPzdU29ybT2OH5iAbKGqqz/SETMuanDm2WKdGQM/7Y+UGJA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Co/+JXv3; arc=fail smtp.client-ip=40.107.94.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Co/+JXv3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A6uHh86w2/0Fgiw7sjHRl7ptJj6Fb4HNVY0tkRjWqKpHIz1i8Uz0d0agXWaHg7cnuvOYlsi3RixvFETNk0eol0wAeVf3CR3EQS1brWmCBxqe2dfppxnIoUulidO2Jw4aAhi2MzMF+89I8xiGgrzR2mhZ3dcHc6qImvgUUCr+p/gEq1YlHay5ciRzsMWPE2wTVkDTMa00B8JaYfSzxNlnyO6wj19wtJyxb0GFmcG9bLP0zY7Q1RGCqJ3RQo+Ec5lBqnhsxQVlqG9R62MpsvAnHys/1B8le3hsvnPGOx1GXjsz2C7cBX44wbkZm3KybK29PbrFmTZVhttc6XEXpQdfOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=sp7oHV0Dwmi3+5Ac/9pJYTml25UB/nZdCmKaocxSKMA=; b=rOMEylKkSXodJi+oqsuov0o76xPXY0k+up6coqt+nT9kAZ9o/VlQVWJEavsQQhVrpDn5SMil1OXHZtM7QJiK9hWmkD8cXCbdxkBwAm+k6zJCp5tYvRFZNK008TTp+YopMW9srhqRAlHrZ9EsvUuwt7mH1h93z0lAfVddxqZEZtlRcFsJ/uRyd7PEUlCZFcCUM3DM/f8BDhWAgDgOyIwtKb2NRL3GokQCA8N4sFB+0I8c7fSHBHfOz35AR3a8jUx9mHcBy0Lzy+TstEQtrZAjTsBmY2EIvXqkvAtfl0vYg06nePsc65RSDcoare07R37D2ej+mk44H50UgU7qvpgy6w== 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 (0) 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=sp7oHV0Dwmi3+5Ac/9pJYTml25UB/nZdCmKaocxSKMA=; b=Co/+JXv30HwKYb9vp1pOUp7nRzLwlErJtZMkogYtH5bIhSpNpWf5FFnP6R50YOBxpLX8ykzY2To9vfmJ/Ne1jRMHXmT760yCi5sg5yrcatiwZolFDORWS8ziPQ7q3VtussJHIACKkk5Zo00ixyW7iceww2Eshkm7aG77cBXpC90= Received: from BL0PR01CA0023.prod.exchangelabs.com (2603:10b6:208:71::36) by SN7PR12MB7347.namprd12.prod.outlook.com (2603:10b6:806:29a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Thu, 11 Jul 2024 07:33:39 +0000 Received: from BL02EPF0001A104.namprd05.prod.outlook.com (2603:10b6:208:71:cafe::76) by BL0PR01CA0023.outlook.office365.com (2603:10b6:208:71::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36 via Frontend Transport; Thu, 11 Jul 2024 07:33: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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A104.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:39 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:36 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 02/11] platform/x86/amd/hsmp: Create wrapper function init_acpi() Date: Thu, 11 Jul 2024 07:33:05 +0000 Message-ID: <20240711073314.2704871-2-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A104:EE_|SN7PR12MB7347:EE_ X-MS-Office365-Filtering-Correlation-Id: b851cfd6-df34-46f2-7d13-08dca17bc83c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?WeCMLsvh3Bccf0matqpNF1720WUm21l?= =?utf-8?q?G/Z3JFCMkL2ONuQou5sLqVTn4ahjfWVtMZ/GVF9fvc9COD3YUb1msEh8dLfi3GJaS?= =?utf-8?q?QsEBNc+oHHeoWofluVVUfiUKz1dm4+RSZTnMBZLbjNmlM3ZBTTZLEyJH3Smv7bQk9?= =?utf-8?q?Fm9vhPd98Y753QlZLcnnoMgjUJD4fKzB3Jr7pT7cC270YDPte5+5xntNbCxDQk+JL?= =?utf-8?q?YKPMKoShoUd7O4/zA1366TKLJvSquVfoHooqMQX3Z1ZjqAGQbmemstIQUz7pXDtgp?= =?utf-8?q?Ju3sViBIgPjiOGi/G+Sk10AOmWvX0LjtPBt581SbMH/gqIoSRrTVj6ukRfC0Zht+S?= =?utf-8?q?nG3/CRyo83ccX3sD2BnZaj28MkDJLLhCB4gMcYnskANWYGIZFdLcqqlEAT9UBzPYO?= =?utf-8?q?MMHIRO27s7FdatO52ogze3+pSBAwCrCrD0YY9tym89jli6WiS1ErQ+tvON53C7mu/?= =?utf-8?q?S1i1BnLVwltnDP7p+X1yQcYjAW9Te593SxNMZ1bCW6+0S5mHhhybtAfX77a+AEfKu?= =?utf-8?q?xZ4G9KapARViZnjQRyy21bNkN7fycbUZdTlrWdNx5X38yIG9cJ4FlDr+1wdCYSakp?= =?utf-8?q?oFphFeRTMd5opTRT1IG4IB2FAVpvrkDoMsX6Dm+viObvkdEBv20m6wntp9LvecOKF?= =?utf-8?q?81XCYG/nI+1TFtblekfnz2jWDzZullFlsPxyM5uR7vgDi1oN9PLF3/scc45iKf2po?= =?utf-8?q?4Elv0mfM7NGQDQsJ6wLmfF1EzwNGKZMo2imAMnu9jzu80Y66xYINp/ryBCY4KwLYq?= =?utf-8?q?hqpxsyHHpxxdwyPOuETqmbBdrYvylivca4p/YXTcwcw85z8SSUkt15TtaRCGpblZt?= =?utf-8?q?c2+GfX340JohYv5cAsyudx/2+8uuUrZxEoGS+8l7krJAufmxTZ83AjIN0HPnGBdKu?= =?utf-8?q?lAjvKPthCLOy1AXmTu7XlemcjMEpiRgHX0abjBtuSvfi2qOKAO8w6YZnoxblgj8DP?= =?utf-8?q?ijq90kVbw4RrLBpXhX+bP3vjVELpOuG+mECk5y5soBhvq1fvI90HetRT8k1Akm0/L?= =?utf-8?q?Z8N34ffMg6vVsCughyK8E9sQS4wjgFGHXqXkngq+/0zavYpkRvDa/ljgwJVTfxROX?= =?utf-8?q?tGOW9LOj0674sU3N23YY/7QKs6NRvKL96m5PMEahOcThdrQnpGuudXjy9MQ2vDezo?= =?utf-8?q?k76A3h5DGPe5sf/XtQv6pLWU+YHzzhHw6zNxMmEEiWnH7PZEfNPXedfOgMsP6VNAq?= =?utf-8?q?jt8j+PJu3/vKMy/+6x+38oIYkL77jVRmvazrhV1P1xzglepyKypE6Qj6jqanTTowX?= =?utf-8?q?YYMU+hpD1ZGSGUU8pU8TW+E7DDdAaOxAIkKB9O4ERtRj/x5lzFzb9xDjuvbQIiPpQ?= =?utf-8?q?q8qsOjw0gC0Nx1DfU/6v9DTLcKzSHF4uOqMyiJgmcqO01j2a4QGrLkS4sJrUdQQ+P?= =?utf-8?q?MmlJU9NloP2?= 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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:39.0661 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b851cfd6-df34-46f2-7d13-08dca17bc83c 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: BL02EPF0001A104.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7347 This is in preparation to splitting ACPI and platform device drivers. Having init_acpi() helps in smooth code movement. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi Reviewed-by: Ilpo Järvinen --- Changes since v1: Add "Reviewed-by: Ilpo Järvinen " drivers/platform/x86/amd/hsmp/hsmp.c | 91 ++++++++++++++++++---------- 1 file changed, 59 insertions(+), 32 deletions(-) diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 8fcf38eed7f0..10ab9b2437f1 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -778,6 +778,11 @@ static int init_platform_device(struct device *dev) dev_err(dev, "Is HSMP disabled in BIOS ?\n"); return ret; } + ret = hsmp_cache_proto_ver(i); + if (ret) { + dev_err(dev, "Failed to read HSMP protocol version\n"); + return ret; + } } return 0; @@ -789,10 +794,53 @@ static const struct acpi_device_id amd_hsmp_acpi_ids[] = { }; MODULE_DEVICE_TABLE(acpi, amd_hsmp_acpi_ids); +static bool check_acpi_support(struct device *dev) +{ + struct acpi_device *adev = ACPI_COMPANION(dev); + + if (adev && !acpi_match_device_ids(adev, amd_hsmp_acpi_ids)) + return true; + + return false; +} + +static int init_acpi(struct device *dev) +{ + u16 sock_ind; + int ret; + + ret = hsmp_get_uid(dev, &sock_ind); + if (ret) + return ret; + if (sock_ind >= plat_dev.num_sockets) + return -EINVAL; + + ret = hsmp_parse_acpi_table(dev, sock_ind); + if (ret) { + dev_err(dev, "Failed to parse ACPI table\n"); + return ret; + } + + /* Test the hsmp interface */ + ret = hsmp_test(sock_ind, 0xDEADBEEF); + if (ret) { + dev_err(dev, "HSMP test message failed on Fam:%x model:%x\n", + boot_cpu_data.x86, boot_cpu_data.x86_model); + dev_err(dev, "Is HSMP disabled in BIOS ?\n"); + return ret; + } + + ret = hsmp_cache_proto_ver(sock_ind); + if (ret) { + dev_err(dev, "Failed to read HSMP protocol version\n"); + return ret; + } + + return ret; +} + static int hsmp_pltdrv_probe(struct platform_device *pdev) { - struct acpi_device *adev; - u16 sock_ind = 0; int ret; /* @@ -809,46 +857,25 @@ static int hsmp_pltdrv_probe(struct platform_device *pdev) if (!plat_dev.sock) return -ENOMEM; } - adev = ACPI_COMPANION(&pdev->dev); - if (adev && !acpi_match_device_ids(adev, amd_hsmp_acpi_ids)) { - ret = hsmp_get_uid(&pdev->dev, &sock_ind); - if (ret) - return ret; - if (sock_ind >= plat_dev.num_sockets) - return -EINVAL; - ret = hsmp_parse_acpi_table(&pdev->dev, sock_ind); - if (ret) { - dev_err(&pdev->dev, "Failed to parse ACPI table\n"); - return ret; - } - /* Test the hsmp interface */ - ret = hsmp_test(sock_ind, 0xDEADBEEF); + if (check_acpi_support(&pdev->dev)) { + ret = init_acpi(&pdev->dev); if (ret) { - dev_err(&pdev->dev, "HSMP test message failed on Fam:%x model:%x\n", - boot_cpu_data.x86, boot_cpu_data.x86_model); - dev_err(&pdev->dev, "Is HSMP disabled in BIOS ?\n"); + dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); return ret; } + ret = hsmp_create_acpi_sysfs_if(&pdev->dev); + if (ret) + dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); } else { ret = init_platform_device(&pdev->dev); if (ret) { dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); return ret; } - } - - ret = hsmp_cache_proto_ver(sock_ind); - if (ret) { - dev_err(&pdev->dev, "Failed to read HSMP protocol version\n"); - return ret; - } - - if (plat_dev.is_acpi_device) - ret = hsmp_create_acpi_sysfs_if(&pdev->dev); - else ret = hsmp_create_non_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); + if (ret) + dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); + } if (!plat_dev.is_probed) { plat_dev.hsmp_device.name = HSMP_CDEV_NAME; From patchwork Thu Jul 11 07:33:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730106 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2069.outbound.protection.outlook.com [40.107.93.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4488914B978 for ; Thu, 11 Jul 2024 07:33:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.69 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683225; cv=fail; b=FPPuoC8+Ns1K1qJCUfxUl49cGccl0oI7PpxR5ISgumoaY7B7YZVCY3b4IVD3zHRJolP4GKN+4zZk+xOOHunX0bx/AY9wSQyqGmdmDxe96V2K9cOds6LjoNDzvIKnmLZa784vYSDulF7OEkGNKpFOkXJnIV3pdVuPftf//SOR6Lw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683225; c=relaxed/simple; bh=EAKAHwOx5XIlYCUDxxIjSEhgW3jIqnHfpKTj9t6BymQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=W+cgFK586o/UHuzJClh8DvrMhoX9lGj3yolHUAN+LJGJHl/+fvxL2rPDMleOPTt0yJ9XpNvXNiRDZyaLfc5XZwcAU/Xi21LM9vNapGrY+/lM2DLHTDr1vhVt0zg2O0o8P7GyJCda6ObLeVTMsVyoujx0YOgJDNoj0R+4EIxW/D4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=ervajZHb; arc=fail smtp.client-ip=40.107.93.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="ervajZHb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NM+Dk8CZteOMxbhxK8esCsUszm4VJGgWY77nsKXdCI2xzQMMLd/f/q7JuMr4mATrkoNEmSmah2KOxLEH2eejsTaGT6SJxvBXpvj9ip/mFaYnXg7pSf/Gj0zhzm971F0RpRNQrq30eCnkWeg2YQxPZyGSTIwtV1HdhvW+pCfBx/l7Z3qpwKnz2ANf65AdtHXicYQn33hxuUdHWDhcD1E9ZZ76ZL3ogm2MyZJZI1ZCQRGeKrt5GTGVfPPWqWdOgHeC3wfQ8bjo2wUJsti0OB0pK6C/ISPBJ0/74Cnxr7AuXrJ0t09OQG13s08zMwrUoIINwHMk1NOgexhkWAt3K4gTvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=OUfFjNFS977CIWSBjS5ZnDvzIloaD4reze7Nz+/RNFY=; b=qTPgsHFIJe4KUMzLFGPtjz/X2sqXZn1vAY4IlR9RFYioKhqcD/zy1kLs5n0u+RPc7xyK+FEQi3ZGD4d/EGu5bkGxEllVnOMmDSBu3w3ZIF+NXJtESW1neps7jIM84VFTMDO/OVwRlkIAKEvAKdO/lWFEGbL0U6eIYJ6/H2+58KxhiPkUT145jfuLgwZVbSkbpI8RfTjYckVJ1v9WdhofRqAud71fKrPl4QkqtuwXx0qf3ICUQKGrBEXbbtKJuENPXbxrCMaloMZ4fSU8X2KuPTuAgtNFg/szLTR6sLPubhTvtcmp3llZ5Sq/WnZaFDHzxDg+nb9UC4pehWss95PGwQ== 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 (0) 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=OUfFjNFS977CIWSBjS5ZnDvzIloaD4reze7Nz+/RNFY=; b=ervajZHb3ek8VnwBvDx97XijivOCVOvEUhIoP9/CthdKrwnchtedyE/8tyHuU+BhzkCosrVbJYAmV0xZ3WcNDma/HDPXdHKeholrV785FeLtnhSMuuZ7ZMH8dgLSP8VlEDw4q4ZCPJk4dCFYJNPXUf1Ft9oWOw+T1H3JqYhtNcs= Received: from BL0PR01CA0022.prod.exchangelabs.com (2603:10b6:208:71::35) by CYYPR12MB8752.namprd12.prod.outlook.com (2603:10b6:930:b9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.39; Thu, 11 Jul 2024 07:33:40 +0000 Received: from BL02EPF0001A104.namprd05.prod.outlook.com (2603:10b6:208:71:cafe::1d) by BL0PR01CA0022.outlook.office365.com (2603:10b6:208:71::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36 via Frontend Transport; Thu, 11 Jul 2024 07:33: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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A104.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:40 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:38 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 03/11] platform/x86/amd/hsmp: Move structure and macros to header file Date: Thu, 11 Jul 2024 07:33:06 +0000 Message-ID: <20240711073314.2704871-3-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A104:EE_|CYYPR12MB8752:EE_ X-MS-Office365-Filtering-Correlation-Id: ddbf4aa3-f1a5-46d3-b11a-08dca17bc8d2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?iIBLMRtwhdyJd4BgmNgncxb0KprjWDh?= =?utf-8?q?/fhdUyvFHp0Ry1/fcQFrsHF8kGt0uFK39Yb5Gcc3NByg2GrulI/0Em7cNZABBjjL/?= =?utf-8?q?bAcfGHk4061/vnkX/iJ/PCbQp9WjC2AXneGhWAZUBGDM2uq4ydP0F87cog4sqBJ5G?= =?utf-8?q?7i0uwvcFd4Mjcwk1x134eydUbhJ9eR31SJSHg/3v+ePoDdTtN//b5ZM+GVymiS2+a?= =?utf-8?q?djDpqETr8w3mD4cWrMBEvZmtuxPd08HeK0u73TTQXUQq53OEctihk+SvmOkVUjfaC?= =?utf-8?q?vYshZkkRlKsEZml1JuEK1tL9GBjLG8pGhu0EJcbj+Gm9FgmA+mJth8dWsqnuc2IFq?= =?utf-8?q?YRohqWeb9aOAlU+bygO79e3t8eAK61ex/7aLck1G6I5M3bpOd8tnoBmEA120b7Udo?= =?utf-8?q?U3bJvd47Rg8w11zU/bg+oJsMx9K1BjS0RDeRolT0drcwP/wbSpztiO6WBaxQGFIGC?= =?utf-8?q?mV/ZgDGy5lYANcXdd7FjoF6JjdNSLSDolf3qXXO43S+tfOM6ojpXByjSFWx/xUkVi?= =?utf-8?q?GNdn/PKzPxXiq+OL8Gn1zFjPZVYOJ5Y+/jeemUvXg7qkISAWTr9a+EZVmoWGf/meM?= =?utf-8?q?Rf5PUrGnPqP/pqIFIzFZ1zxl7Ii6rdC4JslWvIqUf6Lp7kOSWrn2b3rBrFvshgiE+?= =?utf-8?q?YTsg0rIHDp3EYHngJeHYPwhrSkuiSc5BltvKQwO1pJuGndtnFEJAppWsH3QdmjvGD?= =?utf-8?q?RFnzrDnzVnYBt6iBCzEH68R9F3LnPaZVsQS+cJNP6qnzyBg0bUgOME+Vvd08OXWmH?= =?utf-8?q?xKICFgoY6PV5nbE40nIGFqqneXQe/957McJhtW5ZOAwltBgGvfkwCjjDnGYyFF2SX?= =?utf-8?q?9zADh5tt70QZccs4e8odZnIEFw10yHxY/DHIGA7xzrlPKr2AQSLHOtnTB143KKZnc?= =?utf-8?q?E4wLy3MlTC1xbRD4+XZp2H8VlFzX77za0HTubPMvB99LfDAmo7nd+KcARMJ57zE6Q?= =?utf-8?q?fvxOyRy12gRrtKnaeJGki7XZjKa7Y2snoWTMOWOy0KqrolwtIVOM9u1sNZjPmAvwZ?= =?utf-8?q?4w4u5sxgdhYGCZI0HNMWLIw62Vs/owd3ew8QFKqhzH+ozPFUmO5rjdSVJSwSSZwPm?= =?utf-8?q?fyZ0eaO2xwd0K/f7oLJTSiHyUu4/MB1nWSo9eR0IXJjTfI9Jqy9whKngGY/T8i8B4?= =?utf-8?q?dKYt37YaPHV9z9USQXKY03AQqhMEMl220H2p+9uIzFhWhg3/y+KxYRc77zs3HGBLY?= =?utf-8?q?68FxAh/LwI+j8O7oh0eZqbGib6nKPDLezdhaaO7eG6wgG2Nl36m6rO5T2Ws1uj3ME?= =?utf-8?q?AL1U0Qx6EDUoma0cR/nVr6kYg3l88bC0FW/edK9bOqZ0MduIwzUIvq+I2jdvx/Qjc?= =?utf-8?q?xIOVuWZ2gZrDWV7RzuTFBRqJ6H20dzasuaGAeHN24DrP4LlBCY/sEbAj0gsreIRuL?= =?utf-8?q?uxAAcpPlBGP?= 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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:40.1286 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ddbf4aa3-f1a5-46d3-b11a-08dca17bc8d2 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: BL02EPF0001A104.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8752 This is in preparation to splitting ACPI and platform device drivers. No logical change, move common structures and macros to hsmp.h Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi Reviewed-by: Ilpo Järvinen --- Changes since v1: 1. Correct typo mistake in commit message 2. Add "Reviewed-by: Ilpo Järvinen " 3. Arrange header files in alphabetical order for hsmp.h drivers/platform/x86/amd/hsmp/hsmp.c | 42 ++-------------------- drivers/platform/x86/amd/hsmp/hsmp.h | 54 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 40 deletions(-) create mode 100644 drivers/platform/x86/amd/hsmp/hsmp.h diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 10ab9b2437f1..2c9ba51b9614 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -9,15 +9,14 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include "hsmp.h" + #include #include #include -#include -#include #include #include #include -#include #include #define DRIVER_NAME "amd_hsmp" @@ -51,48 +50,11 @@ #define HSMP_INDEX_REG 0xc4 #define HSMP_DATA_REG 0xc8 -#define HSMP_CDEV_NAME "hsmp_cdev" -#define HSMP_DEVNODE_NAME "hsmp" -#define HSMP_METRICS_TABLE_NAME "metrics_bin" - -#define HSMP_ATTR_GRP_NAME_SIZE 10 - /* These are the strings specified in ACPI table */ #define MSG_IDOFF_STR "MsgIdOffset" #define MSG_ARGOFF_STR "MsgArgOffset" #define MSG_RESPOFF_STR "MsgRspOffset" -#define MAX_AMD_SOCKETS 8 - -struct hsmp_mbaddr_info { - u32 base_addr; - u32 msg_id_off; - u32 msg_resp_off; - u32 msg_arg_off; - u32 size; -}; - -struct hsmp_socket { - struct bin_attribute hsmp_attr; - struct hsmp_mbaddr_info mbinfo; - void __iomem *metric_tbl_addr; - void __iomem *virt_base_addr; - struct semaphore hsmp_sem; - char name[HSMP_ATTR_GRP_NAME_SIZE]; - struct pci_dev *root; - struct device *dev; - u16 sock_ind; -}; - -struct hsmp_plat_device { - struct miscdevice hsmp_device; - struct hsmp_socket *sock; - u32 proto_ver; - u16 num_sockets; - bool is_acpi_device; - bool is_probed; -}; - static struct hsmp_plat_device plat_dev; static int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, diff --git a/drivers/platform/x86/amd/hsmp/hsmp.h b/drivers/platform/x86/amd/hsmp/hsmp.h new file mode 100644 index 000000000000..5afc7167fac1 --- /dev/null +++ b/drivers/platform/x86/amd/hsmp/hsmp.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * AMD HSMP Platform Driver + * Copyright (c) 2024, AMD. + * All Rights Reserved. + * + * Header file for HSMP driver + */ + +#ifndef HSMP_H +#define HSMP_H + +#include +#include +#include + +#define HSMP_METRICS_TABLE_NAME "metrics_bin" + +#define HSMP_ATTR_GRP_NAME_SIZE 10 + +#define MAX_AMD_SOCKETS 8 + +#define HSMP_CDEV_NAME "hsmp_cdev" +#define HSMP_DEVNODE_NAME "hsmp" + +struct hsmp_mbaddr_info { + u32 base_addr; + u32 msg_id_off; + u32 msg_resp_off; + u32 msg_arg_off; + u32 size; +}; + +struct hsmp_socket { + struct bin_attribute hsmp_attr; + struct hsmp_mbaddr_info mbinfo; + void __iomem *metric_tbl_addr; + void __iomem *virt_base_addr; + struct semaphore hsmp_sem; + char name[HSMP_ATTR_GRP_NAME_SIZE]; + struct pci_dev *root; + struct device *dev; + u16 sock_ind; +}; + +struct hsmp_plat_device { + struct miscdevice hsmp_device; + struct hsmp_socket *sock; + u32 proto_ver; + u16 num_sockets; + bool is_acpi_device; + bool is_probed; +}; +#endif /* HSMP_H */ From patchwork Thu Jul 11 07:33:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730107 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2062.outbound.protection.outlook.com [40.107.236.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7345A4EB55 for ; Thu, 11 Jul 2024 07:33:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683229; cv=fail; b=kFg9AjCAIhJDliDkuauGNc5BIlxIR+2alL0tT7iAF+vYl2Ibj626Y5Pjh2y+mYks+5IUl2tAz4IO+VpXJN9+de6sn+bPqfQA+EIzBE+RLhKaZI0Kp/zh0CXFfeXTLwsPIOpJjN/eg9D4p1hcrCynXHk/QcqU6kuIxPDG3an1dtA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683229; c=relaxed/simple; bh=t2tgD1md/lvDtK4+ypAHmahr+LmkYPgN34y4/4B8eQA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Ib4j8LlT5AxgAfgvHQBsKIeDK3671CR8QeQXe3lJU7Tc+JxcIV1GyoYAxkjhQCb5kyFhIXpsa1nOyoki4qKEmOjZyNJ0U0lxDfTG0Qv3ODl7kcriTPEaUk/cspcqIBAuKZLoEXkX17DKOALcHu8ykrlMhWbqZTnWbal45S/Rjf8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=fAFtSNVE; arc=fail smtp.client-ip=40.107.236.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="fAFtSNVE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kBDAH+3VVpah0UeIEPm9aM8K+QcoScikgF0EIXuQwDmvaZTcLoxkFoo/scjdVDHg6/v0MurBzIgicLuJRb8JHfI+HLDO35AYDWTf1faABkpvDYT8kSAcweAKyd7qfKr6LnMvVyv+uLDoXGPFR4ZpPkrgwiQ3oE44WgQ6HVJPoY53uCFGhwEEXrIDOU/UbvOiaotzQhDcdBD0EQyypuOc5cG4LpbkL6Z8Y4uHjHTg2igaHQO6wnHJ3wbDjG6P2aU/MP1rp+L2Cmkw8oQ0CSMk56j89MDEt0AfJ5y/u+lb6hEeKi69tOxmps8CvRyhXfais7y+k6/PUxzTGSgHSCDKQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=EykfnjH9rYwO/Y4szXbYocUW0AP6q1qwp09E/6IZ6xY=; b=ym2N+v9f+2350AJC/QQnuVnaLCqHWsr5fywJN16t5Gi4r5zjZ6EIANP35+vdCAlwrBdYvW1GH3DMHM8pS18iUlQoD7bqqbiLhfH2qbbxvSYg3hkTtqIg1ytGxKxcQMWvdcfrcHSzkfCoxc5NGp3MEW/ee0Xp+vJuFEj7TDWy4/+SVKnKu5VqoSTSDqAG8kggPLBqexBS5r2Lub2MVGx16k0LSb1p2y07zM17qmS8ewRi0W1X8NLKXHogb8xwOLlda/k8tY/vqEoKYowwSpVsNTawJjhoAwsvsComHS/vThi8pwiXUsk2ne9xkfdtX/Jh8vSUG7+C+jmEboScvFetCw== 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 (0) 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=EykfnjH9rYwO/Y4szXbYocUW0AP6q1qwp09E/6IZ6xY=; b=fAFtSNVEHDPnE/5G9d2D4bLSw/HjYE72XJ1YC+ifLuk5/L22Lq8gH7jIukFspmGmnov7X9M5KPVaEvr1iYzNkP0Lq4RVoivv4Vk7ziBomjBCCQDY2R870Yo1n/Fask3cXrDHBs+zYmTfxeSnS+YAGgHCaDP2QqyfIuPTxbIHe+c= Received: from BL0PR01CA0034.prod.exchangelabs.com (2603:10b6:208:71::47) by IA1PR12MB7493.namprd12.prod.outlook.com (2603:10b6:208:41b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Thu, 11 Jul 2024 07:33:43 +0000 Received: from BL02EPF0001A104.namprd05.prod.outlook.com (2603:10b6:208:71:cafe::5a) by BL0PR01CA0034.outlook.office365.com (2603:10b6:208:71::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.20 via Frontend Transport; Thu, 11 Jul 2024 07:33: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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A104.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:42 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:40 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 04/11] platform/x86/amd/hsmp: Move platform device specific code to plat.c Date: Thu, 11 Jul 2024 07:33:07 +0000 Message-ID: <20240711073314.2704871-4-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A104:EE_|IA1PR12MB7493:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f0dcda7-3d60-4e56-d8c1-08dca17bca7f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014; X-Microsoft-Antispam-Message-Info: vJYqy/0ULkTK9U1SGyzMf11DO1CvGeVa2atWW7LreGMEnZqi0YipOyX5N0LrdNLKwIBPjge8InhjxEck3gWypPmp0DZNRemFPtw1vjXs3Yf3tIRQ3dn7oTNOtmtEJNsSaH/99yCAn1pDulapJFV4Wes6BBCyFCqohXAIfcBnaRm+YvY3F6h79hj8+DTzjl3UdGYYrduagBKFRzV/Sp2wT/AengMjRRplytQiTI1OdjOHWZ6b6DPwcpa0KalQZCSHtgNxnSzrosEnz0ZwkTao54bpjMjZIHnzMY36Q3lnVjgh8s3/p5jGQRhtU3gHVVL0LlsS29ECMtzqLs2L6kXMHWnYLpWfNAqo+3oM+KrE6IriYlvaAmIDF3jR9O3OgHtVVgtBRijm2IIACl1Hazl1Z0GFCYaUQPOydEpdVKDWg/cKFSmliKqPzoJVG7dMYrGAUh04ZCeaGEK4JqglPuP0jwEUTQ/4/TcehL6J01GnIHwrRmestOQ7ziwCYGqJ3fkjbj2tgmIXfBjLSjiyKCM9j7MrRRpTQKFvD3CAXTjX7Z12wVgxwh0X1jXCp/sv7bY2Wf4errT7w6R8Up7/DSPq97kUKtTMgCj9kRrQwBpLsExvwVJsm9KnAg2HYSPTHv5KH4MoPzgCGXUu+9aTcrfOqHBuZEYU/8GACkp/Ujclmf4G2x/t0Sv22IFs8ss69UcOvlJtXSDfApsXErzHtLUrmJZ/aLAC5P6Bm+LxRtn229mcsaaZbhoIeGed4uv7Upq4lFxfNqzcKJzgMwIVLX/OtWsd9aZUutDpiW28Ea2P6NG8m7a3wps5zciG5mEXj/Xl0o0Dv5PlOFWRkDdxdGN6tWU1fFc1DR2qs6u2TVed/LtvmhNQYIFeteUZQ+u1eLWAGqGZKjZpungKAGzusDptmmVLSws5+s/GN+Rc4WF1NgrZD1UJUxK1Zj1BZ2xObT8oWpTfyQEsq5tgKKq+arI6SB1nVqneRqqAzYjGQ7VEK07q6Cso87wQ0uDmftLUfBB/aQZmXPukjWwBZb5i5WkPuqK5KqP9+9ny5bXtNJe2en7I+ZXIqtppec2npGOUCXjXsIQ9v07ce2vnm93KzQOJ3wsvuf3+ELiDxZ2ZNI37H8G2ZvL9vGxuSjvxOILomsZBStd7nm3oxUqo/XK8/0oxT1DLtMBmc+MIhD3peFCMyWf5L4Sa6C0TJgyme0JxsPm298p5QECq2ovhSlebxCOwsCxsJ/s+6txRGXwbY5HgreT2XaPLoX8ECeHBUg5llSw9AXa9iG8PU5o0m76/kx1DjxvPZjI2YNrEDRczgQRJaCmgsVC8TPm8xHOHwlj7o5DQRxU0MxNT/4yDR7gsuHih8el9ZujvTgMd6bCd9uFzLIHGUBBmrU+Ci2b9JCwxoYCG40UiNrn0KSzIYC8mD1+O9CdFK+tWjPrCuG7tHDaZ+X4lk/ViX3dFBWr0Oim/UgFJ 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:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:42.9412 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4f0dcda7-3d60-4e56-d8c1-08dca17bca7f 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: BL02EPF0001A104.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7493 Move platform device part to plat.c. No functinality/logical changes. Common code which can be used by ACPI and platform device remains in hsmp.c. ACPI code in hsmp.c will be moved to acpi.c in next patch. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: 1. Include new header file device.h in plat.c 2. Arrange headers in alphabetical order 3. Add an empty line between asm/ and linux/ headers drivers/platform/x86/amd/hsmp/Makefile | 2 +- drivers/platform/x86/amd/hsmp/hsmp.c | 350 ++----------------------- drivers/platform/x86/amd/hsmp/hsmp.h | 17 ++ drivers/platform/x86/amd/hsmp/plat.c | 338 ++++++++++++++++++++++++ 4 files changed, 371 insertions(+), 336 deletions(-) create mode 100644 drivers/platform/x86/amd/hsmp/plat.c diff --git a/drivers/platform/x86/amd/hsmp/Makefile b/drivers/platform/x86/amd/hsmp/Makefile index fda64906a5e8..fb8ba04b2f0d 100644 --- a/drivers/platform/x86/amd/hsmp/Makefile +++ b/drivers/platform/x86/amd/hsmp/Makefile @@ -5,4 +5,4 @@ # obj-$(CONFIG_AMD_HSMP) += amd_hsmp.o -amd_hsmp-objs := hsmp.o +amd_hsmp-objs := hsmp.o plat.o diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 2c9ba51b9614..d15a978ff71e 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -12,16 +12,9 @@ #include "hsmp.h" #include -#include -#include -#include -#include -#include -#include -#define DRIVER_NAME "amd_hsmp" -#define DRIVER_VERSION "2.2" -#define ACPI_HSMP_DEVICE_HID "AMDI0097" +#include +#include /* HSMP Status / Error codes */ #define HSMP_STATUS_NOT_READY 0x00 @@ -36,45 +29,12 @@ #define HSMP_WR true #define HSMP_RD false -/* - * To access specific HSMP mailbox register, s/w writes the SMN address of HSMP mailbox - * register into the SMN_INDEX register, and reads/writes the SMN_DATA reg. - * Below are required SMN address for HSMP Mailbox register offsets in SMU address space - */ -#define SMN_HSMP_BASE 0x3B00000 -#define SMN_HSMP_MSG_ID 0x0010534 -#define SMN_HSMP_MSG_ID_F1A_M0H 0x0010934 -#define SMN_HSMP_MSG_RESP 0x0010980 -#define SMN_HSMP_MSG_DATA 0x00109E0 - -#define HSMP_INDEX_REG 0xc4 -#define HSMP_DATA_REG 0xc8 - /* These are the strings specified in ACPI table */ #define MSG_IDOFF_STR "MsgIdOffset" #define MSG_ARGOFF_STR "MsgArgOffset" #define MSG_RESPOFF_STR "MsgRspOffset" -static struct hsmp_plat_device plat_dev; - -static int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write) -{ - int ret; - - if (!sock->root) - return -ENODEV; - - ret = pci_write_config_dword(sock->root, HSMP_INDEX_REG, - sock->mbinfo.base_addr + offset); - if (ret) - return ret; - - ret = (write ? pci_write_config_dword(sock->root, HSMP_DATA_REG, *value) - : pci_read_config_dword(sock->root, HSMP_DATA_REG, value)); - - return ret; -} +struct hsmp_plat_device plat_dev; static void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, u32 *value, bool write) @@ -253,7 +213,7 @@ int hsmp_send_message(struct hsmp_message *msg) } EXPORT_SYMBOL_GPL(hsmp_send_message); -static int hsmp_test(u16 sock_ind, u32 value) +int hsmp_test(u16 sock_ind, u32 value) { struct hsmp_message msg = { 0 }; int ret; @@ -283,7 +243,7 @@ static int hsmp_test(u16 sock_ind, u32 value) return ret; } -static long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) +long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) { int __user *arguser = (int __user *)arg; struct hsmp_message msg = { 0 }; @@ -339,12 +299,6 @@ static long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) return 0; } -static const struct file_operations hsmp_fops = { - .owner = THIS_MODULE, - .unlocked_ioctl = hsmp_ioctl, - .compat_ioctl = hsmp_ioctl, -}; - /* This is the UUID used for HSMP */ static const guid_t acpi_hsmp_uuid = GUID_INIT(0xb74d619d, 0x5707, 0x48bd, 0xa6, 0x9f, 0x4e, 0xa2, @@ -520,9 +474,9 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) return hsmp_read_acpi_dsd(sock); } -static ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, - loff_t off, size_t count) +ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count) { struct hsmp_socket *sock = bin_attr->private; struct hsmp_message msg = { 0 }; @@ -581,8 +535,8 @@ static int hsmp_get_tbl_dram_base(u16 sock_ind) return 0; } -static umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, - struct bin_attribute *battr, int id) +umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, + struct bin_attribute *battr, int id) { if (plat_dev.proto_ver == HSMP_PROTO_VER6) return battr->attr.mode; @@ -611,8 +565,8 @@ static int hsmp_init_metric_tbl_bin_attr(struct bin_attribute **hattrs, u16 sock /* One bin sysfs for metrics table */ #define NUM_HSMP_ATTRS 1 -static int hsmp_create_attr_list(struct attribute_group *attr_grp, - struct device *dev, u16 sock_ind) +int hsmp_create_attr_list(struct attribute_group *attr_grp, + struct device *dev, u16 sock_ind) { struct bin_attribute **hsmp_bin_attrs; @@ -628,37 +582,7 @@ static int hsmp_create_attr_list(struct attribute_group *attr_grp, return hsmp_init_metric_tbl_bin_attr(hsmp_bin_attrs, sock_ind); } -static int hsmp_create_non_acpi_sysfs_if(struct device *dev) -{ - const struct attribute_group **hsmp_attr_grps; - struct attribute_group *attr_grp; - u16 i; - - hsmp_attr_grps = devm_kcalloc(dev, plat_dev.num_sockets + 1, - sizeof(*hsmp_attr_grps), - GFP_KERNEL); - if (!hsmp_attr_grps) - return -ENOMEM; - - /* Create a sysfs directory for each socket */ - for (i = 0; i < plat_dev.num_sockets; i++) { - attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), - GFP_KERNEL); - if (!attr_grp) - return -ENOMEM; - - snprintf(plat_dev.sock[i].name, HSMP_ATTR_GRP_NAME_SIZE, "socket%u", (u8)i); - attr_grp->name = plat_dev.sock[i].name; - attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; - hsmp_attr_grps[i] = attr_grp; - - hsmp_create_attr_list(attr_grp, dev, i); - } - - return device_add_groups(dev, hsmp_attr_grps); -} - -static int hsmp_create_acpi_sysfs_if(struct device *dev) +int hsmp_create_acpi_sysfs_if(struct device *dev) { struct attribute_group *attr_grp; u16 sock_ind; @@ -681,7 +605,7 @@ static int hsmp_create_acpi_sysfs_if(struct device *dev) return devm_device_add_group(dev, attr_grp); } -static int hsmp_cache_proto_ver(u16 sock_ind) +int hsmp_cache_proto_ver(u16 sock_ind) { struct hsmp_message msg = { 0 }; int ret; @@ -697,76 +621,7 @@ static int hsmp_cache_proto_ver(u16 sock_ind) return ret; } -static inline bool is_f1a_m0h(void) -{ - if (boot_cpu_data.x86 == 0x1A && boot_cpu_data.x86_model <= 0x0F) - return true; - - return false; -} - -static int init_platform_device(struct device *dev) -{ - struct hsmp_socket *sock; - int ret, i; - - for (i = 0; i < plat_dev.num_sockets; i++) { - if (!node_to_amd_nb(i)) - return -ENODEV; - sock = &plat_dev.sock[i]; - sock->root = node_to_amd_nb(i)->root; - sock->sock_ind = i; - sock->dev = dev; - sock->mbinfo.base_addr = SMN_HSMP_BASE; - - /* - * This is a transitional change from non-ACPI to ACPI, only - * family 0x1A, model 0x00 platform is supported for both ACPI and non-ACPI. - */ - if (is_f1a_m0h()) - sock->mbinfo.msg_id_off = SMN_HSMP_MSG_ID_F1A_M0H; - else - sock->mbinfo.msg_id_off = SMN_HSMP_MSG_ID; - - sock->mbinfo.msg_resp_off = SMN_HSMP_MSG_RESP; - sock->mbinfo.msg_arg_off = SMN_HSMP_MSG_DATA; - sema_init(&sock->hsmp_sem, 1); - - /* Test the hsmp interface on each socket */ - ret = hsmp_test(i, 0xDEADBEEF); - if (ret) { - dev_err(dev, "HSMP test message failed on Fam:%x model:%x\n", - boot_cpu_data.x86, boot_cpu_data.x86_model); - dev_err(dev, "Is HSMP disabled in BIOS ?\n"); - return ret; - } - ret = hsmp_cache_proto_ver(i); - if (ret) { - dev_err(dev, "Failed to read HSMP protocol version\n"); - return ret; - } - } - - return 0; -} - -static const struct acpi_device_id amd_hsmp_acpi_ids[] = { - {ACPI_HSMP_DEVICE_HID, 0}, - {} -}; -MODULE_DEVICE_TABLE(acpi, amd_hsmp_acpi_ids); - -static bool check_acpi_support(struct device *dev) -{ - struct acpi_device *adev = ACPI_COMPANION(dev); - - if (adev && !acpi_match_device_ids(adev, amd_hsmp_acpi_ids)) - return true; - - return false; -} - -static int init_acpi(struct device *dev) +int init_acpi(struct device *dev) { u16 sock_ind; int ret; @@ -800,178 +655,3 @@ static int init_acpi(struct device *dev) return ret; } - -static int hsmp_pltdrv_probe(struct platform_device *pdev) -{ - int ret; - - /* - * On ACPI supported BIOS, there is an ACPI HSMP device added for - * each socket, so the per socket probing, but the memory allocated for - * sockets should be contiguous to access it as an array, - * Hence allocate memory for all the sockets at once instead of allocating - * on each probe. - */ - if (!plat_dev.is_probed) { - plat_dev.sock = devm_kcalloc(&pdev->dev, plat_dev.num_sockets, - sizeof(*plat_dev.sock), - GFP_KERNEL); - if (!plat_dev.sock) - return -ENOMEM; - } - if (check_acpi_support(&pdev->dev)) { - ret = init_acpi(&pdev->dev); - if (ret) { - dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); - return ret; - } - ret = hsmp_create_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); - } else { - ret = init_platform_device(&pdev->dev); - if (ret) { - dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); - return ret; - } - ret = hsmp_create_non_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); - } - - if (!plat_dev.is_probed) { - plat_dev.hsmp_device.name = HSMP_CDEV_NAME; - plat_dev.hsmp_device.minor = MISC_DYNAMIC_MINOR; - plat_dev.hsmp_device.fops = &hsmp_fops; - plat_dev.hsmp_device.parent = &pdev->dev; - plat_dev.hsmp_device.nodename = HSMP_DEVNODE_NAME; - plat_dev.hsmp_device.mode = 0644; - - ret = misc_register(&plat_dev.hsmp_device); - if (ret) - return ret; - - plat_dev.is_probed = true; - } - - return 0; - -} - -static void hsmp_pltdrv_remove(struct platform_device *pdev) -{ - /* - * We register only one misc_device even on multi socket system. - * So, deregister should happen only once. - */ - if (plat_dev.is_probed) { - misc_deregister(&plat_dev.hsmp_device); - plat_dev.is_probed = false; - } -} - -static struct platform_driver amd_hsmp_driver = { - .probe = hsmp_pltdrv_probe, - .remove_new = hsmp_pltdrv_remove, - .driver = { - .name = DRIVER_NAME, - .acpi_match_table = amd_hsmp_acpi_ids, - }, -}; - -static struct platform_device *amd_hsmp_platdev; - -static int hsmp_plat_dev_register(void) -{ - int ret; - - amd_hsmp_platdev = platform_device_alloc(DRIVER_NAME, PLATFORM_DEVID_NONE); - if (!amd_hsmp_platdev) - return -ENOMEM; - - ret = platform_device_add(amd_hsmp_platdev); - if (ret) - platform_device_put(amd_hsmp_platdev); - - return ret; -} - -/* - * This check is only needed for backward compatibility of previous platforms. - * All new platforms are expected to support ACPI based probing. - */ -static bool legacy_hsmp_support(void) -{ - if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) - return false; - - switch (boot_cpu_data.x86) { - case 0x19: - switch (boot_cpu_data.x86_model) { - case 0x00 ... 0x1F: - case 0x30 ... 0x3F: - case 0x90 ... 0x9F: - case 0xA0 ... 0xAF: - return true; - default: - return false; - } - case 0x1A: - switch (boot_cpu_data.x86_model) { - case 0x00 ... 0x1F: - return true; - default: - return false; - } - default: - return false; - } - - return false; -} - -static int __init hsmp_plt_init(void) -{ - int ret = -ENODEV; - - /* - * amd_nb_num() returns number of SMN/DF interfaces present in the system - * if we have N SMN/DF interfaces that ideally means N sockets - */ - plat_dev.num_sockets = amd_nb_num(); - if (plat_dev.num_sockets == 0 || plat_dev.num_sockets > MAX_AMD_SOCKETS) - return ret; - - ret = platform_driver_register(&amd_hsmp_driver); - if (ret) - return ret; - - if (!plat_dev.is_acpi_device) { - if (legacy_hsmp_support()) { - /* Not ACPI device, but supports HSMP, register a plat_dev */ - ret = hsmp_plat_dev_register(); - } else { - /* Not ACPI, Does not support HSMP */ - pr_info("HSMP is not supported on Family:%x model:%x\n", - boot_cpu_data.x86, boot_cpu_data.x86_model); - ret = -ENODEV; - } - if (ret) - platform_driver_unregister(&amd_hsmp_driver); - } - - return ret; -} - -static void __exit hsmp_plt_exit(void) -{ - platform_device_unregister(amd_hsmp_platdev); - platform_driver_unregister(&amd_hsmp_driver); -} - -device_initcall(hsmp_plt_init); -module_exit(hsmp_plt_exit); - -MODULE_DESCRIPTION("AMD HSMP Platform Interface Driver"); -MODULE_VERSION(DRIVER_VERSION); -MODULE_LICENSE("GPL v2"); diff --git a/drivers/platform/x86/amd/hsmp/hsmp.h b/drivers/platform/x86/amd/hsmp/hsmp.h index 5afc7167fac1..1aa33c5633d0 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.h +++ b/drivers/platform/x86/amd/hsmp/hsmp.h @@ -51,4 +51,21 @@ struct hsmp_plat_device { bool is_acpi_device; bool is_probed; }; + +extern struct hsmp_plat_device plat_dev; + +int init_acpi(struct device *dev); +ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count); +int hsmp_create_acpi_sysfs_if(struct device *dev); +int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, + u32 *value, bool write); +int hsmp_cache_proto_ver(u16 sock_ind); +long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); +umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, + struct bin_attribute *battr, int id); +int hsmp_create_attr_list(struct attribute_group *attr_grp, + struct device *dev, u16 sock_ind); +int hsmp_test(u16 sock_ind, u32 value); #endif /* HSMP_H */ diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c new file mode 100644 index 000000000000..2ed5a9452244 --- /dev/null +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -0,0 +1,338 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * AMD HSMP Platform Driver + * Copyright (c) 2024, AMD. + * All Rights Reserved. + * + * This file provides platform device implementations. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include "hsmp.h" + +#include + +#include +#include +#include +#include +#include + +#define DRIVER_NAME "amd_hsmp" +#define DRIVER_VERSION "2.2" +#define ACPI_HSMP_DEVICE_HID "AMDI0097" + +/* + * To access specific HSMP mailbox register, s/w writes the SMN address of HSMP mailbox + * register into the SMN_INDEX register, and reads/writes the SMN_DATA reg. + * Below are required SMN address for HSMP Mailbox register offsets in SMU address space + */ +#define SMN_HSMP_BASE 0x3B00000 +#define SMN_HSMP_MSG_ID 0x0010534 +#define SMN_HSMP_MSG_ID_F1A_M0H 0x0010934 +#define SMN_HSMP_MSG_RESP 0x0010980 +#define SMN_HSMP_MSG_DATA 0x00109E0 + +#define HSMP_INDEX_REG 0xc4 +#define HSMP_DATA_REG 0xc8 + +int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, + u32 *value, bool write) +{ + int ret; + + if (!sock->root) + return -ENODEV; + + ret = pci_write_config_dword(sock->root, HSMP_INDEX_REG, + sock->mbinfo.base_addr + offset); + if (ret) + return ret; + + ret = (write ? pci_write_config_dword(sock->root, HSMP_DATA_REG, *value) + : pci_read_config_dword(sock->root, HSMP_DATA_REG, value)); + + return ret; +} + +static const struct file_operations hsmp_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = hsmp_ioctl, + .compat_ioctl = hsmp_ioctl, +}; + +static int hsmp_create_non_acpi_sysfs_if(struct device *dev) +{ + const struct attribute_group **hsmp_attr_grps; + struct attribute_group *attr_grp; + u16 i; + + hsmp_attr_grps = devm_kcalloc(dev, plat_dev.num_sockets + 1, + sizeof(*hsmp_attr_grps), + GFP_KERNEL); + if (!hsmp_attr_grps) + return -ENOMEM; + + /* Create a sysfs directory for each socket */ + for (i = 0; i < plat_dev.num_sockets; i++) { + attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), + GFP_KERNEL); + if (!attr_grp) + return -ENOMEM; + + snprintf(plat_dev.sock[i].name, HSMP_ATTR_GRP_NAME_SIZE, "socket%u", (u8)i); + attr_grp->name = plat_dev.sock[i].name; + attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; + hsmp_attr_grps[i] = attr_grp; + + hsmp_create_attr_list(attr_grp, dev, i); + } + + return device_add_groups(dev, hsmp_attr_grps); +} + +static inline bool is_f1a_m0h(void) +{ + if (boot_cpu_data.x86 == 0x1A && boot_cpu_data.x86_model <= 0x0F) + return true; + + return false; +} + +static int init_platform_device(struct device *dev) +{ + struct hsmp_socket *sock; + int ret, i; + + for (i = 0; i < plat_dev.num_sockets; i++) { + if (!node_to_amd_nb(i)) + return -ENODEV; + sock = &plat_dev.sock[i]; + sock->root = node_to_amd_nb(i)->root; + sock->sock_ind = i; + sock->dev = dev; + sock->mbinfo.base_addr = SMN_HSMP_BASE; + + /* + * This is a transitional change from non-ACPI to ACPI, only + * family 0x1A, model 0x00 platform is supported for both ACPI and non-ACPI. + */ + if (is_f1a_m0h()) + sock->mbinfo.msg_id_off = SMN_HSMP_MSG_ID_F1A_M0H; + else + sock->mbinfo.msg_id_off = SMN_HSMP_MSG_ID; + + sock->mbinfo.msg_resp_off = SMN_HSMP_MSG_RESP; + sock->mbinfo.msg_arg_off = SMN_HSMP_MSG_DATA; + sema_init(&sock->hsmp_sem, 1); + + /* Test the hsmp interface on each socket */ + ret = hsmp_test(i, 0xDEADBEEF); + if (ret) { + dev_err(dev, "HSMP test message failed on Fam:%x model:%x\n", + boot_cpu_data.x86, boot_cpu_data.x86_model); + dev_err(dev, "Is HSMP disabled in BIOS ?\n"); + return ret; + } + + ret = hsmp_cache_proto_ver(i); + if (ret) { + dev_err(dev, "Failed to read HSMP protocol version\n"); + return ret; + } + } + + return 0; +} + +static const struct acpi_device_id amd_hsmp_acpi_ids[] = { + {ACPI_HSMP_DEVICE_HID, 0}, + {} +}; +MODULE_DEVICE_TABLE(acpi, amd_hsmp_acpi_ids); + +static bool check_acpi_support(struct device *dev) +{ + struct acpi_device *adev = ACPI_COMPANION(dev); + + if (adev && !acpi_match_device_ids(adev, amd_hsmp_acpi_ids)) + return true; + + return false; +} + +static int hsmp_pltdrv_probe(struct platform_device *pdev) +{ + int ret; + + /* + * On ACPI supported BIOS, there is an ACPI HSMP device added for + * each socket, so the per socket probing, but the memory allocated for + * sockets should be contiguous to access it as an array, + * Hence allocate memory for all the sockets at once instead of allocating + * on each probe. + */ + if (!plat_dev.is_probed) { + plat_dev.sock = devm_kcalloc(&pdev->dev, plat_dev.num_sockets, + sizeof(*plat_dev.sock), + GFP_KERNEL); + if (!plat_dev.sock) + return -ENOMEM; + } + + if (check_acpi_support(&pdev->dev)) { + ret = init_acpi(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); + return ret; + } + ret = hsmp_create_acpi_sysfs_if(&pdev->dev); + if (ret) + dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); + } else { + ret = init_platform_device(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); + return ret; + } + ret = hsmp_create_non_acpi_sysfs_if(&pdev->dev); + if (ret) + dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); + } + + if (!plat_dev.is_probed) { + plat_dev.hsmp_device.name = HSMP_CDEV_NAME; + plat_dev.hsmp_device.minor = MISC_DYNAMIC_MINOR; + plat_dev.hsmp_device.fops = &hsmp_fops; + plat_dev.hsmp_device.parent = &pdev->dev; + plat_dev.hsmp_device.nodename = HSMP_DEVNODE_NAME; + plat_dev.hsmp_device.mode = 0644; + + ret = misc_register(&plat_dev.hsmp_device); + if (ret) + return ret; + + plat_dev.is_probed = true; + } + + return 0; +} + +static void hsmp_pltdrv_remove(struct platform_device *pdev) +{ + /* + * We register only one misc_device even on multi socket system. + * So, deregister should happen only once. + */ + if (plat_dev.is_probed) { + misc_deregister(&plat_dev.hsmp_device); + plat_dev.is_probed = false; + } +} + +static struct platform_driver amd_hsmp_driver = { + .probe = hsmp_pltdrv_probe, + .remove_new = hsmp_pltdrv_remove, + .driver = { + .name = DRIVER_NAME, + .acpi_match_table = amd_hsmp_acpi_ids, + }, +}; + +static struct platform_device *amd_hsmp_platdev; + +static int hsmp_plat_dev_register(void) +{ + int ret; + + amd_hsmp_platdev = platform_device_alloc(DRIVER_NAME, PLATFORM_DEVID_NONE); + if (!amd_hsmp_platdev) + return -ENOMEM; + + ret = platform_device_add(amd_hsmp_platdev); + if (ret) + platform_device_put(amd_hsmp_platdev); + + return ret; +} + +/* + * This check is only needed for backward compatibility of previous platforms. + * All new platforms are expected to support ACPI based probing. + */ +static bool legacy_hsmp_support(void) +{ + if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) + return false; + + switch (boot_cpu_data.x86) { + case 0x19: + switch (boot_cpu_data.x86_model) { + case 0x00 ... 0x1F: + case 0x30 ... 0x3F: + case 0x90 ... 0x9F: + case 0xA0 ... 0xAF: + return true; + default: + return false; + } + case 0x1A: + switch (boot_cpu_data.x86_model) { + case 0x00 ... 0x1F: + return true; + default: + return false; + } + default: + return false; + } + + return false; +} + +static int __init hsmp_plt_init(void) +{ + int ret = -ENODEV; + + /* + * amd_nb_num() returns number of SMN/DF interfaces present in the system + * if we have N SMN/DF interfaces that ideally means N sockets + */ + plat_dev.num_sockets = amd_nb_num(); + if (plat_dev.num_sockets == 0 || plat_dev.num_sockets > MAX_AMD_SOCKETS) + return ret; + + ret = platform_driver_register(&amd_hsmp_driver); + if (ret) + return ret; + + if (!plat_dev.is_acpi_device) { + if (legacy_hsmp_support()) { + /* Not ACPI device, but supports HSMP, register a plat_dev */ + ret = hsmp_plat_dev_register(); + } else { + /* Not ACPI, Does not support HSMP */ + pr_info("HSMP is not supported on Family:%x model:%x\n", + boot_cpu_data.x86, boot_cpu_data.x86_model); + ret = -ENODEV; + } + if (ret) + platform_driver_unregister(&amd_hsmp_driver); + } + + return ret; +} + +static void __exit hsmp_plt_exit(void) +{ + platform_device_unregister(amd_hsmp_platdev); + platform_driver_unregister(&amd_hsmp_driver); +} + +device_initcall(hsmp_plt_init); +module_exit(hsmp_plt_exit); + +MODULE_DESCRIPTION("AMD HSMP Platform Interface Driver"); +MODULE_VERSION(DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); From patchwork Thu Jul 11 07:33:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730108 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2085.outbound.protection.outlook.com [40.107.243.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22F78148856 for ; Thu, 11 Jul 2024 07:33:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683230; cv=fail; b=SLmYPPfyA2Qp3eMzkTWSZHnRaI4BH+QiRjsKEzyrD74OlbhWIad7lcYzazz4hglSlZVmF/2izbxggYmHQZ6tiKwcDMwLjjvGK52Sc3kY7xM9p8heKqwN7KHz905AOyDrW8PXLUj5taDTmDn02KRqMx2HuTJMLZ3bGwI26fzRqDg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683230; c=relaxed/simple; bh=V9cxmmLXUxMQ4k8VzJGG7MPGt5TFBEDJQu6jlqxSX6E=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IcMxyzmscUP4XoCG/IaLb/h6OsdyLJKdHVtrPPoB0GawxUcRiTHbE4hcCshGc9zOPrjmCjLTCD9gbHnzB+t21fX+zT5+rR0d4QJaEjkwPm8buYPevLUUX3P7wMR8tox/BBoFmwnYIl6oFORjw/0OOo7Tb5H6k7SOyugWaNC5cLU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Y0xpzs1A; arc=fail smtp.client-ip=40.107.243.85 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Y0xpzs1A" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GuYKCrWpBE0TXUm50MPPhlx9FSbl/SWVJiCXUqUWPOKC+JU82UDHxjlMW1GRGoXOmkBloLvmj5gbdiZHogaIm6r1TsG7ZA/J1rPeaCbhtwZNinrFu31cNLRFnwP4gTFSaMlx3mOK5uRlEVIQ9fJE1JocR19F7Nf/sCg0zFkew+lFhiczGxgcSxxZSAs4hi3DY42BW5UAtIMjMqJya4gqKKjojU6Lqyn/mT60Iy0Xnpl9i6MrH7ORyx5ANyP92aGW54k86yJyD/mzLP/UNNZFpX4ckBFI+qWmjDBHCu+VIA9lS19CW9kgSN4wJEDdwE9QMzxa9M3mN/2K6LPeVCpWqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=8igeOOgVPWUGbp1Amm4Zkr92Uy2C7bSCjYewvSBJzHo=; b=rQxQMlo0A/ArkGRHnnss/hFOV5mvzhBgWDj/W4/00fOTrvhZ8BRvLNbBJ6rQgiiw2lEwlsNhVcJNCJaD0Y/UzTbZ5IooYyv0AlxZVNQ5Y9QwqHSBRZJexfJtQo87heBLwdFs4NVw7UVDBOuKfhkTxa21Rnj1Teg1krGcWaO1r+HoW0QCEG0w1+QB7/H1cn/6zaiNACIH8nM8cFBCmxal/T9krUHptwsxQ7vS+DU3Hd7khUwF42MB1Iib770uOcaC0m1zGjx0TXBxYW41IGyPOj+FCV5g0OSvmJKczE+Fmy/NFqFwrVtBiCqUX9ju0iVoQlImCB2MG0DQ0vb4NpuPLg== 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 (0) 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=8igeOOgVPWUGbp1Amm4Zkr92Uy2C7bSCjYewvSBJzHo=; b=Y0xpzs1A41g/ASQxj9QZz341X+0i+Ljj6AWlb5bJeSIfKZN0TyiteAe5OzaTPkxibnDlApQDO10yC1Uxhs2W942PPwOQAepA2N8SQsDuAloDw/toMx9eGdkDotDsJQVukFOc8nZEaFumM1h2QnfkgZpNFDyuKFqCM68ybFoK2x0= Received: from BLAPR03CA0146.namprd03.prod.outlook.com (2603:10b6:208:32e::31) by LV8PR12MB9082.namprd12.prod.outlook.com (2603:10b6:408:180::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36; Thu, 11 Jul 2024 07:33:45 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::97) by BLAPR03CA0146.outlook.office365.com (2603:10b6:208:32e::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.22 via Frontend Transport; Thu, 11 Jul 2024 07:33: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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:45 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:42 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 05/11] platform/x86/amd/hsmp: Move ACPI code to acpi.c Date: Thu, 11 Jul 2024 07:33:08 +0000 Message-ID: <20240711073314.2704871-5-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|LV8PR12MB9082:EE_ X-MS-Office365-Filtering-Correlation-Id: ac6f8d5c-b2a6-4b0b-ca27-08dca17bcbdf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: n2GdB5Tvyxn5Iqawz0Y2DUZTjbjyBDc7dRUzjqf0Tq627atC5pX9lVK+YYjW3iznlpu3BIB2W7rYikiE851csoi4BqhhL66n7RLVDjjUj7smFJnx6bq05C7+AoPPeMrs+dqcIwbRiAL6P+9l0m9dLkf8MZTFRkhh/ZlR+b/SX+syLkKfXv+YJMrCbUPKgjwcM4K/NtsDVdrSl4eu6SHi1v9vUpeBZJfHvSde34Lh9xX9Qr5dLrjm6o7W+UO4OHOF0iKpm8ZEgEBoMyt16qdGAY+zMC4ouPT74bMtFIIJij+yR81uYeLzofaV5k6W688wFC0MxldGV/qaEzw8x5Eaqiv2jXbsgBDggSrdyRrefBc1umPt96yyc0bj4/VDv+UeMfBf3skYNOGHj/KShRHxjnDVlmStR9NlZD9lQJkLmbsbIIEy4d18xR2aithEX90k0nrYkQ+jGWBz9elMm+u33w8nVtLXzRvIZRW8YxWpopP4oG64uzNfLPEl6xwi5wdX29+05HYamvBdVsKBKpvfPV/azaKZZEOfY3rrHHflVVEHN6Hz25WCBuVWyuHlpf/brfDqp531j/QmLQKiQNu9hF1mxiVG1Lvw3bIfe6jQ+G57tBfa4i4ZvzWalF05Ydnqv2yqZgYrNLioV7YPcxsUZVm1AJHhk3fUODyOxF25igSEwtRfhwkuCW04c3b7X0axxB6gQ8L2m/H2+oLh7sHA1EH5uXL8TK4ez4xhSucshX3pWhqoxG9qg5RhAheEkC4jhpxxNSoNH5YCQX1HfHC7YheCgyiPMnZ6GjXJvChv9X8ZHjNZjmj5Gd6winnURPBtSF0mTAuZfv/HTpO6Ls4g9tGD6oiHBwcV8qtgQdLZQFoSktNIz4l23T3lxitSEhF1LKkkuKBA4RNAgc+m+rrR74Y4e3GxAGGWtj/BTMGmBsbZpNOm0bduCK3iLfUY9SkN0Wxpl4BcbqyZlFiZF1bDwLRTrf97RgudGEpcn/7sTSZ6/za5oLehBxJFFp9QNJaBBxVd6SKpBwigGvhvzb0hcW67gDYmq2Z5XdpreBp5mnuisYltjkTPJ0Mb1J7cVPOHpKqMrT5jLAlR1PsYmJ+Z8kuyvxiMO9FirHLQXHBOppaBBiei+ic0IhCeMVUXAuwCbZN0MNzJ9niHLO2kvsVTCyspb2jR0Nhv12IjtK5HSOQbhYkZkoYunsTj9F6PFHFRGxvie+OsEojEp7eKMzVUb+umfL/8MqzBxXkmEoHp1BrMU7LSK6RbLMHZvuDbtcJgoHsL33xx6oxkx7XHs48qWs7PgGTDL7m178ANAEBczb65Citb8dstSem9fJHGvxQmMQb8K358cCl+GVJx/afwyQtR8LzXZ0AWlk+xtplYiud3vGzC8zI+LJD/wVLC21wiS3h29q1r9wLQaLx/wq+Ezw/aXzeANkJj4WuSvJFOMXBrcefleGZ638aEKANypW57 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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:45.2477 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac6f8d5c-b2a6-4b0b-ca27-08dca17bcbdf 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9082 Move ACPI related code to acpi.c from hsmp.c. We still have one driver, the driver probe will be split in the next patch. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: 1. Add following headers in acpi.c #include #include #include #include #include #include drivers/platform/x86/amd/hsmp/Makefile | 2 +- drivers/platform/x86/amd/hsmp/acpi.c | 268 +++++++++++++++++++++++++ drivers/platform/x86/amd/hsmp/hsmp.c | 247 ----------------------- drivers/platform/x86/amd/hsmp/hsmp.h | 2 + 4 files changed, 271 insertions(+), 248 deletions(-) create mode 100644 drivers/platform/x86/amd/hsmp/acpi.c diff --git a/drivers/platform/x86/amd/hsmp/Makefile b/drivers/platform/x86/amd/hsmp/Makefile index fb8ba04b2f0d..0cc92865c0a2 100644 --- a/drivers/platform/x86/amd/hsmp/Makefile +++ b/drivers/platform/x86/amd/hsmp/Makefile @@ -5,4 +5,4 @@ # obj-$(CONFIG_AMD_HSMP) += amd_hsmp.o -amd_hsmp-objs := hsmp.o plat.o +amd_hsmp-objs := hsmp.o plat.o acpi.o diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c new file mode 100644 index 000000000000..eca324774141 --- /dev/null +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -0,0 +1,268 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * AMD HSMP Platform Driver + * Copyright (c) 2024, AMD. + * All Rights Reserved. + * + * This file provides a device implementation for HSMP interface + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include "hsmp.h" + +#include +#include +#include +#include +#include +#include + +#include + +/* These are the strings specified in ACPI table */ +#define MSG_IDOFF_STR "MsgIdOffset" +#define MSG_ARGOFF_STR "MsgArgOffset" +#define MSG_RESPOFF_STR "MsgRspOffset" + +void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, + u32 *value, bool write) +{ + if (write) + iowrite32(*value, sock->virt_base_addr + offset); + else + *value = ioread32(sock->virt_base_addr + offset); +} + +/* This is the UUID used for HSMP */ +static const guid_t acpi_hsmp_uuid = GUID_INIT(0xb74d619d, 0x5707, 0x48bd, + 0xa6, 0x9f, 0x4e, 0xa2, + 0x87, 0x1f, 0xc2, 0xf6); + +static inline bool is_acpi_hsmp_uuid(union acpi_object *obj) +{ + if (obj->type == ACPI_TYPE_BUFFER && obj->buffer.length == UUID_SIZE) + return guid_equal((guid_t *)obj->buffer.pointer, &acpi_hsmp_uuid); + + return false; +} + +static inline int hsmp_get_uid(struct device *dev, u16 *sock_ind) +{ + char *uid; + + /* + * UID (ID00, ID01..IDXX) is used for differentiating sockets, + * read it and strip the "ID" part of it and convert the remaining + * bytes to integer. + */ + uid = acpi_device_uid(ACPI_COMPANION(dev)); + + return kstrtou16(uid + 2, 10, sock_ind); +} + +static acpi_status hsmp_resource(struct acpi_resource *res, void *data) +{ + struct hsmp_socket *sock = data; + struct resource r; + + switch (res->type) { + case ACPI_RESOURCE_TYPE_FIXED_MEMORY32: + if (!acpi_dev_resource_memory(res, &r)) + return AE_ERROR; + if (!r.start || r.end < r.start || !(r.flags & IORESOURCE_MEM_WRITEABLE)) + return AE_ERROR; + sock->mbinfo.base_addr = r.start; + sock->mbinfo.size = resource_size(&r); + break; + case ACPI_RESOURCE_TYPE_END_TAG: + break; + default: + return AE_ERROR; + } + + return AE_OK; +} + +static int hsmp_read_acpi_dsd(struct hsmp_socket *sock) +{ + struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL }; + union acpi_object *guid, *mailbox_package; + union acpi_object *dsd; + acpi_status status; + int ret = 0; + int j; + + status = acpi_evaluate_object_typed(ACPI_HANDLE(sock->dev), "_DSD", NULL, + &buf, ACPI_TYPE_PACKAGE); + if (ACPI_FAILURE(status)) { + dev_err(sock->dev, "Failed to read mailbox reg offsets from DSD table, err: %s\n", + acpi_format_exception(status)); + return -ENODEV; + } + + dsd = buf.pointer; + + /* HSMP _DSD property should contain 2 objects. + * 1. guid which is an acpi object of type ACPI_TYPE_BUFFER + * 2. mailbox which is an acpi object of type ACPI_TYPE_PACKAGE + * This mailbox object contains 3 more acpi objects of type + * ACPI_TYPE_PACKAGE for holding msgid, msgresp, msgarg offsets + * these packages inturn contain 2 acpi objects of type + * ACPI_TYPE_STRING and ACPI_TYPE_INTEGER + */ + if (!dsd || dsd->type != ACPI_TYPE_PACKAGE || dsd->package.count != 2) { + ret = -EINVAL; + goto free_buf; + } + + guid = &dsd->package.elements[0]; + mailbox_package = &dsd->package.elements[1]; + if (!is_acpi_hsmp_uuid(guid) || mailbox_package->type != ACPI_TYPE_PACKAGE) { + dev_err(sock->dev, "Invalid hsmp _DSD table data\n"); + ret = -EINVAL; + goto free_buf; + } + + for (j = 0; j < mailbox_package->package.count; j++) { + union acpi_object *msgobj, *msgstr, *msgint; + + msgobj = &mailbox_package->package.elements[j]; + msgstr = &msgobj->package.elements[0]; + msgint = &msgobj->package.elements[1]; + + /* package should have 1 string and 1 integer object */ + if (msgobj->type != ACPI_TYPE_PACKAGE || + msgstr->type != ACPI_TYPE_STRING || + msgint->type != ACPI_TYPE_INTEGER) { + ret = -EINVAL; + goto free_buf; + } + + if (!strncmp(msgstr->string.pointer, MSG_IDOFF_STR, + msgstr->string.length)) { + sock->mbinfo.msg_id_off = msgint->integer.value; + } else if (!strncmp(msgstr->string.pointer, MSG_RESPOFF_STR, + msgstr->string.length)) { + sock->mbinfo.msg_resp_off = msgint->integer.value; + } else if (!strncmp(msgstr->string.pointer, MSG_ARGOFF_STR, + msgstr->string.length)) { + sock->mbinfo.msg_arg_off = msgint->integer.value; + } else { + ret = -ENOENT; + goto free_buf; + } + } + + if (!sock->mbinfo.msg_id_off || !sock->mbinfo.msg_resp_off || + !sock->mbinfo.msg_arg_off) + ret = -EINVAL; + +free_buf: + ACPI_FREE(buf.pointer); + return ret; +} + +static int hsmp_read_acpi_crs(struct hsmp_socket *sock) +{ + acpi_status status; + + status = acpi_walk_resources(ACPI_HANDLE(sock->dev), METHOD_NAME__CRS, + hsmp_resource, sock); + if (ACPI_FAILURE(status)) { + dev_err(sock->dev, "Failed to look up MP1 base address from CRS method, err: %s\n", + acpi_format_exception(status)); + return -EINVAL; + } + if (!sock->mbinfo.base_addr || !sock->mbinfo.size) + return -EINVAL; + + /* The mapped region should be un-cached */ + sock->virt_base_addr = devm_ioremap_uc(sock->dev, sock->mbinfo.base_addr, + sock->mbinfo.size); + if (!sock->virt_base_addr) { + dev_err(sock->dev, "Failed to ioremap MP1 base address\n"); + return -ENOMEM; + } + + return 0; +} + +/* Parse the ACPI table to read the data */ +static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) +{ + struct hsmp_socket *sock = &plat_dev.sock[sock_ind]; + int ret; + + sock->sock_ind = sock_ind; + sock->dev = dev; + plat_dev.is_acpi_device = true; + + sema_init(&sock->hsmp_sem, 1); + + /* Read MP1 base address from CRS method */ + ret = hsmp_read_acpi_crs(sock); + if (ret) + return ret; + + /* Read mailbox offsets from DSD table */ + return hsmp_read_acpi_dsd(sock); +} + +int hsmp_create_acpi_sysfs_if(struct device *dev) +{ + struct attribute_group *attr_grp; + u16 sock_ind; + int ret; + + attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), GFP_KERNEL); + if (!attr_grp) + return -ENOMEM; + + attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; + + ret = hsmp_get_uid(dev, &sock_ind); + if (ret) + return ret; + + ret = hsmp_create_attr_list(attr_grp, dev, sock_ind); + if (ret) + return ret; + + return devm_device_add_group(dev, attr_grp); +} + +int init_acpi(struct device *dev) +{ + u16 sock_ind; + int ret; + + ret = hsmp_get_uid(dev, &sock_ind); + if (ret) + return ret; + if (sock_ind >= plat_dev.num_sockets) + return -EINVAL; + + ret = hsmp_parse_acpi_table(dev, sock_ind); + if (ret) { + dev_err(dev, "Failed to parse ACPI table\n"); + return ret; + } + + /* Test the hsmp interface */ + ret = hsmp_test(sock_ind, 0xDEADBEEF); + if (ret) { + dev_err(dev, "HSMP test message failed on Fam:%x model:%x\n", + boot_cpu_data.x86, boot_cpu_data.x86_model); + dev_err(dev, "Is HSMP disabled in BIOS ?\n"); + return ret; + } + + ret = hsmp_cache_proto_ver(sock_ind); + if (ret) { + dev_err(dev, "Failed to read HSMP protocol version\n"); + return ret; + } + + return ret; +} diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index d15a978ff71e..8473c2d1258b 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -29,22 +29,8 @@ #define HSMP_WR true #define HSMP_RD false -/* These are the strings specified in ACPI table */ -#define MSG_IDOFF_STR "MsgIdOffset" -#define MSG_ARGOFF_STR "MsgArgOffset" -#define MSG_RESPOFF_STR "MsgRspOffset" - struct hsmp_plat_device plat_dev; -static void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write) -{ - if (write) - iowrite32(*value, sock->virt_base_addr + offset); - else - *value = ioread32(sock->virt_base_addr + offset); -} - static int amd_hsmp_rdwr(struct hsmp_socket *sock, u32 offset, u32 *value, bool write) { @@ -299,181 +285,6 @@ long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) return 0; } -/* This is the UUID used for HSMP */ -static const guid_t acpi_hsmp_uuid = GUID_INIT(0xb74d619d, 0x5707, 0x48bd, - 0xa6, 0x9f, 0x4e, 0xa2, - 0x87, 0x1f, 0xc2, 0xf6); - -static inline bool is_acpi_hsmp_uuid(union acpi_object *obj) -{ - if (obj->type == ACPI_TYPE_BUFFER && obj->buffer.length == UUID_SIZE) - return guid_equal((guid_t *)obj->buffer.pointer, &acpi_hsmp_uuid); - - return false; -} - -static inline int hsmp_get_uid(struct device *dev, u16 *sock_ind) -{ - char *uid; - - /* - * UID (ID00, ID01..IDXX) is used for differentiating sockets, - * read it and strip the "ID" part of it and convert the remaining - * bytes to integer. - */ - uid = acpi_device_uid(ACPI_COMPANION(dev)); - - return kstrtou16(uid + 2, 10, sock_ind); -} - -static acpi_status hsmp_resource(struct acpi_resource *res, void *data) -{ - struct hsmp_socket *sock = data; - struct resource r; - - switch (res->type) { - case ACPI_RESOURCE_TYPE_FIXED_MEMORY32: - if (!acpi_dev_resource_memory(res, &r)) - return AE_ERROR; - if (!r.start || r.end < r.start || !(r.flags & IORESOURCE_MEM_WRITEABLE)) - return AE_ERROR; - sock->mbinfo.base_addr = r.start; - sock->mbinfo.size = resource_size(&r); - break; - case ACPI_RESOURCE_TYPE_END_TAG: - break; - default: - return AE_ERROR; - } - - return AE_OK; -} - -static int hsmp_read_acpi_dsd(struct hsmp_socket *sock) -{ - struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL }; - union acpi_object *guid, *mailbox_package; - union acpi_object *dsd; - acpi_status status; - int ret = 0; - int j; - - status = acpi_evaluate_object_typed(ACPI_HANDLE(sock->dev), "_DSD", NULL, - &buf, ACPI_TYPE_PACKAGE); - if (ACPI_FAILURE(status)) { - dev_err(sock->dev, "Failed to read mailbox reg offsets from DSD table, err: %s\n", - acpi_format_exception(status)); - return -ENODEV; - } - - dsd = buf.pointer; - - /* HSMP _DSD property should contain 2 objects. - * 1. guid which is an acpi object of type ACPI_TYPE_BUFFER - * 2. mailbox which is an acpi object of type ACPI_TYPE_PACKAGE - * This mailbox object contains 3 more acpi objects of type - * ACPI_TYPE_PACKAGE for holding msgid, msgresp, msgarg offsets - * these packages inturn contain 2 acpi objects of type - * ACPI_TYPE_STRING and ACPI_TYPE_INTEGER - */ - if (!dsd || dsd->type != ACPI_TYPE_PACKAGE || dsd->package.count != 2) { - ret = -EINVAL; - goto free_buf; - } - - guid = &dsd->package.elements[0]; - mailbox_package = &dsd->package.elements[1]; - if (!is_acpi_hsmp_uuid(guid) || mailbox_package->type != ACPI_TYPE_PACKAGE) { - dev_err(sock->dev, "Invalid hsmp _DSD table data\n"); - ret = -EINVAL; - goto free_buf; - } - - for (j = 0; j < mailbox_package->package.count; j++) { - union acpi_object *msgobj, *msgstr, *msgint; - - msgobj = &mailbox_package->package.elements[j]; - msgstr = &msgobj->package.elements[0]; - msgint = &msgobj->package.elements[1]; - - /* package should have 1 string and 1 integer object */ - if (msgobj->type != ACPI_TYPE_PACKAGE || - msgstr->type != ACPI_TYPE_STRING || - msgint->type != ACPI_TYPE_INTEGER) { - ret = -EINVAL; - goto free_buf; - } - - if (!strncmp(msgstr->string.pointer, MSG_IDOFF_STR, - msgstr->string.length)) { - sock->mbinfo.msg_id_off = msgint->integer.value; - } else if (!strncmp(msgstr->string.pointer, MSG_RESPOFF_STR, - msgstr->string.length)) { - sock->mbinfo.msg_resp_off = msgint->integer.value; - } else if (!strncmp(msgstr->string.pointer, MSG_ARGOFF_STR, - msgstr->string.length)) { - sock->mbinfo.msg_arg_off = msgint->integer.value; - } else { - ret = -ENOENT; - goto free_buf; - } - } - - if (!sock->mbinfo.msg_id_off || !sock->mbinfo.msg_resp_off || - !sock->mbinfo.msg_arg_off) - ret = -EINVAL; - -free_buf: - ACPI_FREE(buf.pointer); - return ret; -} - -static int hsmp_read_acpi_crs(struct hsmp_socket *sock) -{ - acpi_status status; - - status = acpi_walk_resources(ACPI_HANDLE(sock->dev), METHOD_NAME__CRS, - hsmp_resource, sock); - if (ACPI_FAILURE(status)) { - dev_err(sock->dev, "Failed to look up MP1 base address from CRS method, err: %s\n", - acpi_format_exception(status)); - return -EINVAL; - } - if (!sock->mbinfo.base_addr || !sock->mbinfo.size) - return -EINVAL; - - /* The mapped region should be un cached */ - sock->virt_base_addr = devm_ioremap_uc(sock->dev, sock->mbinfo.base_addr, - sock->mbinfo.size); - if (!sock->virt_base_addr) { - dev_err(sock->dev, "Failed to ioremap MP1 base address\n"); - return -ENOMEM; - } - - return 0; -} - -/* Parse the ACPI table to read the data */ -static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) -{ - struct hsmp_socket *sock = &plat_dev.sock[sock_ind]; - int ret; - - sock->sock_ind = sock_ind; - sock->dev = dev; - plat_dev.is_acpi_device = true; - - sema_init(&sock->hsmp_sem, 1); - - /* Read MP1 base address from CRS method */ - ret = hsmp_read_acpi_crs(sock); - if (ret) - return ret; - - /* Read mailbox offsets from DSD table */ - return hsmp_read_acpi_dsd(sock); -} - ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count) @@ -582,29 +393,6 @@ int hsmp_create_attr_list(struct attribute_group *attr_grp, return hsmp_init_metric_tbl_bin_attr(hsmp_bin_attrs, sock_ind); } -int hsmp_create_acpi_sysfs_if(struct device *dev) -{ - struct attribute_group *attr_grp; - u16 sock_ind; - int ret; - - attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), GFP_KERNEL); - if (!attr_grp) - return -ENOMEM; - - attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; - - ret = hsmp_get_uid(dev, &sock_ind); - if (ret) - return ret; - - ret = hsmp_create_attr_list(attr_grp, dev, sock_ind); - if (ret) - return ret; - - return devm_device_add_group(dev, attr_grp); -} - int hsmp_cache_proto_ver(u16 sock_ind) { struct hsmp_message msg = { 0 }; @@ -620,38 +408,3 @@ int hsmp_cache_proto_ver(u16 sock_ind) return ret; } - -int init_acpi(struct device *dev) -{ - u16 sock_ind; - int ret; - - ret = hsmp_get_uid(dev, &sock_ind); - if (ret) - return ret; - if (sock_ind >= plat_dev.num_sockets) - return -EINVAL; - - ret = hsmp_parse_acpi_table(dev, sock_ind); - if (ret) { - dev_err(dev, "Failed to parse ACPI table\n"); - return ret; - } - - /* Test the hsmp interface */ - ret = hsmp_test(sock_ind, 0xDEADBEEF); - if (ret) { - dev_err(dev, "HSMP test message failed on Fam:%x model:%x\n", - boot_cpu_data.x86, boot_cpu_data.x86_model); - dev_err(dev, "Is HSMP disabled in BIOS ?\n"); - return ret; - } - - ret = hsmp_cache_proto_ver(sock_ind); - if (ret) { - dev_err(dev, "Failed to read HSMP protocol version\n"); - return ret; - } - - return ret; -} diff --git a/drivers/platform/x86/amd/hsmp/hsmp.h b/drivers/platform/x86/amd/hsmp/hsmp.h index 1aa33c5633d0..1ff652dc0ef0 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.h +++ b/drivers/platform/x86/amd/hsmp/hsmp.h @@ -68,4 +68,6 @@ umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, int hsmp_create_attr_list(struct attribute_group *attr_grp, struct device *dev, u16 sock_ind); int hsmp_test(u16 sock_ind, u32 value); +void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, + u32 *value, bool write); #endif /* HSMP_H */ From patchwork Thu Jul 11 07:33:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730109 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2081.outbound.protection.outlook.com [40.107.223.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD2E21494DA for ; Thu, 11 Jul 2024 07:33:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683232; cv=fail; b=tMZKFunptBh6L4KdkYCPQC2mHN1XMVM0ELtf7+Q6lTe2Z5G3BA/Earbhta6Q1CPBBret0y5ijCKHl1Tu7QpyoYp4reEj1lMSLLyS27weY65988UD1B5Ep1cGD7aPNnvitXMwyxzRcSLfGasE5BZFsD9Xmyg26+oUsbt92ofJuSs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683232; c=relaxed/simple; bh=nn9oOsC3kX85OnOlBRWgUk5Z/dqIJKPY6q3gcSpgjGA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ezPF1HVFnmlTouDy1gzhrzSt1OPCicjPJ069Fuqwr6GJtZ6UpMeRKAeL779WQrvtwJPd3NM3dcAcOejp0AuHUv7OTlvrjWCaCsj1il8DJEgmZlmZS3NjjUobyoZcY0p4y3ylvRhxCziEK+0Lgr3mOsF8H0VvbikzjeCcl0N04Ms= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=x7eTn3SR; arc=fail smtp.client-ip=40.107.223.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="x7eTn3SR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kQup/w8W/tEbGqVhQZDq4KnEQTjikJ8/Czw78uHqLPQieMs8J6yvzsvrRoy6zRBg+by9WBszIAPoGln0Kjy9K8ICDpk4DnEn+ecwea7qOz6V33XgdkDX1ylnCqxMiKTy50N/aoHcchWZkaMz7eKBscwOUOfqSwwL1ESa/FpDoQ6Qi1pC7XD0x8g2jDGG43MHqMAKQAZifAApGR1u73OXgdnQindZtk2y+/T5CriBYJ6m+KShasnIk+DXqtuhJ1l69WzQO4NT9QDOTVarzlMsv7Z39os30hHpNRkmbAECAio1RAUVffdlCkq9vfWB9xrmDd0rjUHvx3iLycFY86RbFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=fNRxN+rTpT7ELaEuvh4SIzrmfYSUrjq3Uo0phHrhDuQ=; b=qswJv/f3m+ptQWwOjZmTgHTC/EARn62+6LZot8OnEHSURJcJWrJcigqV81KvU7dGZPTdx5Xiykl+M54pQiWGTTQaVgKmboMdfFGXIZsnHwvGShVas8C9qCTY6Sj1j3eFMi4TjJ9lIXsneDbJ/shIdIsU0YHYgDUtHwHDT8L7uZAO/u5zhrfYAWy/jxiGEBTx75zldzP/kOP48I3c+hZnH9t7BlbN8L4JgpS0mTg2ZvmLzr3W5Ym00keQNdj8lS//pOR8GicBZxLCKE9lIg8QyufXAY+N2eId4ZsLLANw9O6yVolXhvEq/hwIbcYlQAACag40uzBH5eo5y2jcBjFyQA== 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 (0) 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=fNRxN+rTpT7ELaEuvh4SIzrmfYSUrjq3Uo0phHrhDuQ=; b=x7eTn3SRUBHnf/3gWxSK36FPjjrFT1MCrfvoiNB3YZbRr0OZRCdh5B91S9F/Z5+/0/lQgY90tXO8c9iqb1m7xb2pq3jVml4j6EVec/51LuiuB6YxPxTUELLtc7PLtNLhivKxDqpmYt043rP4KwYbXap18aExWNc3ZBZkjg9cFD0= Received: from BLAPR03CA0131.namprd03.prod.outlook.com (2603:10b6:208:32e::16) by IA1PR12MB6284.namprd12.prod.outlook.com (2603:10b6:208:3e4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.38; Thu, 11 Jul 2024 07:33:48 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::b9) by BLAPR03CA0131.outlook.office365.com (2603:10b6:208:32e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36 via Frontend Transport; Thu, 11 Jul 2024 07:33:48 +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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:47 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:44 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 06/11] platform/x86/amd/hsmp: Change generic plat_dev name to hsmp_pdev Date: Thu, 11 Jul 2024 07:33:09 +0000 Message-ID: <20240711073314.2704871-6-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|IA1PR12MB6284:EE_ X-MS-Office365-Filtering-Correlation-Id: dd5c2415-1414-47eb-6986-08dca17bcd83 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: NIeP8b/oZD+rf8V8DOzhV9SFIBryS2JUL+mcQeWQfeU7NWWy7JJMebZXcI5wU+7XPGYQL3NsLXQz2PjhgF4XOKNEArDk3rBpBPw1G0oTStEKt2uJ7OVgX4xFjkH2zd6+MxnXLy+uXC7/99jHIyubtd3cOWcZug/GD22ai5FtyrgukrtfRRrkDQGWZfkFKE+6lsvMfGoMToKpP057dpt2O5nf8B6ViZj87KE/2sv5QMNBmIsnSwdqL1i05mFHrTgyfb6iiguh3NwPPRLZdd8HBIhQcwUbXJbtGujNfn4XQrLUmg7gPhMl2GPlxzx8qRGAb1t+85z0hFjUuiKWh/tzHmFXsgSxWFGs2iHmadQDzsRm2u01q0V/9ehNY67zqiuIbIwJ3lKOWkze8AtRxZQRCPWPYnDegGQ3ZLM/bJKxcCN69VcyYbeZ35bGtv5yEjm0zgsDU8he4jB62Fr+FQKazXLN0UFDycM4tFTBSUabNisy7eO6965MzG8A26bdW5G/5cCR+Ly3trPFKp2bxQYFbufuW7bihfVEnFN6bGLgCXkEL7ulQ7bzHt/dnEOv9DFmJva1la0fWkB13i4ywjh0SWlvtHarrr7W0jB58WrwF9nZcguN8uQsMGwRgeFM9JzoIK/HRtxSf7LfUHSrZYA9jJL7BBCbevyKz9HC91B3Al7KCN6Ix1bngB+9wcl5iJOYX983u1uS6kB5oR8NuvzesCAvVrNC4laTPF+mSKP3RD5IGtiKhOhy+AXEXsQ4dYUx09KuQH61tzNpQdm//U++tUciGvt9PcyBI5q7lH9cFNgTqJECNsUdE2LwCS8aPkAdLWf6EeZbjjWrlFVlxzLu9fcaSbGeHiMVutYcOCq4RHRjx7+zVrSx34vXf+zsBGLYxeJazW0XaVxjq+dAs5YmzVnDtJ+5ethnK+8PXd88k5E/AtgT5Z/ab1Z0TYN9Ba5HDBU+wRGCyoXbiGqe40AGs7BvHAb94qHStC4BXi+PSuiIm5K0E12geAvTsCBDpAFNYXr7EsyIYxdSiB39lC3BrBhOWGvo0bDpDiikcCsDcAA5jrQkaiGMtc4EJylkuem9RVf+UEsVWZsbV0gsfOalJag1cy846YW58J2CH+xmcVdQQ5AHr2jNYAIj1mvFpgR9XLXwfpt9kpEV1lN6akxUGhhg9ERCEXzWjpOB7r2Bpfssqwidf1iiG1Ole3D9o4kGzWmwqLCnRLXVliovBeZvK74wl4k8SjMcic3SeQm/aTblJE2z0N2Xq5Ewokk3lFLl5k/uhx4XoUySF1jaLLpQ9P8ozcCUpZ8lHjBczKSKYM6/sak/jPT+T967HeVhm9hcMWALYgyV+6d53cTFKKuMpvA1ED93iPzGHoaziwxv4LTsqp+4/043WrMypjOK+h/fecRPVO/34NBn7/QhamFbMYAf2+nk2G1Wam8yG+HGBmKGcYs+C4e8c/3OiqLXKFgs 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:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:47.9664 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dd5c2415-1414-47eb-6986-08dca17bcd83 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6284 plat_dev is a commonly used variable name, since its made as extern now, change it to more specific name. Also change miscdevice hsmp_device to mdev. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi Reviewed-by: Ilpo Järvinen --- Changes since v1: 1. This is a new patch to rename generic name "plat_dev" in hsmp.h, hsmp.c, plat.c and acpi.c to more specific name "hsmp_pdev" 2. Rename miscdevice hsmp_device to mdev. drivers/platform/x86/amd/hsmp/acpi.c | 10 +++--- drivers/platform/x86/amd/hsmp/hsmp.c | 22 ++++++------ drivers/platform/x86/amd/hsmp/hsmp.h | 4 +-- drivers/platform/x86/amd/hsmp/plat.c | 52 ++++++++++++++-------------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c index eca324774141..46cb86d5d550 100644 --- a/drivers/platform/x86/amd/hsmp/acpi.c +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -191,12 +191,12 @@ static int hsmp_read_acpi_crs(struct hsmp_socket *sock) /* Parse the ACPI table to read the data */ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) { - struct hsmp_socket *sock = &plat_dev.sock[sock_ind]; + struct hsmp_socket *sock = &hsmp_pdev.sock[sock_ind]; int ret; - sock->sock_ind = sock_ind; - sock->dev = dev; - plat_dev.is_acpi_device = true; + sock->sock_ind = sock_ind; + sock->dev = dev; + hsmp_pdev.is_acpi_device = true; sema_init(&sock->hsmp_sem, 1); @@ -240,7 +240,7 @@ int init_acpi(struct device *dev) ret = hsmp_get_uid(dev, &sock_ind); if (ret) return ret; - if (sock_ind >= plat_dev.num_sockets) + if (sock_ind >= hsmp_pdev.num_sockets) return -EINVAL; ret = hsmp_parse_acpi_table(dev, sock_ind); diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 8473c2d1258b..14edaace4379 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -29,12 +29,12 @@ #define HSMP_WR true #define HSMP_RD false -struct hsmp_plat_device plat_dev; +struct hsmp_plat_device hsmp_pdev; static int amd_hsmp_rdwr(struct hsmp_socket *sock, u32 offset, u32 *value, bool write) { - if (plat_dev.is_acpi_device) + if (hsmp_pdev.is_acpi_device) amd_hsmp_acpi_rdwr(sock, offset, value, write); else return amd_hsmp_pci_rdwr(sock, offset, value, write); @@ -177,9 +177,9 @@ int hsmp_send_message(struct hsmp_message *msg) if (ret) return ret; - if (!plat_dev.sock || msg->sock_ind >= plat_dev.num_sockets) + if (!hsmp_pdev.sock || msg->sock_ind >= hsmp_pdev.num_sockets) return -ENODEV; - sock = &plat_dev.sock[msg->sock_ind]; + sock = &hsmp_pdev.sock[msg->sock_ind]; /* * The time taken by smu operation to complete is between @@ -220,7 +220,7 @@ int hsmp_test(u16 sock_ind, u32 value) /* Check the response value */ if (msg.args[0] != (value + 1)) { - dev_err(plat_dev.sock[sock_ind].dev, + dev_err(hsmp_pdev.sock[sock_ind].dev, "Socket %d test message failed, Expected 0x%08X, received 0x%08X\n", sock_ind, (value + 1), msg.args[0]); return -EBADE; @@ -315,7 +315,7 @@ ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, static int hsmp_get_tbl_dram_base(u16 sock_ind) { - struct hsmp_socket *sock = &plat_dev.sock[sock_ind]; + struct hsmp_socket *sock = &hsmp_pdev.sock[sock_ind]; struct hsmp_message msg = { 0 }; phys_addr_t dram_addr; int ret; @@ -349,7 +349,7 @@ static int hsmp_get_tbl_dram_base(u16 sock_ind) umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, struct bin_attribute *battr, int id) { - if (plat_dev.proto_ver == HSMP_PROTO_VER6) + if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) return battr->attr.mode; else return 0; @@ -357,17 +357,17 @@ umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, static int hsmp_init_metric_tbl_bin_attr(struct bin_attribute **hattrs, u16 sock_ind) { - struct bin_attribute *hattr = &plat_dev.sock[sock_ind].hsmp_attr; + struct bin_attribute *hattr = &hsmp_pdev.sock[sock_ind].hsmp_attr; sysfs_bin_attr_init(hattr); hattr->attr.name = HSMP_METRICS_TABLE_NAME; hattr->attr.mode = 0444; hattr->read = hsmp_metric_tbl_read; hattr->size = sizeof(struct hsmp_metric_table); - hattr->private = &plat_dev.sock[sock_ind]; + hattr->private = &hsmp_pdev.sock[sock_ind]; hattrs[0] = hattr; - if (plat_dev.proto_ver == HSMP_PROTO_VER6) + if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) return hsmp_get_tbl_dram_base(sock_ind); else return 0; @@ -404,7 +404,7 @@ int hsmp_cache_proto_ver(u16 sock_ind) ret = hsmp_send_message(&msg); if (!ret) - plat_dev.proto_ver = msg.args[0]; + hsmp_pdev.proto_ver = msg.args[0]; return ret; } diff --git a/drivers/platform/x86/amd/hsmp/hsmp.h b/drivers/platform/x86/amd/hsmp/hsmp.h index 1ff652dc0ef0..a77887d298b6 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.h +++ b/drivers/platform/x86/amd/hsmp/hsmp.h @@ -44,7 +44,7 @@ struct hsmp_socket { }; struct hsmp_plat_device { - struct miscdevice hsmp_device; + struct miscdevice mdev; struct hsmp_socket *sock; u32 proto_ver; u16 num_sockets; @@ -52,7 +52,7 @@ struct hsmp_plat_device { bool is_probed; }; -extern struct hsmp_plat_device plat_dev; +extern struct hsmp_plat_device hsmp_pdev; int init_acpi(struct device *dev); ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c index 2ed5a9452244..c297540bb64c 100644 --- a/drivers/platform/x86/amd/hsmp/plat.c +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -68,21 +68,21 @@ static int hsmp_create_non_acpi_sysfs_if(struct device *dev) struct attribute_group *attr_grp; u16 i; - hsmp_attr_grps = devm_kcalloc(dev, plat_dev.num_sockets + 1, + hsmp_attr_grps = devm_kcalloc(dev, hsmp_pdev.num_sockets + 1, sizeof(*hsmp_attr_grps), GFP_KERNEL); if (!hsmp_attr_grps) return -ENOMEM; /* Create a sysfs directory for each socket */ - for (i = 0; i < plat_dev.num_sockets; i++) { + for (i = 0; i < hsmp_pdev.num_sockets; i++) { attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), GFP_KERNEL); if (!attr_grp) return -ENOMEM; - snprintf(plat_dev.sock[i].name, HSMP_ATTR_GRP_NAME_SIZE, "socket%u", (u8)i); - attr_grp->name = plat_dev.sock[i].name; + snprintf(hsmp_pdev.sock[i].name, HSMP_ATTR_GRP_NAME_SIZE, "socket%u", (u8)i); + attr_grp->name = hsmp_pdev.sock[i].name; attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; hsmp_attr_grps[i] = attr_grp; @@ -105,10 +105,10 @@ static int init_platform_device(struct device *dev) struct hsmp_socket *sock; int ret, i; - for (i = 0; i < plat_dev.num_sockets; i++) { + for (i = 0; i < hsmp_pdev.num_sockets; i++) { if (!node_to_amd_nb(i)) return -ENODEV; - sock = &plat_dev.sock[i]; + sock = &hsmp_pdev.sock[i]; sock->root = node_to_amd_nb(i)->root; sock->sock_ind = i; sock->dev = dev; @@ -173,11 +173,11 @@ static int hsmp_pltdrv_probe(struct platform_device *pdev) * Hence allocate memory for all the sockets at once instead of allocating * on each probe. */ - if (!plat_dev.is_probed) { - plat_dev.sock = devm_kcalloc(&pdev->dev, plat_dev.num_sockets, - sizeof(*plat_dev.sock), - GFP_KERNEL); - if (!plat_dev.sock) + if (!hsmp_pdev.is_probed) { + hsmp_pdev.sock = devm_kcalloc(&pdev->dev, hsmp_pdev.num_sockets, + sizeof(*hsmp_pdev.sock), + GFP_KERNEL); + if (!hsmp_pdev.sock) return -ENOMEM; } @@ -201,19 +201,19 @@ static int hsmp_pltdrv_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); } - if (!plat_dev.is_probed) { - plat_dev.hsmp_device.name = HSMP_CDEV_NAME; - plat_dev.hsmp_device.minor = MISC_DYNAMIC_MINOR; - plat_dev.hsmp_device.fops = &hsmp_fops; - plat_dev.hsmp_device.parent = &pdev->dev; - plat_dev.hsmp_device.nodename = HSMP_DEVNODE_NAME; - plat_dev.hsmp_device.mode = 0644; + if (!hsmp_pdev.is_probed) { + hsmp_pdev.mdev.name = HSMP_CDEV_NAME; + hsmp_pdev.mdev.minor = MISC_DYNAMIC_MINOR; + hsmp_pdev.mdev.fops = &hsmp_fops; + hsmp_pdev.mdev.parent = &pdev->dev; + hsmp_pdev.mdev.nodename = HSMP_DEVNODE_NAME; + hsmp_pdev.mdev.mode = 0644; - ret = misc_register(&plat_dev.hsmp_device); + ret = misc_register(&hsmp_pdev.mdev); if (ret) return ret; - plat_dev.is_probed = true; + hsmp_pdev.is_probed = true; } return 0; @@ -225,9 +225,9 @@ static void hsmp_pltdrv_remove(struct platform_device *pdev) * We register only one misc_device even on multi socket system. * So, deregister should happen only once. */ - if (plat_dev.is_probed) { - misc_deregister(&plat_dev.hsmp_device); - plat_dev.is_probed = false; + if (hsmp_pdev.is_probed) { + misc_deregister(&hsmp_pdev.mdev); + hsmp_pdev.is_probed = false; } } @@ -299,15 +299,15 @@ static int __init hsmp_plt_init(void) * amd_nb_num() returns number of SMN/DF interfaces present in the system * if we have N SMN/DF interfaces that ideally means N sockets */ - plat_dev.num_sockets = amd_nb_num(); - if (plat_dev.num_sockets == 0 || plat_dev.num_sockets > MAX_AMD_SOCKETS) + hsmp_pdev.num_sockets = amd_nb_num(); + if (hsmp_pdev.num_sockets == 0 || hsmp_pdev.num_sockets > MAX_AMD_SOCKETS) return ret; ret = platform_driver_register(&amd_hsmp_driver); if (ret) return ret; - if (!plat_dev.is_acpi_device) { + if (!hsmp_pdev.is_acpi_device) { if (legacy_hsmp_support()) { /* Not ACPI device, but supports HSMP, register a plat_dev */ ret = hsmp_plat_dev_register(); From patchwork Thu Jul 11 07:33:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730110 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2048.outbound.protection.outlook.com [40.107.96.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A88614885D for ; Thu, 11 Jul 2024 07:33:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.96.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683235; cv=fail; b=ePn5AGDY2qoMb2BNuvWEaYainAv+eRClAXOhqNPyH3PTTQGU80sJ+/tFtg3+zGiegY+QOA+LK2KtZlIYe1O2DX5lbNskySPoxH1rtiIWiuLi9WPU5ewC62TzcVHw0HuXkkLf44KLDz4Wcvy1KuqL0dlik2Kv3p55wyGPKN15SPQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683235; c=relaxed/simple; bh=1buVQeUPNQVLNhISQSFJ6EIyzbEjxP/glAOMyD109QU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TeCze96ar2qFKrljlqi/xfSprBrxTAMk6u3zSb432ZczTJnpu/17xHth1yR+EnV6MQkNE4Wh7rQAJLhrGXWjq5hZ27r3Rumwez800He2Ensy4FKmbjvQ9mYOYHlx3W1JGWSRnohTEp5hoLedBNppk6BuHjstPpbWt2r4az08+B0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=KBLVHJVd; arc=fail smtp.client-ip=40.107.96.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="KBLVHJVd" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TpzuizKqlGZEpMLPf4IUJ9XwgZgq0ImpjWA5TBTbo2VwM5b2Tfb5i3GHNmFeax0cZzUHc/ItDveIEpEr5UTDUaFyk9aSBkHc+76rqvvCoUJ7WW3ovjOha5J9Lq0HxkeVMhU3reEoPpLnjvGtUjpPzY9AfnOz7tA3KQNP3nnkg/xosKrEQmasnRtgpvuuhgvvkJ9qcjKzt0I83HgtbZmUAXxk9Rn8A2gmj1e4Q23P+P9kT/XuE++fIu6LuIBxJKBgZs/XKS6ndzRu4ThLUkjlpqSnzUErM3sxIkHbZHTMLiMnAPuxrn4oo88II+vbErkWI71I3jESbO1y1jnl/lcM+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=/oDFQog46eCRyjMsF9/0HRU4f67Hpj2MaBicStU+FJ0=; b=ori7rHz6/u97hVsGed5QiFcZK8wiq9ogGJPx90u/0uvEZRBVgipE9ZuIM2VxA7LvdY92MLOEop6ILBDiWDBOImP3idLoM6CRgKi/KfZ0cZ2wjQ7m03ioa/6UpB0ZBOwyZMffO1PmjMyk4rPpbRZQvv9OPpEk8Xtilrec/tkarmjFYZiU/nfetNilePn0aTWrtP6hcGInZAr6mLs8k4eUc6Y/c0oC0Y6Ub1A4Tv2S0VKdCWfQ2Ayl30WaKAcWKvaEpDagrt4pNtsHdRHLhwOvdDE8ZnXsRKyMkKy1UGscygJgcD+LDYNnnYCXTMNhY6b+WfWqKWCgunQbAcSSZCfHBg== 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 (0) 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=/oDFQog46eCRyjMsF9/0HRU4f67Hpj2MaBicStU+FJ0=; b=KBLVHJVdN9NPm7FS7VNCMaIyPESKDBbapo0OQr0pScBQocE3SAHU+lR6xzQtyI0oqvuiH+dHf0eyPTCjkruGHAEi6fJScfopzULz1u+nSRiXcIaz3psJbB8afMw9ciRU0qI4IhRFs/1UBumLAxMpgfxm7pdcF5KmH2lp4iWf1hw= Received: from BLAPR03CA0134.namprd03.prod.outlook.com (2603:10b6:208:32e::19) by SJ2PR12MB7797.namprd12.prod.outlook.com (2603:10b6:a03:4c5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36; Thu, 11 Jul 2024 07:33:50 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::a3) by BLAPR03CA0134.outlook.office365.com (2603:10b6:208:32e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36 via Frontend Transport; Thu, 11 Jul 2024 07:33: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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:49 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:46 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 07/11] platform/x86/amd/hsmp: Create mutually exclusive ACPI and plat drivers Date: Thu, 11 Jul 2024 07:33:10 +0000 Message-ID: <20240711073314.2704871-7-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|SJ2PR12MB7797:EE_ X-MS-Office365-Filtering-Correlation-Id: 37784621-4a66-4b38-e7ce-08dca17bce84 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: DttSuwrENPO+Atd5o1JErR6jYliaWei/inlwv7f9pYtVwnlks5TIZQ68zsyR/tyftyinA8lMAKiLsXUCc2OBG1jSPHr7hgYKBq3NnLTtCzvps0pUAB9PV1/DbZWE26yrpy130RdvmQMVJ5mo8Df+12Q7sKPyG78zQAyDozZLMO6kix/qi8psF9jVX7Np3hlXQjd1ZsW52a216dU49nivgqaD9UBu01tOL3b7NViJ/TE6IPxfGdbJYO9QAOz708XQySshpYKh87luZdjD95Mv/wxLsvIxW20HAzuAt4VB22mmowjv8UrZl97kLluis4dLdD3a2rfxcvH2+Vvsr3Lex+lPtioKKQWR1vAe5cyJ8BrpOhS9g4Pq27GyxctXczIKnHD8RvdEA648P00ydSNBrYmhg/j/PEUu9sA9pXNRBphm/zHEHKMSU08LZtFBOJCAD9tdQSNg6j1x92VlIDyzq/VwbJid1yUDRgS6bMUmVOSFb9q5syA1ZnQXPx9eMX7hkmDGEcLQ45QiGroKh9wfwewvefJwzOiPRkXnBUn3yk0Uds9D3gWH4xp8r7gOuBqPbo+FbX6ng9D9GnC/m7S+kUc62daeXHWdqqN43RlC5EXYaULCRg07KpB0c+LI3CXrIhljirHnBfpqt7DFR/L6iFEFfim8QKJhvSl8ob1Wey/kYdws/n2FO/fr/nwKhw/wzoh+G1Vh5KiGFj12h6/Q/1FFAiM+o+S7q8XBDjZD3t4ome2vJNn7ObrlXu6xTuxzZfkYGgVKiRP++83f+JMVY9nC8ZhWB/ZmvIFMK0cw6493I+bGpHaBBCT+/1JqI3M1Bv42ZqPIo8CwH5GPuLAc9qaQNP/LZPF0BR8JE3Vvz66JSxEXXtk9lRKkILtT8aZBsBicLY7z89sFHiBaspaaQoEcRfQu3+vyIbHNDytu/yfr5yeAX4KW9aS78+HzE87dSaDAe1pDwDO3n5TZ8V0/Yhl94ileIWnOpHrjIYA3w0sVCRbCtatislQZ2C3S3obc07gLnlZZiN5YW0hJXJnzyDTKTl1UO3dH/Ojp1dEw5K7ASC6lTdQIVmcvYzLPVpUx4PGoI8xqvoY0CdvFlnnu6uhf+KebLFC0Pu4SVmchPZ03FW/dpbC1yDh43D8k4rVJuo+1uauG/n96LiySa8iGUW84RspPQClFfD0YyoVfNxZLUEmvkj/Q+IuzoWe8p7sUywPkGYGFatSd3sgI2Qb9RIAnpyWYlsDSCtISZeWfaRSNWiQJ+mMcjmY3Y2TAEKUM3veumfjx9zqO+kz6VxBCX9PZOOtN/balO4gv0qWv9IGLR+MeWAhCn9Eu0K4cokQ2B5nwwkfVAW2wT/5cwGfO4T/h3KqfNKvC6kSCYtlEHT70f3ADlvm2Hkyz1GFe5+fY9VBF2xXQt8UhGVZuGc+L6U522U5XwLoF/zV8hoTPAZEOClBGlVFYy+cFzvbDniiY 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:(13230040)(1800799024)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:49.6696 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 37784621-4a66-4b38-e7ce-08dca17bce84 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7797 Separate the probes for ACPI and platform device drivers. Provide a Kconfig option to select either the ACPI or the platform device based driver. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: Rename "plat_dev" to "hsmp_pdev" arch/x86/include/asm/amd_hsmp.h | 2 +- drivers/platform/x86/amd/hsmp/Kconfig | 25 ++++- drivers/platform/x86/amd/hsmp/Makefile | 10 +- drivers/platform/x86/amd/hsmp/acpi.c | 119 ++++++++++++++++++++++-- drivers/platform/x86/amd/hsmp/hsmp.c | 25 ++--- drivers/platform/x86/amd/hsmp/hsmp.h | 8 +- drivers/platform/x86/amd/hsmp/plat.c | 122 +++++++------------------ 7 files changed, 186 insertions(+), 125 deletions(-) diff --git a/arch/x86/include/asm/amd_hsmp.h b/arch/x86/include/asm/amd_hsmp.h index 03c2ce3edaf5..ada14e55f9f4 100644 --- a/arch/x86/include/asm/amd_hsmp.h +++ b/arch/x86/include/asm/amd_hsmp.h @@ -5,7 +5,7 @@ #include -#if IS_ENABLED(CONFIG_AMD_HSMP) +#if IS_ENABLED(CONFIG_AMD_HSMP) || IS_ENABLED(CONFIG_AMD_HSMP_ACPI) int hsmp_send_message(struct hsmp_message *msg); #else static inline int hsmp_send_message(struct hsmp_message *msg) diff --git a/drivers/platform/x86/amd/hsmp/Kconfig b/drivers/platform/x86/amd/hsmp/Kconfig index b55d4ed9bceb..15888a89581a 100644 --- a/drivers/platform/x86/amd/hsmp/Kconfig +++ b/drivers/platform/x86/amd/hsmp/Kconfig @@ -3,9 +3,30 @@ # AMD HSMP Driver # +menu "AMD Host System Management Port driver" + depends on AMD_NB + +config AMD_HSMP_ACPI + tristate "AMD HSMP ACPI driver" + depends on ACPI + help + The driver provides a way for user space tools to monitor and manage + system management functionality on EPYC server CPUs from AMD. + + Host System Management Port (HSMP) interface is a mailbox interface + between the x86 core and the System Management Unit (SMU) firmware. + + This driver supports ACPI based probing. + + You may enable this, if your platform bios provides an ACPI object + as described in the documentation. + + If you choose to compile this driver as a module the module will be + called amd_hsmp. + config AMD_HSMP tristate "AMD HSMP Driver" - depends on AMD_NB && X86_64 && ACPI + depends on AMD_HSMP_ACPI=n help The driver provides a way for user space tools to monitor and manage system management functionality on EPYC server CPUs from AMD. @@ -15,3 +36,5 @@ config AMD_HSMP If you choose to compile this driver as a module the module will be called amd_hsmp. + +endmenu diff --git a/drivers/platform/x86/amd/hsmp/Makefile b/drivers/platform/x86/amd/hsmp/Makefile index 0cc92865c0a2..53ebc462b0f9 100644 --- a/drivers/platform/x86/amd/hsmp/Makefile +++ b/drivers/platform/x86/amd/hsmp/Makefile @@ -4,5 +4,11 @@ # AMD HSMP Driver # -obj-$(CONFIG_AMD_HSMP) += amd_hsmp.o -amd_hsmp-objs := hsmp.o plat.o acpi.o +ifneq ($(CONFIG_AMD_HSMP), ) +obj-$(CONFIG_AMD_HSMP) += amd_hsmp.o +amd_hsmp-objs = hsmp.o plat.o +endif +ifneq ($(CONFIG_AMD_HSMP_ACPI), ) +obj-$(CONFIG_AMD_HSMP_ACPI) += amd_hsmp.o +amd_hsmp-objs = hsmp.o acpi.o +endif diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c index 46cb86d5d550..86100943aadc 100644 --- a/drivers/platform/x86/amd/hsmp/acpi.c +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -11,29 +11,43 @@ #include "hsmp.h" +#include + #include #include #include #include #include +#include #include #include +#define DRIVER_NAME "amd_hsmp" +#define DRIVER_VERSION "2.3" +#define ACPI_HSMP_DEVICE_HID "AMDI0097" + /* These are the strings specified in ACPI table */ #define MSG_IDOFF_STR "MsgIdOffset" #define MSG_ARGOFF_STR "MsgArgOffset" #define MSG_RESPOFF_STR "MsgRspOffset" -void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write) +static int amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, + u32 *value, bool write) { if (write) iowrite32(*value, sock->virt_base_addr + offset); else *value = ioread32(sock->virt_base_addr + offset); + return 0; } +static const struct file_operations hsmp_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = hsmp_ioctl, + .compat_ioctl = hsmp_ioctl, +}; + /* This is the UUID used for HSMP */ static const guid_t acpi_hsmp_uuid = GUID_INIT(0xb74d619d, 0x5707, 0x48bd, 0xa6, 0x9f, 0x4e, 0xa2, @@ -194,9 +208,9 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) struct hsmp_socket *sock = &hsmp_pdev.sock[sock_ind]; int ret; - sock->sock_ind = sock_ind; - sock->dev = dev; - hsmp_pdev.is_acpi_device = true; + sock->sock_ind = sock_ind; + sock->dev = dev; + sock->amd_hsmp_rdwr = amd_hsmp_acpi_rdwr; sema_init(&sock->hsmp_sem, 1); @@ -209,7 +223,7 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) return hsmp_read_acpi_dsd(sock); } -int hsmp_create_acpi_sysfs_if(struct device *dev) +static int hsmp_create_acpi_sysfs_if(struct device *dev) { struct attribute_group *attr_grp; u16 sock_ind; @@ -232,7 +246,7 @@ int hsmp_create_acpi_sysfs_if(struct device *dev) return devm_device_add_group(dev, attr_grp); } -int init_acpi(struct device *dev) +static int init_acpi(struct device *dev) { u16 sock_ind; int ret; @@ -266,3 +280,94 @@ int init_acpi(struct device *dev) return ret; } + +static const struct acpi_device_id amd_hsmp_acpi_ids[] = { + {ACPI_HSMP_DEVICE_HID, 0}, + {} +}; +MODULE_DEVICE_TABLE(acpi, amd_hsmp_acpi_ids); + +static bool check_acpi_support(struct device *dev) +{ + struct acpi_device *adev = ACPI_COMPANION(dev); + + if (adev && !acpi_match_device_ids(adev, amd_hsmp_acpi_ids)) + return true; + + return false; +} + +static int hsmp_acpi_probe(struct platform_device *pdev) +{ + int ret; + + if (!hsmp_pdev.is_probed) { + hsmp_pdev.num_sockets = amd_nb_num(); + if (hsmp_pdev.num_sockets == 0 || hsmp_pdev.num_sockets > MAX_AMD_SOCKETS) + return -ENODEV; + + hsmp_pdev.sock = devm_kcalloc(&pdev->dev, hsmp_pdev.num_sockets, + sizeof(*hsmp_pdev.sock), + GFP_KERNEL); + if (!hsmp_pdev.sock) + return -ENOMEM; + } + + if (!check_acpi_support(&pdev->dev)) { + dev_err(&pdev->dev, "Not ACPI device?\n"); + return -ENODEV; + } + + ret = init_acpi(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, "Failed to initialize HSMP interface.\n"); + return ret; + } + + ret = hsmp_create_acpi_sysfs_if(&pdev->dev); + if (ret) + dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); + + if (!hsmp_pdev.is_probed) { + hsmp_pdev.mdev.name = HSMP_CDEV_NAME; + hsmp_pdev.mdev.minor = MISC_DYNAMIC_MINOR; + hsmp_pdev.mdev.fops = &hsmp_fops; + hsmp_pdev.mdev.parent = &pdev->dev; + hsmp_pdev.mdev.nodename = HSMP_DEVNODE_NAME; + hsmp_pdev.mdev.mode = 0644; + + ret = misc_register(&hsmp_pdev.mdev); + if (ret) + return ret; + hsmp_pdev.is_probed = true; + } + + return 0; +} + +static void hsmp_acpi_remove(struct platform_device *pdev) +{ + /* + * We register only one misc_device even on multi-socket system. + * So, deregister should happen only once. + */ + if (hsmp_pdev.is_probed) { + misc_deregister(&hsmp_pdev.mdev); + hsmp_pdev.is_probed = false; + } +} + +static struct platform_driver amd_hsmp_driver = { + .probe = hsmp_acpi_probe, + .remove_new = hsmp_acpi_remove, + .driver = { + .name = DRIVER_NAME, + .acpi_match_table = amd_hsmp_acpi_ids, + }, +}; + +module_platform_driver(amd_hsmp_driver); + +MODULE_DESCRIPTION("AMD HSMP Platform Interface Driver"); +MODULE_VERSION(DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 14edaace4379..759ec1d4d60d 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -31,17 +31,6 @@ struct hsmp_plat_device hsmp_pdev; -static int amd_hsmp_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write) -{ - if (hsmp_pdev.is_acpi_device) - amd_hsmp_acpi_rdwr(sock, offset, value, write); - else - return amd_hsmp_pci_rdwr(sock, offset, value, write); - - return 0; -} - /* * Send a message to the HSMP port via PCI-e config space registers * or by writing to MMIO space. @@ -64,7 +53,7 @@ static int __hsmp_send_message(struct hsmp_socket *sock, struct hsmp_message *ms /* Clear the status register */ mbox_status = HSMP_STATUS_NOT_READY; - ret = amd_hsmp_rdwr(sock, mbinfo->msg_resp_off, &mbox_status, HSMP_WR); + ret = sock->amd_hsmp_rdwr(sock, mbinfo->msg_resp_off, &mbox_status, HSMP_WR); if (ret) { pr_err("Error %d clearing mailbox status register\n", ret); return ret; @@ -73,8 +62,8 @@ static int __hsmp_send_message(struct hsmp_socket *sock, struct hsmp_message *ms index = 0; /* Write any message arguments */ while (index < msg->num_args) { - ret = amd_hsmp_rdwr(sock, mbinfo->msg_arg_off + (index << 2), - &msg->args[index], HSMP_WR); + ret = sock->amd_hsmp_rdwr(sock, mbinfo->msg_arg_off + (index << 2), + &msg->args[index], HSMP_WR); if (ret) { pr_err("Error %d writing message argument %d\n", ret, index); return ret; @@ -83,7 +72,7 @@ static int __hsmp_send_message(struct hsmp_socket *sock, struct hsmp_message *ms } /* Write the message ID which starts the operation */ - ret = amd_hsmp_rdwr(sock, mbinfo->msg_id_off, &msg->msg_id, HSMP_WR); + ret = sock->amd_hsmp_rdwr(sock, mbinfo->msg_id_off, &msg->msg_id, HSMP_WR); if (ret) { pr_err("Error %d writing message ID %u\n", ret, msg->msg_id); return ret; @@ -100,7 +89,7 @@ static int __hsmp_send_message(struct hsmp_socket *sock, struct hsmp_message *ms timeout = jiffies + msecs_to_jiffies(HSMP_MSG_TIMEOUT); while (time_before(jiffies, timeout)) { - ret = amd_hsmp_rdwr(sock, mbinfo->msg_resp_off, &mbox_status, HSMP_RD); + ret = sock->amd_hsmp_rdwr(sock, mbinfo->msg_resp_off, &mbox_status, HSMP_RD); if (ret) { pr_err("Error %d reading mailbox status\n", ret); return ret; @@ -135,8 +124,8 @@ static int __hsmp_send_message(struct hsmp_socket *sock, struct hsmp_message *ms */ index = 0; while (index < msg->response_sz) { - ret = amd_hsmp_rdwr(sock, mbinfo->msg_arg_off + (index << 2), - &msg->args[index], HSMP_RD); + ret = sock->amd_hsmp_rdwr(sock, mbinfo->msg_arg_off + (index << 2), + &msg->args[index], HSMP_RD); if (ret) { pr_err("Error %d reading response %u for message ID:%u\n", ret, index, msg->msg_id); diff --git a/drivers/platform/x86/amd/hsmp/hsmp.h b/drivers/platform/x86/amd/hsmp/hsmp.h index a77887d298b6..5d4fc7735a87 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.h +++ b/drivers/platform/x86/amd/hsmp/hsmp.h @@ -41,6 +41,7 @@ struct hsmp_socket { struct pci_dev *root; struct device *dev; u16 sock_ind; + int (*amd_hsmp_rdwr)(struct hsmp_socket *sock, u32 off, u32 *val, bool rw); }; struct hsmp_plat_device { @@ -48,19 +49,14 @@ struct hsmp_plat_device { struct hsmp_socket *sock; u32 proto_ver; u16 num_sockets; - bool is_acpi_device; bool is_probed; }; extern struct hsmp_plat_device hsmp_pdev; -int init_acpi(struct device *dev); ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count); -int hsmp_create_acpi_sysfs_if(struct device *dev); -int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write); int hsmp_cache_proto_ver(u16 sock_ind); long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, @@ -68,6 +64,4 @@ umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, int hsmp_create_attr_list(struct attribute_group *attr_grp, struct device *dev, u16 sock_ind); int hsmp_test(u16 sock_ind, u32 value); -void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write); #endif /* HSMP_H */ diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c index c297540bb64c..3bce2c570f2b 100644 --- a/drivers/platform/x86/amd/hsmp/plat.c +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -13,15 +13,13 @@ #include -#include #include #include #include #include #define DRIVER_NAME "amd_hsmp" -#define DRIVER_VERSION "2.2" -#define ACPI_HSMP_DEVICE_HID "AMDI0097" +#define DRIVER_VERSION "2.3" /* * To access specific HSMP mailbox register, s/w writes the SMN address of HSMP mailbox @@ -37,8 +35,8 @@ #define HSMP_INDEX_REG 0xc4 #define HSMP_DATA_REG 0xc8 -int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, - u32 *value, bool write) +static int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, + u32 *value, bool write) { int ret; @@ -113,6 +111,7 @@ static int init_platform_device(struct device *dev) sock->sock_ind = i; sock->dev = dev; sock->mbinfo.base_addr = SMN_HSMP_BASE; + sock->amd_hsmp_rdwr = amd_hsmp_pci_rdwr; /* * This is a transitional change from non-ACPI to ACPI, only @@ -146,89 +145,39 @@ static int init_platform_device(struct device *dev) return 0; } -static const struct acpi_device_id amd_hsmp_acpi_ids[] = { - {ACPI_HSMP_DEVICE_HID, 0}, - {} -}; -MODULE_DEVICE_TABLE(acpi, amd_hsmp_acpi_ids); - -static bool check_acpi_support(struct device *dev) -{ - struct acpi_device *adev = ACPI_COMPANION(dev); - - if (adev && !acpi_match_device_ids(adev, amd_hsmp_acpi_ids)) - return true; - - return false; -} - static int hsmp_pltdrv_probe(struct platform_device *pdev) { int ret; - /* - * On ACPI supported BIOS, there is an ACPI HSMP device added for - * each socket, so the per socket probing, but the memory allocated for - * sockets should be contiguous to access it as an array, - * Hence allocate memory for all the sockets at once instead of allocating - * on each probe. - */ - if (!hsmp_pdev.is_probed) { - hsmp_pdev.sock = devm_kcalloc(&pdev->dev, hsmp_pdev.num_sockets, - sizeof(*hsmp_pdev.sock), - GFP_KERNEL); - if (!hsmp_pdev.sock) - return -ENOMEM; - } + hsmp_pdev.sock = devm_kcalloc(&pdev->dev, hsmp_pdev.num_sockets, + sizeof(*hsmp_pdev.sock), + GFP_KERNEL); + if (!hsmp_pdev.sock) + return -ENOMEM; - if (check_acpi_support(&pdev->dev)) { - ret = init_acpi(&pdev->dev); - if (ret) { - dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); - return ret; - } - ret = hsmp_create_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); - } else { - ret = init_platform_device(&pdev->dev); - if (ret) { - dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); - return ret; - } - ret = hsmp_create_non_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); + ret = init_platform_device(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, "Failed to init HSMP mailbox\n"); + return ret; } - if (!hsmp_pdev.is_probed) { - hsmp_pdev.mdev.name = HSMP_CDEV_NAME; - hsmp_pdev.mdev.minor = MISC_DYNAMIC_MINOR; - hsmp_pdev.mdev.fops = &hsmp_fops; - hsmp_pdev.mdev.parent = &pdev->dev; - hsmp_pdev.mdev.nodename = HSMP_DEVNODE_NAME; - hsmp_pdev.mdev.mode = 0644; - - ret = misc_register(&hsmp_pdev.mdev); - if (ret) - return ret; + ret = hsmp_create_non_acpi_sysfs_if(&pdev->dev); + if (ret) + dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); - hsmp_pdev.is_probed = true; - } + hsmp_pdev.mdev.name = HSMP_CDEV_NAME; + hsmp_pdev.mdev.minor = MISC_DYNAMIC_MINOR; + hsmp_pdev.mdev.fops = &hsmp_fops; + hsmp_pdev.mdev.parent = &pdev->dev; + hsmp_pdev.mdev.nodename = HSMP_DEVNODE_NAME; + hsmp_pdev.mdev.mode = 0644; - return 0; + return misc_register(&hsmp_pdev.mdev); } static void hsmp_pltdrv_remove(struct platform_device *pdev) { - /* - * We register only one misc_device even on multi socket system. - * So, deregister should happen only once. - */ - if (hsmp_pdev.is_probed) { - misc_deregister(&hsmp_pdev.mdev); - hsmp_pdev.is_probed = false; - } + misc_deregister(&hsmp_pdev.mdev); } static struct platform_driver amd_hsmp_driver = { @@ -236,7 +185,6 @@ static struct platform_driver amd_hsmp_driver = { .remove_new = hsmp_pltdrv_remove, .driver = { .name = DRIVER_NAME, - .acpi_match_table = amd_hsmp_acpi_ids, }, }; @@ -295,6 +243,12 @@ static int __init hsmp_plt_init(void) { int ret = -ENODEV; + if (!legacy_hsmp_support()) { + pr_info("HSMP is not supported on Family:%x model:%x\n", + boot_cpu_data.x86, boot_cpu_data.x86_model); + return ret; + } + /* * amd_nb_num() returns number of SMN/DF interfaces present in the system * if we have N SMN/DF interfaces that ideally means N sockets @@ -307,19 +261,9 @@ static int __init hsmp_plt_init(void) if (ret) return ret; - if (!hsmp_pdev.is_acpi_device) { - if (legacy_hsmp_support()) { - /* Not ACPI device, but supports HSMP, register a plat_dev */ - ret = hsmp_plat_dev_register(); - } else { - /* Not ACPI, Does not support HSMP */ - pr_info("HSMP is not supported on Family:%x model:%x\n", - boot_cpu_data.x86, boot_cpu_data.x86_model); - ret = -ENODEV; - } - if (ret) - platform_driver_unregister(&amd_hsmp_driver); - } + ret = hsmp_plat_dev_register(); + if (ret) + platform_driver_unregister(&amd_hsmp_driver); return ret; } From patchwork Thu Jul 11 07:33:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730112 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2064.outbound.protection.outlook.com [40.107.101.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79ABB14885D for ; Thu, 11 Jul 2024 07:33:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.101.64 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683238; cv=fail; b=GfhMIZ56AkYVPHJ4Jv5WwBrCOXrZ2dN3fXgMSMnIIkreBZxaYJDVm89EGBWA6RyZKa6X+Lw8RzrPimPz/r+G7GFvP48bSf9nZJ0qPxNRwZl9O7i9gJcOJh8sz29VqAQwU5CHKik8i6Th5ArSh/C84r++FZyfbYPGKPXtULYRKy8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683238; c=relaxed/simple; bh=rgvmTjynZUVYpieE+S0kMs9vswDQ0oxP2s8YDgXRS2s=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FeMHn+gpb7PaQETNHwX6W2Y1Hgw86Tl5T6OoPF5kTgqSWfnjtIbiIwHVtNEIushYlRcB8F6eIoguHDQD9DEHi/zUem+qoYLl08WH5/cjJf4UECkwf82weP1l3EJyoFoDDQ9ZUkS581Ki3Af7YcD4yi/kyh7dYJ/CAAI6OgWiZt0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=H5vq4l4k; arc=fail smtp.client-ip=40.107.101.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="H5vq4l4k" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D7KQ2q98BYrQmD4D1BFwVgFdJvVPodq2+1+F9DBer5pTnCHS2zXiY2IjcyNqXzL9S9D1Zy8FyFSYPJxuFf3JlToRuWvIrJzQ/YPjKYWFkVX4z/MpFmP332YoRVBtQiKkqvfHYJOf3q09o/hExQbgFiLppjO4FKZEUhl4KLnh3F4aDni6ppJCjEH+nPqeATN9F73t1ImPBrnsG6VR6NwKRtL7lA70CyZFpc7wz0F+VqgsIWeUR8pR/6Uz0xRDOzi2FYzkVEdlWzNTrUaaDhAEx25Ys2CzKq0kpZYbbLCpp8RVaBaI2zXdIY/k9UDOeSNLvasqTurh+wgGQ9Ait6UabA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Hh55p/XrBwtfFVMDSwZHluJmIzVE3fGq6/tGtboTBFw=; b=wcZdqw9mN4u/XCrskP4iUYYjZ3THT5YmKyd+qaykNDnMJHaCyfqFl8/DT/X2a/LU0LdlJFh30vtax3AYVY+dEHU857/eTfqRoHNkuLRiomEwbtU9JvFvYvrPj1/Nr7mpE2NQpvcGqIE9nDZIlStBVVg8+2Z8mLGjl4YRsFgPhJUhF8JpkbR0R6wf9aBxAEc83ZSALCH9E8oeYLi2jsvhKVVCZbOeNDu+N9w2pKClz3JzkzN2TA4R6b69s5MXNJiKpKcF0gMFIqkKJaoK45VyiNpzBqgizh4MSk4fMeLvcRnqRzzZXtF7+olFE+97s0E1NgwwhPiwFDGd6vKTSSusOQ== 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 (0) 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=Hh55p/XrBwtfFVMDSwZHluJmIzVE3fGq6/tGtboTBFw=; b=H5vq4l4kZswkr02X0eDVbeIHnGcwDSLrCJ6RCiIPYB4FAz4ElvNyzzynmk4WVmHZDLyY7OUZZJecki2CZ49IyZfiZ7Px99PuV8FsKZ0h6bGHateQmrpbu0bBQCrlCm+0yxlR70wgvC0fH+AMadotFvT4bfwQtKpwAHQ+ARntfjc= Received: from BLAPR03CA0127.namprd03.prod.outlook.com (2603:10b6:208:32e::12) by SJ1PR12MB6195.namprd12.prod.outlook.com (2603:10b6:a03:457::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Thu, 11 Jul 2024 07:33:51 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::14) by BLAPR03CA0127.outlook.office365.com (2603:10b6:208:32e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.20 via Frontend Transport; Thu, 11 Jul 2024 07:33: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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:50 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:48 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 08/11] platform/x86/amd/hsmp: Use name space while exporting module symbols Date: Thu, 11 Jul 2024 07:33:11 +0000 Message-ID: <20240711073314.2704871-8-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|SJ1PR12MB6195:EE_ X-MS-Office365-Filtering-Correlation-Id: 4be1c061-cf56-4be8-4229-08dca17bcf41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: YGjKn6hLcQ2AC9LwzdnK+qIP57kZAuu1sM87bVka6w5Gy+7+FL5oDtRvuuOrhOxfiFSpJe0SfmcOYolLjBHdnHmKSLLP6bLMMxrQiDyUkh/sOgp7S/eu5l3xIz/uJCxfhY6zgcxT5Lr/B2ZrstZl7fO2fNH6FFtOt5LSfBkgb5OUMilzIgQ5OeL468ygktof4iOBAHNFvRgScUkl6pL5bE0yflX7POeuSWme2TZtTBX5iEzwBPEnDJ/BKVZCWbCW62nNorkdELQsG0K7Go8o03fNGCLuTR4t60ATkvj5fuHPFYZ4lKDcO0KUG1fsAtDLpcFci9QG6C7c7bThWKHc00O4O5rHXinsbRtYc/eQ1jFJG9KADI3ccWW1C8mOrpZLajpf/5wMhTiiDmVktAlUUIEeFiAXQMi7MuGCVwbptRMlagGygMDfI1bAwCo7ie/x4mOONUCXqNC8+SR38XLdDtz434TV0GBdXaj+3Fc9HWbLMa2aDCZuFRgNNRg3U1rBj2Ebhl+btiyMvTUuqLt7yopkWu5ww5broFcqOykfakLfc5wkuhk8GCLxoiUSYhswKQ2dSA3ZqHUVnz31SHoMo3gdsPvW0OrfzSOEFKadGAPMsDA15l7FaOf/LPLphJD/+StS8Pu31VWUhq2R2iN2Uu5yAg5j4Xg7pC6wO1bLPdLcw4FPUTI+EpItGfqap5YG/Dk8SrRghyNn8Wlt7ooM8vPKCM46Mof2N8n6+07vEpBk/wNkfRT5uzznW+j6nrSX+CXY3nSzIcjj7x2vfXNF9rWSzeGYp27FjePX3gJqrfa7oaCpx0aJF5HpjhLu6pUlh9FICy8J/X2YfzEVPqKi75jPDHFJAVoOF8QC8Zz4G/BiRtrtXTJO5bu7tMuGBjNL+57fNfW3OgKUERdGXQqioXeq8bOxFr4/TtF2DN8Qi6ctM+axppGlK1ZyMrwqnwUPy8O85lbLA6S4ZEG5tsqeZMm4uDwx8f0QPMg+QePH9TqgtTO//glJIzIYlySkkSBnNLKzVOERNlnh1UISOBXhode+IU4qVtAieordF88VE76L+fGf030WM9Jg9l6GDELVgN9EHvXI3be3tNx4GqxyZ9H+AJv73W25YS/N4xWxM5SU9SLUJ2Uhy3KzVMkq8P6oUEjRd8YE7ht1GXWCLAEuuYvLON80V8AndlmBBtopKOsGPbFoUnXwenFeunsvVGuzeC5JPwZR6Kz7+m8d4dzSeWrP3Txhd/B62sW9mF7gVrz54VKzS+t8wMhbvjUqcF0ascAXnmlxp+Tx2u9JIEBzl3q9Mr+y01ZY0ShCo3UBUnnwRBo57SVDI3h7KtOpR/oKg1HuaER0iK37esb9NwQzlTiAHEJuBUxhKTIR1RGvSriQtefhhmPEKyOMiPH40Fm2tOB3VAcm4Dtwp311m11/q6caOe+viZomkgbLWWpV/Fh83ZSYx3UobBQwDve/BFUo 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:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:50.9196 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4be1c061-cf56-4be8-4229-08dca17bcf41 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6195 hsmp_send_message() is exported with AMD_HSMP name space. The other modules who would like to use this symbol, need to import AMD_HSMP namespace using MODULE_IMPORT_NS() to get away with warning. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: None drivers/platform/x86/amd/hsmp/hsmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 759ec1d4d60d..119a1f8895ca 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -186,7 +186,7 @@ int hsmp_send_message(struct hsmp_message *msg) return ret; } -EXPORT_SYMBOL_GPL(hsmp_send_message); +EXPORT_SYMBOL_NS_GPL(hsmp_send_message, AMD_HSMP); int hsmp_test(u16 sock_ind, u32 value) { From patchwork Thu Jul 11 07:33:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730111 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2067.outbound.protection.outlook.com [40.107.94.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8669A14A0A0 for ; Thu, 11 Jul 2024 07:33:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683237; cv=fail; b=fWBlKD0QdhZD2vsptFfZBb6kFfsQ5k1eKOYDtikTYfJ3v5TLfsGaOR10FurneZs5RXj7oDKo8tAzayoHvuL6OIqqfMPzrRoS7NnoasfW+D9l4x73ZUWaq/YO4RajqWmHoCL6eqZ+A954yvs/3XL/GvABZiug4nPNT51rTpsNZfw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683237; c=relaxed/simple; bh=npmvtuxfwV3SJpACFWyxraTNMTDVx4U6UxP2f44Iy5E=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Pj0aPa3u48lRnx+51NGTdvGytGaS3tely8pT1+hrTOgDFs0Zc3G8wDhzg5HX689eYetEqFNE0zKaMB99B5kV86M8fA/X1QARP9HZFSTRu91q0v9+vfvxOYagakIGQb2hrci/gmqFm1QUnTytkgBR3678pbGTJhIR4MFguO4WHnM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=ejNbvk57; arc=fail smtp.client-ip=40.107.94.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="ejNbvk57" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iztjxE3fysPUKjH85NXluhMiofMYVD8VIXEA47UhnzN3AkNKQGkFOMjLn2xypugEpKO0Yri+4Tvinc9LGYmyyBknLRzByVU/qC4N9V1CXRvznUuFdrNDqWUxNYpeJ6NgSETXoKBsF2U+FEHgtoV4TP1G83wClKaU1WcF3O+aBqaApJnZMqOXqn/hn+bJhYuRKyIIkO/gF3xnRSE5fpdCGX/DIhahe7pX0Wkm/p/xPy/E7AO2QPuFH2K9E17ydd7KvACiTraYE+iE0ELUpcjFsbqjsxwFlXUHt4Hd0H966ZfdWwcZ1K9PtdeWhdC1MOj4Uj6yvJOlGQJ6CW9e7pYGNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=9QRdl4zbYX/Bp1FboAJa70H87jkaCwdEcMysJUZFsVM=; b=uGmL3RUernJu/rJDiLXX351i3nq+sKV/0IpHcPRyLcCt2ian7txGS15D3C+vxOv6ZVp/8ipvG5j7CNWL99/DbgGh0vU1RCgZChYBhdk55yludIa/RZw5eRDygSvKekU1RRuJ7S2+NcBaBMmVeDwPrZa5Wobo+KvQ9HbJmGLkYgVfi/A7KUvM1/AQa8NJnKl8WdZmnrYZgt2J447F0QOX3zbwZl/vvgzQLMxg5Oco6Gtc7xkLVz4rvPPe0QBPUWBTFT6nOexWDb0VFUOIp23aSbWWq4VQ8DBGJNnr4OCuDFHcF8geIW8uNSEylIiAcqjHyZ2rgXsY9u9N5NMLodDMcA== 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 (0) 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=9QRdl4zbYX/Bp1FboAJa70H87jkaCwdEcMysJUZFsVM=; b=ejNbvk57cntwJUClWFwCtEs3GL06NVhWttedxCus7FtSKGkbd7aqdwPBJhlrUoGuvxwdURbo6OAVKYq/we3fp/cJza3eQYwBnH+Myj7oQY1SqldB2WsnnmJY+3O/hXfgacwfvCKdP6oHmtusyAYp68weGyd0X6IcIbbuD5jMaiY= Received: from BLAPR03CA0139.namprd03.prod.outlook.com (2603:10b6:208:32e::24) by CYYPR12MB8892.namprd12.prod.outlook.com (2603:10b6:930:be::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Thu, 11 Jul 2024 07:33:53 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::9a) by BLAPR03CA0139.outlook.office365.com (2603:10b6:208:32e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.20 via Frontend Transport; Thu, 11 Jul 2024 07:33:53 +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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:53 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:50 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 09/11] platform/x86/amd/hsmp: Move read() and is_bin_visible() to respective files Date: Thu, 11 Jul 2024 07:33:12 +0000 Message-ID: <20240711073314.2704871-9-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|CYYPR12MB8892:EE_ X-MS-Office365-Filtering-Correlation-Id: ac5868a2-f25b-4ab4-1e03-08dca17bd0c1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: vQLyZC7NLf21P9TZz1av3Oy9CSBV9fBCCtNrfEl8j57nQV3Tbsckjs9BVT84KCA+Um8gQDOHJzjuylZcVtuFbhakv7t2SNe5ExjnLrSVY3SUiOrFXF8EOPqdWjkDeGUQrsVebAHei3fM3uvuYJsELOhB97q1xwhCUxWTzweKrErlH1YTYdrWSNfIn+SqhMRMw+0oq+uY7vKEhd5ipiEoUlockUsfkZHGkzf4GCwPIrl9xvuNAIvv8KYIIAMS95Efbm38/HHWxEqYCuI2gH750wKap1DFlwNSb5bWkelrhs71fD6UtWc18W9zn4UQmQ9oS2VAzEhc85stVmd+Rn86Ad2VDRD9RW2vFCeFfuCiVyIpJ9GAlByCcQpYDxoK9lDD4PhRGUQkkPZCeiF0uNkHKdvez9g8HHfHly0IsgK5DU7ZwZEdGYSkQ9FY0gms0Wbobc9vgYNxI0MlO/NcCWdPhJ7ySV/KSjCrRHxhNAtF9T0wBOu2Ed1sMRLEuZV9bDht7+UQB7Eqb+QduRq6sSShx1CcVY7mct/8UmZLmhxdTehkJt48qfwL2+nKjpPSBqyyTctgyBmamXsBsrWH6NbsyPfKmZ950hkPuVVWC4XNnJbBocH52s/0rpEoQqjNUEzcjUrNxuFHY5+fA0QYjYzVoGzRyBqO4oLOW7g8W4vxzujSLS5dToxPDmFcq9e4F0HHzRzY38ZZBF5mSBo/0AhSz6Y/gmC4qK55Aagi31OL1UYtUsd3PvEVrajqPV7hfGFiXb1OBMs4mvBaLhbgJHlySjch2roeBm5vOqz20sKh/NQNFrkVZpYuTe96+GFWwuW4I7uEMKk9429dvLTBp+1zHpmxgZ8GXS/fFNbKQNLG+c8oyk/EPXyz2EBgT054Kb0aLVjSxacu7RQcFX3hultAXDaY9zuAbZC6C37ABvpu4YEKD5frEuGvTmI0SNVOENkT26QePR0YNPiDSLRb4hiN3moUb+8FooO4SXFzGFkJqHbLBEyHEZdumyK3XKuLoFDgf53GTUXWNM/e6DpGUDk3jmv3jiPjj3bM3vNFoaw3vSobbAp6zL+HXytHAmcRg63EXUUQgSOh8bEae9tqcboxqS67p3ptKodpvYRFsH8NqAhy7g4MYDBCVl+gdg54TEl7G7zLa9VD7Dcwxm2m9JdtX4LU1+YaqoyLN5L4CnQMeFzdBF+7Yoe00FOM0HTpPEPMeZP7iYzGWYq8OLIpZAXtBfDSxNQrLrHCf1wQQNRpUmJaN4mxOeBBISZeuLg7/pZOyH4O4fgkd6aV3INTqbWP/JonLCFq8TLjYBubcYVq7RKoh/y1vvTkdLXYJCSCNpSpKXLDZ1sLv/bslilHAhMIcVkUXLM+xVQvZaUZiQu6THTeJshl7zmFTME+vTrPjTv6TccUA3SkmZdkDh0hgJ/04lG5eUtwcH2BD4jXy/WWVLb63o257c2o0Wgg+vLwzdIs 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:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:53.4352 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac5868a2-f25b-4ab4-1e03-08dca17bd0c1 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8892 The .read() and .is_bin_visibile() need to be handled differently in acpi and platform drivers, due to the way the sysfs files are created. This is in preparation to using .dev_groups instead of dynamic sysfs creation. The sysfs at this point is not functional, it will be enabled in the next patch. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: 1. Change is_visible to is_bin_visible in commit message 1. Add parenthesis around read and is_bin_visible in commit message 2. Change plat_dev to hsmp_pdev, hsmp_device to mdev 3. Remove unnecessary if, else conditions in hsmp_is_sock_attr_visible 4. Change un cached to un-cached drivers/platform/x86/amd/hsmp/acpi.c | 41 ++++++++++++++++++++ drivers/platform/x86/amd/hsmp/hsmp.c | 37 ------------------ drivers/platform/x86/amd/hsmp/plat.c | 57 ++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 37 deletions(-) diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c index 86100943aadc..7cb38c8dc627 100644 --- a/drivers/platform/x86/amd/hsmp/acpi.c +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -11,6 +11,7 @@ #include "hsmp.h" +#include #include #include @@ -214,6 +215,8 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) sema_init(&sock->hsmp_sem, 1); + dev_set_drvdata(dev, sock); + /* Read MP1 base address from CRS method */ ret = hsmp_read_acpi_crs(sock); if (ret) @@ -246,6 +249,44 @@ static int hsmp_create_acpi_sysfs_if(struct device *dev) return devm_device_add_group(dev, attr_grp); } +ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct hsmp_socket *sock = dev_get_drvdata(dev); + struct hsmp_message msg = { 0 }; + int ret; + + if (!sock) + return -EINVAL; + + /* Do not support lseek(), reads entire metric table */ + if (count < bin_attr->size) { + dev_err(sock->dev, "Wrong buffer size\n"); + return -EINVAL; + } + + msg.msg_id = HSMP_GET_METRIC_TABLE; + msg.sock_ind = sock->sock_ind; + + ret = hsmp_send_message(&msg); + if (ret) + return ret; + memcpy_fromio(buf, sock->metric_tbl_addr, bin_attr->size); + + return bin_attr->size; +} + +umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, + struct bin_attribute *battr, int id) +{ + if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) + return battr->attr.mode; + + return 0; +} + static int init_acpi(struct device *dev) { u16 sock_ind; diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index 119a1f8895ca..c906723ae2f2 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -274,34 +274,6 @@ long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) return 0; } -ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, - loff_t off, size_t count) -{ - struct hsmp_socket *sock = bin_attr->private; - struct hsmp_message msg = { 0 }; - int ret; - - if (!sock) - return -EINVAL; - - /* Do not support lseek(), reads entire metric table */ - if (count < bin_attr->size) { - dev_err(sock->dev, "Wrong buffer size\n"); - return -EINVAL; - } - - msg.msg_id = HSMP_GET_METRIC_TABLE; - msg.sock_ind = sock->sock_ind; - - ret = hsmp_send_message(&msg); - if (ret) - return ret; - memcpy_fromio(buf, sock->metric_tbl_addr, bin_attr->size); - - return bin_attr->size; -} - static int hsmp_get_tbl_dram_base(u16 sock_ind) { struct hsmp_socket *sock = &hsmp_pdev.sock[sock_ind]; @@ -335,15 +307,6 @@ static int hsmp_get_tbl_dram_base(u16 sock_ind) return 0; } -umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, - struct bin_attribute *battr, int id) -{ - if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) - return battr->attr.mode; - else - return 0; -} - static int hsmp_init_metric_tbl_bin_attr(struct bin_attribute **hattrs, u16 sock_ind) { struct bin_attribute *hattr = &hsmp_pdev.sock[sock_ind].hsmp_attr; diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c index 3bce2c570f2b..c2b83363713f 100644 --- a/drivers/platform/x86/amd/hsmp/plat.c +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -11,6 +11,7 @@ #include "hsmp.h" +#include #include #include @@ -90,6 +91,62 @@ static int hsmp_create_non_acpi_sysfs_if(struct device *dev) return device_add_groups(dev, hsmp_attr_grps); } +ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count) +{ + struct hsmp_message msg = { 0 }; + struct hsmp_socket *sock; + u8 sock_ind; + int ret; + + ret = kstrtou8(bin_attr->private, 10, &sock_ind); + if (ret) + return ret; + + if (sock_ind >= hsmp_pdev.num_sockets) + return -EINVAL; + + sock = &hsmp_pdev.sock[sock_ind]; + if (!sock) + return -EINVAL; + + /* Do not support lseek(), reads entire metric table */ + if (count < bin_attr->size) { + dev_err(sock->dev, "Wrong buffer size\n"); + return -EINVAL; + } + + msg.msg_id = HSMP_GET_METRIC_TABLE; + msg.sock_ind = sock_ind; + + ret = hsmp_send_message(&msg); + if (ret) + return ret; + memcpy_fromio(buf, sock->metric_tbl_addr, bin_attr->size); + + return bin_attr->size; +} + +umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, + struct bin_attribute *battr, int id) +{ + u8 sock_ind; + int ret; + + ret = kstrtou8(battr->private, 10, &sock_ind); + if (ret) + return ret; + + if (id == 0 && sock_ind >= hsmp_pdev.num_sockets) + return SYSFS_GROUP_INVISIBLE; + + if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) + return battr->attr.mode; + + return 0; +} + static inline bool is_f1a_m0h(void) { if (boot_cpu_data.x86 == 0x1A && boot_cpu_data.x86_model <= 0x0F) From patchwork Thu Jul 11 07:33:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730113 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2057.outbound.protection.outlook.com [40.107.92.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D2ACC14885D for ; Thu, 11 Jul 2024 07:33:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683240; cv=fail; b=bXIN93q2gIcNvXOV9x5ddBmpKnGpCfC9PJifIf06trAIAC678V4twmXrt0A1la4OtcloR7IpvJT7x7uszhTZnljXP8sYoed6fJjTrrkDjepAVlBo12Tfi2qFHVdAroQGjMwrrYH8kUxoN2Gdpeaf0fvPh2RGSk47Ay5I/s2fvLk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683240; c=relaxed/simple; bh=rOX6y6pe9s0sax22CsvDI/zIxvX28Hb/dgIAYNEEpsA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=g2qCih296izXf/McsyriKjNcM0HVH13nq8z759rKBPeDYM+ESsLDdJFyjhmu+XrWnkW82CPT5ksvBE0Gk5gvNZM1WRJF02yKpvuW7/949pDNVEfzr+Lg1UbX/pRP1Ao/9K6bFPii82fyCncfyBTvXfrYlpZjLUMaW/KxI4glqNo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=UqA8qfLy; arc=fail smtp.client-ip=40.107.92.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="UqA8qfLy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MKeyTQ5/mOO1NdZ6d8xZUtFMY6e7sZMJQJUhjAV65OTZQ9qHyjRyVX/qzom7CyqiLq/79G+/CuddQ+nquTVPSr5NOzUm4NUoNVK0kyFEnzoq+XSlDDAZUeenJBPPgqhy1EuN4D7HYteh4K6SEgWXSrMpenZh3g59AN84mULxXBUTrIinz6UqF3IaClbinUOMbyDcJSSTMvHZ+Ot8IEj3D6GsWER5LQ22FlEEPbFijeSgZ/TIPYY/X27Od4W+dL0EbUAgCnga20pvyNJ+74DQojXDNJlbi7H0XRS1M9UCYnL0MQv9vGQUv8DNJKczyqbYOh4BzlBASsrRv+3wso98ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=1pA7pJ6pTCI3KqbE4+J0/5up0N2CLZiRgW2rMWFbt90=; b=LwFDZ65E93veHa9PRn6hMS+ap+HdL/ICGa+IdUMFjDcCyS/Q7LgbFwoT6pmaTpmbQAQ9oiDJeWf+s7VsGN+rZyjiXBclSgxiuDN476dV3TDVlqfUhb9KSt7ftk/dJ8bfgyDu6I80Uhk4XqWo1tvtWKAaltOJejRVSDgetorrJeYvw51ch5/DaHnmHa3Gw5JbYwLIjVm1BxZKt5pd3AWevlVH6yXrDn/fZnFIpm9b/YCZiJc4kKRQmtQ6DXgzJbcpDNMgxsJ8tKsvtYxFmGzMR2AWj6uliY8aapbkuY8xcwzS2ghPMqBBFtu/0uK8mlElPWlE4qijr0ylyZl3CkKCEw== 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 (0) 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=1pA7pJ6pTCI3KqbE4+J0/5up0N2CLZiRgW2rMWFbt90=; b=UqA8qfLy46BiYJLnYW/SOzBzWt2JmgStHZLnvbSRohTaXoAdeq3peJewnOUG1+S5mKYq87WGYmp/hhMIU+vxD8rPKg2wx7QF3YxwLHjdTlt/1JGZa0ocYkixK3BhtzrXWn1kxYUxw8ZSIcME0ScG3sssYx4QAPKFOI+RL7kC1RA= Received: from BLAPR03CA0121.namprd03.prod.outlook.com (2603:10b6:208:32e::6) by PH8PR12MB6673.namprd12.prod.outlook.com (2603:10b6:510:1c0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.34; Thu, 11 Jul 2024 07:33:55 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::98) by BLAPR03CA0121.outlook.office365.com (2603:10b6:208:32e::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.22 via Frontend Transport; Thu, 11 Jul 2024 07:33:55 +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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:55 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:52 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 10/11] platform/x86/amd/hsmp: Use dev_groups in the driver structure Date: Thu, 11 Jul 2024 07:33:13 +0000 Message-ID: <20240711073314.2704871-10-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|PH8PR12MB6673:EE_ X-MS-Office365-Filtering-Correlation-Id: a4adcf35-a678-423c-7581-08dca17bd1bb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: OFQ7ndoRVb2Ku+6RcoCWD2a/AVtYt05LLfFEaZ8/cxh8ekjIfJu9OUaqY4c+UfiQdMepDO62UU34MlpN3KxGzU+MJTasnH9hd2IIB/tNl/Pe2rjdqeFbqnmfYG3jRoX+T/9Im/60UEtCBRroFzmYMjfxpci4f5I7a8JjC4zXE1S9aaFMba6+jg4/5F/86DKg/MCVsUflZCsj1o5E3Mp4RGyrrfV8kbRPTySH8E2WCRTqSnWa5o0jVUvBX9HGpaL+yJx/3C7w7NiifE6pU4cM/0KFPLmfqkZ/g5EWdpUwfjqCdU8XfMvxBUV+IvzBNuGYM77n0EORuHiyEwvJ1QIs98aozuFP/tV2pu5jSLiS0nR4uKaHJL78qdWviJTa485zMbd8BnyNcP44O75KY6rYqlcR2k43w9pY0QzaM01xF/A4kh1IttHkp4YELcGN0wUtVMxHycnoOb9smMQ8pjM2mRH58Z5mugeBi9hVhJFUvj1a6HpUO9b2KVWuBaQi7MrG9Br9t2yZrc78pcKMoCU0BKeM+T8F//GfLpfrPpZrrkrktHJ6vGRZBN3lumJyPIGCgjESwH7Smm+SxsWVulrDeyWe0jRvUOBl892cxaHrhGjGbegcp4Uzr3DYQKxcFFkcW7e+x0hVGctGa9DTBG6nqbuvRTVXUaJXK+IqLIiHhdYwD98A5/9wH+mzWB20j+ugdmkP8bNwh8SRr0hJfWxEFlK520lwpI9bzxPMJRe/2NcHQq8YBNLZeAaqX3wxZGWQ0SHBUm/9TI+bvVPRqi/9XhB+FYPlsJ1IB6mxtmEAod8MCrx94xay+idZD6GG7yoa0UxTEBakFgrrXqWfRHMiYnI6mIdode9FsB1OVPqQz9dE7Ld93CeHz2aP5reByQd22r+uuDF4CfTKCJ2uisZMmq90MWiwHCwIdc0l9gqB7WA55rsZyWaS6ZADl+nIdat7U9kS7lLJbdNgg1679y/RmgyaI/yZPB732wJxLUjtiUhABWu05jmwqkO5ULNGrlJcM+5ufBwJ8y9DthNy/1Lq/Fi5V7/3fWf5QzQO2FMic4/Ryz4XrTqipw27pJlrBx7jBvWV+RosRZ7wTPXcwUACRO1ZCnKv5lBUCs9t/JWlaND+fYY3NSEmQkVKvvobeoKZddZmDMkCP4DFDJoyw8Hx0NQ7Gi4X3y+ZtJ4hhaD7EWby1DhEqIGh2VZhCBasjNBGlOQtqoIe6HKLkCDofQNM6EfhVkU7OEFSWNRSIciGEP96SHY6VKt3fxvZtN3NFAmPW3f6SR8I13hwZ67Ha3GYSflXdIlpYbGXnOgl47RIACi4fHyxFhhWLuOFXW2JHIykhk2ZwLWKPVfJRyfNEDgXfaZp5jrXqvpKzZCVYTvcFeGo4wJ0d2rBF60VPa63RwKTenuEatqziRwfKz5G9tLZ+qwSX+RPHHzkuUE0ZRh+p5WatZhbG5SnADFjKA5LmdTY 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:(13230040)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:55.0759 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a4adcf35-a678-423c-7581-08dca17bd1bb 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6673 Move out of device_add_group() variants, instead assign static array of attribute groups to .dev_groups in platform_driver structure. Then use is_visible to enable only the necessary files on the platform. Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: Change plat_dev to hsmp_pdev drivers/platform/x86/amd/hsmp/acpi.c | 65 ++++++++-------- drivers/platform/x86/amd/hsmp/hsmp.c | 40 +--------- drivers/platform/x86/amd/hsmp/hsmp.h | 8 +- drivers/platform/x86/amd/hsmp/plat.c | 106 +++++++++++++++++---------- 4 files changed, 102 insertions(+), 117 deletions(-) diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c index 7cb38c8dc627..4b1470ca8675 100644 --- a/drivers/platform/x86/amd/hsmp/acpi.c +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -226,32 +226,9 @@ static int hsmp_parse_acpi_table(struct device *dev, u16 sock_ind) return hsmp_read_acpi_dsd(sock); } -static int hsmp_create_acpi_sysfs_if(struct device *dev) -{ - struct attribute_group *attr_grp; - u16 sock_ind; - int ret; - - attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), GFP_KERNEL); - if (!attr_grp) - return -ENOMEM; - - attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; - - ret = hsmp_get_uid(dev, &sock_ind); - if (ret) - return ret; - - ret = hsmp_create_attr_list(attr_grp, dev, sock_ind); - if (ret) - return ret; - - return devm_device_add_group(dev, attr_grp); -} - -ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, - loff_t off, size_t count) +static ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count) { struct device *dev = container_of(kobj, struct device, kobj); struct hsmp_socket *sock = dev_get_drvdata(dev); @@ -278,8 +255,8 @@ ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, return bin_attr->size; } -umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, - struct bin_attribute *battr, int id) +static umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, + struct bin_attribute *battr, int id) { if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) return battr->attr.mode; @@ -319,9 +296,36 @@ static int init_acpi(struct device *dev) return ret; } + if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) { + ret = hsmp_get_tbl_dram_base(sock_ind); + if (ret) + dev_err(dev, "Failed to init metric table\n"); + } + return ret; } +static struct bin_attribute hsmp_metric_tbl_attr = { + .attr = { .name = HSMP_METRICS_TABLE_NAME, .mode = 0444}, + .read = hsmp_metric_tbl_read, + .size = sizeof(struct hsmp_metric_table), +}; + +static struct bin_attribute *hsmp_attr_list[] = { + &hsmp_metric_tbl_attr, + NULL +}; + +static struct attribute_group hsmp_attr_grp = { + .bin_attrs = hsmp_attr_list, + .is_bin_visible = hsmp_is_sock_attr_visible, +}; + +static const struct attribute_group *hsmp_groups[] = { + &hsmp_attr_grp, + NULL +}; + static const struct acpi_device_id amd_hsmp_acpi_ids[] = { {ACPI_HSMP_DEVICE_HID, 0}, {} @@ -365,10 +369,6 @@ static int hsmp_acpi_probe(struct platform_device *pdev) return ret; } - ret = hsmp_create_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); - if (!hsmp_pdev.is_probed) { hsmp_pdev.mdev.name = HSMP_CDEV_NAME; hsmp_pdev.mdev.minor = MISC_DYNAMIC_MINOR; @@ -404,6 +404,7 @@ static struct platform_driver amd_hsmp_driver = { .driver = { .name = DRIVER_NAME, .acpi_match_table = amd_hsmp_acpi_ids, + .dev_groups = hsmp_groups, }, }; diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c index c906723ae2f2..c382b494b9c7 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.c +++ b/drivers/platform/x86/amd/hsmp/hsmp.c @@ -274,7 +274,7 @@ long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) return 0; } -static int hsmp_get_tbl_dram_base(u16 sock_ind) +int hsmp_get_tbl_dram_base(u16 sock_ind) { struct hsmp_socket *sock = &hsmp_pdev.sock[sock_ind]; struct hsmp_message msg = { 0 }; @@ -307,44 +307,6 @@ static int hsmp_get_tbl_dram_base(u16 sock_ind) return 0; } -static int hsmp_init_metric_tbl_bin_attr(struct bin_attribute **hattrs, u16 sock_ind) -{ - struct bin_attribute *hattr = &hsmp_pdev.sock[sock_ind].hsmp_attr; - - sysfs_bin_attr_init(hattr); - hattr->attr.name = HSMP_METRICS_TABLE_NAME; - hattr->attr.mode = 0444; - hattr->read = hsmp_metric_tbl_read; - hattr->size = sizeof(struct hsmp_metric_table); - hattr->private = &hsmp_pdev.sock[sock_ind]; - hattrs[0] = hattr; - - if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) - return hsmp_get_tbl_dram_base(sock_ind); - else - return 0; -} - -/* One bin sysfs for metrics table */ -#define NUM_HSMP_ATTRS 1 - -int hsmp_create_attr_list(struct attribute_group *attr_grp, - struct device *dev, u16 sock_ind) -{ - struct bin_attribute **hsmp_bin_attrs; - - /* Null terminated list of attributes */ - hsmp_bin_attrs = devm_kcalloc(dev, NUM_HSMP_ATTRS + 1, - sizeof(*hsmp_bin_attrs), - GFP_KERNEL); - if (!hsmp_bin_attrs) - return -ENOMEM; - - attr_grp->bin_attrs = hsmp_bin_attrs; - - return hsmp_init_metric_tbl_bin_attr(hsmp_bin_attrs, sock_ind); -} - int hsmp_cache_proto_ver(u16 sock_ind) { struct hsmp_message msg = { 0 }; diff --git a/drivers/platform/x86/amd/hsmp/hsmp.h b/drivers/platform/x86/amd/hsmp/hsmp.h index 5d4fc7735a87..b70f40c2726c 100644 --- a/drivers/platform/x86/amd/hsmp/hsmp.h +++ b/drivers/platform/x86/amd/hsmp/hsmp.h @@ -54,14 +54,8 @@ struct hsmp_plat_device { extern struct hsmp_plat_device hsmp_pdev; -ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, - loff_t off, size_t count); int hsmp_cache_proto_ver(u16 sock_ind); long hsmp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); -umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, - struct bin_attribute *battr, int id); -int hsmp_create_attr_list(struct attribute_group *attr_grp, - struct device *dev, u16 sock_ind); int hsmp_test(u16 sock_ind, u32 value); +int hsmp_get_tbl_dram_base(u16 sock_ind); #endif /* HSMP_H */ diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c index c2b83363713f..33868346b5a0 100644 --- a/drivers/platform/x86/amd/hsmp/plat.c +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -61,39 +61,9 @@ static const struct file_operations hsmp_fops = { .compat_ioctl = hsmp_ioctl, }; -static int hsmp_create_non_acpi_sysfs_if(struct device *dev) -{ - const struct attribute_group **hsmp_attr_grps; - struct attribute_group *attr_grp; - u16 i; - - hsmp_attr_grps = devm_kcalloc(dev, hsmp_pdev.num_sockets + 1, - sizeof(*hsmp_attr_grps), - GFP_KERNEL); - if (!hsmp_attr_grps) - return -ENOMEM; - - /* Create a sysfs directory for each socket */ - for (i = 0; i < hsmp_pdev.num_sockets; i++) { - attr_grp = devm_kzalloc(dev, sizeof(struct attribute_group), - GFP_KERNEL); - if (!attr_grp) - return -ENOMEM; - - snprintf(hsmp_pdev.sock[i].name, HSMP_ATTR_GRP_NAME_SIZE, "socket%u", (u8)i); - attr_grp->name = hsmp_pdev.sock[i].name; - attr_grp->is_bin_visible = hsmp_is_sock_attr_visible; - hsmp_attr_grps[i] = attr_grp; - - hsmp_create_attr_list(attr_grp, dev, i); - } - - return device_add_groups(dev, hsmp_attr_grps); -} - -ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, - struct bin_attribute *bin_attr, char *buf, - loff_t off, size_t count) +static ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t off, size_t count) { struct hsmp_message msg = { 0 }; struct hsmp_socket *sock; @@ -128,8 +98,8 @@ ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, return bin_attr->size; } -umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, - struct bin_attribute *battr, int id) +static umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, + struct bin_attribute *battr, int id) { u8 sock_ind; int ret; @@ -147,6 +117,61 @@ umode_t hsmp_is_sock_attr_visible(struct kobject *kobj, return 0; } +/* + * AMD supports maximum of 8 sockets in a system. + * Static array of 8 + 1(for NULL) elements is created below + * to create sysfs groups for sockets. + * is_bin_visible function is used to show / hide the necessary groups. + */ +#define HSMP_BIN_ATTR(index, _list) \ +static struct bin_attribute attr##index = { \ + .attr = { .name = HSMP_METRICS_TABLE_NAME, .mode = 0444}, \ + .private = #index, \ + .read = hsmp_metric_tbl_read, \ + .size = sizeof(struct hsmp_metric_table), \ +}; \ +static struct bin_attribute _list[] = { \ + &attr##index, \ + NULL \ +} + +HSMP_BIN_ATTR(0, *sock0_attr_list); +HSMP_BIN_ATTR(1, *sock1_attr_list); +HSMP_BIN_ATTR(2, *sock2_attr_list); +HSMP_BIN_ATTR(3, *sock3_attr_list); +HSMP_BIN_ATTR(4, *sock4_attr_list); +HSMP_BIN_ATTR(5, *sock5_attr_list); +HSMP_BIN_ATTR(6, *sock6_attr_list); +HSMP_BIN_ATTR(7, *sock7_attr_list); + +#define HSMP_BIN_ATTR_GRP(index, _list, _name) \ +static struct attribute_group sock##index##_attr_grp = { \ + .bin_attrs = _list, \ + .is_bin_visible = hsmp_is_sock_attr_visible, \ + .name = #_name, \ +} + +HSMP_BIN_ATTR_GRP(0, sock0_attr_list, socket0); +HSMP_BIN_ATTR_GRP(1, sock1_attr_list, socket1); +HSMP_BIN_ATTR_GRP(2, sock2_attr_list, socket2); +HSMP_BIN_ATTR_GRP(3, sock3_attr_list, socket3); +HSMP_BIN_ATTR_GRP(4, sock4_attr_list, socket4); +HSMP_BIN_ATTR_GRP(5, sock5_attr_list, socket5); +HSMP_BIN_ATTR_GRP(6, sock6_attr_list, socket6); +HSMP_BIN_ATTR_GRP(7, sock7_attr_list, socket7); + +static const struct attribute_group *hsmp_groups[] = { + &sock0_attr_grp, + &sock1_attr_grp, + &sock2_attr_grp, + &sock3_attr_grp, + &sock4_attr_grp, + &sock5_attr_grp, + &sock6_attr_grp, + &sock7_attr_grp, + NULL +}; + static inline bool is_f1a_m0h(void) { if (boot_cpu_data.x86 == 0x1A && boot_cpu_data.x86_model <= 0x0F) @@ -197,6 +222,12 @@ static int init_platform_device(struct device *dev) dev_err(dev, "Failed to read HSMP protocol version\n"); return ret; } + + if (hsmp_pdev.proto_ver == HSMP_PROTO_VER6) { + ret = hsmp_get_tbl_dram_base(i); + if (ret) + dev_err(dev, "Failed to init metric table\n"); + } } return 0; @@ -218,10 +249,6 @@ static int hsmp_pltdrv_probe(struct platform_device *pdev) return ret; } - ret = hsmp_create_non_acpi_sysfs_if(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to create HSMP sysfs interface\n"); - hsmp_pdev.mdev.name = HSMP_CDEV_NAME; hsmp_pdev.mdev.minor = MISC_DYNAMIC_MINOR; hsmp_pdev.mdev.fops = &hsmp_fops; @@ -242,6 +269,7 @@ static struct platform_driver amd_hsmp_driver = { .remove_new = hsmp_pltdrv_remove, .driver = { .name = DRIVER_NAME, + .dev_groups = hsmp_groups, }, }; From patchwork Thu Jul 11 07:33:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suma Hegde X-Patchwork-Id: 13730114 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2077.outbound.protection.outlook.com [40.107.237.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 022BF148830 for ; Thu, 11 Jul 2024 07:34:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.77 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683242; cv=fail; b=dLk00Uwl8WuibsjpMRaaqBm0pN+M2wxxISmZooXjwytFSGZbpotb7TD0SPNKxDDhE+ZhaATKe5/lPGzOrbFIRgrAFIsYhTd4UGngTpKGMXfYbW3mjV7mV21Ab4DITn0RZGlTh3UvyhSFHdKZZA4VcklKx80zF9uBknkaAiCZROc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720683242; c=relaxed/simple; bh=hl87yso/B0Pe9vsuoIVIym/XoqZVp3QXk6QZFNfgkUM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XuTAfFpMCufwS63j+KfsNpMB/nqyMOQqD+yC31t9Erem0DQ94qfG7UPmd2dARnswSVEhmXpvFIv9u7qBMPnCABbscVSRSVOwzlx6nXLQ8LDfGYOCobnuVdJqtyNOu7ShIaD3HEgLhtdUwzl+QrPE+pIeHh3cgiIE76bCgcTXVSg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=YZggqBto; arc=fail smtp.client-ip=40.107.237.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="YZggqBto" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VaxUmqOyMUfIgYY1IkVd2jQo2r5lShNbvzWYwUS8bw7I1NuNjHivR6JTizYKZ+yR21o9De663ve6Vp9qn+U7qUEkIg+UvyYBeRRWi4675MVoCFPuZszlG8QVERTsO49wL7tUyLA1Hqkil23PsO4QZl85P7HzhgT1571ZkH+xQMMo6vRacXx4UE5xq4qeJi+fyc3DX4nbabxwZX5fMxAEAyb23zZQ8cauagm2ybt6xL5dMaB8LTNzc86Ao9j+CCOdYzn8wJ22xrNv22P5VnUCM1JXABjSHA+Ztgln2VxblbX6N3NY20THCRMd3C15NC2xf9gWk3ZBlZy8vC8eYjc4oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=CuGKF59NQYtZ6BRB4R4lTiqD6qSSRyUE4OjCukAOYhI=; b=jg8nEDJ4rVBjQaB8Df/+iKDet3zXzal/OOdxEF7QTxXEndOhATi6It+F+7sPTixzAcETBDop4gXWohoYpEiEq7uq12rq8b+t3F5/+he6+lpHui+m7HlfH2gcM/endzLIzIFCAi6mKAeSTvqpU/4LCqVjC5S/gN0YTqAXQqObnWcmlUreZX4ZtrxOVWhzfWxtz3ddVshbXbSIXlw+96oINLs1j2ZP0ft4kWzndDzb6qJGimQrx1Eu1fHuNWaJOMxR1SxVBs5v1rURogbdXw6cM5jeVPCkpJCfmKwfv5jraNr7uCrQgnmPDWs11rEHmGozw/9WZXMpagVNEpR0qBPw3g== 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 (0) 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=CuGKF59NQYtZ6BRB4R4lTiqD6qSSRyUE4OjCukAOYhI=; b=YZggqBtoLFfb11NZO9AGrvU9dCN1iYuW1xs/3TgBhcCWzvDiRJZld+W/gRiB9OZ/3iROMepz+jjy6Y27x416MDn0dDS6XnnN7w3PBMJ+CwuLbJYLen7FjEqOqqOr/9nh1Pp6KYsiHTPcuc9r111rGc19v+Xdme0tOMeR8pDYUdE= Received: from BLAPR03CA0150.namprd03.prod.outlook.com (2603:10b6:208:32e::35) by PH7PR12MB7162.namprd12.prod.outlook.com (2603:10b6:510:201::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Thu, 11 Jul 2024 07:33:58 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32e:cafe::19) by BLAPR03CA0150.outlook.office365.com (2603:10b6:208:32e::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36 via Frontend Transport; Thu, 11 Jul 2024 07:33:57 +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; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Thu, 11 Jul 2024 07:33:57 +0000 Received: from amd.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.2507.39; Thu, 11 Jul 2024 02:33:54 -0500 From: Suma Hegde To: CC: , , Suma Hegde , Naveen Krishna Chatradhi Subject: [v2 11/11] platform/x86/amd/hsmp: Fix potential spectre issue Date: Thu, 11 Jul 2024 07:33:14 +0000 Message-ID: <20240711073314.2704871-11-suma.hegde@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240711073314.2704871-1-suma.hegde@amd.com> References: <20240711073314.2704871-1-suma.hegde@amd.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|PH7PR12MB7162:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b7e8210-d83b-4fff-c64e-08dca17bd350 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: oduiqurnbpfnhFJwTocHeY0VKTIj+wRl2WZ8RSmZhtJag3Co7QHUe4n/aLjnb3YquYXp9CO8Yz3ikyakdssbJ8fZmTIEmgvOMJkK5kE7vBYPup3Dii/9C4fVvbUXSmcy7yp1hDhuCxHyWgBXcCrw/hu3MMxRgr27PiYY9hqtfdoHPIM/qZSRYHa47Ij4hJ+ghwYbypgYENsJK/7eS1ZLKIY5O7i7ALb9LDqmCS4yLLa9o10CPO1KdRXIbVk5eJkJj2ZcqALISxq+KEs+TuOjwVUT7zhGaTghxA0FfldZ6/o3LhXe3ihQiaLAdcaL9CWgdvatt61MVNHzen/MqjgqkylOXhfNVG241dWGNemGH7+EfqC8kHQj0wm7HP3W+0PoyQGPtyRpkJ5SvLAdfsxOEG4WFG8sDd7giVhQlpz7qFokrLhyDgeG1JHjC1Q9IyJqlM6rfXgLA/ir4K3QpIaCE37BBGAx4Q/c6GEQmfa21VSNh5tx1xShLhmDkClCkaeZzKL61DqY6+9xWrtZMBUTSvv4J2XPQJaOB22wCVy6MWETFxnZazx9WE2oF6zSIK82PdBqHGp+jXIzmpLqTnYU29iIXvMss4p9gny4RXmD89UWXW/AsWo57aQsiU5aeIiqHakhIJWqL9ni3OLj3snfBTnB/4x/UGJl6d91zoO2EIcC7izEkVO+OKkDNMuyOjuu1ty59q3mc2mA5cZMT+ayFDu3w2eMTyp30r+6IQTFTU9tZuQd+HB260DoYAEpdlGKrZ8leBwEoW84nYaYV3LqP0dIOI8UhjnfzXfMHO3ZzyEeBjYOqGhtvQ2077HLj+UfDCwx9YSlPI9GMXTjCqDaSpJRREsinRTZX6XGbf9C8FETXb3hdxwTJEI8Kd75hmylXkIeM+rkgFc8dCaOo8epFqWOdzDsI7B1z1iEU+VdUDNl+yZl2A4mvQ860X8+aK05QA06AuMB6UV4zjH4+Wz5LcXruaY9I6S42WoTvaVk7w8qHhD3M/Zj98dhFw4OJJIu/S7V1ut7+xiV/rIyLe2d72dxW5J05glJh8zesYthWd5dE1ENz1op3NHI18L969vwYkBGBrYd+KwZl3kJQpfPsm2/qtsZscjBA4sPol6NLiSkB7vbPejs18L/oTum1b840lOBJW0n22j1mjaOjx7NRITR0lWcK/lQS+VLbujQyFammbi7q1k+NzRlmkDAFXt5d4HUKZ7+zfGHTkEyulK+FtVDRJzgKCP1ayopRSGS9cjcaa7g9wYfdNOvKByEFtrBK04QWKGKle7DC9MkEpLO/GeR64egXyChwTV3D/Agcc5YV6OIbNkB4HP2OEgmRH7Udp4twnkPBC7S/YZN/oRnL9ylS3qvrUVGsm6NR/kgyzzLCZEN7I2r+esqCyAKZ0bEXuVxm9Az/+DHEE+Y9RI6rQ80Zsoq2mijEOBumg1BDuaUjN246taB1nsq/B3wfYpj 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:(13230040)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2024 07:33:57.6072 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7b7e8210-d83b-4fff-c64e-08dca17bd350 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7162 Fix below warning caused by smatch by using array_index_nospec() to clamp the index within the range. "warn: potential spectre issue 'plat_dev.sock' [r] (local cap)" Signed-off-by: Suma Hegde Reviewed-by: Naveen Krishna Chatradhi --- Changes since v1: Change plat_dev to hsmp_pdev drivers/platform/x86/amd/hsmp/acpi.c | 3 +++ drivers/platform/x86/amd/hsmp/plat.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c index 4b1470ca8675..cc859c9fe2dd 100644 --- a/drivers/platform/x86/amd/hsmp/acpi.c +++ b/drivers/platform/x86/amd/hsmp/acpi.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -275,6 +276,8 @@ static int init_acpi(struct device *dev) if (sock_ind >= hsmp_pdev.num_sockets) return -EINVAL; + sock_ind = array_index_nospec(sock_ind, hsmp_pdev.num_sockets); + ret = hsmp_parse_acpi_table(dev, sock_ind); if (ret) { dev_err(dev, "Failed to parse ACPI table\n"); diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c index 33868346b5a0..00dc7a0d358d 100644 --- a/drivers/platform/x86/amd/hsmp/plat.c +++ b/drivers/platform/x86/amd/hsmp/plat.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #define DRIVER_NAME "amd_hsmp" @@ -77,6 +78,8 @@ static ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj, if (sock_ind >= hsmp_pdev.num_sockets) return -EINVAL; + sock_ind = array_index_nospec(sock_ind, hsmp_pdev.num_sockets); + sock = &hsmp_pdev.sock[sock_ind]; if (!sock) return -EINVAL;