[{"id":3680448,"web_url":"http://patchwork.ozlabs.org/comment/3680448/","msgid":"<b1458bc3-0449-4f0f-b346-d25547dd4c97@linaro.org>","list_archive_url":null,"date":"2026-04-22T10:32:39","subject":"Re: [PATCH v2] 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 21/04/2026 21:38, Besar Wicaksono wrote:\n> The PMCCNTR_EL0 in NVIDIA Olympus CPU may increment while\n> in WFI/WFE, which does not align with counting CPU_CYCLES\n> on a programmable counter. Add a MIDR range entry and\n> refuse PMCCNTR_EL0 for cycle events on affected parts so\n> perf does not mix the two behaviors.\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> ---\n>   drivers/perf/arm_pmuv3.c | 44 ++++++++++++++++++++++++++++++++++++++++\n>   1 file changed, 44 insertions(+)\n> \n> diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c\n> index 8014ff766cff..7c39d0804b9f 100644\n> --- a/drivers/perf/arm_pmuv3.c\n> +++ b/drivers/perf/arm_pmuv3.c\n> @@ -8,6 +8,7 @@\n>    * This code is based heavily on the ARMv7 perf event code.\n>    */\n>   \n> +#include <asm/cputype.h>\n>   #include <asm/irq_regs.h>\n>   #include <asm/perf_event.h>\n>   #include <asm/virt.h>\n> @@ -978,6 +979,41 @@ static int armv8pmu_get_chain_idx(struct pmu_hw_events *cpuc,\n>   \treturn -EAGAIN;\n>   }\n>   \n> +#ifdef CONFIG_ARM64\n> +/*\n> + * List of CPUs that should avoid using PMCCNTR_EL0.\n> + */\n> +static struct midr_range armv8pmu_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 armv8pmu_is_in_avoid_pmccntr_cpus(void)\n> +{\n> +\treturn is_midr_in_range_list(armv8pmu_avoid_pmccntr_cpus);\n> +}\n> +#else\n> +static bool armv8pmu_is_in_avoid_pmccntr_cpus(void)\n> +{\n> +\treturn false;\n> +}\n> +#endif\n> +\n>   static bool armv8pmu_can_use_pmccntr(struct pmu_hw_events *cpuc,\n>   \t\t\t\t     struct perf_event *event)\n>   {\n> @@ -1011,6 +1047,14 @@ static bool armv8pmu_can_use_pmccntr(struct pmu_hw_events *cpuc,\n>   \tif (cpu_pmu->has_smt)\n>   \t\treturn false;\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 (armv8pmu_is_in_avoid_pmccntr_cpus())\n> +\t\treturn false;\n> +\n\nHi Besar,\n\nThis is called from armpmu_event_init() before the event is scheduled on \nthe CPU so I don't think reading the MIDR at this point is safe.\n\nWhen the PMU is probed you probably need to do an SMP call to get the \nMIDR of CPUs in that PMU's mask and then cache the \"avoid pmccntr\" \nresult like has_smt. Or even rename has_smt to avoid_pmccntr and combine \nthe two results there.\n\nI don't know what will happen if none of those CPUs are online when the \nPMU is probed though...\n\nJames\n\n\n\n>   \treturn true;\n>   }\n>","headers":{"Return-Path":"\n <linux-tegra+bounces-13847-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=o0PStOUV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13847-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=\"o0PStOUV\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.128.44","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 sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\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 4g0wbP16G6z1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:35:13 +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 06225305BFF3\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 10:32:44 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id E1B77364023;\n\tWed, 22 Apr 2026 10:32:43 +0000 (UTC)","from mail-wm1-f44.google.com (mail-wm1-f44.google.com\n [209.85.128.44])\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 1466137F8A1\n\tfor <linux-tegra@vger.kernel.org>; Wed, 22 Apr 2026 10:32:41 +0000 (UTC)","by mail-wm1-f44.google.com with SMTP id\n 5b1f17b1804b1-48984d29fe3so43376885e9.0\n        for <linux-tegra@vger.kernel.org>;\n Wed, 22 Apr 2026 03:32:41 -0700 (PDT)","from [192.168.178.64] ([84.246.200.167])\n        by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-488fc0f8188sm463372455e9.2.2026.04.22.03.32.39\n        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n        Wed, 22 Apr 2026 03:32:39 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776853963; cv=none;\n b=poIAL13Me6XtBJ/tOwqUIt4pDYYbW5+1eCgC9sf4tZZihDyXKW2U98ymS7UwmDkSoGNLsVBmXbK4R4mB7PRQt0+XpdjAIfIEA0YNgvJtp7VQcXgDfzIOF4GwhEd3pTr5Vmvx+AdleDOi/IK0LzHI2UHCVdNd0PlEt0ZzcE2tVCQ=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776853963; c=relaxed/simple;\n\tbh=t6q5Qy7h7H/U5E8yMH1XxtOUcF14nGntGTCUibgUkjc=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=b78IRCGSdPaxmiu4a6DVo/+eS6gcGVaJE3fdHBnQx8HvmvmHgQFrgJPZR5J337AqOB9sLJ994VHWRKqjHGX3yftJcFeeMYeTUNUkho9Lsn8AQ+r/eXHmPaGp451YvaW84wcJ5tZBk1wyY5WHQSrj/gYuspoprdrzlhGEMAO++mQ=","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=o0PStOUV; arc=none smtp.client-ip=209.85.128.44","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=linaro.org; s=google; t=1776853960; x=1777458760;\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=0rgqXLVy6xqukPgPXJSs1dZ6Rd18H2YCjcgP2MCGRmo=;\n        b=o0PStOUVyhBL87vhl3+lwUgXux/ET18Ehzzi2iU/JBvD4YGWHOUinhZi/sKE9TSoGd\n         2Dl38kdkZzJIk9OowwgkeaApsg+qvhlmRwjRaoz3Br585wf8a5WZvD97WAAcP1GTNkhj\n         8TrG8zfBrQimFRQtjnIJJwX2gghsBVCF0SiGvURmyryadUYQ8DTH6dn1RdnUs0+R1WoG\n         ulV0qZ5QzuNWKfMbn6cELm7dEfWC9yU2mGVKDOd7Gj/t7i1c1eIjYN+07RKhChFZMVoN\n         CvIBwteSOiiGSjyEk98Upw2+XR9gX/rzCyMMRMfi274X1H6ja6WJdz25JUlZp8Poxkgo\n         XfMw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776853960; x=1777458760;\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=0rgqXLVy6xqukPgPXJSs1dZ6Rd18H2YCjcgP2MCGRmo=;\n        b=sol8bIEeuqBSNISY4S1qdf2JhTnVskLOOPq0ZTaUwjJ5/rooDetVYp0ideEQnIyyx6\n         8qfbDjgyeTAz5J5rAtZHrqD9JpsMVC0Tez0UfxibTm+A0TQA7wyECQAk+BXSDXCZs865\n         V+YwFc8IqrO91bv1OaXqrSqcyURTp/aH3hAc0vCiIqhGBjBlHCsek87pPassZJZyX9A1\n         AFz2M/0Bkg23lh/7ThsjlykcZtSXKscE1wLDv8dhQn3Z/HELGASX+O2USnQnYShRTd9V\n         vdoVc9d0HFTTIc3rVimWm+SmpEqsXrYDRKLtPXmun7IQCfZ53752krF1a/yS0afRihas\n         WUlA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/8KXecXObLJNo89WfyjXF/OOrWr85eFaXEUjwvG1lM7syVgJT3/JTaaPPM92vJmYNdKPEwDSi9r3HDyA==@vger.kernel.org","X-Gm-Message-State":"AOJu0Yz3GqIgrAXQz9WwiEFSGyKvGHZNeQqT4KSvArgmld2MlUhL8r/q\n\tWDIvN4BvdVDpgjo/cXc94BQKg3gcl/GH4Wl74tiktbctQiAZmQ8C162EWPQau0/MgsI=","X-Gm-Gg":"AeBDiesG1gDlgvVLyDLrm2reEC7L/Ehhqw0Xi8esSwzeGV6GEFMWQam0ltiEUTl4t7V\n\tdGL7iXQNiq0lQD71j1KvnjLfHQDlG444xNK/uA/xFhfxjH2Ifwkp8cGvgrp09CdDZYw1cGRZbIY\n\tMLPQ/9Dw0BnCnoDDVq+I3P8jk9Twz1bKkSe17TpU7V5XYrfotnTq4QJhTNYVD+Kkywctjd2GatC\n\thWXVxZja2U22arTCZo/A9b+JTXDv2vR0H4ph9BTGoU66cf25Y7MmVYnx+ioQyL5/pHEFkc/b4a/\n\tYOpmfc/MTllMGUTbjW92ZZCfEeO67T0N4kWh6nv9CfghLY0O0IubyL9bPP2yHD+o8FHKkDayT2b\n\tkdX7KiBGT1OBfHsipuiyDlb0jzJTS8PDb2cU2KZaLvoJzzc+dMuVQWPafbO6l/CVBvuFo2s7x5z\n\tjFsclkEul33R4tRN+Nz/WC9kjlxTj/CxAf58RMTYE+EFg=","X-Received":"by 2002:a05:600c:4895:b0:488:ffad:6728 with SMTP id\n 5b1f17b1804b1-488ffad67f4mr155484265e9.19.1776853960414;\n        Wed, 22 Apr 2026 03:32:40 -0700 (PDT)","Message-ID":"<b1458bc3-0449-4f0f-b346-d25547dd4c97@linaro.org>","Date":"Wed, 22 Apr 2026 11:32:39 +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 v2] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","To":"Besar Wicaksono <bwicaksono@nvidia.com>, will@kernel.org,\n mark.rutland@arm.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","References":"<20260421203856.3539186-1-bwicaksono@nvidia.com>","Content-Language":"en-US","From":"James Clark <james.clark@linaro.org>","In-Reply-To":"<20260421203856.3539186-1-bwicaksono@nvidia.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit"}},{"id":3681025,"web_url":"http://patchwork.ozlabs.org/comment/3681025/","msgid":"<SN7PR12MB722693E924425893F4A62D54A02D2@SN7PR12MB7226.namprd12.prod.outlook.com>","list_archive_url":null,"date":"2026-04-22T20:17:11","subject":"RE: [PATCH v2] 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: Wednesday, April 22, 2026 5:33 AM\n> To: Besar Wicaksono <bwicaksono@nvidia.com>; will@kernel.org;\n> mark.rutland@arm.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>\n> Subject: Re: [PATCH v2] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA\n> Olympus\n> \n> External email: Use caution opening links or attachments\n> \n> \n> On 21/04/2026 21:38, Besar Wicaksono wrote:\n> > The PMCCNTR_EL0 in NVIDIA Olympus CPU may increment while\n> > in WFI/WFE, which does not align with counting CPU_CYCLES\n> > on a programmable counter. Add a MIDR range entry and\n> > refuse PMCCNTR_EL0 for cycle events on affected parts so\n> > perf does not mix the two behaviors.\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> > ---\n> >   drivers/perf/arm_pmuv3.c | 44\n> ++++++++++++++++++++++++++++++++++++++++\n> >   1 file changed, 44 insertions(+)\n> >\n> > diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c\n> > index 8014ff766cff..7c39d0804b9f 100644\n> > --- a/drivers/perf/arm_pmuv3.c\n> > +++ b/drivers/perf/arm_pmuv3.c\n> > @@ -8,6 +8,7 @@\n> >    * This code is based heavily on the ARMv7 perf event code.\n> >    */\n> >\n> > +#include <asm/cputype.h>\n> >   #include <asm/irq_regs.h>\n> >   #include <asm/perf_event.h>\n> >   #include <asm/virt.h>\n> > @@ -978,6 +979,41 @@ static int armv8pmu_get_chain_idx(struct\n> pmu_hw_events *cpuc,\n> >       return -EAGAIN;\n> >   }\n> >\n> > +#ifdef CONFIG_ARM64\n> > +/*\n> > + * List of CPUs that should avoid using PMCCNTR_EL0.\n> > + */\n> > +static struct midr_range armv8pmu_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 armv8pmu_is_in_avoid_pmccntr_cpus(void)\n> > +{\n> > +     return is_midr_in_range_list(armv8pmu_avoid_pmccntr_cpus);\n> > +}\n> > +#else\n> > +static bool armv8pmu_is_in_avoid_pmccntr_cpus(void)\n> > +{\n> > +     return false;\n> > +}\n> > +#endif\n> > +\n> >   static bool armv8pmu_can_use_pmccntr(struct pmu_hw_events *cpuc,\n> >                                    struct perf_event *event)\n> >   {\n> > @@ -1011,6 +1047,14 @@ static bool armv8pmu_can_use_pmccntr(struct\n> pmu_hw_events *cpuc,\n> >       if (cpu_pmu->has_smt)\n> >               return false;\n> >\n> > +     /*\n> > +      * On some CPUs, PMCCNTR_EL0 does not match the behavior of\n> CPU_CYCLES\n> > +      * programmable counter, so avoid routing cycles through PMCCNTR_EL0\n> to\n> > +      * prevent inconsistency in the results.\n> > +      */\n> > +     if (armv8pmu_is_in_avoid_pmccntr_cpus())\n> > +             return false;\n> > +\n> \n> Hi Besar,\n> \n> This is called from armpmu_event_init() before the event is scheduled on\n> the CPU so I don't think reading the MIDR at this point is safe.\n> \n> When the PMU is probed you probably need to do an SMP call to get the\n> MIDR of CPUs in that PMU's mask and then cache the \"avoid pmccntr\"\n> result like has_smt. Or even rename has_smt to avoid_pmccntr and combine\n> the two results there.\n> \n> I don't know what will happen if none of those CPUs are online when the\n> PMU is probed though...\n> \n\nHi James,\n\nhas_smt, iiuc, is common to all the supported CPUs of the PMU context.\nIt is configured based on the first CPU in supported cpu list.\n\n    pmu->has_smt = topology_core_has_smt(cpumask_first(&pmu->supported_cpus));\n\nIs it okay to use same approach? Can we assume all CPUs in supported_cpus have same midr?\n\nThanks,\nBesar","headers":{"Return-Path":"\n <linux-tegra+bounces-13852-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=S8/azgFC;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13852-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=\"S8/azgFC\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.209.25","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 tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::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 4g19W90Smnz1yHB\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 06:17:25 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 83CD53073C04\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:17:21 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 02E3B33A70F;\n\tWed, 22 Apr 2026 20:17:21 +0000 (UTC)","from PH8PR06CU001.outbound.protection.outlook.com\n (mail-westus3azon11012025.outbound.protection.outlook.com [40.107.209.25])\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 235332D876B;\n\tWed, 22 Apr 2026 20:17:18 +0000 (UTC)","from SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18)\n by MN0PR12MB6102.namprd12.prod.outlook.com (2603:10b6:208:3ca::8) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 22 Apr\n 2026 20:17:12 +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.9846.016; Wed, 22 Apr 2026\n 20:17:12 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776889040; cv=fail;\n b=sQtgQ+LWDD7La1+YlP5igySgeMLwYFpubUCjnaNabhsviLuGoiscYG+4XhwmBb+KmB7FvakHdQHWAPJ9Yizi7pxsI8twbnz6scN4qTG579x7kPZjwubGEJZmyCpnN5jA57vSoABflU7pu91k6JAMUj09uYhN6rKwhSa7orWR/zw=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=BxHMIKp5JnD6gHlxMIJoCXlfbYJ/+jgC3O9hnecU2VMRJuiR43BGye4NKvZlcyfRVTSFdxfIL/Zz3TxR2uMT3WkvRBhkrbPgMCiBNWuF+g5AI4XVUmu1lnvs4G8ORKmgDrLjXmpbc4+ROColWbzQ3LmNe1uGUj673peeL1IFFfhnsLjyPyQcEzYfjLlRf7ME1WPaYoyVRFYAjvKX6NgDxBpO5T020p3qftlI/gtL40Rvf3TdYbhIJr+bvjZJzF3C4z+sXIOnuJzvpBDtgeyJM/QA9V44nB8wKZCrXM/vWjokOcZ3VYzf4uLVn3FIA+gC8YCuT7kUOG20SlqZu/ybUQ=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776889040; c=relaxed/simple;\n\tbh=g3uWiks58ZsWjN0CpjGueOBhTu4XoGr43e//3fNkMI0=;\n\th=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:\n\t Content-Type:MIME-Version;\n b=QVFOBdG5HBVcyzMdGmWHET9P2fqfwEAZX6wPomNYZwGHSK3VN+5xmvXrV6g0Y8Pc9hGycAnBYScBAYcjsD2RZiExnCXqXDkvnSoRzCOIVONrqOxnv4QdFMZSfSPFdOEIu6rSctzZ9zClLrHTaDkmSNAaSAd1lIpuiwsYWzRCYRk=","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=g3uWiks58ZsWjN0CpjGueOBhTu4XoGr43e//3fNkMI0=;\n b=AjJt02n3mecvAale34ypwQSVcSvkj3Dho0v+PwkgzTfs6ZVCslXPiZ0fuXk+PJjPLv4U342Gn+6GCjY3pehpsi8avRpY4PTD6s8yMpljsPoDeL2NbYF3MacIeMNefb9243KV/BpP/5QfUyGamyPVG9fKoXeJHZsYcDqRiXqpzJnItCNmns9hS1TsskWghACu+etQOdkvpENfEWSY51yawjiFgeksNEfZtfQpfIDNbzi96fvCxQy7xD+mDKsRmbtd74Vp+FqPSlb7P/t7ghxnToceK5WGgBoz5sL5+bZv+3wr+5VPjr9x7zgTvX0r+6tjKIaOI97uFq5M2BNssaGZcw=="],"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=S8/azgFC; arc=fail smtp.client-ip=40.107.209.25","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=g3uWiks58ZsWjN0CpjGueOBhTu4XoGr43e//3fNkMI0=;\n b=S8/azgFCYGrrWPUBmrlIkJVPwbzXLiFdNd+44Ulv9aOkFsq5RW5TDQEIBCjzfl6WCAxEAdznfJqu/lUSG9wR87fMgCmMxFXQW2MuQ9z5C3nD2bxJnzUATWd73c+1hRygAv5WgD7tqY89spKemqAyC2aqW7UbHAC3FqjoRdo3hPequclx6Hlwu8THxM+llKUt0HM97dCyJdnZEwDlDFJZzP0uBcAIM+FfPenfWPQgvpjsijTZ1Rj/frxreDuq1UgL1/MfVI+Ff/qdyjEPobIA1SWZaf8CFiXSuLuoTmm1I2kJxPKxwnX8C4qpGHVtFIzbPceYN8JZ6v7fumLR6ezAdQ==","From":"Besar Wicaksono <bwicaksono@nvidia.com>","To":"James Clark <james.clark@linaro.org>, \"will@kernel.org\" <will@kernel.org>,\n\t\"mark.rutland@arm.com\" <mark.rutland@arm.com>","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>","Subject":"RE: [PATCH v2] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","Thread-Topic":"[PATCH v2] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","Thread-Index":"AQHc0c7yos7CcRPahUaeUXks18pTqrXq4xGAgACF2xA=","Date":"Wed, 22 Apr 2026 20:17:11 +0000","Message-ID":"\n <SN7PR12MB722693E924425893F4A62D54A02D2@SN7PR12MB7226.namprd12.prod.outlook.com>","References":"<20260421203856.3539186-1-bwicaksono@nvidia.com>\n <b1458bc3-0449-4f0f-b346-d25547dd4c97@linaro.org>","In-Reply-To":"<b1458bc3-0449-4f0f-b346-d25547dd4c97@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=S8/azgFC;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13852-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=\"S8/azgFC\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.209.25","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_|MN0PR12MB6102:EE_","x-ms-office365-filtering-correlation-id":"64451d39-6758-4441-748c-08dea0ac2340","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"\n BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|56012099003|18002099003|38070700021;","x-microsoft-antispam-message-info":"\n JlXciMQ4GBKBvrBeHzX7lFVlz5xLk6/ITCOkYn5guj0X/NTjKZ98gUa7yPxHT35OCslEffdb1BEdAGz/rSIKvvB5fDQhfPdLg48a+j8cJ9i5/6B06bEQx4KJL8ub5wcI4XdgwZu1Xft5t8WpJk6WDxZCrlLa2s/mSuPfH8XbWo56SfLodc40X5qmb+g6J7Omod17k/SskngnBetDxm/0RdYaeYzIYPq44b3LU2W85tAIEQ8Cesv5e00WdBy/n7AqtkR7gAsakZU0ergdyUKJSzC8c+GU4oxeqG8p02GYbBQa55jSGIfnhfneaF8YJlPe8eQnpc1roSQ1ostUrt2YotKvPEr0uBulel4Shc0TRzpziqoK53Yp2iXJ4thh2mGXAHF4m0fplW2tgUJnmW0MM7fxbJC2RBDZEwD7X5CVvFDDZECKzZGAlQRkcwoH3f2AL/TtSqyMTD2xgW3jNtstW3FfDpKsR8Sg3OZyL9hb+Xe57al19cioxo2jGOpfzB8j8MJ8JtmFx/Yv3i+5Z9Arfz10Fthc8r1krcRYnvm10k9MTdSVqkWudixP3pw8Q53qXWgQ6hdQZ3KSn7vE72FaA95rHLPV/6GIOpannIHhkRINadvGngyCydtAym9LZEL+eFwMevCLyCXn2cWL+Wu3yGaZOtD5NrvHGiDEK1xvN3L70WQCE9wkDIcSzEydAjxwrS8HLtZ0aRCVzTunYe3VemgxvCT/5uuF/AxUFvG2xqrbig5Hf21rBI5gS2s/PxIs2AjtT4c1jia9j//rfGU5QtFzKf7jVQiQAp1oWTLjaQg=","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)(1800799024)(366016)(376014)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?utf-8?q?Ts3tGxi7xmPsxlwAlC6rOLvkzmKf?=\n\t=?utf-8?q?xhoKK+/wzn3w4Dvbv/VMI1reWKmS0WQV0OXXEeggH0/wWv27UBQ3Fp2XjN+FjlboO?=\n\t=?utf-8?q?0HFjfneAn9NjOx6V3XVLqVToM4Y1hJOpCkZBOfqLsV03QoDcQANmMB3yMmsO+PTG6?=\n\t=?utf-8?q?YGaCo7VqXz2cRBf7CoGLZ9qYRn1Z1vpGXGUQlOxt/p6BIOA7v8HXrSvd8MvfOSXix?=\n\t=?utf-8?q?RTEd4MP40s0PsHt0fGhIr6HCBiBz5gtPY39EM2Lz/FzYTEnEhdMSrlZcOMqJxyRQm?=\n\t=?utf-8?q?Mvl3SuD38QS9ECfQa4s0inbVacwr/sXqELIjiWclSiOhO7VCwxQGK9zpoc8jecNap?=\n\t=?utf-8?q?aNMGrRauXAzdXAwqUDFMan9LKuwZLv0YuPMsr9Y4efDSD8/Y1smxucbSH4nh45K5k?=\n\t=?utf-8?q?K6Lx3wyvrt7seU4Bp/Uu0JF3rTh8+evTuHpe+A0jDx2haIROq9a4SCydO6dn88s8n?=\n\t=?utf-8?q?MmZ/r4Hyi30WzuTspSiC3cG+BzE7IJ/33BO08uG1PEIPu6/W1gRwgEh95pVx69cV3?=\n\t=?utf-8?q?w6gVuHTVcANPddmjqC9V5COXtDr/YxAB3EVkJkGNI1C5WqU/PVGeR5nVNVk/4E6h1?=\n\t=?utf-8?q?ea6raDYX3xBfyZjtTTxgarBlOlvJBiKGFvatJp2qL0ytholxvp1dmZ57rSHsB815R?=\n\t=?utf-8?q?SahYcDrUms4aq6fH8XPqW5MDvncJo4VyMBG/5l9Qu0ailteGI6fAzgcnO9JSG6iIg?=\n\t=?utf-8?q?4CR7LnwvDKfaUBqgCUBeATmzIfzpPbSxSIx1Zead93vhcYW0btaxH6ygR67z0qg90?=\n\t=?utf-8?q?tH9R3GNhoGJEgFKiHZD5RBtTx/DEq2KBoSntjHV8Fx3Yulp5Hqpvrq+Zz+ACxiVDU?=\n\t=?utf-8?q?OauX9CGPRTxLhIabQFodnhyIz4jA+VDZl8YzFpNlMmbdwXNUuSLackGDn9BtiWWmD?=\n\t=?utf-8?q?3SZhIH5nsx6ivZKEYpB6CJEW5x+bumGG/r5nz+9q6QqMmv1QUA5UYmntu5H//2jgG?=\n\t=?utf-8?q?LXl+qkGTNRrF4ey8S6MnVXHIhKKDEMH1Q5vAcQjxa+Mhv70oJVu+2fZETvfJMAF1l?=\n\t=?utf-8?q?PK0F579KPe718HlfE0kql69wB3MQnj8CbKl21WqKDx49QXARa5cf4VbTVrlEjHrfq?=\n\t=?utf-8?q?36turL0JjHNnor5GTzC71t/PXYcqs+asBW2CKNhT5jwDZVa4NQERJDTHQS+F/wyNQ?=\n\t=?utf-8?q?hzTBExmX6a39xTbis/M0KucdtaAVNFc+gJHXkyRS6KvtdSqbl6X2rPTpoxopI75LR?=\n\t=?utf-8?q?igaZHdQCHAbf4oIpbC66orlONEC0MxlEHmD2BMWgl/Jv2MhLAsntpVkoPBA4Zou6g?=\n\t=?utf-8?q?td2kvErLoUcpYkVfYMl6gnuR+ZZOb/yqkDIABg2ERGpMJRY0fLa4ffAI7gZEj1Pfy?=\n\t=?utf-8?q?hu/gCseYNoP6EeQhd3feni+Ml4l+mwtFungrQXH4iglxyAouiPX57qG+69edRDdMM?=\n\t=?utf-8?q?hhycfDNh2Ejj8pqSsXY0lCsq8vm6PDTRQyhaKWlILcTsCew7MBgvj+FZMOGZVvLcM?=\n\t=?utf-8?q?MIMOgrL+0Kd6gBkHBSlLN3YTrrBXMYYAJCMJHDcJD5r/pa4OTm/TvIKGpG8F9QV1j?=\n\t=?utf-8?q?MNWDDbzjuGjBldht6fWf8WpCOum4if2LnHfNpaoksBJS/45SvIefHAkAsHi4Ujpcf?=\n\t=?utf-8?q?NrieqUIsZq3tIs9Z+SDSdt2OUjmsMnV2VtNfu+jbpf2q3neTfzAE8qTHVedMHJzlX?=\n\t=?utf-8?q?ABbvsJ3jkhvs8BONyeAjjb/WSSZUKagg=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 64451d39-6758-4441-748c-08dea0ac2340","X-MS-Exchange-CrossTenant-originalarrivaltime":"22 Apr 2026 20:17:11.9271\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 /wQULhOH9e78yv5KZJaLFVWGmTb+sar8oPL6hSDq7cikvcxM1csRTjVmPuiJ77HE2vYx0HyATmFpvUxHarvqRg==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"MN0PR12MB6102"}},{"id":3681329,"web_url":"http://patchwork.ozlabs.org/comment/3681329/","msgid":"<5cc2f7b0-852d-4feb-8d47-39aac44e0093@linaro.org>","list_archive_url":null,"date":"2026-04-23T08:29:42","subject":"Re: [PATCH v2] 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 22/04/2026 21:17, Besar Wicaksono wrote:\n> \n> \n>> -----Original Message-----\n>> From: James Clark <james.clark@linaro.org>\n>> Sent: Wednesday, April 22, 2026 5:33 AM\n>> To: Besar Wicaksono <bwicaksono@nvidia.com>; will@kernel.org;\n>> mark.rutland@arm.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>\n>> Subject: Re: [PATCH v2] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA\n>> Olympus\n>>\n>> External email: Use caution opening links or attachments\n>>\n>>\n>> On 21/04/2026 21:38, Besar Wicaksono wrote:\n>>> The PMCCNTR_EL0 in NVIDIA Olympus CPU may increment while\n>>> in WFI/WFE, which does not align with counting CPU_CYCLES\n>>> on a programmable counter. Add a MIDR range entry and\n>>> refuse PMCCNTR_EL0 for cycle events on affected parts so\n>>> perf does not mix the two behaviors.\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>>> ---\n>>>    drivers/perf/arm_pmuv3.c | 44\n>> ++++++++++++++++++++++++++++++++++++++++\n>>>    1 file changed, 44 insertions(+)\n>>>\n>>> diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c\n>>> index 8014ff766cff..7c39d0804b9f 100644\n>>> --- a/drivers/perf/arm_pmuv3.c\n>>> +++ b/drivers/perf/arm_pmuv3.c\n>>> @@ -8,6 +8,7 @@\n>>>     * This code is based heavily on the ARMv7 perf event code.\n>>>     */\n>>>\n>>> +#include <asm/cputype.h>\n>>>    #include <asm/irq_regs.h>\n>>>    #include <asm/perf_event.h>\n>>>    #include <asm/virt.h>\n>>> @@ -978,6 +979,41 @@ static int armv8pmu_get_chain_idx(struct\n>> pmu_hw_events *cpuc,\n>>>        return -EAGAIN;\n>>>    }\n>>>\n>>> +#ifdef CONFIG_ARM64\n>>> +/*\n>>> + * List of CPUs that should avoid using PMCCNTR_EL0.\n>>> + */\n>>> +static struct midr_range armv8pmu_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 armv8pmu_is_in_avoid_pmccntr_cpus(void)\n>>> +{\n>>> +     return is_midr_in_range_list(armv8pmu_avoid_pmccntr_cpus);\n>>> +}\n>>> +#else\n>>> +static bool armv8pmu_is_in_avoid_pmccntr_cpus(void)\n>>> +{\n>>> +     return false;\n>>> +}\n>>> +#endif\n>>> +\n>>>    static bool armv8pmu_can_use_pmccntr(struct pmu_hw_events *cpuc,\n>>>                                     struct perf_event *event)\n>>>    {\n>>> @@ -1011,6 +1047,14 @@ static bool armv8pmu_can_use_pmccntr(struct\n>> pmu_hw_events *cpuc,\n>>>        if (cpu_pmu->has_smt)\n>>>                return false;\n>>>\n>>> +     /*\n>>> +      * On some CPUs, PMCCNTR_EL0 does not match the behavior of\n>> CPU_CYCLES\n>>> +      * programmable counter, so avoid routing cycles through PMCCNTR_EL0\n>> to\n>>> +      * prevent inconsistency in the results.\n>>> +      */\n>>> +     if (armv8pmu_is_in_avoid_pmccntr_cpus())\n>>> +             return false;\n>>> +\n>>\n>> Hi Besar,\n>>\n>> This is called from armpmu_event_init() before the event is scheduled on\n>> the CPU so I don't think reading the MIDR at this point is safe.\n>>\n>> When the PMU is probed you probably need to do an SMP call to get the\n>> MIDR of CPUs in that PMU's mask and then cache the \"avoid pmccntr\"\n>> result like has_smt. Or even rename has_smt to avoid_pmccntr and combine\n>> the two results there.\n>>\n>> I don't know what will happen if none of those CPUs are online when the\n>> PMU is probed though...\n>>\n> \n> Hi James,\n> \n> has_smt, iiuc, is common to all the supported CPUs of the PMU context.\n> It is configured based on the first CPU in supported cpu list.\n> \n>      pmu->has_smt = topology_core_has_smt(cpumask_first(&pmu->supported_cpus));\n> \n> Is it okay to use same approach? Can we assume all CPUs in supported_cpus have same midr?\n> \n\nThey should have the same MIDR otherwise it would be misconfigured, or \nat least the PMUs should behave exactly the same way for all CPUs in the \nmask. I think the whole point of separate PMUs is for heterogeneous systems.\n\nAs long as all CPUs in that mask behave the same way, then reading the \nMIDR from any CPU in that mask should be ok. We do it that way for SPE \nas well:\n\n   /* Make sure we probe the hardware on a relevant CPU */\n   ret = smp_call_function_any(mask,  __arm_spe_pmu_dev_probe, spe_pmu, 1);\n\n\n> Thanks,\n> Besar\n> \n> \n> \n>","headers":{"Return-Path":"\n <linux-tegra+bounces-13853-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=LWYSpM2R;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13853-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=\"LWYSpM2R\"","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 tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::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 4g1TnM1NLwz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 18:30:47 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 14188300956B\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 08:29:48 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 581093C3452;\n\tThu, 23 Apr 2026 08:29:47 +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 8606237C901\n\tfor <linux-tegra@vger.kernel.org>; Thu, 23 Apr 2026 08:29:45 +0000 (UTC)","by mail-wr1-f46.google.com with SMTP id\n ffacd0b85a97d-43cfce3a195so3707087f8f.2\n        for <linux-tegra@vger.kernel.org>;\n Thu, 23 Apr 2026 01:29:45 -0700 (PDT)","from [192.168.178.64] ([84.246.200.167])\n        by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-4412e36ff8bsm3135708f8f.26.2026.04.23.01.29.42\n        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n        Thu, 23 Apr 2026 01:29:43 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776932987; cv=none;\n b=MBmx3PpfplXCH3XTGt6osfUVcoX7Dg0iOYKWg7mgZ1x92U6D9HBktBINTgIE0j0az95vkAUhUhL7LzpD0P4oYqZC3qom0dJHBcXQyqnO4cxYyDRyPsLI71U19ts6e773mUb7IV4qMMIh+NHg00fuFu9zPgE64l1xuZ7BtD29kKc=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776932987; c=relaxed/simple;\n\tbh=lbpqo6vDxDFBh4nHrSYB6BNkF8fjuhE8x0fGmQIogZg=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=Jyxkw5Lfybp9dwrfnpQ/3rd83rQs70jPditpa9kr2wDgONeH4AfUS9Jcfp5kbMDO8JCyzxLMcNVuJb0mHZZHufJno/YVBaAjV4W0spubIGpu02bZ/wBA1aHtRFYIDh2wzjNavunyt8Q+8sh9PwSUgJRvtVu1u4NZSdpRq1ZB8KE=","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=LWYSpM2R; 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=1776932984; x=1777537784;\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=5AENNTTd3R/9cLJM0CQS1RbWnKVbNQXFO4xjBrlLHig=;\n        b=LWYSpM2Rlxtuw0WH4ND02rvjb6Q41vxo+hqcbdsM3Oylk7udgqR4KeRMip43EaFt9X\n         XT2hddJw+9VtaDmYiwjJdO901/tJ97XDbSkThWm9OyB/+pZNlrjRqaaWUMgw1TMAY4cn\n         EvMOm7xx22K7hILTOjrM0hLFduJS9hQesDNn8yBiLkWpu2MNbPfhTtIJ94D/KBRAEMMn\n         sJkniQP4XHfoH+QcR6dWNy34spxsznewqBJr9/H71CgFPI6bzvbvukTUs5W8CrJaCuvJ\n         c/02WBUq6KD4t7fbHyifBZNZ2YMd3IxfpB0ZZLlNsyt5NQIrj/JL9fwiBaMZ4mtNxHUb\n         KhsA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776932984; x=1777537784;\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=5AENNTTd3R/9cLJM0CQS1RbWnKVbNQXFO4xjBrlLHig=;\n        b=NqACXniRdhcJCNvUZXleJ9WbTlh2teVhArNyR0Mb5d7On76GCsr9L6trrya9WfUDSR\n         nTWDXdESkGo5NcvYmPabu5S1R1uwUKqtYnD47JWQL+5wAPArHHdhd1IJX8wDCndx2j/J\n         mA1VRlEcjgVup6J6ZsQG1HKyOG9EIcXAxLaK2wa2lkSwnUzGm2RQEV2tu4aQbHzd6p/O\n         nbN7ORFou/GPIyeKugG+j9mMILblH2bjiNbCMrE/NGUt1MmIxrOqegwcogcsfu/0/FhF\n         nQgfbq4N720J8CImK16xDybvIe8kqzhJNz4cAAJWdK5V03NtwXYIeNZ+176y7hq5g8Jp\n         qYBg==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/WN36xIta9a38AhZP4SkZHoi19npmuAjH+9DGMAMjnWLkH88bWEqgxKIcse19Wvdk3Mkxws+8O5PIChA==@vger.kernel.org","X-Gm-Message-State":"AOJu0Yx/scBke5F/r1CbZBBxgWxa54Mt4sQluvuRyUgYTliWtD0fjifS\n\tG9HPxExnGr4y0S5+Zv5+LslMIiLfKrDk8aIMnhxQ+xoetuMvSvsVsWuNBlCs1aOM7PU=","X-Gm-Gg":"AeBDiet53Fk/2ySmDhcX/Y/5kgJ8ol/J4PRf2+x6/95+R3DcGprjE6Bh+KHU48Pl++f\n\tuQiZh1eRN6dghQKCuD2cTs/pC1FIZ3zC393g+hGJUOh5FGTW0FLbtJw3327l4QIH1aDsNcrTGh5\n\tEiiHDoez4b5BRodIKbvRlr4D42W6guVekjXXt0RhNoPBDiu8MDv4KE6wPz4XZnsPOo/uvqFK+bG\n\tuc9eoS/n9te9puNHCuXHZvh4N6fOd2WmgpHEk8BZyCct+KTTkCwDzWaw72wiGLFJSgHsPEBUWZ7\n\tz2p54NO1y9DagmuKhfpxK8rmCOc711Czbvk52GbAL05IYAv2fuYN/pWvOJLW4/UjacIx4uFzqq9\n\t14VnfEgzFbHbDFmf9iQTnGMibodAfL8q7I4CnwY2BaCLQBJ3aOdOnoLoNMcT1yu9kpKKYNDfspY\n\t2VIH95WegwPga1cv2AG88CSSYa9+6bwq2jmiR9saGarj8=","X-Received":"by 2002:a05:6000:4287:b0:43f:e7c9:2402 with SMTP id\n ffacd0b85a97d-43fe7c9254bmr41064062f8f.3.1776932983879;\n        Thu, 23 Apr 2026 01:29:43 -0700 (PDT)","Message-ID":"<5cc2f7b0-852d-4feb-8d47-39aac44e0093@linaro.org>","Date":"Thu, 23 Apr 2026 09:29: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 v2] perf/arm_pmu: Skip PMCCNTR_EL0 on NVIDIA Olympus","To":"Besar Wicaksono <bwicaksono@nvidia.com>","Cc":"\"linux-arm-kernel@lists.infradead.org\"\n <linux-arm-kernel@lists.infradead.org>,\n \"linux-kernel@vger.kernel.org\" <linux-kernel@vger.kernel.org>,\n \"linux-tegra@vger.kernel.org\" <linux-tegra@vger.kernel.org>,\n Thierry Reding <treding@nvidia.com>, Jon Hunter <jonathanh@nvidia.com>,\n Vikram Sethi <vsethi@nvidia.com>, Rich Wiley <rwiley@nvidia.com>,\n Shanker Donthineni <sdonthineni@nvidia.com>, Matt Ochs <mochs@nvidia.com>,\n Nirmoy Das <nirmoyd@nvidia.com>, Sean Kelley <skelley@nvidia.com>,\n \"will@kernel.org\" <will@kernel.org>,\n \"mark.rutland@arm.com\" <mark.rutland@arm.com>","References":"<20260421203856.3539186-1-bwicaksono@nvidia.com>\n <b1458bc3-0449-4f0f-b346-d25547dd4c97@linaro.org>\n <SN7PR12MB722693E924425893F4A62D54A02D2@SN7PR12MB7226.namprd12.prod.outlook.com>","Content-Language":"en-US","From":"James Clark <james.clark@linaro.org>","In-Reply-To":"\n <SN7PR12MB722693E924425893F4A62D54A02D2@SN7PR12MB7226.namprd12.prod.outlook.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit"}}]