Re: [PATCH v10 22/29] perf s390-sample-raw: Don't pass evsel or its PMU with sample
From: Ian Rogers
Date: Mon Apr 13 2026 - 13:05:25 EST
On Mon, Apr 13, 2026 at 9:41 AM Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> 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.
I'm not sure what this means as the patch already attempted to
minimize the diff. I'm worried that not sending changes to my patches
via the list introduces errors because they don't go through Sashiko.
Thanks,
Ian
> 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
> >