Re: [PATCH V4 1/2] tools/perf: Fix the check for parameterized field in event term
From: Athira Rajeev <hidden>
Date: 2026-06-04 15:12:48
Also in:
linux-perf-users
On 21 May 2026, at 12:07 PM, Athira Rajeev [off-list ref] wrote:quoted
On 4 May 2026, at 9:12 PM, Athira Rajeev [off-list ref] wrote: The format_alias() function in util/pmu.c has a check to detect whether the event has parameterized field ( =? ). The string alias->terms contains the event and if the event has user configurable parameter, there will be presence of sub string "=?" in the alias->terms. Snippet of code: /* Paramemterized events have the parameters shown. */ if (strstr(alias->terms, "=?")) { /* No parameters. */ snprintf(buf, len, "%.*s/%s/", (int)pmu_name_len, pmu->name, alias->name); if "strstr" contains the substring, it returns a pointer and hence enters the above check which is not the expected check. And hence "perf list" doesn't have the parameterized fields in the result. Fix this check to use: if (!strstr(alias->terms, "=?")) { With this change, perf list shows the events correctly with the strings showing parameters. Before the fix: # ./perf list|grep -w PM_PAU_CYC hv_24x7/PM_PAU_CYC/ [Kernel PMU event] With this fix: # ./perf list|grep -w PM_PAU_CYC hv_24x7/PM_PAU_CYC,chip=?/ [Kernel PMU event] Signed-off-by: Athira Rajeev <redacted>Hi, Can we please have this pulled in, if the changes looks fine. Thanks Athira
Hi, Looking for any further review comments on this patchset. Please suggest if any changes needs to be addressed. Thanks Athira
quoted
--- Changelog: v3 -> v4: Updated commit message to show real example addressing review comment from Namhyung. v2 -> v3: Split the strstr correction in a single patch tools/perf/util/pmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 23337d2fa281..0b8d58543f17 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c@@ -2117,7 +2117,7 @@ static char *format_alias(char *buf, int len, const struct perf_pmu *pmu, skip_duplicate_pmus);/* Paramemterized events have the parameters shown. */ - if (strstr(alias->terms, "=?")) { + if (!strstr(alias->terms, "=?")) { /* No parameters. */ snprintf(buf, len, "%.*s/%s/", (int)pmu_name_len, pmu->name, alias->name); return buf; -- 2.47.3