[{"id":3684992,"web_url":"http://patchwork.ozlabs.org/comment/3684992/","msgid":"<4BC7B5BD-9160-4A6A-B18F-E788CF340E8A@nvidia.com>","list_archive_url":null,"date":"2026-05-01T00:27:18","subject":"Re: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","submitter":{"id":88564,"url":"http://patchwork.ozlabs.org/api/people/88564/","name":"Matt Ochs","email":"mochs@nvidia.com"},"content":"> On Apr 29, 2026, at 16:56, Besar Wicaksono <bwicaksono@nvidia.com> wrote:\n> \n> PMCCNTR_EL0 may continue to increment on NVIDIA Olympus CPUs while the\n> PE is in WFI/WFE. That does not necessarily match the CPU_CYCLES event\n> counted by a programmable counter, so using PMCCNTR_EL0 for cycles can\n> give results that differ from the programmable counter path.\n> \n> Extend the existing PMCCNTR avoidance decision from the SMT case to\n> also cover Olympus. Store the result in the common arm_pmu state at\n> registration time, so arm_pmuv3 can keep using a single flag when\n> deciding whether CPU_CYCLES may use PMCCNTR_EL0.\n> \n> Use the cached MIDR from cpu_data to identify Olympus parts and avoid\n> reading MIDR_EL1 in the event path.\n> \n> Signed-off-by: Besar Wicaksono <bwicaksono@nvidia.com>\n\nVerified on NVIDIA Vera (Olympus CPUs) with UEFI SMT disabled. Confirmed\nthat grouped cpu_cycles events show ~1x ratio (both on programmable\ncounters) with the patch vs ~15x inflation without it.\n\nTested-by: Matthew R. Ochs <mochs@nvidia.com>","headers":{"Return-Path":"\n <linux-tegra+bounces-14125-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-tegra@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=e2zCkzJ1;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-tegra+bounces-14125-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"e2zCkzJ1\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.201.17","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6Bh03GWjz1y1d\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 10:27:28 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id D83DA301BCD0\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 00:27:25 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id B0D481DF248;\n\tFri,  1 May 2026 00:27:25 +0000 (UTC)","from CH4PR04CU002.outbound.protection.outlook.com\n (mail-northcentralusazon11013017.outbound.protection.outlook.com\n [40.107.201.17])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 5446940DFC5;\n\tFri,  1 May 2026 00:27:24 +0000 (UTC)","from DS0PR12MB8442.namprd12.prod.outlook.com (2603:10b6:8:125::12)\n by LV8PR12MB9449.namprd12.prod.outlook.com (2603:10b6:408:204::9) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.21; Fri, 1 May\n 2026 00:27:18 +0000","from DS0PR12MB8442.namprd12.prod.outlook.com\n ([fe80::c4df:b439:571:4591]) by DS0PR12MB8442.namprd12.prod.outlook.com\n ([fe80::c4df:b439:571:4591%6]) with mapi id 15.20.9870.020; Fri, 1 May 2026\n 00:27:18 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777595245; cv=fail;\n b=PT+Nb5I2LjMs+/GbQIoZX5btXzAvWnjSBHd5ZUc9Ujh4CAvndabImFwRC3li9AUCUDyINNcRSBJpWB6hoVEerImqo3BJyJ+XnrAOZaY6Q8EfgN9warxQc3CD/TiOWkRg/e4kPK0oqAVfGiOtZAE1nMCGdwfPCc+lJ1ypeCXyVLw=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=vZ97yC/Y0+e9s/jws4HMzHIKfabQr1LgJ/DU2qlKm3dB04r+Lm5Wb2MfyrMh4t+T0SNgPuhmM4Q9PDt+xS2HOjVYl5x14Ntj1suhC1UGK8IxHOnxvEyBw9gEj5w+gq+kwi5zeljzKHhvRoELFQ4znAUgrV9yg45Bq/SIWkIUdI8iQN6aXqNVTvOHKMbMsIW0Denaegao1k7pVv0qjpPeVLFILYaNhfDOpIBcwgL0qExzQtbmej6TTd3ZpDHaKi9BwyrlVeJVfiTqlHM3K+DAt8HNaLpzQjqN66NoI9V0Me+6+CmOGPui+XNL1QLNLCpCsQ1yH4+3PtllKSs8JX/iUA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777595245; c=relaxed/simple;\n\tbh=VmoGKkI7NuJwulbhvTqV0QTHX+4aatQIeLcAJQ/xayA=;\n\th=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:\n\t Content-Type:MIME-Version;\n b=pNqOMyI3TDJaeAJ644+/lX1O4OFYfZljN+k3Fdq3lVQhsb47pIqjKAR9T+ylYDyHzRJcrQZwbm5FwwL/yq8NKHuiwy36Ql26YjO5rg9SaJ/AmHAm+ymxoKqffIx4Y24QXnkeSfh4CTaQtGECXrhfPBw7BpVld/8b+0e5gcMyD6U=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=VmoGKkI7NuJwulbhvTqV0QTHX+4aatQIeLcAJQ/xayA=;\n b=QnATk5JrceLZ+NSQaUNkMeYuMDEjnt6LC2ZaGacetDuRHWw/2BacK5UhUNWwVX8thOlDIg8opgmU+VLTzAO+oaf9uIoVGOOTbTB0/ta34K88J8bQ2SlFI0vc1SOQNZogMPK97qjKALsQ3r8VbX+jeJbJHsiZjpbYVjetyfZCKFiTGqCvmtgE1HrIxOwhTfD5FJFGwYYSm8wUD5XeS75VyzOna4jRFLX/kR0n9d8VSHOwPZMcbECz92e7lDAPFKMZamPO/ewhn1ucztOCtpPkZTtGGCYws1UH0Hf/MZyyERjwjEwcBob1clhe1VQMoo7FOCw3HrUVbUD0v0Jqo6y/vg=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=e2zCkzJ1; arc=fail smtp.client-ip=40.107.201.17","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=VmoGKkI7NuJwulbhvTqV0QTHX+4aatQIeLcAJQ/xayA=;\n b=e2zCkzJ1h4e2sZNiigbtO7FJldd9OUZmziplNY0amdHBUa79kZ1O1WOMsgWmuPHB9dme+CcyByFymKcr9CoRinvCFqYVkQQF1FRL6eh6LP5y8KDuHLdT6HIXi5UWtwMjNQVL+qilp3W/cJK3+LJIIPfpaGrPeOEYfP0BMqAj8gOSBcTOod+3JOCKN2GTZhi/rimbzbiasB8FYDeYqv4/IrxyvpA/GIB/Dxk6v/nsOow2q1qYy1ydN554dN24vfZCGOooLpPMb9Vraaf1o4oLAQuXUDksyjBP2lrumKLuRude0RHqkFPRe0G0TpQHcnLEkM3lPxzdE+aLpkNhZ0WAOg==","From":"Matt Ochs <mochs@nvidia.com>","To":"Besar Wicaksono <bwicaksono@nvidia.com>","CC":"\"will@kernel.org\" <will@kernel.org>, \"mark.rutland@arm.com\"\n\t<mark.rutland@arm.com>, \"james.clark@linaro.org\" <james.clark@linaro.org>,\n\t\"yangyccccc@gmail.com\" <yangyccccc@gmail.com>,\n\t\"linux-arm-kernel@lists.infradead.org\"\n\t<linux-arm-kernel@lists.infradead.org>, \"linux-kernel@vger.kernel.org\"\n\t<linux-kernel@vger.kernel.org>, \"linux-tegra@vger.kernel.org\"\n\t<linux-tegra@vger.kernel.org>, Thierry Reding <treding@nvidia.com>, Jon\n Hunter <jonathanh@nvidia.com>, Vikram Sethi <vsethi@nvidia.com>, Rich Wiley\n\t<rwiley@nvidia.com>, Shanker Donthineni <sdonthineni@nvidia.com>, Nirmoy Das\n\t<nirmoyd@nvidia.com>, Sean Kelley <skelley@nvidia.com>","Subject":"Re: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","Thread-Topic":"[PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","Thread-Index":"AQHc2CMVnUUPaHwN1E6xtk7y25sENLX4UjWA","Date":"Fri, 1 May 2026 00:27:18 +0000","Message-ID":"<4BC7B5BD-9160-4A6A-B18F-E788CF340E8A@nvidia.com>","References":"<20260429215614.1793131-1-bwicaksono@nvidia.com>","In-Reply-To":"<20260429215614.1793131-1-bwicaksono@nvidia.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=e2zCkzJ1;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-tegra+bounces-14125-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"e2zCkzJ1\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.201.17","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"DS0PR12MB8442:EE_|LV8PR12MB9449:EE_","x-ms-office365-filtering-correlation-id":"e632dc8b-7cbd-4f51-3956-08dea7186704","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"\n BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|56012099003|22082099003|38070700021;","x-microsoft-antispam-message-info":"\n XoXqy7vFfklF6N+kk0TmMjjsKEMpARhpAiD/C6pu/GOLoKNqQeo7BVWfyg6BgcaAsoEDaoYEqQ/IAmyiCKugusBXT72KPFO+NJRghZnYjc5K2cCEZmml3ry+KNmu1jToGOcOseW9/m2QUmf8LwxvmSRCdjQxdMCvXAifDQcLHfj5unSSIHElre1ooqKOIQMNzna56EvqbZ4qXLYyVRfFNZG0JdL3Ewn1dZ3Jd7gdrRam5fgjBjC+gGw2mWT8w4Tpv9u3vFX4IgGkbfNJQLhPYiNkBoeqGLzrBHZaWNRNjHe8Ya1lVX3tLBkVNvg8tr4XbXzibKxyz9mPnm0Hp33eFk3S4MfrYia8ZQhQPjn6/N9b0JTccyaxvlEmpby4edL5eYAl3otWnOl+rPSwdUTxPjm5QPEJBDywVN8CCc02uGzeCIbgFRDhUSP6f6I8L4GhLgHjrHMi0qPj8BUBzOX2r1BR1csmrE2qS0KQF7AEA9uC6MUfDhuiYfitu5fQybrmRYVwmoeILC4PwcT0b7tXD7YYt1sULWTgtv5Phq3hnNfsk7/g6Idtz1Hn8sKBZr5zUvX27xIj2ifJseIMl7PHP+B3wInrkwY9rUtfkHlZfrtYpNfmKD6TJB3SigAQD+ksGec2K8SYUdjeNoCgPillJU6NWH8NV3UahKC/bSQcV5aVVU4uCND4wtvhuvdMdo7OagA8aDQfs8Avjp1EdKr0Ro//TcwpCjyjzr2N7ogt/KBOQswo9It8g2HhE+wFFaBY","x-forefront-antispam-report":"\n CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR12MB8442.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"\n H91dXT258IJhL/211DM0Hvq5NRz3ciQTvYYkU9SeWPmrdQuFU38pIWIWqb65lC6B/P4bjQmd5Wj66ZTsnrNSN3YPRMIxJCEGeApfEko6TXIi9jBE4AAOCJf8ScPpmToy5bX/IExdXBpF6tB1bB+mCwnrLdWf8QRW3bpcyRolRKFZuia1Z4xrfMzIWNDgpGc4KhP4sL6uqaPDBk2/Y01D7ZokJ6Y3+wBoP3DK+CTrQBd5HpdqXhycIBEL/bCsrqQT8ciRAAe9M+m5pSxao57uvmCDF6hTGnaWXkDdIQkMnZ0oaEK7FUrel7cysi6T6KyKiJw0+k4P1I18f3SIvlC8tMkjAgyOjI30FYF7Jd/Mkl7KFfYZic3i5Bhs4pSiwLmTVwS13+b/JOcCabi7MeI6Js1lTtI1wz9ijgJhwIhh55UdgNrvprhIrhQUg9lCRRfvBEoyRjaBQfTtv/9XQGuzSYwrVe/sCyx0s5pkdyEOrWDHJUEufocrZwIwRAssIJ40ZlPn5JbMYqbC+TXGTbVYpfZxddPjaFF8NuYOavhMKfFUq6FdzDHIT2BtSPEFCx08kGeu0Th7CO8KI/DjLYFGeGhH8FcB1DlOlIJI35g6af8XsdASqZTAA4PzcVvualay6C4xDr6vcOsJ+82no1mttNR1Ao+LORSwhcrhUOSylq9EDXkS5RvCuepUjIqftzcXQU3PjpKUp/PAJwbxUesy8KXaYvbBJxszl5Ah6E+zgkJQdfpwMyNUH3ebfb+cs6NgSbcZZJD/TUiNz8mQ3d90rf9mdHuO7mger5CTkxM3DV9voQvCVeyPPDbKluaGB8KjKf7EVILim8oZJ+XOPcCKM0ktombnIaEeEb60hBcx499zm+kLarw9+1A4bkDqaIHw5eMRVyeXIGH6FYY23uWkzTHmZgUifftfyYkg4ykPcsCGPvGVvs7Y2M+OFtkDnq0UMDR5fVUZbfyjknCdttVx6w1gRrT6AK4IJTq1h4XPgVzaKwIql+Wnc+NVE7IAfMdCZBFvVWpHIXTNI0ygrmK55YaSDJxQUKSCYlD2NbrKYTFtkAY7kfSJTyWI1wTrifopbe7ZvT7MjDTuwDe9KhQRBZkwYiXv2OBsvE6/StySnuKSdqPpQIeUCSYQreG1L+q749+Hdwr1w8dbLr6TmJ3xIAN9zPyi7UmWYnqAmFvPHJQaY3fc3jw8JtDt4WafBA6tAz7/4J8r2MTPsquMqTPfNjzJoTEc+jZNo8ZyxICQBRHzsj/zmUP1vxbAPWYVkbMcmpnqSVOfYQOQwD5dgHSAh01OOuoE/PcAlccE2NFF8c3qFTbuHzwLy2Qp0kwSaLf0l8UvA7doFuiaw8nO6O3OC6dR5175ocpi23Clf3kWMt+Mf6vYtNtstHtNhBHDwh0pwF/GJniVyuJWuWc/rYuPoVlks/nuhHp7t00+4kUAweSrZsSdu8wHUH/OBTjNEqPlAjb8vqMRyk8wFOJfRH0Qs3+zNLzoS7vaQJMi7RaDGYoRPnbfmEltPuO5Ug8jm2ssk3WCS49bWcgexdV6q84uNuIPDi9SlsHkQ7sZi3LCnKLpdLixSbjF+BCIvYJHRPV96nVqkoMf4Fq92dg4RKscc6nIpio22UExWmfvqTuvHfcSDxvb1eQsXBoDD7PxRiK4KE9n4XqC4w8id+zP5eUglet2uCu6x2O0HejPqpo7AGBiYhi0uooliYjVgDGNTNSwzQlBn6M8ZAr57SH2SoxQRg==","Content-Type":"text/plain; charset=\"us-ascii\"","Content-ID":"<5C3220BB1279BE4EA63CEBA5172FFCD5@namprd12.prod.outlook.com>","Content-Transfer-Encoding":"quoted-printable","Precedence":"bulk","X-Mailing-List":"linux-tegra@vger.kernel.org","List-Id":"<linux-tegra.vger.kernel.org>","List-Subscribe":"<mailto:linux-tegra+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-tegra+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"DS0PR12MB8442.namprd12.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n e632dc8b-7cbd-4f51-3956-08dea7186704","X-MS-Exchange-CrossTenant-originalarrivaltime":"01 May 2026 00:27:18.2270\n (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"43083d15-7273-40c1-b7db-39efd9ccc17a","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n M3SGhK6FDB1HseCQeKlHjgDsm/2L/JjqMDGNW3AbVzUpXLjV6U7uF+ZqBAGDAoxDQEak/43eAHmFy+5CUzikjw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"LV8PR12MB9449"}},{"id":3685135,"web_url":"http://patchwork.ozlabs.org/comment/3685135/","msgid":"<0fc8ae87-a941-4dfe-9c14-c851c6a29514@linaro.org>","list_archive_url":null,"date":"2026-05-01T14:01:42","subject":"Re: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","submitter":{"id":88902,"url":"http://patchwork.ozlabs.org/api/people/88902/","name":"James Clark","email":"james.clark@linaro.org"},"content":"On 29/04/2026 10:56 pm, Besar Wicaksono wrote:\n> PMCCNTR_EL0 may continue to increment on NVIDIA Olympus CPUs while the\n> PE is in WFI/WFE. That does not necessarily match the CPU_CYCLES event\n> counted by a programmable counter, so using PMCCNTR_EL0 for cycles can\n> give results that differ from the programmable counter path.\n> \n> Extend the existing PMCCNTR avoidance decision from the SMT case to\n> also cover Olympus. Store the result in the common arm_pmu state at\n> registration time, so arm_pmuv3 can keep using a single flag when\n> deciding whether CPU_CYCLES may use PMCCNTR_EL0.\n> \n> Use the cached MIDR from cpu_data to identify Olympus parts and avoid\n> reading MIDR_EL1 in the event path.\n> \n> Signed-off-by: Besar Wicaksono <bwicaksono@nvidia.com>\n> ---\n> \n> Changes from v1:\n>    * add CONFIG_ARM64 check to fix build error found by kernel test robot\n>    * add explicit include of <asm/cputype.h>\n> v1: https://lore.kernel.org/linux-arm-kernel/20260406232034.2566133-1-bwicaksono@nvidia.com/\n> \n> Changes from v2:\n>    * Move the Olympus PMCCNTR avoidance check from arm_pmuv3.c to the\n>      common arm_pmu registration path.\n>    * Replace the PMUv3-only has_smt flag with avoid_pmccntr, covering both\n>      the existing SMT restriction and the Olympus MIDR restriction.\n>    * Use the cached per-CPU MIDR from cpu_data instead of calling\n>      is_midr_in_range_list() from armv8pmu_can_use_pmccntr().\n>    * Add the required asm/cpu.h include for cpu_data.\n>    * Drop the use_pmccntr override patch from this revision.\n> v2: https://lore.kernel.org/linux-arm-kernel/20260421203856.3539186-1-bwicaksono@nvidia.com/#t\n> \n> ---\n>   drivers/perf/arm_pmu.c       | 78 +++++++++++++++++++++++++++++++++---\n>   drivers/perf/arm_pmuv3.c     |  8 +---\n>   include/linux/perf/arm_pmu.h |  2 +-\n>   3 files changed, 75 insertions(+), 13 deletions(-)\n> \n> diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c\n> index 939bcbd433aa..7df185ee7b74 100644\n> --- a/drivers/perf/arm_pmu.c\n> +++ b/drivers/perf/arm_pmu.c\n> @@ -24,6 +24,8 @@\n>   #include <linux/irq.h>\n>   #include <linux/irqdesc.h>\n>   \n> +#include <asm/cpu.h>\n> +#include <asm/cputype.h>\n>   #include <asm/irq_regs.h>\n>   \n>   static int armpmu_count_irq_users(const struct cpumask *affinity,\n> @@ -920,6 +922,76 @@ void armpmu_free(struct arm_pmu *pmu)\n>   \tkfree(pmu);\n>   }\n>   \n> +#ifdef CONFIG_ARM64\n> +/*\n> + * List of CPUs that should avoid using PMCCNTR_EL0.\n> + */\n> +static struct midr_range armpmu_avoid_pmccntr_cpus[] = {\n> +\t/*\n> +\t * The PMCCNTR_EL0 in Olympus CPU may still increment while in WFI/WFE state.\n> +\t * This is an implementation specific behavior and not an erratum.\n> +\t *\n> +\t * From ARM DDI0487 D14.4:\n> +\t *   It is IMPLEMENTATION SPECIFIC whether CPU_CYCLES and PMCCNTR count\n> +\t *   when the PE is in WFI or WFE state, even if the clocks are not stopped.\n> +\t *\n> +\t * From ARM DDI0487 D24.5.2:\n> +\t *   All counters are subject to any changes in clock frequency, including\n> +\t *   clock stopping caused by the WFI and WFE instructions.\n> +\t *   This means that it is CONSTRAINED UNPREDICTABLE whether or not\n> +\t *   PMCCNTR_EL0 continues to increment when clocks are stopped by WFI and\n> +\t *   WFE instructions.\n> +\t */\n> +\tMIDR_ALL_VERSIONS(MIDR_NVIDIA_OLYMPUS),\n> +\t{}\n> +};\n> +\n> +static bool armpmu_is_in_avoid_pmccntr_cpus(int cpu)\n> +{\n> +\tstruct midr_range const *r = armpmu_avoid_pmccntr_cpus;\n> +\tu32 midr = (u32)per_cpu(cpu_data, cpu).reg_midr;\n\nHi Besar,\n\nThis is still fragile to the thing I mentioned on V2 about some of the \nCPUs not being online, then cpu_data isn't initialized for those CPUs.\n\nSashiko suggests to use cpumask_any_and(&pmu->supported_cpus, \ncpu_online_mask), and currently the Arm PMUs do require at least one CPU \nonline so it's probably fine. Although it could be fragile if we added \ndeferred probing in the future.\n\nThe other alternative is to put this in __armv8pmu_probe_pmu(), although \nthen you end up with both arm_pmuv3 and arm_pmu initializing \ncpu_pmu->has_smt, but I'm sure there is a way to make it fit somehow.\n\nJames\n\n> +\n> +\twhile (r->model) {\n> +\t\tif (midr_is_cpu_model_range(midr, r->model, r->rv_min, r->rv_max))\n> +\t\t\treturn true;\n> +\t\tr++;\n> +\t}\n> +\n> +\treturn false;\n> +}\n> +#else\n> +static bool armpmu_is_in_avoid_pmccntr_cpus(int cpu)\n> +{\n> +\treturn false;\n> +}\n> +#endif\n> +\n> +static bool armpmu_avoid_pmccntr(struct arm_pmu *pmu)\n> +{\n> +\tint cpu = cpumask_first(&pmu->supported_cpus);\n> +\n> +\t/*\n> +\t * By this stage we know our supported CPUs on either DT/ACPI platforms,\n> +\t * detect the SMT implementation.\n> +\t * On SMT CPUs, the PMCCNTR_EL0 increments from the processor clock rather\n> +\t * than the PE clock (ARM DDI0487 L.b D13.1.3) which means it'll continue\n> +\t * counting on a WFI PE if one of its SMT sibling is not idle on a\n> +\t * multi-threaded implementation. So don't use it on SMT cores.\n> +\t */\n> +\tif (topology_core_has_smt(cpu))\n> +\t\treturn true;\n> +\n> +\t/*\n> +\t * On some CPUs, PMCCNTR_EL0 does not match the behavior of CPU_CYCLES\n> +\t * programmable counter, so avoid routing cycles through PMCCNTR_EL0 to\n> +\t * prevent inconsistency in the results.\n> +\t */\n> +\tif (armpmu_is_in_avoid_pmccntr_cpus(cpu))\n> +\t\treturn true;\n> +\n> +\treturn false;\n> +}\n> +\n>   int armpmu_register(struct arm_pmu *pmu)\n>   {\n>   \tint ret;\n> @@ -928,11 +1000,7 @@ int armpmu_register(struct arm_pmu *pmu)\n>   \tif (ret)\n>   \t\treturn ret;\n>   \n> -\t/*\n> -\t * By this stage we know our supported CPUs on either DT/ACPI platforms,\n> -\t * detect the SMT implementation.\n> -\t */\n> -\tpmu->has_smt = topology_core_has_smt(cpumask_first(&pmu->supported_cpus));\n> +\tpmu->avoid_pmccntr = armpmu_avoid_pmccntr(pmu);\n>   \n>   \tif (!pmu->set_event_filter)\n>   \t\tpmu->pmu.capabilities |= PERF_PMU_CAP_NO_EXCLUDE;\n> diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c\n> index 8014ff766cff..60f159a51992 100644\n> --- a/drivers/perf/arm_pmuv3.c\n> +++ b/drivers/perf/arm_pmuv3.c\n> @@ -1002,13 +1002,7 @@ static bool armv8pmu_can_use_pmccntr(struct pmu_hw_events *cpuc,\n>   \tif (has_branch_stack(event))\n>   \t\treturn false;\n>   \n> -\t/*\n> -\t * The PMCCNTR_EL0 increments from the processor clock rather than\n> -\t * the PE clock (ARM DDI0487 L.b D13.1.3) which means it'll continue\n> -\t * counting on a WFI PE if one of its SMT sibling is not idle on a\n> -\t * multi-threaded implementation. So don't use it on SMT cores.\n> -\t */\n> -\tif (cpu_pmu->has_smt)\n> +\tif (cpu_pmu->avoid_pmccntr)\n>   \t\treturn false;\n>   \n>   \treturn true;\n> diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h\n> index 52b37f7bdbf9..02d2c7f45b52 100644\n> --- a/include/linux/perf/arm_pmu.h\n> +++ b/include/linux/perf/arm_pmu.h\n> @@ -119,7 +119,7 @@ struct arm_pmu {\n>   \n>   \t/* PMUv3 only */\n>   \tint\t\tpmuver;\n> -\tbool\t\thas_smt;\n> +\tbool\t\tavoid_pmccntr;\n>   \tu64\t\treg_pmmir;\n>   \tu64\t\treg_brbidr;\n>   #define ARMV8_PMUV3_MAX_COMMON_EVENTS\t\t0x40","headers":{"Return-Path":"\n <linux-tegra+bounces-14131-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-tegra@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=kHvDN6LE;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-tegra+bounces-14131-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org\n header.b=\"kHvDN6LE\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.221.46","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linaro.org","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linaro.org"],"Received":["from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6Xlp61Nrz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 00:01:57 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id 6B19930078A9\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 14:01:49 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 4408238945D;\n\tFri,  1 May 2026 14:01:48 +0000 (UTC)","from mail-wr1-f46.google.com (mail-wr1-f46.google.com\n [209.85.221.46])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E34D1F5437\n\tfor <linux-tegra@vger.kernel.org>; Fri,  1 May 2026 14:01:46 +0000 (UTC)","by mail-wr1-f46.google.com with SMTP id\n ffacd0b85a97d-43eb012ac4fso1105119f8f.0\n        for <linux-tegra@vger.kernel.org>;\n Fri, 01 May 2026 07:01:46 -0700 (PDT)","from [192.168.1.3] ([185.48.77.170])\n        by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-44a8ef50e59sm5185538f8f.10.2026.05.01.07.01.42\n        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n        Fri, 01 May 2026 07:01:43 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777644108; cv=none;\n b=DRksEhTt40WHxN3CMuDbLdsOY7G0GRjCqeVgLKBPcJ79Z1kvzAyrwLs4LoAGu8ir2VtxyWxViKyAjKnwF9nb0PRofpOQqdNmhFio3YaaC4HJ8e+A3Y/TRJa9MGphZL0tQiRT0laeZol0vDj8VCYD31A9Mof8OEtEp6iGEKcc3i8=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777644108; c=relaxed/simple;\n\tbh=PRNsPyl09oUyyWjLi2xKEknc/I1AzkFHfQwdV4WU5rw=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=a3irrBbEtRd12XNVuFz+o43lH2ouXtlxSDI8gf3POpu4uPsHZ4uztOCRalLpSmwlXLXo1/2RuSjr72vPnV92G6qtShWac6Zuhruj+i/L9RubPYHzVYF36yo9sfFETOE9XaLr5mZd8EhFjacMDLZ9uGkml41vG8SSb2j5gZyuqog=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linaro.org;\n spf=pass smtp.mailfrom=linaro.org;\n dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org\n header.b=kHvDN6LE; arc=none smtp.client-ip=209.85.221.46","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=linaro.org; s=google; t=1777644105; x=1778248905;\n darn=vger.kernel.org;\n        h=content-transfer-encoding:in-reply-to:from:content-language\n         :references:cc:to:subject:user-agent:mime-version:date:message-id\n         :from:to:cc:subject:date:message-id:reply-to;\n        bh=HG7O0lHSRscMsCiZTAkBaQVsH7ojMjtgb6J5wme+v7Y=;\n        b=kHvDN6LEd+xPjBAQyeGGBXbov0IdsESEueOqTU5az684g2r7iuvQAswZWGH0iSMIqe\n         j1bTIRu4vGVsyNEUsHuWhuqY9h0aF1uPbO/zXBxVZuPVC+56yr7hIKQrvdoRoMrzFmpq\n         wmUPWWkpRBteMSqJSUVKSdBrSlKREnf7SZu67deZX30udn0MBNcgeTw+WUMyH+EkIM6C\n         zdCfI1uWZhZLNczUDmY1kxxqLr+ls/3DIijMuxxHzWv1BS9oztdtZ1wmTNhTvJvTX2/L\n         WyXa7WSj/slG2+PLyJ/QwzDF35ElqSijEcKTeLmSbrxXrxPfVJuhYoZLIIDQYhlNwRC4\n         Y50Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1777644105; x=1778248905;\n        h=content-transfer-encoding:in-reply-to:from:content-language\n         :references:cc:to:subject:user-agent:mime-version:date:message-id\n         :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n         :reply-to;\n        bh=HG7O0lHSRscMsCiZTAkBaQVsH7ojMjtgb6J5wme+v7Y=;\n        b=pi776PqpCiu8W1qc03RE2P6I8+fJg83eztFxmgC7LLjGguIebuJIa6vWbvJ8leOfOx\n         r6SQvIoSAJDlNl9Gn32/1Oq8uOBraUlICtumO/kuQoJGFR27znLk2WvwfwzrkzSrYNJj\n         8Mb4hnBZG4HXT912mm/vEH+yE0wnTl23gpFPSnHHyUNMmaGjCITqhqUCNN/2SxDjHwLv\n         XhruXsLX3EU0c3KEsvge81oeXk3OK09DOOhl0yLyCDf11fDFZiR52kPQyW5hvxoWpdw2\n         rhhfol78Sl6d9wZuXLBiORu5qML751p2oCfq4rqsMBm79gt44f8KUE3hESg165q0l87G\n         gFdQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+IMLDSp/lCVWkRQIgCYLv3RMKR/XyeUJX0a3ZEKFqqL4tN0goPVs0LRAkSmDpn4oP8sghGSYSWtezLEQ==@vger.kernel.org","X-Gm-Message-State":"AOJu0YxdJSHSexJMH8Bi6zNUB0sG0i822PvzgLMs+cLJOcmIzZx2W648\n\tggGbhksjmMHHdLaDHFNfdxnfPjmCr5HGW4wYr2Y0jfPvVh3Aun0RgpynClwl9dRzYDc=","X-Gm-Gg":"AeBDiespZvU6ZpRYSLi4i9ZkiMEFW1b3/GdjHGiyMTbaIeUEuvBVZlNhAIWR1ABW0tK\n\trx9qmjc+hBh1Jr2Mvl10AxtORET9pfO7fj++zbeISWExYPIub5UKA05GueIg8s0GYFay3RnK3vk\n\tdMhR1O29XsFMk3graswb0yKGfa1WbqcsKv/gy7U3rPyAsbn4V5AOcLPzz1j62U0qTgLqeLo5NoE\n\tgppm7c8hrzHvyDsZ15ykBvJIY3CHO1FxW1xNeNiJPgZFEdtUIXDvVIQpZt22yO4X8cJNrOar+7b\n\tGbkP/xCkaAdoEqLLX5+y+YDWExqy2/kF/sV07mgwPsu3+2JUinWS24sfakkmKDeXWXjc7gf8IQL\n\tqfnxY2ZfF/tK67sAs+Jg6D4aZwTsISmT+ORn0/1QDA+Rbi8rGvjgaN6Wr5RjZx5i/fdO8+LIA/4\n\tuDsBa1r3Mi5tHONQ6HLk2AUVKJmA1siTeR7Y1yPAIjQlS+KmMK+A==","X-Received":"by 2002:a5d:5c89:0:b0:43c:f583:126a with SMTP id\n ffacd0b85a97d-4493d412141mr12783250f8f.14.1777644104559;\n        Fri, 01 May 2026 07:01:44 -0700 (PDT)","Message-ID":"<0fc8ae87-a941-4dfe-9c14-c851c6a29514@linaro.org>","Date":"Fri, 1 May 2026 15:01:42 +0100","Precedence":"bulk","X-Mailing-List":"linux-tegra@vger.kernel.org","List-Id":"<linux-tegra.vger.kernel.org>","List-Subscribe":"<mailto:linux-tegra+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-tegra+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","To":"Besar Wicaksono <bwicaksono@nvidia.com>","Cc":"linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org,\n linux-tegra@vger.kernel.org, treding@nvidia.com, jonathanh@nvidia.com,\n vsethi@nvidia.com, rwiley@nvidia.com, sdonthineni@nvidia.com,\n mochs@nvidia.com, nirmoyd@nvidia.com, skelley@nvidia.com, will@kernel.org,\n mark.rutland@arm.com, yangyccccc@gmail.com","References":"<20260429215614.1793131-1-bwicaksono@nvidia.com>","Content-Language":"en-US","From":"James Clark <james.clark@linaro.org>","In-Reply-To":"<20260429215614.1793131-1-bwicaksono@nvidia.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit"}},{"id":3685229,"web_url":"http://patchwork.ozlabs.org/comment/3685229/","msgid":"<SN7PR12MB72261235C2392E7F5409E3EDA0322@SN7PR12MB7226.namprd12.prod.outlook.com>","list_archive_url":null,"date":"2026-05-01T21:25:30","subject":"RE: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","submitter":{"id":83903,"url":"http://patchwork.ozlabs.org/api/people/83903/","name":"Besar Wicaksono","email":"bwicaksono@nvidia.com"},"content":"> -----Original Message-----\n> From: James Clark <james.clark@linaro.org>\n> Sent: Friday, May 1, 2026 9:02 AM\n> To: Besar Wicaksono <bwicaksono@nvidia.com>\n> Cc: linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; linux-\n> tegra@vger.kernel.org; Thierry Reding <treding@nvidia.com>; Jon Hunter\n> <jonathanh@nvidia.com>; Vikram Sethi <vsethi@nvidia.com>; Rich Wiley\n> <rwiley@nvidia.com>; Shanker Donthineni <sdonthineni@nvidia.com>; Matt\n> Ochs <mochs@nvidia.com>; Nirmoy Das <nirmoyd@nvidia.com>; Sean Kelley\n> <skelley@nvidia.com>; will@kernel.org; mark.rutland@arm.com;\n> yangyccccc@gmail.com\n> Subject: Re: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA\n> Olympus\n> \n> External email: Use caution opening links or attachments\n> \n> \n> On 29/04/2026 10:56 pm, Besar Wicaksono wrote:\n> > PMCCNTR_EL0 may continue to increment on NVIDIA Olympus CPUs while\n> the\n> > PE is in WFI/WFE. That does not necessarily match the CPU_CYCLES event\n> > counted by a programmable counter, so using PMCCNTR_EL0 for cycles can\n> > give results that differ from the programmable counter path.\n> >\n> > Extend the existing PMCCNTR avoidance decision from the SMT case to\n> > also cover Olympus. Store the result in the common arm_pmu state at\n> > registration time, so arm_pmuv3 can keep using a single flag when\n> > deciding whether CPU_CYCLES may use PMCCNTR_EL0.\n> >\n> > Use the cached MIDR from cpu_data to identify Olympus parts and avoid\n> > reading MIDR_EL1 in the event path.\n> >\n> > Signed-off-by: Besar Wicaksono <bwicaksono@nvidia.com>\n> > ---\n> >\n> > Changes from v1:\n> >    * add CONFIG_ARM64 check to fix build error found by kernel test robot\n> >    * add explicit include of <asm/cputype.h>\n> > v1: https://lore.kernel.org/linux-arm-kernel/20260406232034.2566133-1-\n> bwicaksono@nvidia.com/\n> >\n> > Changes from v2:\n> >    * Move the Olympus PMCCNTR avoidance check from arm_pmuv3.c to the\n> >      common arm_pmu registration path.\n> >    * Replace the PMUv3-only has_smt flag with avoid_pmccntr, covering both\n> >      the existing SMT restriction and the Olympus MIDR restriction.\n> >    * Use the cached per-CPU MIDR from cpu_data instead of calling\n> >      is_midr_in_range_list() from armv8pmu_can_use_pmccntr().\n> >    * Add the required asm/cpu.h include for cpu_data.\n> >    * Drop the use_pmccntr override patch from this revision.\n> > v2: https://lore.kernel.org/linux-arm-kernel/20260421203856.3539186-1-\n> bwicaksono@nvidia.com/#t\n> >\n> > ---\n> >   drivers/perf/arm_pmu.c       | 78\n> +++++++++++++++++++++++++++++++++---\n> >   drivers/perf/arm_pmuv3.c     |  8 +---\n> >   include/linux/perf/arm_pmu.h |  2 +-\n> >   3 files changed, 75 insertions(+), 13 deletions(-)\n> >\n> > diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c\n> > index 939bcbd433aa..7df185ee7b74 100644\n> > --- a/drivers/perf/arm_pmu.c\n> > +++ b/drivers/perf/arm_pmu.c\n> > @@ -24,6 +24,8 @@\n> >   #include <linux/irq.h>\n> >   #include <linux/irqdesc.h>\n> >\n> > +#include <asm/cpu.h>\n> > +#include <asm/cputype.h>\n> >   #include <asm/irq_regs.h>\n> >\n> >   static int armpmu_count_irq_users(const struct cpumask *affinity,\n> > @@ -920,6 +922,76 @@ void armpmu_free(struct arm_pmu *pmu)\n> >       kfree(pmu);\n> >   }\n> >\n> > +#ifdef CONFIG_ARM64\n> > +/*\n> > + * List of CPUs that should avoid using PMCCNTR_EL0.\n> > + */\n> > +static struct midr_range armpmu_avoid_pmccntr_cpus[] = {\n> > +     /*\n> > +      * The PMCCNTR_EL0 in Olympus CPU may still increment while in\n> WFI/WFE state.\n> > +      * This is an implementation specific behavior and not an erratum.\n> > +      *\n> > +      * From ARM DDI0487 D14.4:\n> > +      *   It is IMPLEMENTATION SPECIFIC whether CPU_CYCLES and PMCCNTR\n> count\n> > +      *   when the PE is in WFI or WFE state, even if the clocks are not stopped.\n> > +      *\n> > +      * From ARM DDI0487 D24.5.2:\n> > +      *   All counters are subject to any changes in clock frequency, including\n> > +      *   clock stopping caused by the WFI and WFE instructions.\n> > +      *   This means that it is CONSTRAINED UNPREDICTABLE whether or not\n> > +      *   PMCCNTR_EL0 continues to increment when clocks are stopped by\n> WFI and\n> > +      *   WFE instructions.\n> > +      */\n> > +     MIDR_ALL_VERSIONS(MIDR_NVIDIA_OLYMPUS),\n> > +     {}\n> > +};\n> > +\n> > +static bool armpmu_is_in_avoid_pmccntr_cpus(int cpu)\n> > +{\n> > +     struct midr_range const *r = armpmu_avoid_pmccntr_cpus;\n> > +     u32 midr = (u32)per_cpu(cpu_data, cpu).reg_midr;\n> \n> Hi Besar,\n> \n> This is still fragile to the thing I mentioned on V2 about some of the\n> CPUs not being online, then cpu_data isn't initialized for those CPUs.\n> \n> Sashiko suggests to use cpumask_any_and(&pmu->supported_cpus,\n> cpu_online_mask), and currently the Arm PMUs do require at least one CPU\n> online so it's probably fine. Although it could be fragile if we added\n> deferred probing in the future.\n> \n> The other alternative is to put this in __armv8pmu_probe_pmu(), although\n> then you end up with both arm_pmuv3 and arm_pmu initializing\n> cpu_pmu->has_smt, but I'm sure there is a way to make it fit somehow.\n> \n\nThanks for the pointers, James and Sashiko. I will try this alternative approach\nand add the check on __armv8pmu_probe_pmu(). I would still rename\nhas_smt to avoid_pmccntr and keep the SMT check on arm_pmu.c.\n\nRegards,\nBesar","headers":{"Return-Path":"\n <linux-tegra+bounces-14142-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-tegra@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=pGBDoafc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-tegra+bounces-14142-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"pGBDoafc\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.93.198.38","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"Received":["from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6kbl58qVz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 07:25:39 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id DB78030060AD\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 21:25:36 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0C68336CDFC;\n\tFri,  1 May 2026 21:25:36 +0000 (UTC)","from CY7PR03CU001.outbound.protection.outlook.com\n (mail-westcentralusazon11010038.outbound.protection.outlook.com\n [40.93.198.38])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 6094334A3A5;\n\tFri,  1 May 2026 21:25:34 +0000 (UTC)","from SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18)\n by SAVPR12MB999119.namprd12.prod.outlook.com (2603:10b6:806:4e9::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.23; Fri, 1 May\n 2026 21:25:31 +0000","from SN7PR12MB7226.namprd12.prod.outlook.com\n ([fe80::c07d:130a:7def:6807]) by SN7PR12MB7226.namprd12.prod.outlook.com\n ([fe80::c07d:130a:7def:6807%5]) with mapi id 15.20.9870.020; Fri, 1 May 2026\n 21:25:30 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777670735; cv=fail;\n b=q+Uq1SouZyGFD4ep4o13clnwx09VrFX9KFnLeM2T0RProGYKbc0nUWtOgsX2E9yKc4QlAWP24SwrXi5+/LKoqREx5evEowO/4lf9x4pDzcedddoYbrV1BSxHisPMvkgT0C0D4GjpbC0fv6KUdw5nq117ECDDhGvF7bVJmnLWVHg=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=DYFHFtwA/qm7lQPV74W1gdDTUdLe0XaOGHi0hvJA7t0QZq0jbgAJZSJk2BPpb2kuwJkprJhzpZePP+oqoPLP+DitzM2FXps3i8mbpqw46bxA6ntFOp5WqpOplEFMPHnjWe8rwKp6amH1WpwFqs/Yt+7aK7rqFAwEPe7jkzAzY0W0F7qo35IZYx3j7LbS/gCtORW6d3q20ZUW2SEZAiNplB1UpjK+yshxkPTF+Vq1JdpRAwinOxKK7D8KshsXbyJ1ZcV98zWZ1EY/pTCY7hmPtibipq0MJg4FM//vVZ2I5LaHV9a1G4K4aLY548oj6hJxDMFOmJIDa2vE356pHQQRZA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777670735; c=relaxed/simple;\n\tbh=XPPdzYrDHARSrUpXRsOpa9tswVATFiTPbz/rpHuvZ/k=;\n\th=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:\n\t Content-Type:MIME-Version;\n b=t1AymZG5ewDwHO5fFigv5tSnt4vC3wcON3qIZJxfbpSbHi836AlGAWC2lBCV+6Tf4VFgv8N3wIE1ElrfTGQl8ucXWreoNThBZ4PoaYvEP9zGecQrf8cE6imY1TB7Aeli9Hc8xjPL8hXbt1dLLM8MKZHHiM9nhOJFKFlH8TnbVi0=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=XPPdzYrDHARSrUpXRsOpa9tswVATFiTPbz/rpHuvZ/k=;\n b=EqYlPAl6l4pCAHhWSL3rQgCKDJpVJLZRI8cEDkb0z07HqySy6kog+qfQOG5BZA60HFhnFHIpwfZMJnzjT7ryJzFbqRGGsZpL1Cx1qgVxZo9CgXpho0gvIV2D/uzpihf77t6F4E2gOgVOtieW05AQ6JRdbwPOaB5oapw8rE1G3CNbv+ltczsu5DLMjLQry9GujMyGe+5agN6qDgOfBCFG9gz1sLECRuZWU+eoYIlCtaZ/1ZQUfNheKvYBPPKbXVTH3nCJudpLSikJuVnPCVp/RmoAusYHGg246gGcUWgxJjyNUO2YjpdyO+291768fLQXrCjfaUSpf+Zw3xFKJ+Ei6A=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=pGBDoafc; arc=fail smtp.client-ip=40.93.198.38","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=XPPdzYrDHARSrUpXRsOpa9tswVATFiTPbz/rpHuvZ/k=;\n b=pGBDoafcY5l7j6EH2H6/nh96dQGbKhGoqGKftytbDyXTxvUHoOe4tApVOG3Nas3eF1vBwW2ykGjhmHNb90QMHD3qY6I/YbcdAreigqdmHK1d3HI0+UsdhorjUySQyWpbVhyetAaafr4ZeRqd/5+F4AS19/peHEEp6Sbq5y4Fdp8yVzB1QwuRD3MxH5bUwHpXnkl7oqJGmr/v5fAlETfedZ7je6f7/q5iP98lZRqVRO3N64v042O/2TthLkwXAVpI9UsERBMJpKbOTgPV/DPKa52gJFv7EtezLJnJ4m+FO/F9CpkfxFpiGiNB8Y2nLYHAU7O/aF+XEB2/EoHhqz7EQA==","From":"Besar Wicaksono <bwicaksono@nvidia.com>","To":"James Clark <james.clark@linaro.org>","CC":"\"linux-arm-kernel@lists.infradead.org\"\n\t<linux-arm-kernel@lists.infradead.org>, \"linux-kernel@vger.kernel.org\"\n\t<linux-kernel@vger.kernel.org>, \"linux-tegra@vger.kernel.org\"\n\t<linux-tegra@vger.kernel.org>, Thierry Reding <treding@nvidia.com>, Jon\n Hunter <jonathanh@nvidia.com>, Vikram Sethi <vsethi@nvidia.com>, Rich Wiley\n\t<rwiley@nvidia.com>, Shanker Donthineni <sdonthineni@nvidia.com>, Matt Ochs\n\t<mochs@nvidia.com>, Nirmoy Das <nirmoyd@nvidia.com>, Sean Kelley\n\t<skelley@nvidia.com>, \"will@kernel.org\" <will@kernel.org>,\n\t\"mark.rutland@arm.com\" <mark.rutland@arm.com>, \"yangyccccc@gmail.com\"\n\t<yangyccccc@gmail.com>","Subject":"RE: [PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","Thread-Topic":"[PATCH v3] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","Thread-Index":"AQHc2CMVu4PI/mXBzk+wq1FYtXYWH7X5Nc0AgAB71QA=","Date":"Fri, 1 May 2026 21:25:30 +0000","Message-ID":"\n <SN7PR12MB72261235C2392E7F5409E3EDA0322@SN7PR12MB7226.namprd12.prod.outlook.com>","References":"<20260429215614.1793131-1-bwicaksono@nvidia.com>\n <0fc8ae87-a941-4dfe-9c14-c851c6a29514@linaro.org>","In-Reply-To":"<0fc8ae87-a941-4dfe-9c14-c851c6a29514@linaro.org>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=pGBDoafc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-tegra+bounces-14142-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"pGBDoafc\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.93.198.38","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"SN7PR12MB7226:EE_|SAVPR12MB999119:EE_","x-ms-office365-filtering-correlation-id":"9f205e14-3c5c-4886-e911-08dea7c82bc5","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"\n BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|18002099003|56012099003;","x-microsoft-antispam-message-info":"\n uK/vv6e/dW3IjKibFAkGEfLyzxs6TByXgxuEvXaaAeEOwlAJfw5JJEWKMw8AgEGkhBO8/3ZYl/WFfzWcN4R5gnhujtkkNvxZ66QV9RVX1uHL4jbEp638vBCC1PBtq8fh0Uq8bSmAD8xoXj1wRUo0kU3xmWZrEU9aRYw8gmv5mP1Hz8KAshw7bcp9AvnABd+t1XsYUJZOwGC1RyG6sM5yCC9wglrd2AdIzWtKAUZ3LYOViaP0A8gjhf28XfgfrsuMII2gdsjYqqfsz8xTsnrBdZ6RhzMyA4klyuTZPpxUJR/Fp5Ds9JAuM8+2bfZZMfCjR5pDVslLly8Xp5hh86lakcnHw1G/K9FGbFbuJ33VcpitRcHFixftELVApZmnLnKjR/w6NLr+0HvC6iSUtbshNS5Q9RYO6Ecyo3ntLYrSdk7kNNkrwi1aNr3GJcpRRsCZ2XgdR+zGTfkglSHMFhYGsdBPaff7LhdrRAVzRQxFQ7rvufuTAK71YJiU+oSF8H+T4wUyE2ug1eG4rJXOAOSZRn8EyBmsuN9ovpA21PopP7Rp0mnuVXkF4gFpMt4g3A9UHaEp7yaObCSrFvofxtlvaro7UENmb7OH8rj6eBkGV7rtj/GEF0j3g4jT3rzWgV//ikzyJQ47AIFmD2kegiijIq562DzIah422OVj8cVd7nkFQ5aHcHwFtcmHNFmX/VrVUk+UK+NxrBQoV7jZHHX8mF4PEaVtHaNeYVWR9CtxWZl4nExCQRZtMJ88hinmewaf","x-forefront-antispam-report":"\n CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB7226.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?utf-8?q?mi1/MZNIE11mhzSZQEqNNwb7Iv7m?=\n\t=?utf-8?q?9S0sS55zv55qPjRFlFdBA1A5eKd72jmvHFqZqeFWN/nwiWrNLZdBRqFa693plGBb7?=\n\t=?utf-8?q?5/69EYZ5PiZ/+DFdO1WnqhmsKqnF9gPspv1UjTutn1H2zVwvhyYFtDZoeMb6pHrfA?=\n\t=?utf-8?q?Yqbk+P/Gz1KooisGkoD9dyrrkq7nSNfh7j0THqR9ost+ckvhBgc+M6jJMQLeslx8w?=\n\t=?utf-8?q?QV5jM7cFGHL9g5RT6fW1x72ZLe/s6Uaw5QWMYQvF4Isenj+lHEvwUcUyHcPisbtTG?=\n\t=?utf-8?q?sTZbh7CEMXBouIvfOcwzP47C8WHa0z8WJEu1ibHQiZDznDoSqpjw6hW1g9l9cJG0/?=\n\t=?utf-8?q?1rxwzRPBFTwnVd7peNSpnIJhpCamPE2HlNyuAQ6Qg6Us6hMPhYdsFwfv3HKuBz5MW?=\n\t=?utf-8?q?Grk+7Nuz6D4byBWAmhIxVzwcZ4FrpPFQjrwIPS2gv7N0/pEh4UYHQgdM8hhhQRwMU?=\n\t=?utf-8?q?evZrYoKeUhYfcVlY5DD386ZtwMzvh+KgRVps7NiGw0PwLL0+KoP2WyMN23mdl4o3q?=\n\t=?utf-8?q?4tkAHppANUrD3MScpTR8qGYRDub5bzvJHk4fPVDs1A3zO8VDBo7571aCycQGvOYT6?=\n\t=?utf-8?q?TJA03vGSYnoM9ouu7EbDElXmTENak6QikSSbJ4EnCtHkwOBUTI3SWZThBHgSCQpSZ?=\n\t=?utf-8?q?hY0CMHLF9AWO8B79NMTfPEw7gE3CBrGpKsqitbjqpLXKZYXY5zUTLcjJeyxgC45XP?=\n\t=?utf-8?q?dF3hYOIPXbIyMLSO1bYbU8u5db7MleMEkdDyN7GsrSHaNkj4DsRp8teZIIX+N6Iej?=\n\t=?utf-8?q?zWw+xnTpb6fe/PIirwvPxgCqr8GgX1N2K1omBecB4afHlKoH7qfiYO6Cb/FoYxGyI?=\n\t=?utf-8?q?xKwtdkdSQOnmPqLIlbdZdL+DIqHfhhcUuKtzQcQrAFNnR+PQc6RELURlwE3foxNIc?=\n\t=?utf-8?q?Z82WOTEUQ1cy4pqKhpLF4zk+ZyuspYSLcHoBbQdUY/DKWmDg/dbFjZwxVZIuJFIBh?=\n\t=?utf-8?q?M+7592g+p7rOFHQt0/ipKpJZagPbnhSr8SOx+aYxdfcTwZqu2a7f3Z7vvULgTowaW?=\n\t=?utf-8?q?w+NoxP2gbwMFi6iYmh3lAv8pdoIYV46Wm2c+XU/t/+FOind5iF1xT9N/TCKXIy+18?=\n\t=?utf-8?q?EPMUDo3Wp3KyH3h5u55SzekZdG/BrZ7WlULimxpxa1kTZ0SmiGHgCdmXs5N2UJs3R?=\n\t=?utf-8?q?wEP22EtaN2mMR8/BcykbW4WYAz8ombSyTfJWflRpTD3dC4eQFLHBWXEXyJOyRUMI5?=\n\t=?utf-8?q?IlywzEU0ayI3g7Fflgzr0BPJ4gD4PqLGtXNJw5SLwzQ8uTX0fV7c4+PUvuuyd3mRP?=\n\t=?utf-8?q?8JJfUH8isnml79YuMy4v7rIOf3oTkGlwvGyD9nNJouDM9F0JKku/iaCAVQljmSdzt?=\n\t=?utf-8?q?QT6qqU8RU5VM7y3JbPJ/+5wJJjn2DT1eAlDGWOcveF7//5tjr0BCDAudyWGn64THV?=\n\t=?utf-8?q?VWrn9VcbuB79dvpPceN9kaVhnZA47rsZ2FasKVBIgGYy1U/mM+cmsmEc5kKIpy+eT?=\n\t=?utf-8?q?7uT9ZwtcC549Z007LJmtvCOHNZR0sZ+LjtafOmHGwQ6l0fN0m6jrFFNjZymE17rFS?=\n\t=?utf-8?q?qG75/qg4/UkqS3skOiTdD4g0Oh18yVhLHL3SI92O4il4hZbER1aDxsEmZqrkNftKu?=\n\t=?utf-8?q?RFoBuXktkMVTTrOKsQVt2wOr7YJgM+I74PvUxRUw6L5b5+X/ofPCDh7IB0mtGUlWN?=\n\t=?utf-8?q?5drjnplTTond/NSLZA8lYegriFe7gUSg=3D=3D?=","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Precedence":"bulk","X-Mailing-List":"linux-tegra@vger.kernel.org","List-Id":"<linux-tegra.vger.kernel.org>","List-Subscribe":"<mailto:linux-tegra+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-tegra+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"SN7PR12MB7226.namprd12.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 9f205e14-3c5c-4886-e911-08dea7c82bc5","X-MS-Exchange-CrossTenant-originalarrivaltime":"01 May 2026 21:25:30.2523\n (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"43083d15-7273-40c1-b7db-39efd9ccc17a","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n HwXPwQ9ehOlhfBW/s8aaVowBKBtMqW0ecBjxRC2xN66GhQKGYSR5VkzoJ3uw2g7a3gBHF3IfOIB8YA4rmK9+dw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"SAVPR12MB999119"}}]