Re: [PATCH v10 22/29] perf s390-sample-raw: Don't pass evsel or its PMU with sample
From: Namhyung Kim
Date: Mon Apr 13 2026 - 12:54:43 EST
On Sat, Apr 11, 2026 at 07:08:25PM -0700, Ian Rogers wrote:
> The sample contains the evsel and its PMU so it is unnecessary to pass
> the evsel as well.
This patch is changed to minimize the diff.
Thanks,
Namhyung
>
> Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> ---
> tools/perf/util/s390-sample-raw.c | 31 +++++++++++++++++--------------
> 1 file changed, 17 insertions(+), 14 deletions(-)
>
> diff --git a/tools/perf/util/s390-sample-raw.c b/tools/perf/util/s390-sample-raw.c
> index c6ae0ae8d86a..52bbca5c56c8 100644
> --- a/tools/perf/util/s390-sample-raw.c
> +++ b/tools/perf/util/s390-sample-raw.c
> @@ -222,8 +222,9 @@ static char *get_counter_name(int set, int nr, struct perf_pmu *pmu)
> return result;
> }
>
> -static void s390_cpumcfdg_dump(struct perf_pmu *pmu, struct perf_sample *sample)
> +static void s390_cpumcfdg_dump(struct perf_sample *sample)
> {
> + struct perf_pmu *pmu = sample->evsel->pmu;
> size_t i, len = sample->raw_size, offset = 0;
> unsigned char *buf = sample->raw_data;
> const char *color = PERF_COLOR_BLUE;
> @@ -284,8 +285,9 @@ static bool s390_pai_all_test(struct perf_sample *sample)
> return true;
> }
>
> -static void s390_pai_all_dump(struct evsel *evsel, struct perf_sample *sample)
> +static void s390_pai_all_dump(struct perf_sample *sample)
> {
> + struct evsel *evsel = sample->evsel;
> size_t len = sample->raw_size, offset = 0;
> unsigned char *p = sample->raw_data;
> const char *color = PERF_COLOR_BLUE;
> @@ -332,31 +334,32 @@ void evlist__s390_sample_raw(struct evlist *evlist, union perf_event *event,
> struct perf_sample *sample)
> {
> const char *pai_name;
> - struct evsel *evsel;
>
> if (event->header.type != PERF_RECORD_SAMPLE)
> return;
>
> - evsel = evlist__event2evsel(evlist, event);
> - if (!evsel)
> - return;
> + if (!sample->evsel) {
> + sample->evsel = evlist__event2evsel(evlist, event);
> + if (!sample->evsel)
> + return;
> + }
>
> /* Check for raw data in sample */
> if (!sample->raw_size || !sample->raw_data)
> return;
>
> /* Display raw data on screen */
> - if (evsel->core.attr.config == PERF_EVENT_CPUM_CF_DIAG) {
> - if (!evsel->pmu)
> - evsel->pmu = perf_pmus__find("cpum_cf");
> + if (sample->evsel->core.attr.config == PERF_EVENT_CPUM_CF_DIAG) {
> + if (!sample->evsel->pmu)
> + sample->evsel->pmu = perf_pmus__find("cpum_cf");
> if (!s390_cpumcfdg_testctr(sample))
> pr_err("Invalid counter set data encountered\n");
> else
> - s390_cpumcfdg_dump(evsel->pmu, sample);
> + s390_cpumcfdg_dump(sample);
> return;
> }
>
> - switch (evsel->core.attr.config) {
> + switch (sample->evsel->core.attr.config) {
> case PERF_EVENT_PAI_NNPA_ALL:
> pai_name = "NNPA_ALL";
> break;
> @@ -370,8 +373,8 @@ void evlist__s390_sample_raw(struct evlist *evlist, union perf_event *event,
> if (!s390_pai_all_test(sample)) {
> pr_err("Invalid %s raw data encountered\n", pai_name);
> } else {
> - if (!evsel->pmu)
> - evsel->pmu = perf_pmus__find_by_type(evsel->core.attr.type);
> - s390_pai_all_dump(evsel, sample);
> + if (!sample->evsel->pmu)
> + sample->evsel->pmu = perf_pmus__find_by_type(sample->evsel->core.attr.type);
> + s390_pai_all_dump(sample);
> }
> }
> --
> 2.53.0.1213.gd9a14994de-goog
>