Re: [PATCH] perf test: fix failing test cases on linux-next for s390

From: Arnaldo Carvalho de Melo
Date: Fri Jun 16 2023 - 09:13:35 EST


Em Fri, Jun 16, 2023 at 10:14:37AM +0200, Thomas Richter escreveu:
> In linux-next tree the many test cases fail on s390x when running the
> perf test suite, sometime the perf tool dumps core.
>
> Output before:
> 6.1: Test event parsing : FAILED!
> 10.3: Parsing of PMU event table metrics : FAILED!
> 10.4: Parsing of PMU event table metrics with fake PMUs: FAILED!
> 17: Setup struct perf_event_attr : FAILED!
> 24: Number of exit events of a simple workload : FAILED!
> 26: Object code reading : FAILED!
> 28: Use a dummy software event to keep tracking : FAILED!
> 35: Track with sched_switch : FAILED!
> 42.3: BPF prologue generation : FAILED!
> 66: Parse and process metrics : FAILED!
> 68: Event expansion for cgroups : FAILED!
> 69.2: Perf time to TSC : FAILED!
> 74: build id cache operations : FAILED!
> 86: Zstd perf.data compression/decompression : FAILED!
> 87: perf record tests : FAILED!
> 106: Test java symbol : FAILED!
>
> The reason for all these failure is a missing PMU. On s390x
> the PMU is named cpum_cf which is not detected as core PMU.
> A similar patch was added before, see
> commit 9bacbced0e32 ("perf list: Add s390 support for detailed PMU event description")
> which got lost during the recent reworks. Add it again.
>
> Output after:
> 10.2: PMU event map aliases : FAILED!
> 42.3: BPF prologue generation : FAILED!
>
> Most test cases now work and there is not core dump anymore.

So you're not fixing 'perf test', that is just what detects the problem,
the part being fixed is the PMU code, so I'm rewriting the patch subject
to:

[PATCH] perf pmu: Fix core PMU detection on s/390

Have you bisected the problem to the first patch where this problem
appears?

- Arnaldo

> Signed-off-by: Thomas Richter <tmricht@xxxxxxxxxxxxx>
> Cc: Ian Rogers <irogers@xxxxxxxxxx>
> ---
> 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 fe64ad292d36..6142e4710a2f 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -1419,7 +1419,7 @@ void perf_pmu__del_formats(struct list_head *formats)
>
> bool is_pmu_core(const char *name)
> {
> - return !strcmp(name, "cpu") || is_sysfs_pmu_core(name);
> + return !strcmp(name, "cpu") || !strcmp(name, "cpum_cf") || is_sysfs_pmu_core(name);
> }
>
> bool perf_pmu__supports_legacy_cache(const struct perf_pmu *pmu)
> --
> 2.39.2
>

--

- Arnaldo