* [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places
@ 2026-06-12 1:24 Ian Rogers
2026-06-22 9:11 ` Qinxin Xia
2026-07-01 17:43 ` Namhyung Kim
0 siblings, 2 replies; 6+ messages in thread
From: Ian Rogers @ 2026-06-12 1:24 UTC (permalink / raw)
To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Jiri Olsa, Ian Rogers, Adrian Hunter, James Clark,
Dapeng Mi, Athira Rajeev, Thomas Falcon, Qinxin Xia,
linux-perf-users, linux-kernel
The python metrics code used in places like ilist.py passes a
pmu-filter of "default_core" on non-hybrid x86/ARM/.. systems. As a
PMU like "cpu" isn't a literal name match then no PMU matches
"default_core" and the events fail to parse for the metric. Fix the
name matching and PMU lookup for "default_core" and check that it
fixes ilist.py.
Fixes: 74e2dbe7be50 ("perf tools: Add --pmu-filter option for filtering PMUs")
Signed-off-by: Ian Rogers <irogers@google.com>
---
Note: this bug is in 7.1 but it is a little too late to send for the
release. It should get picked up via the fixes tag.
---
tools/perf/util/pmu.c | 6 +++++-
tools/perf/util/pmus.c | 2 ++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index a550f030b85d..836e3b5615cd 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -2660,8 +2660,12 @@ bool perf_pmu__wildcard_match(const struct perf_pmu *pmu, const char *wildcard_t
pmu->name,
pmu->alias_name,
};
- bool need_fnmatch = strisglob(wildcard_to_match);
+ bool need_fnmatch;
+ if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
+ return true;
+
+ need_fnmatch = strisglob(wildcard_to_match);
if (!strncmp(wildcard_to_match, "uncore_", 7))
wildcard_to_match += 7;
diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c
index 5e3f571450fe..e0a4cb2428ca 100644
--- a/tools/perf/util/pmus.c
+++ b/tools/perf/util/pmus.c
@@ -150,6 +150,8 @@ struct perf_pmu *perf_pmus__find(const char *name)
bool core_pmu;
unsigned int to_read_pmus = 0;
+ if (!strcmp(name, "default_core"))
+ return perf_pmus__find_core_pmu();
/*
* Once PMU is loaded it stays in the list,
* so we keep us from multiple reading/parsing
--
2.54.0.1136.gdb2ca164c4-goog
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places
2026-06-12 1:24 [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places Ian Rogers
@ 2026-06-22 9:11 ` Qinxin Xia
2026-06-22 17:53 ` Ian Rogers
2026-07-01 17:43 ` Namhyung Kim
1 sibling, 1 reply; 6+ messages in thread
From: Qinxin Xia @ 2026-06-22 9:11 UTC (permalink / raw)
To: Ian Rogers, Peter Zijlstra, Ingo Molnar,
Arnaldo Carvalho de Melo, Namhyung Kim, Jiri Olsa, Adrian Hunter,
James Clark, Dapeng Mi, Athira Rajeev, Thomas Falcon,
linux-perf-users, linux-kernel
On 2026/6/12 09:24:13, Ian Rogers <irogers@google.com> wrote:
> The python metrics code used in places like ilist.py passes a
> pmu-filter of "default_core" on non-hybrid x86/ARM/.. systems. As a
> PMU like "cpu" isn't a literal name match then no PMU matches
> "default_core" and the events fail to parse for the metric. Fix the
> name matching and PMU lookup for "default_core" and check that it
> fixes ilist.py.
>
> Fixes: 74e2dbe7be50 ("perf tools: Add --pmu-filter option for filtering PMUs")
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> Note: this bug is in 7.1 but it is a little too late to send for the
> release. It should get picked up via the fixes tag.
> ---
> tools/perf/util/pmu.c | 6 +++++-
> tools/perf/util/pmus.c | 2 ++
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index a550f030b85d..836e3b5615cd 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -2660,8 +2660,12 @@ bool perf_pmu__wildcard_match(const struct perf_pmu *pmu, const char *wildcard_t
> pmu->name,
> pmu->alias_name,
> };
> - bool need_fnmatch = strisglob(wildcard_to_match);
> + bool need_fnmatch;
>
> + if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
> + return true;
> +
> + need_fnmatch = strisglob(wildcard_to_match);
> if (!strncmp(wildcard_to_match, "uncore_", 7))
> wildcard_to_match += 7;
>
> diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c
> index 5e3f571450fe..e0a4cb2428ca 100644
> --- a/tools/perf/util/pmus.c
> +++ b/tools/perf/util/pmus.c
> @@ -150,6 +150,8 @@ struct perf_pmu *perf_pmus__find(const char *name)
> bool core_pmu;
> unsigned int to_read_pmus = 0;
>
> + if (!strcmp(name, "default_core"))
> + return perf_pmus__find_core_pmu();
> /*
> * Once PMU is loaded it stays in the list,
> * so we keep us from multiple reading/parsing
Thank you for the fix, Ian.
In the previous patch, I overlooked the handling of the "default_core"
alias. Also, perhaps we can leave need_fnmatch as-is, since it doesn't
seem to affect anything here.
--
Thanks,
Qinxin
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places
2026-06-22 9:11 ` Qinxin Xia
@ 2026-06-22 17:53 ` Ian Rogers
2026-06-23 6:22 ` Qinxin Xia
0 siblings, 1 reply; 6+ messages in thread
From: Ian Rogers @ 2026-06-22 17:53 UTC (permalink / raw)
To: Qinxin Xia
Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Jiri Olsa, Adrian Hunter, James Clark, Dapeng Mi,
Athira Rajeev, Thomas Falcon, linux-perf-users, linux-kernel
On Mon, Jun 22, 2026 at 2:11 AM Qinxin Xia <xiaqinxin@huawei.com> wrote:
>
>
>
> On 2026/6/12 09:24:13, Ian Rogers <irogers@google.com> wrote:
> > The python metrics code used in places like ilist.py passes a
> > pmu-filter of "default_core" on non-hybrid x86/ARM/.. systems. As a
> > PMU like "cpu" isn't a literal name match then no PMU matches
> > "default_core" and the events fail to parse for the metric. Fix the
> > name matching and PMU lookup for "default_core" and check that it
> > fixes ilist.py.
> >
> > Fixes: 74e2dbe7be50 ("perf tools: Add --pmu-filter option for filtering PMUs")
> > Signed-off-by: Ian Rogers <irogers@google.com>
> > ---
> > Note: this bug is in 7.1 but it is a little too late to send for the
> > release. It should get picked up via the fixes tag.
> > ---
> > tools/perf/util/pmu.c | 6 +++++-
> > tools/perf/util/pmus.c | 2 ++
> > 2 files changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> > index a550f030b85d..836e3b5615cd 100644
> > --- a/tools/perf/util/pmu.c
> > +++ b/tools/perf/util/pmu.c
> > @@ -2660,8 +2660,12 @@ bool perf_pmu__wildcard_match(const struct perf_pmu *pmu, const char *wildcard_t
> > pmu->name,
> > pmu->alias_name,
> > };
> > - bool need_fnmatch = strisglob(wildcard_to_match);
> > + bool need_fnmatch;
> >
> > + if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
> > + return true;
> > +
> > + need_fnmatch = strisglob(wildcard_to_match);
> > if (!strncmp(wildcard_to_match, "uncore_", 7))
> > wildcard_to_match += 7;
> >
> > diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c
> > index 5e3f571450fe..e0a4cb2428ca 100644
> > --- a/tools/perf/util/pmus.c
> > +++ b/tools/perf/util/pmus.c
> > @@ -150,6 +150,8 @@ struct perf_pmu *perf_pmus__find(const char *name)
> > bool core_pmu;
> > unsigned int to_read_pmus = 0;
> >
> > + if (!strcmp(name, "default_core"))
> > + return perf_pmus__find_core_pmu();
> > /*
> > * Once PMU is loaded it stays in the list,
> > * so we keep us from multiple reading/parsing
>
> Thank you for the fix, Ian.
> In the previous patch, I overlooked the handling of the "default_core"
> alias. Also, perhaps we can leave need_fnmatch as-is, since it doesn't
> seem to affect anything here.
Thanks. I moved need_fnmatch's initialization just to save some work
in the "default_core" case where the value is unused. While leaving it
in place would reduce the diff, I think the optimization is worth it
as we would otherwise call strisglob when say iterating all metrics.
Would it be okay to supply a Reviewed-by tag? I notice this fix is
missing from perf-tools-next.
Thanks!
Ian
> --
> Thanks,
> Qinxin
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places
2026-06-22 17:53 ` Ian Rogers
@ 2026-06-23 6:22 ` Qinxin Xia
2026-06-27 1:49 ` Ian Rogers
0 siblings, 1 reply; 6+ messages in thread
From: Qinxin Xia @ 2026-06-23 6:22 UTC (permalink / raw)
To: Ian Rogers
Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Jiri Olsa, Adrian Hunter, James Clark, Dapeng Mi,
Athira Rajeev, Thomas Falcon, linux-perf-users, linux-kernel
On 2026/6/23 01:53:52, Ian Rogers <irogers@google.com> wrote:
> On Mon, Jun 22, 2026 at 2:11 AM Qinxin Xia<xiaqinxin@huawei.com> wrote:
>>
>>
>> On 2026/6/12 09:24:13, Ian Rogers<irogers@google.com> wrote:
>>> The python metrics code used in places like ilist.py passes a
>>> pmu-filter of "default_core" on non-hybrid x86/ARM/.. systems. As a
>>> PMU like "cpu" isn't a literal name match then no PMU matches
>>> "default_core" and the events fail to parse for the metric. Fix the
>>> name matching and PMU lookup for "default_core" and check that it
>>> fixes ilist.py.
>>>
>>> Fixes: 74e2dbe7be50 ("perf tools: Add --pmu-filter option for filtering PMUs")
>>> Signed-off-by: Ian Rogers<irogers@google.com>
>>> ---
>>> Note: this bug is in 7.1 but it is a little too late to send for the
>>> release. It should get picked up via the fixes tag.
>>> ---
>>> tools/perf/util/pmu.c | 6 +++++-
>>> tools/perf/util/pmus.c | 2 ++
>>> 2 files changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>>> index a550f030b85d..836e3b5615cd 100644
>>> --- a/tools/perf/util/pmu.c
>>> +++ b/tools/perf/util/pmu.c
>>> @@ -2660,8 +2660,12 @@ bool perf_pmu__wildcard_match(const struct perf_pmu *pmu, const char *wildcard_t
>>> pmu->name,
>>> pmu->alias_name,
>>> };
>>> - bool need_fnmatch = strisglob(wildcard_to_match);
>>> + bool need_fnmatch;
>>>
>>> + if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
>>> + return true;
>>> +
>>> + need_fnmatch = strisglob(wildcard_to_match);
>>> if (!strncmp(wildcard_to_match, "uncore_", 7))
>>> wildcard_to_match += 7;
>>>
>>> diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c
>>> index 5e3f571450fe..e0a4cb2428ca 100644
>>> --- a/tools/perf/util/pmus.c
>>> +++ b/tools/perf/util/pmus.c
>>> @@ -150,6 +150,8 @@ struct perf_pmu *perf_pmus__find(const char *name)
>>> bool core_pmu;
>>> unsigned int to_read_pmus = 0;
>>>
>>> + if (!strcmp(name, "default_core"))
>>> + return perf_pmus__find_core_pmu();
>>> /*
>>> * Once PMU is loaded it stays in the list,
>>> * so we keep us from multiple reading/parsing
>> Thank you for the fix, Ian.
>> In the previous patch, I overlooked the handling of the "default_core"
>> alias. Also, perhaps we can leave need_fnmatch as-is, since it doesn't
>> seem to affect anything here.
> Thanks. I moved need_fnmatch's initialization just to save some work
> in the "default_core" case where the value is unused. While leaving it
> in place would reduce the diff, I think the optimization is worth it
> as we would otherwise call strisglob when say iterating all metrics.
>
Perhaps we can do it this way:
if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
return true;
bool need_fnmatch = strisglob(wildcard_to_match);
> Would it be okay to supply a Reviewed-by tag? I notice this fix is
> missing from perf-tools-next.
>
Sure, add my Reviewed‑by.:-)
> Thanks!
> Ian
>
>> --
>> Thanks,
>> Qinxin
--
Thanks,
Qinxin
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places
2026-06-23 6:22 ` Qinxin Xia
@ 2026-06-27 1:49 ` Ian Rogers
0 siblings, 0 replies; 6+ messages in thread
From: Ian Rogers @ 2026-06-27 1:49 UTC (permalink / raw)
To: Qinxin Xia
Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Jiri Olsa, Adrian Hunter, James Clark, Dapeng Mi,
Athira Rajeev, Thomas Falcon, linux-perf-users, linux-kernel
On Mon, Jun 22, 2026 at 11:22 PM Qinxin Xia <xiaqinxin@huawei.com> wrote:
>
>
>
> On 2026/6/23 01:53:52, Ian Rogers <irogers@google.com> wrote:
> > On Mon, Jun 22, 2026 at 2:11 AM Qinxin Xia<xiaqinxin@huawei.com> wrote:
> >>
> >>
> >> On 2026/6/12 09:24:13, Ian Rogers<irogers@google.com> wrote:
> >>> The python metrics code used in places like ilist.py passes a
> >>> pmu-filter of "default_core" on non-hybrid x86/ARM/.. systems. As a
> >>> PMU like "cpu" isn't a literal name match then no PMU matches
> >>> "default_core" and the events fail to parse for the metric. Fix the
> >>> name matching and PMU lookup for "default_core" and check that it
> >>> fixes ilist.py.
> >>>
> >>> Fixes: 74e2dbe7be50 ("perf tools: Add --pmu-filter option for filtering PMUs")
> >>> Signed-off-by: Ian Rogers<irogers@google.com>
> >>> ---
> >>> Note: this bug is in 7.1 but it is a little too late to send for the
> >>> release. It should get picked up via the fixes tag.
> >>> ---
> >>> tools/perf/util/pmu.c | 6 +++++-
> >>> tools/perf/util/pmus.c | 2 ++
> >>> 2 files changed, 7 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> >>> index a550f030b85d..836e3b5615cd 100644
> >>> --- a/tools/perf/util/pmu.c
> >>> +++ b/tools/perf/util/pmu.c
> >>> @@ -2660,8 +2660,12 @@ bool perf_pmu__wildcard_match(const struct perf_pmu *pmu, const char *wildcard_t
> >>> pmu->name,
> >>> pmu->alias_name,
> >>> };
> >>> - bool need_fnmatch = strisglob(wildcard_to_match);
> >>> + bool need_fnmatch;
> >>>
> >>> + if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
> >>> + return true;
> >>> +
> >>> + need_fnmatch = strisglob(wildcard_to_match);
> >>> if (!strncmp(wildcard_to_match, "uncore_", 7))
> >>> wildcard_to_match += 7;
> >>>
> >>> diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c
> >>> index 5e3f571450fe..e0a4cb2428ca 100644
> >>> --- a/tools/perf/util/pmus.c
> >>> +++ b/tools/perf/util/pmus.c
> >>> @@ -150,6 +150,8 @@ struct perf_pmu *perf_pmus__find(const char *name)
> >>> bool core_pmu;
> >>> unsigned int to_read_pmus = 0;
> >>>
> >>> + if (!strcmp(name, "default_core"))
> >>> + return perf_pmus__find_core_pmu();
> >>> /*
> >>> * Once PMU is loaded it stays in the list,
> >>> * so we keep us from multiple reading/parsing
> >> Thank you for the fix, Ian.
> >> In the previous patch, I overlooked the handling of the "default_core"
> >> alias. Also, perhaps we can leave need_fnmatch as-is, since it doesn't
> >> seem to affect anything here.
> > Thanks. I moved need_fnmatch's initialization just to save some work
> > in the "default_core" case where the value is unused. While leaving it
> > in place would reduce the diff, I think the optimization is worth it
> > as we would otherwise call strisglob when say iterating all metrics.
> >
> Perhaps we can do it this way:
> if (pmu->is_core && !strcmp(wildcard_to_match, "default_core"))
> return true;
>
> bool need_fnmatch = strisglob(wildcard_to_match);
Unfortunately we require variables to be declared at the top of
blocks/functions.
> > Would it be okay to supply a Reviewed-by tag? I notice this fix is
> > missing from perf-tools-next.
> >
> Sure, add my Reviewed‑by.:-)
Thanks,
Ian
>
> > Thanks!
> > Ian
> >
> >> --
> >> Thanks,
> >> Qinxin
>
> --
> Thanks,
> Qinxin
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places
2026-06-12 1:24 [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places Ian Rogers
2026-06-22 9:11 ` Qinxin Xia
@ 2026-07-01 17:43 ` Namhyung Kim
1 sibling, 0 replies; 6+ messages in thread
From: Namhyung Kim @ 2026-07-01 17:43 UTC (permalink / raw)
To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Jiri Olsa,
Adrian Hunter, James Clark, Dapeng Mi, Athira Rajeev,
Thomas Falcon, Qinxin Xia, linux-perf-users, linux-kernel,
Ian Rogers
On Thu, 11 Jun 2026 18:24:13 -0700, Ian Rogers wrote:
> The python metrics code used in places like ilist.py passes a
> pmu-filter of "default_core" on non-hybrid x86/ARM/.. systems. As a
> PMU like "cpu" isn't a literal name match then no PMU matches
> "default_core" and the events fail to parse for the metric. Fix the
> name matching and PMU lookup for "default_core" and check that it
> fixes ilist.py.
>
> [...]
Applied to perf-tools-next, thanks!
Best regards,
Namhyung
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-07-01 17:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-12 1:24 [PATCH v1] perf pmu: Recognize default_core as a core PMU in more places Ian Rogers
2026-06-22 9:11 ` Qinxin Xia
2026-06-22 17:53 ` Ian Rogers
2026-06-23 6:22 ` Qinxin Xia
2026-06-27 1:49 ` Ian Rogers
2026-07-01 17:43 ` Namhyung Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox