From nobody Thu Oct 2 00:53:57 2025 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013049.outbound.protection.outlook.com [40.93.201.49]) (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 0FF14150997; Tue, 30 Sep 2025 00:26:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191992; cv=fail; b=cVj+lf5qfLBF2FM7hL3k2gDHr3y7IPDIzfDH8D2zOA13L9dOHe4Sorq6Vnx8zaHfYm6iIJ5k+6CH0qXkkrF/93ReDNcMQyo+8EXe3W7CzYM4pOdP/7gpdTNkEqafWtvW4rM4s+FtQPrAnQlZbV6qAewEGI6k6i5BoHQQZC112Bw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191992; c=relaxed/simple; bh=LSliuyHurq3fKdsHDuCxyscyHdXvRxNAfPqBd2H9X3M=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VubcCga5jTDaFGi/Pv2zBA43T1nYDV+4H4umtwmyWnC+3p6RIID6GCJc9XPHYyZ+LEFDH5+M/bYxU8ToMrtc0nQ8+p5bpHf1vJdtCHz3WcCBGHjAsaMMRBgpkcSI6hO9wArXmGXj0QUFoVf6ciq6F/UuUu+unuR+uY2W4bZQTmw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=lY0YREM4; arc=fail smtp.client-ip=40.93.201.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="lY0YREM4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=paI1/pIrHpr1W4Ygq9ixzJcghalkY+gFO8lMvtREjYeVhhHqSXfuxcYwhHsylH2MOo9w85cV7C1orOtwMJAHISHtHmI4kKsKbpUTxrvRsNEMOkmast5IH5OTMq5OByJh0TEkJTlD4lGUEtGL0u1e38gyfLn/Tbs4MCW3ttTlvyeguMe92Ebo5Q7vzZ73DWiWchhy9YeG/Dp1P7O0UtjIP+kc3K/KvjEjNb1utlPxFlgNLCgEc6W4UhtgpBk2zGjY/kc07UziHWkjtL2uWecrs7UEuvDUTicqa1vEF/876sJjm/Ql0VClMuuiF5OxN4tfsUsu6TkGNZe04nY4qtgQzg== 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=yGc0iT9SLDLuk9C+P/AEDcvkAlpI7l94RvR5GeRSefs=; b=PSmLHz/WlMZFjE9PueQ/d7dQtqRAB+xK5lTTyQW7PGJKlX5jBF4k+4zScxdD1BeAHHWuvPJwkrZ/JqLAm3YnmfsfHLj8OE1QmK0uexAe7f6n4u7zJUJhfyd/TwHs7zW30q9p7lpeXwnFr9phlOOOS8ZmaHcBKVNsloXYsh9MvyzORcjlYrtt6vbMkjvKlcQZWnnwvZZOJLByWU13f1nRrEmSKOocyRDQ4ONgQhffVXwjAw/dN2qBrUcKNC6fp+uNOI7QiNDq/fyjcr08a8SeKsFx2cB/N+01nhAMCghXC+FpgENIHOHMWk98GtGvpwNAJ/Spjhm78pcjxEXPliY4Lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yGc0iT9SLDLuk9C+P/AEDcvkAlpI7l94RvR5GeRSefs=; b=lY0YREM4mtVuXJPE6iXWXLUyLBcBePNjgua/oTMNGdI5oZ7gAc5p1siH7L5/8HOR7hKIlHiPnUdQXznj0ncIiVOEUTGkIBJYuaivKI/dP+4Qkz6G+lXpbrOrQcq6zw7NRjzTKKspgOcLUM6TvCp5tR76HBMvNZ/MZk86FPO4dudUJiFNYv3VwyGx2HHjp1Zc/PsIJDmMWdjMMyhCTbvRDf43CP3eOrousQrngQqtRhAcGtmRj+MNyhoRhu0ik5teQr1uABGF9Ci1GKiElojsLBK/Cfflg267SMG9jmLHgsROJ9DcaSkG+npjKjG2BGd4COrXfQWjXAjdBQReKAi3wQ== Received: from MW4P221CA0022.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::27) by BN7PPFD91879A44.namprd12.prod.outlook.com (2603:10b6:40f:fc02::6e5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9137.19; Tue, 30 Sep 2025 00:26:28 +0000 Received: from CO1PEPF000044F0.namprd05.prod.outlook.com (2603:10b6:303:8b:cafe::53) by MW4P221CA0022.outlook.office365.com (2603:10b6:303:8b::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.16 via Frontend Transport; Tue, 30 Sep 2025 00:26:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by CO1PEPF000044F0.mail.protection.outlook.com (10.167.241.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 00:26:28 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Mon, 29 Sep 2025 17:26:18 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 29 Sep 2025 17:26:18 -0700 Received: from build-bwicaksono-focal-20250829.internal (10.127.8.12) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 29 Sep 2025 17:26:18 -0700 From: Besar Wicaksono To: , , , , CC: , , , , , , , , Subject: [PATCH v3 1/5] perf/arm_cspmu: Add arm_cspmu_acpi_dev_get Date: Tue, 30 Sep 2025 00:26:00 +0000 Message-ID: <20250930002604.346306-2-bwicaksono@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930002604.346306-1-bwicaksono@nvidia.com> References: <20250930002604.346306-1-bwicaksono@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000044F0:EE_|BN7PPFD91879A44:EE_ X-MS-Office365-Filtering-Correlation-Id: db6e2acf-4ed9-4711-ffa0-08ddffb7ff38 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FrX3UM8zxNo87DYmHpSVWnKlqC5Ca9cq5ts19Q41bTBHGXx3LdCxE3aGJAfu?= =?us-ascii?Q?3P/v94QvdkWZQS8aKvlemroC+JqP0mrveA9pz0FKAEnyVZESUztuPzCWXnCL?= =?us-ascii?Q?zbBNiTuT2204eZAFhNqbTIyNJOWY5dyh91frxlPp6KILCnJ1oQNRjHMGiucI?= =?us-ascii?Q?pB/7k+QMAf9FpQTtXAVHBgfeDA2MZ3Y4UnkkW5FMGY7FjHRI+2naZ4JFXlCY?= =?us-ascii?Q?DJGTiUyrEFQo8tGCOHqevaXv4+b3Di24WNptzAulzy65Kk/It67ziWSqU/EA?= =?us-ascii?Q?lXO+e/HohDcULrBoBO7x99xgSWA43svdtKCzUy/yBsbE/u9Al1S6uQXScwJT?= =?us-ascii?Q?8jehInXUfwxvIPjGWBsfydNn8X1sygHWnAkRh9EIngbhHWUBgUFOASkqzDai?= =?us-ascii?Q?/yNuvFrbRSy+FZ5PBSBZCa0za2Nr5esAqQEkmC7ktHuU0zd03Hg+lDKyhsyz?= =?us-ascii?Q?5IqqaPC+ZBcC7eMkIQO/UIGY5TA411nWajTpAeQRzPCm8IPxIABLWycVyPc7?= =?us-ascii?Q?78HT7+eQfRnouylFg5RszyYIiaIwFOSJCUuCS2cXgEB2SsMCSm+lTKeKEjR2?= =?us-ascii?Q?LweVU5Ve7zCWsv0kUw6AR/rloIaqFg0TbMTN5+zOUAbWi2dnsj4xPEGPdqSP?= =?us-ascii?Q?92IK7CUisNQejkT6g7N09xtnsgfVDzwLk7BVKjdcduYJfnGJZKY6XqaDjuhH?= =?us-ascii?Q?li6YNb/S+2xSP0hM4Mj3p/O7koJgVUpO/J5oO7rk03lf84IpUg5T4pS4KFX2?= =?us-ascii?Q?jHMngsSM7utC1PFPytfrxxd9E1UmF0f5THJTYzy2KWT760jISLWreBLyyHxl?= =?us-ascii?Q?NcPU1GXcGyteFtdCET+klm0yvfm2X1N8H1xTvA7voTmY0Skd9rO2zo9U8hlP?= =?us-ascii?Q?F6ogA8KQXeCm0NZyRuCaVAJ0pc/LPEb4YlJJs9E9eCchMXegdVDt0HRn0gPy?= =?us-ascii?Q?oKQfKOrhz+hfx8hpHpZcTMGuGsKUTw6TqIU7XAOO3QVg9kWGV25PcwDmtf0z?= =?us-ascii?Q?KfT7/VAKUeMt+dgUE3mk2GliYO/KLL/825tUiQhRKHQaJF1kYrjylGkumDMn?= =?us-ascii?Q?7QaWxLRLXliCd0u04SS1Cw9ih0LWeYk8BNXnTFlhXXddFuf21MhJsNl30L1q?= =?us-ascii?Q?nOmIoxEgF/2s4WY6X0CYCTok/2i0DmEpNSkYpSRQcsDs4CmpTKmC7QltF4Tj?= =?us-ascii?Q?Os2F7DLbiREu09BFIUfuB0Q9O/HZ58vLXsc58Wy+H6QtSmMoXJAppajMZpfb?= =?us-ascii?Q?iFeXnYHtxdy5jENYzBoBBt1b/tKeFMov7EybefJ/y2JREDFTj+jB8mQx0Qr6?= =?us-ascii?Q?jajnsiVxxVF0oJsmQWKJTLriJPzPC7A8Nm6rj0tSHOs5wWxb7ORbprsYbElD?= =?us-ascii?Q?71UdvBrg6CRAgQTluHDrJ5Yw+m/PdySjfDcOZlhiyXzcoSsZXBjx+jHFpS7H?= =?us-ascii?Q?yb2GGG4LiiuD6o7FutnYcQFP/GaKaH+QrEAE5nFH7JB769iD6+CWhUnphe3n?= =?us-ascii?Q?kfF4XafyKXOtV7wqVQWhTpCV8g4X932fJjw13TT5mgEqgK/HAzumjoF0GP1n?= =?us-ascii?Q?oLKcGnK2s+40WPbvJK4=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 00:26:28.1870 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: db6e2acf-4ed9-4711-ffa0-08ddffb7ff38 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000044F0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPFD91879A44 Content-Type: text/plain; charset="utf-8" Add interface to get ACPI device associated with the PMU. This ACPI device may contain additional properties not covered by the standard properties. Signed-off-by: Besar Wicaksono --- drivers/perf/arm_cspmu/arm_cspmu.c | 22 ++++++++++++++++++++++ drivers/perf/arm_cspmu/arm_cspmu.h | 15 +++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/ar= m_cspmu.c index efa9b229e701..75b2d80f783e 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -1090,6 +1090,28 @@ static int arm_cspmu_acpi_get_cpus(struct arm_cspmu = *cspmu) =20 return 0; } + +struct acpi_device *arm_cspmu_acpi_dev_get(const struct arm_cspmu *cspmu) +{ + char hid[16]; + char uid[16]; + struct acpi_device *adev; + const struct acpi_apmt_node *apmt_node; + + apmt_node =3D arm_cspmu_apmt_node(cspmu->dev); + if (!apmt_node || apmt_node->type !=3D ACPI_APMT_NODE_TYPE_ACPI) + return NULL; + + memset(hid, 0, sizeof(hid)); + memset(uid, 0, sizeof(uid)); + + memcpy(hid, &apmt_node->inst_primary, sizeof(apmt_node->inst_primary)); + sprintf(uid, "%u", apmt_node->inst_secondary); + + adev =3D acpi_dev_get_first_match_dev(hid, uid, -1); + return adev; +} +EXPORT_SYMBOL_GPL(arm_cspmu_acpi_dev_get); #else static int arm_cspmu_acpi_get_cpus(struct arm_cspmu *cspmu) { diff --git a/drivers/perf/arm_cspmu/arm_cspmu.h b/drivers/perf/arm_cspmu/ar= m_cspmu.h index 19684b76bd96..bba513224586 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.h +++ b/drivers/perf/arm_cspmu/arm_cspmu.h @@ -8,6 +8,7 @@ #ifndef __ARM_CSPMU_H__ #define __ARM_CSPMU_H__ =20 +#include #include #include #include @@ -222,4 +223,18 @@ int arm_cspmu_impl_register(const struct arm_cspmu_imp= l_match *impl_match); /* Unregister vendor backend. */ void arm_cspmu_impl_unregister(const struct arm_cspmu_impl_match *impl_mat= ch); =20 +#if defined(CONFIG_ACPI) +/** + * Get ACPI device associated with the PMU. + * The caller is responsible for calling acpi_dev_put() on the returned de= vice. + */ +struct acpi_device *arm_cspmu_acpi_dev_get(const struct arm_cspmu *cspmu); +#else +static inline struct acpi_device * +arm_cspmu_acpi_dev_get(const struct arm_cspmu *cspmu) +{ + return NULL; +} +#endif + #endif /* __ARM_CSPMU_H__ */ --=20 2.50.1 From nobody Thu Oct 2 00:53:57 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010030.outbound.protection.outlook.com [52.101.193.30]) (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 D8939195B1A; Tue, 30 Sep 2025 00:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191999; cv=fail; b=JEYoDC8dl+0xZIZbufoD7Pl2qSJ1kOPL60EXRCxNpgLsKPPtUDaq0A+0q9DMCdvVrddYSM+cESxys9zfQaS/BRc0hbr8d9rDwrP2QSfEz5S9bNKh9BQmd136hePVH13s+gARbvJtqP3wrizCrE0+yjm47WbKCALtGGFcVG3DSpw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191999; c=relaxed/simple; bh=9wyZcV/bqeiSmO+ffV3UwdUgWTEI/+a3C+8gFAtEprQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MRIrgE9zE5VDu/f6e0+lA3kKcywHe4+CALIcrJOc8kHQ6ARBRKzOm9jEFIv2jY427R40jWSq/ThK6/MVAA/YRZnzaW9YJUEVC4kCsb5PI3zvbjrNat+UvHYRSvLHFNIiFQaJyZaJrNtfN8L4vulGZGszXG5eoFTVwfhf86RbXDs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=n/RfbqZZ; arc=fail smtp.client-ip=52.101.193.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="n/RfbqZZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n2ATbIZDLwTavSIkyx2zCQvQjzrQsizgi1KeC1BjJg4npf2N8oWZEFpg5MKjml1Giwctqt8MI8eaAum/2cggCJ68ftJ30aTdlcegkDV0mzT7eEPm7lDzxgTeLojUWvCETAQ7S+qE6gYH7wtFX3JVdI1qBQpFgONG4JJHvmYhr804+8I9e3+A9++ovpu1HzZGSkpjceKAG+WeetKRgtr8i0OHyKTdSZy86i+U5QZgTjIA24p0CyA1JAEbaxcvMyPOwvOQ/4UW3+2IBD1cnNFZiPDLTXNGJj9Z0HAZVsosP1Y3cA9g3C/xpcRCQ9/GYV5/JUAtHeJcD4pppLsXMgwZ8g== 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=mcoSLyH83u5vIrvg0WLBYhdFxJENHwNG7RTNXrnzRn4=; b=Reken/D0SHI57Tq+ziuD+a73C9P6lj8GogaZXBwzMFLOmJT7mX2PjTNpPUM/eCOw5ilHD5n3pFrUX3Tf0KFq1VWNTPKOSzv1TTBFOSvo1jEdVu8I9U/sojryd8biMnyPJ2j2EOEf3c8wBHYEvpvQ0pb5dNEeX1/C24xLFyFSNVscV+HZs05gRA4U26OUFFoRG753XOQcw7RTTC3NT1Jqk00BMe2Z4Z4Egu+glFDyQ0Ygtiehsg6iJRYVDN//xb4c/AEhCg+4WCLReuPwnPJQZ8DWkRVfYeCCPtguY6YzLGI2c07D2RGVVWj1X/X7QBUmTOd9qFd2B9yQ3hG07DdRdw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mcoSLyH83u5vIrvg0WLBYhdFxJENHwNG7RTNXrnzRn4=; b=n/RfbqZZIMMCSuE+rL1u2tcGD6QCoBk3RJrGERzjPp6O3sPPrEcMO+WRqfHP74x9i6adcb3EGnS5pzFp539h8mmhXYVIYov1N6TQ351OkiJtwBY1qRTu3p7iTzrF02YFWY4hZhjm4FNZH6pqdxBqL+tlafqLr6eMs9BlqxvqgLX3wmKO0kcN6nJ9ph7T0Y49lq5xyODCft5MwhQNxDG+PQZSIZdfTdXWm0WhWPFGQlwrsQS4hqKrGkQGHZwktyV5Uil2Hs+4HZux6MxfrVf5GX+IKOsioVCgK4PKM9etnkA8pHp6pQD9HAuHqVr1mFiMGSTxSgiX0z0p3qeHXbhRSw== Received: from BL0PR05CA0024.namprd05.prod.outlook.com (2603:10b6:208:91::34) by LV2PR12MB5846.namprd12.prod.outlook.com (2603:10b6:408:175::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.16; Tue, 30 Sep 2025 00:26:34 +0000 Received: from BL02EPF0001A101.namprd05.prod.outlook.com (2603:10b6:208:91:cafe::df) by BL0PR05CA0024.outlook.office365.com (2603:10b6:208:91::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9182.13 via Frontend Transport; Tue, 30 Sep 2025 00:26:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF0001A101.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 00:26:33 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Mon, 29 Sep 2025 17:26:23 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 29 Sep 2025 17:26:22 -0700 Received: from build-bwicaksono-focal-20250829.internal (10.127.8.12) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 29 Sep 2025 17:26:22 -0700 From: Besar Wicaksono To: , , , , CC: , , , , , , , , Subject: [PATCH v3 2/5] perf/arm_cspmu: Add callback to reset filter config Date: Tue, 30 Sep 2025 00:26:01 +0000 Message-ID: <20250930002604.346306-3-bwicaksono@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930002604.346306-1-bwicaksono@nvidia.com> References: <20250930002604.346306-1-bwicaksono@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A101:EE_|LV2PR12MB5846:EE_ X-MS-Office365-Filtering-Correlation-Id: 46e0a2a1-2526-40cb-2f36-08ddffb802b8 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: =?us-ascii?Q?Ur3CPgF67NIoK1bJD93IxlonX1A54jIRtsrxOW1ZatsEeFI1mzTKatfsgZBN?= =?us-ascii?Q?ks1R1t38lfIOK4JcDO0IoPnFkH59NKqgboVNp45cLQepTveQJyNmWc6t1Hp1?= =?us-ascii?Q?7jNOeg2QTTP3Aht5UVgLDpM1ASDcb+HhqX47HtsbsNG8fmyFBSPhLpYAtx1/?= =?us-ascii?Q?+Zw8PxaZk/NnAImTESv4jBhPFT2oSmFfrjGBw54MeIbq45+VfDrKh51xDNFG?= =?us-ascii?Q?m8ZwJ55mEa+81BZQMtHSHw/CuwApagd6n1NGZtz/Cg9c3D1GImjlS3B6GS2/?= =?us-ascii?Q?S51UTZK9gSSgGtauiOGK5aIp6rSCJW6nCjLWgrGKa6t4qlpeCi3Qg5I00OAT?= =?us-ascii?Q?x6pS1Ol2psh4gbDL0MU4UTwIvYUVNHC5v8xEEAvYb4SS7f+GabpRAttHbSaP?= =?us-ascii?Q?9ZxQT1WY2Mqa2mVQk1kyC/TmNPNDGYqIys9gOd6iGEdC7jqG5eulj40Tf336?= =?us-ascii?Q?IZlp+hMXNikD7EZ7ONtqrgQnLhK4nY6I9xpNYrpFAVWv+K2w8hKdlDFlVw5R?= =?us-ascii?Q?o2wGgQxls/dIo6WTJ7f0gr9kOLT+urCTiHdR9/4ZVImtOOFokO1PnexBlPBF?= =?us-ascii?Q?DgAO/r52+1OUVRVEWlEgGAoVG1P4Yq6vFaBI3rY4ZHd1KNzca31rx+G8qnvE?= =?us-ascii?Q?H+BRUgdm671DFj0k+spHIwvbpt/MWSup1uNXsIisOzzCvczqxBYDGXLntydZ?= =?us-ascii?Q?JiQWchJmX3uBQ1Byci4cMF8AJOCGkeHpeQZ3xrro4FrQELnCONAECv5LRD5D?= =?us-ascii?Q?gLw8kuixYv1qObqs3R/J9yWaRvHwb8ZdwRvrXx+ELmhZxq2HOOzXNYmdFAGJ?= =?us-ascii?Q?95WFfyy5BZG9ZWFXJ7wXoVow4z1z6YvIoknsRxkR7r6KArSEkKpKIz0k3TVM?= =?us-ascii?Q?R9K3gZIVZlJQVXyOhrZAfeCKDgogFHodkL//r0vs3NRJ6kbNPXYMKKhaU3Su?= =?us-ascii?Q?uWMl8TzdEODDSzu9V8y01R3l6kC/BUUsZ0KeXXswJ/jtoiwpNC+6MCNMwwWT?= =?us-ascii?Q?tJf8RQYtTG4aEOTKwsYNngxrfppgSYIwl9HODRCw3CPpyY9koAqm9w8MXcIi?= =?us-ascii?Q?2Y/meT15lU6mYWjYdkjOuWZ8OU3+bB4hhFZcVbYYln21K5TNZtsR9WKdX8su?= =?us-ascii?Q?IMmTozddrtdxCXYzr5cNgTuu5NVTtOrP/BgiFPzG4lHKmwA43FwXzhJkCpEp?= =?us-ascii?Q?bErPqs3jPzw0usQBIQzYDX3Z0UCwJB9QfkKQ9Ve9AdYvxX7UkqvIbJAtxmnZ?= =?us-ascii?Q?8R9ADhSoJT66o3Oy6SMo/UDlM3OW4hJhY9vtoG5FRoxqph63pH7DADUkaR8V?= =?us-ascii?Q?EuARUA475BzqnXxxKEtDndzKSmqg7iay2v+N86sZ97l7Vb6ZpbFzlvT52Dun?= =?us-ascii?Q?G5lhfdyP0bFtSu61S6HwiKOFETSrfQzPK0llBrFR99JC3CMrZHf5LaHOFeec?= =?us-ascii?Q?CZzlcXw6ns+RwsfbpfM1I2hFtCwt+dqhRYM+T2D4MNmy7zfw4zgOADMez3Ed?= =?us-ascii?Q?jvEkj/FxHq46LBvKqBpFT+FKUIgUtDys+LepzxlUeNpnawE1IFYCb4O7up94?= =?us-ascii?Q?c3JJAyL018Lu0kzbS4o=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 00:26:33.9344 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 46e0a2a1-2526-40cb-2f36-08ddffb802b8 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A101.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5846 Content-Type: text/plain; charset="utf-8" Implementer may need to reset a filter config when stopping a counter, thus adding a callback for this. Reviewed-by: Ilkka Koskinen Reviewed-by: Suzuki K Poulose Signed-off-by: Besar Wicaksono --- drivers/perf/arm_cspmu/arm_cspmu.c | 4 ++++ drivers/perf/arm_cspmu/arm_cspmu.h | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/ar= m_cspmu.c index 75b2d80f783e..43770c8ecd14 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -815,6 +815,10 @@ static void arm_cspmu_stop(struct perf_event *event, i= nt pmu_flags) return; =20 arm_cspmu_disable_counter(cspmu, hwc->idx); + + if (cspmu->impl.ops.reset_ev_filter) + cspmu->impl.ops.reset_ev_filter(cspmu, event); + arm_cspmu_event_update(event); =20 hwc->state |=3D PERF_HES_STOPPED | PERF_HES_UPTODATE; diff --git a/drivers/perf/arm_cspmu/arm_cspmu.h b/drivers/perf/arm_cspmu/ar= m_cspmu.h index bba513224586..188a884b4494 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.h +++ b/drivers/perf/arm_cspmu/arm_cspmu.h @@ -153,11 +153,13 @@ struct arm_cspmu_impl_ops { bool (*is_cycle_counter_event)(const struct perf_event *event); /* Decode event type/id from configs */ u32 (*event_type)(const struct perf_event *event); - /* Set event filters */ + /* Set/reset event filters */ void (*set_cc_filter)(struct arm_cspmu *cspmu, const struct perf_event *event); void (*set_ev_filter)(struct arm_cspmu *cspmu, const struct perf_event *event); + void (*reset_ev_filter)(struct arm_cspmu *cspmu, + const struct perf_event *event); /* Implementation specific event validation */ int (*validate_event)(struct arm_cspmu *cspmu, struct perf_event *event); --=20 2.50.1 From nobody Thu Oct 2 00:53:57 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012037.outbound.protection.outlook.com [52.101.43.37]) (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 D082918DB1E; Tue, 30 Sep 2025 00:26:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191997; cv=fail; b=okBIt3/Z9DrYqfVSqS1Zk1LfOovLTK0gbRCTLBvxR7nRRw3WivYw6qVc2bbGowhPqu/Dp00ULSlAYfevJDhuzg87AaGYepkieaM5npCKmYxOPFOIEopR6+kA0E4DKjSlafmKWAV/yBsgP6GOOL746vZ2KC4a3K50sre/l3A5O1Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191997; c=relaxed/simple; bh=JFERSEupynMX3jBP4gNuvR4+n8HHL+9Tycbku332uLc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=sSVhwTYU/aB5x7+tGmSgF5wn1uHBwmV/T3alWTB6Oe2PRMRdGStO2rmEGxegKfeUWgD6fLaY+M8vwZb3Rk3jkV9IV+4CKdHP02aFLwNvTJQeFK7bTnJRpSebGKm+qpFISDhQK1Rs3MIwEuGWDAhvgHc6xTxSmCETm2JujGnYzu0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=se+BYk8s; arc=fail smtp.client-ip=52.101.43.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="se+BYk8s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jIbQYUXcghHBZyrcOPon+hKO6KiYcxxcG6wLapTJ8HJPGgcB5CnrjrqSTKLFGrv6UsuhP2lv5KVsEwj4Iu98GNVw78Cl1Ut5oXdQ0EIziO+dcpkFlFfBraFEXeSej0wJUQg2hGA77EaVxX8RMTEvuGKR3K9GI8n2eQKUILPrrThazGVysi+jYGhECJdAmfS6h3NFNbenB3q+6gspLh2V241jASCuAxLFyiaOJfgfIng7Fn30unzibZ8NVlGMcux76GB0mvbSjfT3cbaSaRF4PRPHzpN9Mxez0+En5rvROnfeJqfggFpApmS/cN2/3klQniAD5pbNi7TFSmRH4wdFMQ== 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=Uw9ddff5EeW40rwZIau4/WS9uvwG8OGYNZUFacjqCGQ=; b=UM08Br8o9B9X2ZTjliWaUazwaBPb0aRTYWnRfkXTXYuONL/Qh7PBGkCeJjzV5pMCpVMlvCRG98OqlnOZ0Hx12QDNgsQnoVmXBFaTBh2sEy//ENOtPwSDP6c4eIGiqIv9clwFmy5wJGntNgOe3+AGDL8Cck1XMwMY9KBxLGMvVsSRteg6dfnJ9jZ83/giNMy8aw5wfr66J0R9mRZD7K0r8c0Rj9i+sEzUwu2KpYuqpK1+KyqHaKD7Q5oTtxcA/KqupMgT1ScuEKbmo5vM/VglHZUA1AwreEjlx79mCUuTOpFsRwu5AYFnH8+MKqaU+meOijIwlxxWR2fZE1tDJC61WA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Uw9ddff5EeW40rwZIau4/WS9uvwG8OGYNZUFacjqCGQ=; b=se+BYk8slXddTqjuUehPCo74F+L8owZ+dIABEW/CiycEatEuukY3YSWc6NR1ExDW7pU0fPrErH1dlqBwgOWyQe8K6M7GkE2ktyX6aMEKSUKoybNOXGia6GYCRLmTib5POqbn+zQ+CxvT9jIWWlXNNCpX/HUhquHdNvBkCqxZOCKB6j8alr5rYeXJ89FxSpp28HvOoN1Y2BNff4jDouzhrvs5WhMgHmC+4dXw6rP1hyHyfsHwCFuusvnc4A4DtEo7EljOuKnIWc8qyLApNELsY5kWSL9f3EN3Wbmg9cp+M9OVoIXAcyvURTe/g2BFJoTy/QTBs0CZArnT0trcpzeQzg== Received: from MW4PR03CA0335.namprd03.prod.outlook.com (2603:10b6:303:dc::10) by MN0PR12MB6248.namprd12.prod.outlook.com (2603:10b6:208:3c0::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.16; Tue, 30 Sep 2025 00:26:32 +0000 Received: from CO1PEPF000044F2.namprd05.prod.outlook.com (2603:10b6:303:dc:cafe::6e) by MW4PR03CA0335.outlook.office365.com (2603:10b6:303:dc::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.16 via Frontend Transport; Tue, 30 Sep 2025 00:26:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by CO1PEPF000044F2.mail.protection.outlook.com (10.167.241.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 00:26:32 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Mon, 29 Sep 2025 17:26:25 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 29 Sep 2025 17:26:25 -0700 Received: from build-bwicaksono-focal-20250829.internal (10.127.8.12) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 29 Sep 2025 17:26:25 -0700 From: Besar Wicaksono To: , , , , CC: , , , , , , , , Subject: [PATCH v3 3/5] perf/arm_cspmu: Add pmpidr support Date: Tue, 30 Sep 2025 00:26:02 +0000 Message-ID: <20250930002604.346306-4-bwicaksono@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930002604.346306-1-bwicaksono@nvidia.com> References: <20250930002604.346306-1-bwicaksono@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000044F2:EE_|MN0PR12MB6248:EE_ X-MS-Office365-Filtering-Correlation-Id: 211089ab-dd18-405f-6574-08ddffb80195 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: =?us-ascii?Q?m+KTqU2eH082SAvVAQJ7hOKMlTo1G2pGyMXX1PkawbIQREeN7ANtEtMFaQt0?= =?us-ascii?Q?G1hWF8z30Hsqat9TmrUVnT/36bm2uBjZYY9Uvza9YRVokqVBK18qQxz3r40y?= =?us-ascii?Q?1WJMxaJRc/uVqZ4Fx7mwnvmM8nKE1wLwSGgN9PdgXTvBA2uQcKJxXw/3lPZ3?= =?us-ascii?Q?JbZgNJJCCPKEeb2BYG0xTHBHRG80BCnTJHvDcevYPmyaTdkRJWg6X/x2grik?= =?us-ascii?Q?yJasVTB197aV8/QHs3eEtT1kXoZoF+XLxAHXmxpl17zPQw29C8+3qiUv+mdp?= =?us-ascii?Q?vCySWKJJCVqsI1N0xRuBGOAgRv8Juhaaid+dGWgZCKF7H8niSpbam0jtvHEU?= =?us-ascii?Q?8AatWhUFzBEnVCRQjqz3QnExyEBQpjdYxY8h7r/0PLmjtjIy3hKOr4HDQltJ?= =?us-ascii?Q?qHxJKiBQnwcLdxm4vxdJ5PZHAHrw2M0D8apAPFLO25fpPttx/cvDnRYP6Pwg?= =?us-ascii?Q?b7Qb+FpKJvCTTwxXDxYP39NYNtcQtI6d2xgb/5t9vI62wVFE2/k4cxenaqd3?= =?us-ascii?Q?WaMj4DYsX0WMGOnyNqnQ9l1mLT/cRIBgGWu7KHY1gKRU4gldjDIGyb7slqqW?= =?us-ascii?Q?dR/JMndOX7dd6PsRqvS9mcPQ6kVNIHTXBcjqhsPUlNu4LIZ4I6AC8J8oOcJL?= =?us-ascii?Q?aLg1Zmiu1WRH8M2k8PolAxCxvfUvPpwXDRQT14C1nilwl1N/hOU6DlCajZdp?= =?us-ascii?Q?mi90/SSNcg9XMiwam7r4//80ZT+TY7iYqNJeTwifc263hTztcAbHWyLKKrxT?= =?us-ascii?Q?lnesjbyI2bdcAS109vjA1k15fRtyvGyGSHTd6VbKhPx1xVMcMUWWOKsvTsy8?= =?us-ascii?Q?N+vOgbhEBRnQCkA4d5Z5W1/hjn3LbxCoJAlh5BxzOvlsNsQ7UVqqiKNpzR8i?= =?us-ascii?Q?s86oSYo/8yC8o/dfnlkFU67tsDz9nYqgRenE2IGw0AKkiX8PjsIkuG+78vzq?= =?us-ascii?Q?7THS8Zu0VCdg3vUlfvt7rXVXZoRE9OnZJ5JWd12Tu9fLyZF2b8vW1zP6ZI5q?= =?us-ascii?Q?RGhxa/u7nXpt4Bmx3ldO5yuzCPXp9Jrli+9ScSBUrcLKaTq65Q5H5/9HMfk5?= =?us-ascii?Q?eeLGfvwKamKR0AgdHxsuI1P4va/yF2El3Vjt/itfXCTDmTbnIl6BQby58kpD?= =?us-ascii?Q?Xw42hlDrYM2uqt1ocrK14bbSEBmyWFFChkY0Yg1F5Qm1NT/jYhk8sT8OPAcz?= =?us-ascii?Q?CS7oieVRKaXbqake2zsNdiKHawwL50Q8oge9yV0T7+QBg6Y9yBD4RWs3+fm6?= =?us-ascii?Q?LrDlgn1poM+laE3Ncsb0We4e9jGFhyX53BFCKegqygdVybymNZ3C+3rJH5xw?= =?us-ascii?Q?LFJMRIpDEVmGNoXng87I13tPd87bzASIN392jA2dZRGi35snpkXvpv60fW7Q?= =?us-ascii?Q?IRW/lHVO03WWa/xJT2K6TNHG94DG2IzrFX8ZhCy00DWWNT0Zp6L0FaQ9yY3B?= =?us-ascii?Q?zDwbr5VcJQ7ToMF/l7TAVnYkZwIPs6Lu93zJEmBZcS4hvJk6IJZePeUcUCQ1?= =?us-ascii?Q?PlawGmE40DSGfoOZ/cG5Q2nrdEWoY5+82QlqewoNhBs5mi9rKUxeBi6YTXWl?= =?us-ascii?Q?LcaEgL7Smhvi864nh/4=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 00:26:32.1161 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 211089ab-dd18-405f-6574-08ddffb80195 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000044F2.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6248 Content-Type: text/plain; charset="utf-8" The PMIIDR value is composed by the values in PMPIDR registers. We can use PMPIDR registers as alternative for device identification for systems that do not implement PMIIDR. Reviewed-by: Ilkka Koskinen Signed-off-by: Besar Wicaksono --- drivers/perf/arm_cspmu/arm_cspmu.c | 44 +++++++++++++++++++++++++-- drivers/perf/arm_cspmu/arm_cspmu.h | 35 +++++++++++++++++++-- drivers/perf/arm_cspmu/nvidia_cspmu.c | 2 +- 3 files changed, 75 insertions(+), 6 deletions(-) diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/ar= m_cspmu.c index 43770c8ecd14..d0ec1eb8272f 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -322,14 +322,14 @@ static struct arm_cspmu_impl_match impl_match[] =3D { { .module_name =3D "nvidia_cspmu", .pmiidr_val =3D ARM_CSPMU_IMPL_ID_NVIDIA, - .pmiidr_mask =3D ARM_CSPMU_PMIIDR_IMPLEMENTER, + .pmiidr_mask =3D PMIIDR_IMPLEMENTER, .module =3D NULL, .impl_init_ops =3D NULL, }, { .module_name =3D "ampere_cspmu", .pmiidr_val =3D ARM_CSPMU_IMPL_ID_AMPERE, - .pmiidr_mask =3D ARM_CSPMU_PMIIDR_IMPLEMENTER, + .pmiidr_mask =3D PMIIDR_IMPLEMENTER, .module =3D NULL, .impl_init_ops =3D NULL, }, @@ -351,6 +351,44 @@ static struct arm_cspmu_impl_match *arm_cspmu_impl_mat= ch_get(u32 pmiidr) return NULL; } =20 +static u32 arm_cspmu_get_pmiidr(struct arm_cspmu *cspmu) +{ + u32 pmiidr, pmpidr; + + pmiidr =3D readl(cspmu->base0 + PMIIDR); + + if (pmiidr !=3D 0) + return pmiidr; + + /* Construct PMIIDR value from PMPIDRs. */ + + pmpidr =3D readl(cspmu->base0 + PMPIDR0); + pmiidr |=3D FIELD_PREP(PMIIDR_PRODUCTID_PART_0, + FIELD_GET(PMPIDR0_PART_0, pmpidr)); + + pmpidr =3D readl(cspmu->base0 + PMPIDR1); + pmiidr |=3D FIELD_PREP(PMIIDR_PRODUCTID_PART_1, + FIELD_GET(PMPIDR1_PART_1, pmpidr)); + pmiidr |=3D FIELD_PREP(PMIIDR_IMPLEMENTER_DES_0, + FIELD_GET(PMPIDR1_DES_0, pmpidr)); + + pmpidr =3D readl(cspmu->base0 + PMPIDR2); + pmiidr |=3D FIELD_PREP(PMIIDR_VARIANT, + FIELD_GET(PMPIDR2_REVISION, pmpidr)); + pmiidr |=3D FIELD_PREP(PMIIDR_IMPLEMENTER_DES_1, + FIELD_GET(PMPIDR2_DES_1, pmpidr)); + + pmpidr =3D readl(cspmu->base0 + PMPIDR3); + pmiidr |=3D FIELD_PREP(PMIIDR_REVISION, + FIELD_GET(PMPIDR3_REVAND, pmpidr)); + + pmpidr =3D readl(cspmu->base0 + PMPIDR4); + pmiidr |=3D FIELD_PREP(PMIIDR_IMPLEMENTER_DES_2, + FIELD_GET(PMPIDR4_DES_2, pmpidr)); + + return pmiidr; +} + #define DEFAULT_IMPL_OP(name) .name =3D arm_cspmu_##name =20 static int arm_cspmu_init_impl_ops(struct arm_cspmu *cspmu) @@ -361,7 +399,7 @@ static int arm_cspmu_init_impl_ops(struct arm_cspmu *cs= pmu) =20 /* Start with a default PMU implementation */ cspmu->impl.module =3D THIS_MODULE; - cspmu->impl.pmiidr =3D readl(cspmu->base0 + PMIIDR); + cspmu->impl.pmiidr =3D arm_cspmu_get_pmiidr(cspmu); cspmu->impl.ops =3D (struct arm_cspmu_impl_ops) { DEFAULT_IMPL_OP(get_event_attrs), DEFAULT_IMPL_OP(get_format_attrs), diff --git a/drivers/perf/arm_cspmu/arm_cspmu.h b/drivers/perf/arm_cspmu/ar= m_cspmu.h index 188a884b4494..2022163959d6 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.h +++ b/drivers/perf/arm_cspmu/arm_cspmu.h @@ -87,6 +87,11 @@ #define PMCFGR 0xE00 #define PMCR 0xE04 #define PMIIDR 0xE08 +#define PMPIDR0 0xFE0 +#define PMPIDR1 0xFE4 +#define PMPIDR2 0xFE8 +#define PMPIDR3 0xFEC +#define PMPIDR4 0xFD0 =20 /* PMCFGR register field */ #define PMCFGR_NCG GENMASK(31, 28) @@ -116,8 +121,34 @@ #define PMCR_E BIT(0) =20 /* PMIIDR register field */ -#define ARM_CSPMU_PMIIDR_IMPLEMENTER GENMASK(11, 0) -#define ARM_CSPMU_PMIIDR_PRODUCTID GENMASK(31, 20) +#define PMIIDR_IMPLEMENTER GENMASK(11, 0) +#define PMIIDR_IMPLEMENTER_DES_0 GENMASK(3, 0) +#define PMIIDR_IMPLEMENTER_DES_1 GENMASK(6, 4) +#define PMIIDR_IMPLEMENTER_DES_2 GENMASK(11, 8) +#define PMIIDR_REVISION GENMASK(15, 12) +#define PMIIDR_VARIANT GENMASK(19, 16) +#define PMIIDR_PRODUCTID GENMASK(31, 20) +#define PMIIDR_PRODUCTID_PART_0 GENMASK(27, 20) +#define PMIIDR_PRODUCTID_PART_1 GENMASK(31, 28) + +/* PMPIDR0 register field */ +#define PMPIDR0_PART_0 GENMASK(7, 0) + +/* PMPIDR1 register field */ +#define PMPIDR1_DES_0 GENMASK(7, 4) +#define PMPIDR1_PART_1 GENMASK(3, 0) + +/* PMPIDR2 register field */ +#define PMPIDR2_REVISION GENMASK(7, 4) +#define PMPIDR2_DES_1 GENMASK(2, 0) + +/* PMPIDR3 register field */ +#define PMPIDR3_REVAND GENMASK(7, 4) +#define PMPIDR3_CMOD GENMASK(3, 0) + +/* PMPIDR4 register field */ +#define PMPIDR4_SIZE GENMASK(7, 4) +#define PMPIDR4_DES_2 GENMASK(3, 0) =20 /* JEDEC-assigned JEP106 identification code */ #define ARM_CSPMU_IMPL_ID_NVIDIA 0x36B diff --git a/drivers/perf/arm_cspmu/nvidia_cspmu.c b/drivers/perf/arm_cspmu= /nvidia_cspmu.c index dc6d4e3e2a1b..b6cec351a142 100644 --- a/drivers/perf/arm_cspmu/nvidia_cspmu.c +++ b/drivers/perf/arm_cspmu/nvidia_cspmu.c @@ -322,7 +322,7 @@ static int nv_cspmu_init_ops(struct arm_cspmu *cspmu) if (!ctx) return -ENOMEM; =20 - prodid =3D FIELD_GET(ARM_CSPMU_PMIIDR_PRODUCTID, cspmu->impl.pmiidr); + prodid =3D FIELD_GET(PMIIDR_PRODUCTID, cspmu->impl.pmiidr); =20 /* Find matching PMU. */ for (; match->prodid; match++) { --=20 2.50.1 From nobody Thu Oct 2 00:53:57 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010056.outbound.protection.outlook.com [52.101.193.56]) (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 3768614D283; Tue, 30 Sep 2025 00:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.56 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191999; cv=fail; b=k1bTQ5Fz4KEra7vv//hKkYDveyfgQhLPhxv3F4f3UhDRCoZarq2WwRbz7AyjQuMCsn8mYSp1vL0I8BZGi5HR6aHktlEOfplXMUYHwwR65BksuA8hod4OfXxwMe+M1q8cuB84kLZWKRmnw74pdAMHtByz+5ujktblvGRsMcqNLAk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759191999; c=relaxed/simple; bh=EjRdKIukK8mbxgRqUv5h59gGO4CiXFaqK+xxuFo3cSo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=f3Eym4/wbnh6UYMcnFDxBk6QIar6/mNyLzjD1Wy3q9Nq3simaXc5QcL2O3Bwby2y0rvaZXaN8Qc3DTMuugOlOLA3dm7yB+V3dUrB9zqCGHQZEXuem32xaUTxP7PjM+yhX+bKqD6j25g+/z7wkMj3fGjn1F3biOc8dyo2ZfGSfoE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=JIT79skW; arc=fail smtp.client-ip=52.101.193.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="JIT79skW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LgzAY+0MCgXPEUveI8xxRI1r02YMYG6F1bWRfqSfoRqNxrpMe/klZ5x5R6cD3ZJvKfm9/fwiGoL/tjO+8M/6HzByOWXguNYryafHp4G6kFlxbgVO/Jd0+wPVyPnmjGB+zLZP+Dxu0qR911U0MgUl2JzQbmprpHPhLt4aoJ6bgtan5pD14wqeaeEybbOE0XMhV/PfO/DUeZ9jR9hCqxzc+dGmX5pDhwj/ehYzKMxM5+R/f/Rxkx+A/v09vsOcWvz0sJzem6cdz79NK3s0UlXDwb9FegeOSU4e+2mbNsz1m8aWyMCeP9sGvZpl8pLhYVXQ0fpjAblsaPJ5VfCF7TMoyA== 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=qCK6PM50QWujymmPTS5vOZevTPh0u9qW2gkMPf3MzkA=; b=ILg61L9eIW8XhYuvxtdeP1PA+i+0jkGNbsZlJ6Y6nbasXx+JqeO3kGSEJ2cwl6YnicXzG6D7HTzL/WBVR07/2OfREW8ZQtXYGp4LdrVYrj7O//n4Txq4fk7OZSa1foPioLneE0NjjRWjF5EC9XYqnTbbzvKsnCuemxm5mF3/MKVs+WNiDLslkyXvCzgYyfXe8MWMY1w+QBrDfLyjfFouTUSZw1cvvlFmBm7FlYOXE19Bc8FuE4cAi3y2EOvVGJeaZpr3PLI87m0m3tDh+KrJWWbUzrhEU0i+MnWf0wzbH8E0k8ZIrP8HcjC/bMZUm3n3zHv5umgIMXtdD+EG/B4b7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qCK6PM50QWujymmPTS5vOZevTPh0u9qW2gkMPf3MzkA=; b=JIT79skWDQvCVuPDRHh/H1wzzmCVQMsIp7dhuaGQCTwPhzIj7IZjZNUJR9IF1oTWqgye2obIyFMjho7rzzJyOixQkIxac33+KTY+CU3x5/EMWkJg1Lr/xBuZumgKASW0Od2hfA894hzoyyrvSuZ/miDOMRWtRO3reBG/w0LFU5leO1Bs0KMAbM5edHcFfu6Z1a/Ui5NGYMG45Km+hkF3SNzhEOyTXUlDvvR/ZYNAVqwfrS8AsNEOWZJpPL6GpMBvMkLCSTzxmzr+gL/CD24Kh5NVYV/coyoMa1zO1zsb9mzeNnPoj5pKo6A1TLLsz4c5t2x3JXAHZdUO9iUc/DgDDQ== Received: from MW4PR03CA0015.namprd03.prod.outlook.com (2603:10b6:303:8f::20) by PH8PR12MB7301.namprd12.prod.outlook.com (2603:10b6:510:222::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.16; Tue, 30 Sep 2025 00:26:34 +0000 Received: from CO1PEPF000044F3.namprd05.prod.outlook.com (2603:10b6:303:8f:cafe::e1) by MW4PR03CA0015.outlook.office365.com (2603:10b6:303:8f::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.16 via Frontend Transport; Tue, 30 Sep 2025 00:26:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by CO1PEPF000044F3.mail.protection.outlook.com (10.167.241.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 00:26:33 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Mon, 29 Sep 2025 17:26:28 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 29 Sep 2025 17:26:27 -0700 Received: from build-bwicaksono-focal-20250829.internal (10.127.8.12) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 29 Sep 2025 17:26:27 -0700 From: Besar Wicaksono To: , , , , CC: , , , , , , , , Subject: [PATCH v3 4/5] perf/arm_cspmu: nvidia: Add revision id matching Date: Tue, 30 Sep 2025 00:26:03 +0000 Message-ID: <20250930002604.346306-5-bwicaksono@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930002604.346306-1-bwicaksono@nvidia.com> References: <20250930002604.346306-1-bwicaksono@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000044F3:EE_|PH8PR12MB7301:EE_ X-MS-Office365-Filtering-Correlation-Id: 12eb92b5-b163-4ce7-188f-08ddffb8027e 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: =?us-ascii?Q?7YRl6Vr9HjOIFMuX8qjttZjEQR4eur9TdP2644lYJurRatOUs4gaRkkRRkHE?= =?us-ascii?Q?W7KVcQs1JmWAIAN/SgLgoqTO9xJ0u639lOiAWQb2vs/c5l29LOuGmtgzTZ01?= =?us-ascii?Q?97A2JippLfymgYPChwVaP3E3EXisN3luIvidIPDz2y1uEBaCGSc3FQU1L/Y/?= =?us-ascii?Q?8sG1dqs2wGT4ZsyfvXRNpfpFFlYPvGb81US4W4KzTKCuRwJ/ZgCSa3q3mDCm?= =?us-ascii?Q?RqSjnqZdapsLH+iuFyJLA1LRjd96syIrU9wk45tZjdzOK18JlCMdIKuByut6?= =?us-ascii?Q?4HmfgVXRVpoJOBnBXZWasEM0iATe+KOyKyozUS6qh/L+Swf+hTICv0u6uFPY?= =?us-ascii?Q?2lFgn7vmRToyvSxabCbTmqXWx+pr4upXruT+PiTPJGn9UhD+rOASfqaKXjCN?= =?us-ascii?Q?o+gqvkrOV2OkAn2K0/KwaZiGCqLmumgS+IzBlBqB4J/Tzf8hNtFr2Wbj4IKT?= =?us-ascii?Q?7MRW2rsUdh2S9L+gSZjRQDpzSDsZMt9Rx27AllgJbBMGIgOreUx3AAJtvg5G?= =?us-ascii?Q?4CVcIzHozHeUdffN502UXBn92a5evl6cFLIqWJm4X1S/gRfIkpesO3z7Me7P?= =?us-ascii?Q?NLiGKnHet/jJ7Z0BZHJhA9DG4TDEmx0kSJLG/pI0CYvGCFvf01/RfbXLsZm0?= =?us-ascii?Q?cksHtU3TmOB1dK3amyWcqAwaPyWd6tWdIKVO+mgb3DYe0gNVAboy51FxS3eG?= =?us-ascii?Q?D85Y8yKje3CiqI4piWyxuOT9w0NWZBk8O2y/H0PMHicYxBz46I0remrK62ut?= =?us-ascii?Q?0GxQHVMTiNbKTk3mjUlDrKH+9k6PESSOwcOR5A/Hdbnxt7Q4axuQurb0RtnE?= =?us-ascii?Q?tW71bHmKpDYtemuILHvVaFJCKtbqikDg/iiGwEc0Xj57T+K6XwqrRH4aOA1/?= =?us-ascii?Q?YC8TsGFY74cfX2rsO3Ymc9AUD/4UgM8Xv64wQoguxjara87uL2gAP+2g95Ap?= =?us-ascii?Q?UksjeHdHCw3q18u1E5kDNDmgFT+RDGLhSzO7m8nDWrHr6ClefTXHFOEfC9Sr?= =?us-ascii?Q?xr5Zgph69MvGNguL3HXWmzThlu7GwhISV32GEExJx+zob7o0awXr87mG2fWL?= =?us-ascii?Q?NfbgdHt0067kBVfq/kIoF65Cb7hBc36hZv4eXqugYv6bbBFsMp1fa33XlaPL?= =?us-ascii?Q?R6QWIFucqCfC3hrVMpngIIA1vVfa/L6kOwPMC1n9chmRvrRUW0fMS6LFXOqk?= =?us-ascii?Q?6wlnaz52AwYG5Rt6X57GTQKgrDiKQbXKS+frVoZhXdXk71mEudcOn0JHhO76?= =?us-ascii?Q?OdfBbFPzbhVwMUs8zApYy+qURwOfZE4RHZiS3in4A3AexbXS24WLP+KPQV+B?= =?us-ascii?Q?TDUPpFo6hm0IPGxbuf/JEQhueuCnBrd4emjPh4s5By6QD5zgHo3d/bmmi9hF?= =?us-ascii?Q?AdAI6xJlRYTL9cE4FZE27NX+w4FkBs7m/wiJEoskHs6L6Wc6C8RQuoA1WAuJ?= =?us-ascii?Q?5kx6wmYrGyu/vu1j9h5OzH2HFgwKFRUYPDeSt0Co8Kspp55tUBwmidQXvVO+?= =?us-ascii?Q?+QMXJ5OTTJvgDOnCO0a5QDLtzSbGANjQ/nrFPkb/HQ9YNNMTkh0tAbqcXhIZ?= =?us-ascii?Q?IrJKcKkMeUJXYx0WHoc=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 00:26:33.6449 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 12eb92b5-b163-4ce7-188f-08ddffb8027e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000044F3.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7301 Content-Type: text/plain; charset="utf-8" Distinguish NVIDIA devices by revision and variant bits in PMIIDR register in addition to product id. Reviewed-by: Ilkka Koskinen Signed-off-by: Besar Wicaksono --- drivers/perf/arm_cspmu/nvidia_cspmu.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/perf/arm_cspmu/nvidia_cspmu.c b/drivers/perf/arm_cspmu= /nvidia_cspmu.c index b6cec351a142..ac91dc46501d 100644 --- a/drivers/perf/arm_cspmu/nvidia_cspmu.c +++ b/drivers/perf/arm_cspmu/nvidia_cspmu.c @@ -23,7 +23,7 @@ =20 #define NV_GENERIC_FILTER_ID_MASK GENMASK_ULL(31, 0) =20 -#define NV_PRODID_MASK GENMASK(31, 0) +#define NV_PRODID_MASK (PMIIDR_PRODUCTID | PMIIDR_VARIANT | PMIIDR_REVISIO= N) =20 #define NV_FORMAT_NAME_GENERIC 0 =20 @@ -220,7 +220,7 @@ struct nv_cspmu_match { =20 static const struct nv_cspmu_match nv_cspmu_match[] =3D { { - .prodid =3D 0x103, + .prodid =3D 0x10300000, .prodid_mask =3D NV_PRODID_MASK, .filter_mask =3D NV_PCIE_FILTER_ID_MASK, .filter_default_val =3D NV_PCIE_FILTER_ID_MASK, @@ -230,7 +230,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] =3D= { .format_attr =3D pcie_pmu_format_attrs }, { - .prodid =3D 0x104, + .prodid =3D 0x10400000, .prodid_mask =3D NV_PRODID_MASK, .filter_mask =3D NV_NVL_C2C_FILTER_ID_MASK, .filter_default_val =3D NV_NVL_C2C_FILTER_ID_MASK, @@ -240,7 +240,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] =3D= { .format_attr =3D nvlink_c2c_pmu_format_attrs }, { - .prodid =3D 0x105, + .prodid =3D 0x10500000, .prodid_mask =3D NV_PRODID_MASK, .filter_mask =3D NV_NVL_C2C_FILTER_ID_MASK, .filter_default_val =3D NV_NVL_C2C_FILTER_ID_MASK, @@ -250,7 +250,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] =3D= { .format_attr =3D nvlink_c2c_pmu_format_attrs }, { - .prodid =3D 0x106, + .prodid =3D 0x10600000, .prodid_mask =3D NV_PRODID_MASK, .filter_mask =3D NV_CNVL_FILTER_ID_MASK, .filter_default_val =3D NV_CNVL_FILTER_ID_MASK, @@ -260,7 +260,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] =3D= { .format_attr =3D cnvlink_pmu_format_attrs }, { - .prodid =3D 0x2CF, + .prodid =3D 0x2CF00000, .prodid_mask =3D NV_PRODID_MASK, .filter_mask =3D 0x0, .filter_default_val =3D 0x0, @@ -312,7 +312,6 @@ static char *nv_cspmu_format_name(const struct arm_cspm= u *cspmu, =20 static int nv_cspmu_init_ops(struct arm_cspmu *cspmu) { - u32 prodid; struct nv_cspmu_ctx *ctx; struct device *dev =3D cspmu->dev; struct arm_cspmu_impl_ops *impl_ops =3D &cspmu->impl.ops; @@ -322,13 +321,12 @@ static int nv_cspmu_init_ops(struct arm_cspmu *cspmu) if (!ctx) return -ENOMEM; =20 - prodid =3D FIELD_GET(PMIIDR_PRODUCTID, cspmu->impl.pmiidr); - /* Find matching PMU. */ for (; match->prodid; match++) { const u32 prodid_mask =3D match->prodid_mask; =20 - if ((match->prodid & prodid_mask) =3D=3D (prodid & prodid_mask)) + if ((match->prodid & prodid_mask) =3D=3D + (cspmu->impl.pmiidr & prodid_mask)) break; } =20 --=20 2.50.1 From nobody Thu Oct 2 00:53:57 2025 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010055.outbound.protection.outlook.com [40.93.198.55]) (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 8DD0917A2E6; Tue, 30 Sep 2025 00:26:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759192009; cv=fail; b=cCTKF+dKMo4N6AlYM0I+iMU/KmltWUJ6kiYgyFcF970icOS21xvNHdbrVt8DYCYVXhvb80nd65/tCXV7rtYhTRaXMcgaJYBk4rncDpXUSDFhusYvnIfP1YaWad7iHnRsqgeg/28z3MPXQyMfmKK7qHZ/VcT4xpPNBooWT/DmKnc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759192009; c=relaxed/simple; bh=1ycY9a0yC2MW9La5g8hI5YaXErdemXyTLrGarAcGENU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=I4Ri1Itq/GsuoYC5jYVC33YpUsgyR80QIeAkp7EvQE14hGeKMtkwicZb25qqLtxRhF9LPch3WFE9sLXmTcm0TKIRSpRVEkoa7D9kozkvGiC6gCuUzxBsHjMVxfjEUvJxj9qVJHAsuweis5q5LL2fdAV0SWkeGJnY9PIET2pLLTs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=qO6m9y2w; arc=fail smtp.client-ip=40.93.198.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="qO6m9y2w" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vUAE8l2zWeMhsIAwaLKa+7NcTLVQ/TELX076gT3u09XTs7NMGET9Y1OK+Q5wdVlZOma3aVinzNkKbCCPdBrTWkPKknj8OIb1AkxOOHbC2mOdyBI6A1frn7hbarTkoclGl0Q1p+6jogb05+Gf0TXPFHB3NYKBWM+nLafQs4m4qCCnVuXy9oJ1cZ4sUzM+s3BAoUFrKNcl/rqIIz0YL+qaSkuSrAS/vZm3FH20+7mENbHqHztxvEA6Tk+k6jJ+gFraHiQ/7cd7mMsXf5KHuAldRLyAYzOyJ7x6myi20UrRS2fcYWEI2wry7EJpQJTirnHEIbbzSHQkjzywf51VYSkAtg== 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=KmetoKOnyBobBLXxHYNFkmrwPQ0aQpyJYfd4vvXp0ZI=; b=hKpgtwQ7KEnXE/ZHo/whwn6LY6Rrz84KvbYygeBq2C4vecRWeArf4EY3iY0or08oE4kYufyZH4pnOMo7DcRYhP3VqD8dCqIuymqGU9lonvOHZCNvoNs/Xjuu78C3wTWv67QBsZJ8n6boeWnBFm/qpPOUjHLXJlI0PkM7m4o/l1ZlLRH4f5qp0SGIP9i3lk3+DN0pDmbH/TyNI6sqzfpwGX0DGghtyFAXh2ejsi7nXLR3TKeOtJT32eAhQANFAwHvseqrFnbxobxjAlbx+2yymM76po49UGL3nN1wMea1A1PhPfm7FMTF6ZXMdr5X2QYah2piRp77q4aOdCmWfnyZGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KmetoKOnyBobBLXxHYNFkmrwPQ0aQpyJYfd4vvXp0ZI=; b=qO6m9y2wRYbZIFDcRW+2M18B8r6MEgSiW+jL35UK5IsDTGYUbifkhnGYqIHbeLiqyoggbinv/kylkdIC1O2NK90XYs/Fpeo/IYsFd4NShDIU+f64eLDIcYGG/ztRatKypjUvf0D/0GLen3d4lDzOxkVlebSCZxflSzCeOyqw9jI7h9gFRm97lzVrCd1QQmwKAh9Ou/iBZR3Su3UsvjwA09WhPU6crKLeumWbgt37HR12Uwqg1AolMQJG6lSmeO7CHyEW+2pZdNlIaT5sWKY8+hCD2pLeduLD74QGm46mmn4e5UCBuvZ4xWxM5UiTAokFp3fM/T5j9Wv2VG/i4WI0Og== Received: from BLAPR03CA0046.namprd03.prod.outlook.com (2603:10b6:208:32d::21) by DS7PR12MB6190.namprd12.prod.outlook.com (2603:10b6:8:99::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.17; Tue, 30 Sep 2025 00:26:40 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:32d:cafe::e1) by BLAPR03CA0046.outlook.office365.com (2603:10b6:208:32d::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.16 via Frontend Transport; Tue, 30 Sep 2025 00:26:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 00:26:40 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Mon, 29 Sep 2025 17:26:30 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 29 Sep 2025 17:26:30 -0700 Received: from build-bwicaksono-focal-20250829.internal (10.127.8.12) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 29 Sep 2025 17:26:30 -0700 From: Besar Wicaksono To: , , , , CC: , , , , , , , , Subject: [PATCH v3 5/5] perf/arm_cspmu: nvidia: Add pmevfiltr2 support Date: Tue, 30 Sep 2025 00:26:04 +0000 Message-ID: <20250930002604.346306-6-bwicaksono@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930002604.346306-1-bwicaksono@nvidia.com> References: <20250930002604.346306-1-bwicaksono@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|DS7PR12MB6190:EE_ X-MS-Office365-Filtering-Correlation-Id: 05149ba9-3f20-417b-7346-08ddffb80683 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?pkaXUtVd7QVDl5VkLb186VWKRhybE8iY8f4tXqRumyROKQGdZ8QgLoG1s8nK?= =?us-ascii?Q?Gy0I1J0vBiILRKI+SR22D48gtmFR73kNPavCzxaKLmgYyK3Hb/hQPZ1rlg13?= =?us-ascii?Q?1DBI8geRvLr0rRmHWI6bHDa+/ormZg7i3QFTRir+FyUmXEadFY2RqxsrraT9?= =?us-ascii?Q?h21dr+PFRiqnX8qinl5Kud+QArpREI+L1GyaIXrHr3aLWBPes7MrcWtmTigS?= =?us-ascii?Q?836B+I5qxRr8MP6oeWPngwPGqmDiB1sywJthNekyitgkdJ2EcYbR3tUD9pIx?= =?us-ascii?Q?fnCVmwObvbeSbGvkITD4PCMW2fT658eZkPAW2SnItcEZ5fWba6WzviCd0fiZ?= =?us-ascii?Q?PsB1GuhwERc460yl6nHhg7+hqXsMrs5awEAzC7GATGop6Ssf+7mEOKF0L8s9?= =?us-ascii?Q?Y3henDrGqSsfn7rUE7AqOjKilXGXxb7MT03tPMrsZ9hT2YDXY5NdGmWQk4hx?= =?us-ascii?Q?VHj+j0FpeYn4+6StcKXfJLGp6pC5TO0dY2IdaAy87S2zYLJZwrKME2W7HsT3?= =?us-ascii?Q?EMWcO5+XmFgA4pLmGjo0EYT+Ybgd7E/gn0/0mZf7aFU6Zs19XADlwzCUJo1N?= =?us-ascii?Q?1uA+YJOaAMR9xEu/Ux0QaOE83kHeTF1oYk0aGEWRN/+R5glEvo/28ruQ4iRl?= =?us-ascii?Q?cnktnS/0jI9Gy0Mg0w3DIDstQO/6SN3v4nY894Won45WmEtTusfb1GtR/q3T?= =?us-ascii?Q?gic4B/ApB/or56GKs798uLhKVmFqIEw85T6rwjejg/KBojZrMmsxK3r+KKki?= =?us-ascii?Q?sDEB4H7K6QFl3fucopAuDi/gWJgQ+qtmxvmRpeCytTIg3K77qWoy0+6HHXZM?= =?us-ascii?Q?SwL04FznPJ/eXh0D/zMsRcEJXnuINFBiVnu8cni1UKrn84NvsP/nvEHjehse?= =?us-ascii?Q?iXyrro1Kbz1ILc/54yi7HTKYBlz2Zj8x6chao0lNClS75AH9bdBxfFcvRBq8?= =?us-ascii?Q?bSs/9FTRhuFDayh6gRQg/qt+PYkZpq6Lvh9YH9zMRw7taFGTSQaT2aDX9+66?= =?us-ascii?Q?ZgV6LKkZyfj6Jr4xWZt+YMNGoRkyRJuo3KAGOmt9tXKG483HD8Sho6OEeBbV?= =?us-ascii?Q?PCI6855yWAWjVu+YbT61hUHYO8WjaY9zN+Tv+0nPvboJUDWlgBilZCjfYJD0?= =?us-ascii?Q?Kyj8CQdkh8tpQinFQUwiZnf5GvzNsqJ2hsMz5z5H6gjVQ/HwkBMrLoq+KvPe?= =?us-ascii?Q?Kvo1XGUhFR7P9G5CoV7j2ovfTfWNB5DIVOSMDob2yoGds9GjX+DpxjJvmdX4?= =?us-ascii?Q?7Af8gTyqZp7/IKH1114xvtQPQXltmy/EhLijA6x1Hg1gfW0MB46D1g4kLfan?= =?us-ascii?Q?MRUY4lo0LOtRn2bAJcGhymg3LSVJJK0+l4X7Evcb2a8KkV+mZ8xtAWKFWDlh?= =?us-ascii?Q?VxodIwN6+M08HJOcmlwfP6129lu9X1L+LKPLjbMDHRIVQjoCwPdFPmqtKHtQ?= =?us-ascii?Q?L+f3HN/QcqkXKBy6LTEjmHnLZCzVl+f0s5BWQJYbaT/8YV1cfIxbK7dHJAp0?= =?us-ascii?Q?IRrI2aFiRxMG4qVWSJJs9BzI5TEUTkiM+od7oUHJMqAEnTu6ykK/B8RO0l2N?= =?us-ascii?Q?sHeTpXR2K8+oD4/O4T0=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 00:26:40.3066 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 05149ba9-3f20-417b-7346-08ddffb80683 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.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: DS7PR12MB6190 Content-Type: text/plain; charset="utf-8" Support NVIDIA PMU that utilizes the optional event filter2 register. Reviewed-by: Ilkka Koskinen Signed-off-by: Besar Wicaksono --- drivers/perf/arm_cspmu/nvidia_cspmu.c | 176 +++++++++++++++++++------- 1 file changed, 133 insertions(+), 43 deletions(-) diff --git a/drivers/perf/arm_cspmu/nvidia_cspmu.c b/drivers/perf/arm_cspmu= /nvidia_cspmu.c index ac91dc46501d..e06a06d3407b 100644 --- a/drivers/perf/arm_cspmu/nvidia_cspmu.c +++ b/drivers/perf/arm_cspmu/nvidia_cspmu.c @@ -40,10 +40,21 @@ =20 struct nv_cspmu_ctx { const char *name; - u32 filter_mask; - u32 filter_default_val; + struct attribute **event_attr; struct attribute **format_attr; + + u32 filter_mask; + u32 filter_default_val; + u32 filter2_mask; + u32 filter2_default_val; + + u32 (*get_filter)(const struct perf_event *event); + u32 (*get_filter2)(const struct perf_event *event); + + void *data; + + int (*init_data)(struct arm_cspmu *cspmu); }; =20 static struct attribute *scf_pmu_event_attrs[] =3D { @@ -144,6 +155,7 @@ static struct attribute *cnvlink_pmu_format_attrs[] =3D= { static struct attribute *generic_pmu_format_attrs[] =3D { ARM_CSPMU_FORMAT_EVENT_ATTR, ARM_CSPMU_FORMAT_FILTER_ATTR, + ARM_CSPMU_FORMAT_FILTER2_ATTR, NULL, }; =20 @@ -184,13 +196,36 @@ static u32 nv_cspmu_event_filter(const struct perf_ev= ent *event) return filter_val; } =20 +static u32 nv_cspmu_event_filter2(const struct perf_event *event) +{ + const struct nv_cspmu_ctx *ctx =3D + to_nv_cspmu_ctx(to_arm_cspmu(event->pmu)); + + const u32 filter_val =3D event->attr.config2 & ctx->filter2_mask; + + if (filter_val =3D=3D 0) + return ctx->filter2_default_val; + + return filter_val; +} + static void nv_cspmu_set_ev_filter(struct arm_cspmu *cspmu, const struct perf_event *event) { - u32 filter =3D nv_cspmu_event_filter(event); - u32 offset =3D PMEVFILTR + (4 * event->hw.idx); + u32 filter, offset; + const struct nv_cspmu_ctx *ctx =3D + to_nv_cspmu_ctx(to_arm_cspmu(event->pmu)); + offset =3D 4 * event->hw.idx; =20 - writel(filter, cspmu->base0 + offset); + if (ctx->get_filter) { + filter =3D ctx->get_filter(event); + writel(filter, cspmu->base0 + PMEVFILTR + offset); + } + + if (ctx->get_filter2) { + filter =3D ctx->get_filter2(event); + writel(filter, cspmu->base0 + PMEVFILT2R + offset); + } } =20 static void nv_cspmu_set_cc_filter(struct arm_cspmu *cspmu, @@ -210,74 +245,120 @@ enum nv_cspmu_name_fmt { struct nv_cspmu_match { u32 prodid; u32 prodid_mask; - u64 filter_mask; - u32 filter_default_val; const char *name_pattern; enum nv_cspmu_name_fmt name_fmt; - struct attribute **event_attr; - struct attribute **format_attr; + struct nv_cspmu_ctx template_ctx; + struct arm_cspmu_impl_ops ops; }; =20 static const struct nv_cspmu_match nv_cspmu_match[] =3D { { .prodid =3D 0x10300000, .prodid_mask =3D NV_PRODID_MASK, - .filter_mask =3D NV_PCIE_FILTER_ID_MASK, - .filter_default_val =3D NV_PCIE_FILTER_ID_MASK, .name_pattern =3D "nvidia_pcie_pmu_%u", .name_fmt =3D NAME_FMT_SOCKET, - .event_attr =3D mcf_pmu_event_attrs, - .format_attr =3D pcie_pmu_format_attrs + .template_ctx =3D { + .event_attr =3D mcf_pmu_event_attrs, + .format_attr =3D pcie_pmu_format_attrs, + .filter_mask =3D NV_PCIE_FILTER_ID_MASK, + .filter_default_val =3D NV_PCIE_FILTER_ID_MASK, + .filter2_mask =3D 0x0, + .filter2_default_val =3D 0x0, + .get_filter =3D nv_cspmu_event_filter, + .get_filter2 =3D NULL, + .data =3D NULL, + .init_data =3D NULL + }, }, { .prodid =3D 0x10400000, .prodid_mask =3D NV_PRODID_MASK, - .filter_mask =3D NV_NVL_C2C_FILTER_ID_MASK, - .filter_default_val =3D NV_NVL_C2C_FILTER_ID_MASK, .name_pattern =3D "nvidia_nvlink_c2c1_pmu_%u", .name_fmt =3D NAME_FMT_SOCKET, - .event_attr =3D mcf_pmu_event_attrs, - .format_attr =3D nvlink_c2c_pmu_format_attrs + .template_ctx =3D { + .event_attr =3D mcf_pmu_event_attrs, + .format_attr =3D nvlink_c2c_pmu_format_attrs, + .filter_mask =3D NV_NVL_C2C_FILTER_ID_MASK, + .filter_default_val =3D NV_NVL_C2C_FILTER_ID_MASK, + .filter2_mask =3D 0x0, + .filter2_default_val =3D 0x0, + .get_filter =3D nv_cspmu_event_filter, + .get_filter2 =3D NULL, + .data =3D NULL, + .init_data =3D NULL + }, }, { .prodid =3D 0x10500000, .prodid_mask =3D NV_PRODID_MASK, - .filter_mask =3D NV_NVL_C2C_FILTER_ID_MASK, - .filter_default_val =3D NV_NVL_C2C_FILTER_ID_MASK, .name_pattern =3D "nvidia_nvlink_c2c0_pmu_%u", .name_fmt =3D NAME_FMT_SOCKET, - .event_attr =3D mcf_pmu_event_attrs, - .format_attr =3D nvlink_c2c_pmu_format_attrs + .template_ctx =3D { + .event_attr =3D mcf_pmu_event_attrs, + .format_attr =3D nvlink_c2c_pmu_format_attrs, + .filter_mask =3D NV_NVL_C2C_FILTER_ID_MASK, + .filter_default_val =3D NV_NVL_C2C_FILTER_ID_MASK, + .filter2_mask =3D 0x0, + .filter2_default_val =3D 0x0, + .get_filter =3D nv_cspmu_event_filter, + .get_filter2 =3D NULL, + .data =3D NULL, + .init_data =3D NULL + }, }, { .prodid =3D 0x10600000, .prodid_mask =3D NV_PRODID_MASK, - .filter_mask =3D NV_CNVL_FILTER_ID_MASK, - .filter_default_val =3D NV_CNVL_FILTER_ID_MASK, .name_pattern =3D "nvidia_cnvlink_pmu_%u", .name_fmt =3D NAME_FMT_SOCKET, - .event_attr =3D mcf_pmu_event_attrs, - .format_attr =3D cnvlink_pmu_format_attrs + .template_ctx =3D { + .event_attr =3D mcf_pmu_event_attrs, + .format_attr =3D cnvlink_pmu_format_attrs, + .filter_mask =3D NV_CNVL_FILTER_ID_MASK, + .filter_default_val =3D NV_CNVL_FILTER_ID_MASK, + .filter2_mask =3D 0x0, + .filter2_default_val =3D 0x0, + .get_filter =3D nv_cspmu_event_filter, + .get_filter2 =3D NULL, + .data =3D NULL, + .init_data =3D NULL + }, }, { .prodid =3D 0x2CF00000, .prodid_mask =3D NV_PRODID_MASK, - .filter_mask =3D 0x0, - .filter_default_val =3D 0x0, .name_pattern =3D "nvidia_scf_pmu_%u", .name_fmt =3D NAME_FMT_SOCKET, - .event_attr =3D scf_pmu_event_attrs, - .format_attr =3D scf_pmu_format_attrs + .template_ctx =3D { + .event_attr =3D scf_pmu_event_attrs, + .format_attr =3D scf_pmu_format_attrs, + .filter_mask =3D 0x0, + .filter_default_val =3D 0x0, + .filter2_mask =3D 0x0, + .filter2_default_val =3D 0x0, + .get_filter =3D nv_cspmu_event_filter, + .get_filter2 =3D NULL, + .data =3D NULL, + .init_data =3D NULL + }, }, { .prodid =3D 0, .prodid_mask =3D 0, - .filter_mask =3D NV_GENERIC_FILTER_ID_MASK, - .filter_default_val =3D NV_GENERIC_FILTER_ID_MASK, .name_pattern =3D "nvidia_uncore_pmu_%u", .name_fmt =3D NAME_FMT_GENERIC, - .event_attr =3D generic_pmu_event_attrs, - .format_attr =3D generic_pmu_format_attrs + .template_ctx =3D { + .event_attr =3D generic_pmu_event_attrs, + .format_attr =3D generic_pmu_format_attrs, + .filter_mask =3D NV_GENERIC_FILTER_ID_MASK, + .filter_default_val =3D NV_GENERIC_FILTER_ID_MASK, + .filter2_mask =3D NV_GENERIC_FILTER_ID_MASK, + .filter2_default_val =3D NV_GENERIC_FILTER_ID_MASK, + .get_filter =3D nv_cspmu_event_filter, + .get_filter2 =3D nv_cspmu_event_filter2, + .data =3D NULL, + .init_data =3D NULL + }, }, }; =20 @@ -310,6 +391,14 @@ static char *nv_cspmu_format_name(const struct arm_csp= mu *cspmu, return name; } =20 +#define SET_OP(name, impl, match, default_op) \ + do { \ + if (match->ops.name) \ + impl->name =3D match->ops.name; \ + else if (default_op !=3D NULL) \ + impl->name =3D default_op; \ + } while (false) + static int nv_cspmu_init_ops(struct arm_cspmu *cspmu) { struct nv_cspmu_ctx *ctx; @@ -330,20 +419,21 @@ static int nv_cspmu_init_ops(struct arm_cspmu *cspmu) break; } =20 - ctx->name =3D nv_cspmu_format_name(cspmu, match); - ctx->filter_mask =3D match->filter_mask; - ctx->filter_default_val =3D match->filter_default_val; - ctx->event_attr =3D match->event_attr; - ctx->format_attr =3D match->format_attr; + /* Initialize the context with the matched template. */ + memcpy(ctx, &match->template_ctx, sizeof(struct nv_cspmu_ctx)); + ctx->name =3D nv_cspmu_format_name(cspmu, match); =20 cspmu->impl.ctx =3D ctx; =20 /* NVIDIA specific callbacks. */ - impl_ops->set_cc_filter =3D nv_cspmu_set_cc_filter; - impl_ops->set_ev_filter =3D nv_cspmu_set_ev_filter; - impl_ops->get_event_attrs =3D nv_cspmu_get_event_attrs; - impl_ops->get_format_attrs =3D nv_cspmu_get_format_attrs; - impl_ops->get_name =3D nv_cspmu_get_name; + SET_OP(set_cc_filter, impl_ops, match, nv_cspmu_set_cc_filter); + SET_OP(set_ev_filter, impl_ops, match, nv_cspmu_set_ev_filter); + SET_OP(get_event_attrs, impl_ops, match, nv_cspmu_get_event_attrs); + SET_OP(get_format_attrs, impl_ops, match, nv_cspmu_get_format_attrs); + SET_OP(get_name, impl_ops, match, nv_cspmu_get_name); + + if (ctx->init_data) + return ctx->init_data(cspmu); =20 return 0; } --=20 2.50.1