]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf parse-events: Always track user config changes
authorJames Clark <james.clark@linaro.org>
Wed, 14 Jan 2026 15:57:20 +0000 (15:57 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 15 Jan 2026 02:15:37 +0000 (23:15 -0300)
Requiring the 'pmu->perf_event_attr_init_default' callback to be set to
track user changes is a bit of a trap to fall in. It's hard to see that
this is required when depending on the user change tracking.

It's possible to want all 0 defaults so not set it, but at the same time
still do some programmatic setting of configs with
evsel__set_config_if_unset(). Also if a PMU reverts to 0 defaults and
deletes its existing callback, it will silently break existing uses of
evsel__set_config_if_unset().

One way to fix this would be to assert in evsel__set_config_if_unset()
if the changes weren't tracked, but that would be a possibly untested
runtime failure. Instead, always track it as it's harmless and
simplifies testing too.

Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: James Clark <james.clark@linaro.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.g.garry@oracle.com>
Cc: Leo Yan <leo.yan@linux.dev>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/parse-events.c

index 1f6e2213326d6379ac13db3053636123bb5d6f28..c8f2962a06c7f37dfb33ca596c0e66cf3fa8b414 100644 (file)
@@ -1528,12 +1528,8 @@ static int parse_events_add_pmu(struct parse_events_state *parse_state,
                return -ENOMEM;
        }
 
-       /*
-        * When using default config, record which bits of attr->config were
-        * changed by the user.
-        */
-       if (pmu->perf_event_attr_init_default &&
-           get_config_chgs(pmu, &parsed_terms, &config_terms)) {
+       /* Record which bits of attr->config were changed by the user. */
+       if (get_config_chgs(pmu, &parsed_terms, &config_terms)) {
                parse_events_terms__exit(&parsed_terms);
                return -ENOMEM;
        }