mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Chen, Zide" <zide.chen@intel.com>
To: Ian Rogers <irogers@google.com>,
	"Mi, Dapeng" <dapeng1.mi@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Andi Kleen <ak@linux.intel.com>,
	Eranian Stephane <eranian@google.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Xudong Hao <xudong.hao@intel.com>,
	Falcon Thomas <thomas.falcon@intel.com>
Subject: Re: [PATCH V2 11/13] perf pmu: Relax uncore wildcard matching to allow numeric suffix
Date: Wed, 21 Jan 2026 11:03:07 -0800	[thread overview]
Message-ID: <d8b6e506-a235-4d50-b223-bf979247c4ca@intel.com> (raw)
In-Reply-To: <CAP-5=fVVZbb0qSDw+geqbb2m0rtb4gS3xSgO-iK6hJp-R2MWLQ@mail.gmail.com>



On 1/21/2026 10:19 AM, Ian Rogers wrote:
> On Wed, Jan 21, 2026 at 6:33 AM Ian Rogers <irogers@google.com> wrote:
>>
>> On Wed, Jan 21, 2026 at 12:02 AM Mi, Dapeng <dapeng1.mi@linux.intel.com> wrote:
>>>
>>>
>>> On 1/21/2026 3:18 PM, Ian Rogers wrote:
>>>> On Wed, Dec 31, 2025 at 2:49 PM Zide Chen <zide.chen@intel.com> wrote:
>>>>> Diamond Rapids introduces two types of PCIe related uncore PMUs:
>>>>> "uncore_pcie4_*" and "uncore_pcie6_*".
>>>>>
>>>>> To ensure that generic PCIe events (e.g., UNC_PCIE_CLOCKTICKS) can match
>>>>> and collect events from both PMU types, slightly relax the wildcard
>>>>> matching logic in perf_pmu__match_wildcard().
>>>>>
>>>>> This change allows a wildcard such as "pcie" to match PMU names that
>>>>> include a numeric suffix, such as "pcie4_*" and "pcie6_*".
>>>>>
>>>>> Co-developed-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
>>>>> Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
>>>>> Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
>>>>> Signed-off-by: Zide Chen <zide.chen@intel.com>
>>>> Can we not merge this. I'd missed a perf tool patch as it was hiding
>>>> in a bunch of kernel uncore updates. At the very least if wildcard
>>>> conventions are updated then the corresponding documentation needs
>>>> updating:
>>>> Documentation/ABI/testing/sysfs-bus-event_source-devices
>>>
>>> Ian, thanks for the information. We didn't notice there is such
>>> documentation to describe the name. :(
>>>
>>> Besides the documentation, are there other comments? We can update it
>>> together. Thanks.
>>
>> The suffix handling is notoriously brittle. For example, ARM added hex
>> suffixes which are generally 12 characters of physical address rather
>> than the typical _0, _1, etc. What could go wrong? Well in some
>> situations ARM make their core PMU's follow the model name, so rather
>> than armv8_pmuv3_0 the core pmu is a name that ends with a model
>> number something like _a76, however, that is also a valid hex suffix.
>> So we have bumped the hex suffix to be at least 2 characters:
>> https://web.git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/pmus.c?h=tmp.perf-tools-next#n81
>> This also works around the naming of s390 PMUs (comments in the code).
>> ARM now have models like a720ae which would appear as a 5 character
>> hex suffix, and so this whole hex suffix thing is hanging together for
>> some part because we treat core and uncore PMUs differently. From my
>> pov, ideally the ARM uncore PMUs would have just used the _0, _1, etc.
>> naming convention and placed the physical address information into a
>> caps file, rather than trying to shoehorn it into the PMU name.
>> s390 pmu names have discrepancies that mean lots of their core PMUs
>> can match suffixes and Intel's i915 PMU name ("i915") will happily
>> match as just "i" as the underscore before the number is optional. A
>> change like this needs a range of testing on a variety of
>> architectures because the code has broken things in a lot of different
>> architecture types.
>>
>> Besides a lack of testing, going in through the wrong tree, the change
>> is changing suffix handling in one place but not all - at least
>> pmu_name_len_no_suffix wasn't updated. Let's get this out of the tree
>> and start again.
> 
> To be explicit, things that I think are broken by this change:
> 
> 1) ARM has PMUs called armv8_pmuv3_0, previously _0 would be the
> suffix and now 3_0 becomes the suffix. There may be other existing
> PMUs where this unintended behavioral change has happened. This may
> break output formatting but I think as the patch is incomplete that
> hasn't happened here.
> 
> 2) as pmu_name_len_no_suffix wasn't updated it and assuming a machine
> with uncore_pcie4_0, uncore_pcie4_1, uncore_pcie6_0, uncore_pcie6_1
> and a common data_read event, the wildcarding for "pcie/data_read/"
> should match the event on the 4 PMUs, however, rather than the PMU
> name with no suffix (what pmu_name_len_no_suffix gives) being
> uncore_pcie it will be either uncore_pcie4 or uncore_pcie6 depending
> on which event/evsel we get the PMU name for. As the output will show
> an aggregated amount the output for "perf stat -e pcie/data_read/ .."
> the output may show just 1 event "pcie4/data_read/" rather than
> "pcie/data_read/" as the suffix length calculation is off and the
> number before the underscore not removed. In this example, it makes it
> look like just 2 events on 2 PMUs were read rather than the full 4
> events.
> 
> So my point is, resolving this is complex and needs buy-in and testing
> from at least s390 and ARM. The easiest thing to do for now is to
> drop/revert the change.

Agreed. Thank you very much for pointing this out!


> Thanks,
> Ian
> 
>> Thanks,
>> Ian
>>
>>>>
>>>> Thanks,
>>>> Ian
>>>>
>>>>> ---
>>>>>  tools/perf/util/pmu.c | 14 ++++++++------
>>>>>  1 file changed, 8 insertions(+), 6 deletions(-)
>>>>>
>>>>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>>>>> index 956ea273c2c7..01a21b6aa031 100644
>>>>> --- a/tools/perf/util/pmu.c
>>>>> +++ b/tools/perf/util/pmu.c
>>>>> @@ -939,6 +939,7 @@ static bool perf_pmu__match_wildcard(const char *pmu_name, const char *tok)
>>>>>  {
>>>>>         const char *p, *suffix;
>>>>>         bool has_hex = false;
>>>>> +       bool has_underscore = false;
>>>>>         size_t tok_len = strlen(tok);
>>>>>
>>>>>         /* Check start of pmu_name for equality. */
>>>>> @@ -949,13 +950,14 @@ static bool perf_pmu__match_wildcard(const char *pmu_name, const char *tok)
>>>>>         if (*p == 0)
>>>>>                 return true;
>>>>>
>>>>> -       if (*p == '_') {
>>>>> -               ++p;
>>>>> -               ++suffix;
>>>>> -       }
>>>>> -
>>>>> -       /* Ensure we end in a number */
>>>>> +       /* Ensure we end in a number or a mix of number and "_". */
>>>>>         while (1) {
>>>>> +               if (!has_underscore && (*p == '_')) {
>>>>> +                       has_underscore = true;
>>>>> +                       ++p;
>>>>> +                       ++suffix;
>>>>> +               }
>>>>> +
>>>>>                 if (!isxdigit(*p))
>>>>>                         return false;
>>>>>                 if (!has_hex)
>>>>> --
>>>>> 2.52.0
>>>>>


  reply	other threads:[~2026-01-21 19:03 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-31 22:42 [PATCH V2 00/13] Add DMR/NVL and missing PTL uncore support Zide Chen
2025-12-31 22:42 ` [PATCH V2 01/13] perf/x86/intel/uncore: Move uncore discovery init struct to header Zide Chen
2026-01-04  1:47   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 02/13] perf/x86/intel/uncore: Support per-platform discovery base devices Zide Chen
2026-01-04  2:00   ` Mi, Dapeng
2026-01-06 11:01   ` Peter Zijlstra
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 03/13] perf/x86/intel/uncore: Remove has_generic_discovery_table() Zide Chen
2026-01-04  2:03   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 04/13] perf/x86/intel/uncore: Add IMH PMON support for Diamond Rapids Zide Chen
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 05/13] perf/x86/intel/uncore: Add CBB " Zide Chen
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 06/13] perf/x86/intel/uncore: Add domain global init callback Zide Chen
2026-01-04  2:26   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 07/13] perf/x86/intel/uncore: Add freerunning event descriptor helper macro Zide Chen
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 08/13] perf/x86/intel/uncore: Support IIO free-running counters on DMR Zide Chen
2026-01-04  2:31   ` Mi, Dapeng
2026-02-06  0:26     ` Chun-Tse Shao
2026-02-06  5:51       ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 09/13] perf/x86/intel/uncore: Support uncore constraint ranges Zide Chen
2026-01-04  2:36   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 10/13] perf/x86/intel/uncore: Update DMR uncore constraints preliminarily Zide Chen
2026-01-04  2:41   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 11/13] perf pmu: Relax uncore wildcard matching to allow numeric suffix Zide Chen
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-01-21  7:18   ` [PATCH V2 11/13] " Ian Rogers
2026-01-21  8:02     ` Mi, Dapeng
2026-01-21 14:33       ` Ian Rogers
2026-01-21 18:19         ` Ian Rogers
2026-01-21 19:03           ` Chen, Zide [this message]
2026-01-22  2:09             ` Mi, Dapeng
2026-01-22  7:10               ` Ian Rogers
2026-02-03 23:33                 ` Ian Rogers
2026-02-04 21:34                   ` Namhyung Kim
2025-12-31 22:42 ` [PATCH V2 12/13] perf/x86/intel/uncore: Add missing PMON units for Panther Lake Zide Chen
2026-01-04  2:48   ` Mi, Dapeng
2026-01-04  2:49   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2025-12-31 22:42 ` [PATCH V2 13/13] perf/x86/intel/uncore: Add Nova Lake support Zide Chen
2026-01-04  2:51   ` Mi, Dapeng
2026-01-12  8:03   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-01-06 15:08 ` [PATCH V2 00/13] Add DMR/NVL and missing PTL uncore support Peter Zijlstra
2026-01-06 21:19   ` Chen, Zide

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d8b6e506-a235-4d50-b223-bf979247c4ca@intel.com \
    --to=zide.chen@intel.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=dapeng1.mi@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=thomas.falcon@intel.com \
    --cc=xudong.hao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®