2023-06-16 08:28:27

by Thomas Richter

[permalink] [raw]
Subject: [PATCH] perf test: fix failing test cases on linux-next for s390

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.

Signed-off-by: Thomas Richter <[email protected]>
Cc: Ian Rogers <[email protected]>
---
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



2023-06-16 13:20:48

by Arnaldo Carvalho de Melo

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

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 <[email protected]>
> Cc: Ian Rogers <[email protected]>
> ---
> 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

2023-06-16 21:24:14

by Ian Rogers

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

On Fri, Jun 16, 2023 at 6:13 AM Arnaldo Carvalho de Melo
<[email protected]> wrote:
>
> 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?

I suspect:
https://lore.kernel.org/all/[email protected]/
9d6a1df9b2ee ("perf pmus: Allow just core PMU scanning")

Acked-by: Ian Rogers <[email protected]>

Thanks,
Ian

> - Arnaldo
>
> > Signed-off-by: Thomas Richter <[email protected]>
> > Cc: Ian Rogers <[email protected]>
> > ---
> > 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

2023-06-16 21:51:58

by Arnaldo Carvalho de Melo

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

Em Fri, Jun 16, 2023 at 01:48:45PM -0700, Ian Rogers escreveu:
> On Fri, Jun 16, 2023 at 6:13 AM Arnaldo Carvalho de Melo
> <[email protected]> wrote:
> >
> > 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?
>
> I suspect:
> https://lore.kernel.org/all/[email protected]/
> 9d6a1df9b2ee ("perf pmus: Allow just core PMU scanning")
>
> Acked-by: Ian Rogers <[email protected]>

I already pushed to perf-tools-next, but this acked/fixes is reachable
via the Link tag.

Thanks for checking and acking!

- Arnaldo

> Thanks,
> Ian
>
> > - Arnaldo
> >
> > > Signed-off-by: Thomas Richter <[email protected]>
> > > Cc: Ian Rogers <[email protected]>
> > > ---
> > > 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

--

- Arnaldo

2023-06-19 08:06:55

by Thomas Richter

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

On 6/16/23 15:13, Arnaldo Carvalho de Melo wrote:
> 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

Thanks for picking this patch, I noticed it is already in linux-next tree.

No I did not do the bisect. That first patch info came from Ian Rogers.

>
>> Signed-off-by: Thomas Richter <[email protected]>
>> Cc: Ian Rogers <[email protected]>
>> ---
>> 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
>>
>

--
Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany
--
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294