perf test: fix failing test cases on linux-next for s390

Message ID 20230616081437.1932003-1-tmricht@linux.ibm.com
State New
Headers
Series perf test: fix failing test cases on linux-next for s390 |

Commit Message

Thomas Richter June 16, 2023, 8:14 a.m. UTC
  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 <tmricht@linux.ibm.com>
Cc: Ian Rogers <irogers@google.com>
---
 tools/perf/util/pmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Arnaldo Carvalho de Melo June 16, 2023, 1:13 p.m. UTC | #1
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@linux.ibm.com>
> Cc: Ian Rogers <irogers@google.com>
> ---
>  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
>
  
Ian Rogers June 16, 2023, 8:48 p.m. UTC | #2
On Fri, Jun 16, 2023 at 6:13 AM Arnaldo Carvalho de Melo
<acme@kernel.org> 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/20230527072210.2900565-30-irogers@google.com/
9d6a1df9b2ee ("perf pmus: Allow just core PMU scanning")

Acked-by: Ian Rogers <irogers@google.com>

Thanks,
Ian

> - Arnaldo
>
> > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
> > Cc: Ian Rogers <irogers@google.com>
> > ---
> >  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 Carvalho de Melo June 16, 2023, 9:46 p.m. UTC | #3
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
> <acme@kernel.org> 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/20230527072210.2900565-30-irogers@google.com/
> 9d6a1df9b2ee ("perf pmus: Allow just core PMU scanning")
> 
> Acked-by: Ian Rogers <irogers@google.com>

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 <tmricht@linux.ibm.com>
> > > Cc: Ian Rogers <irogers@google.com>
> > > ---
> > >  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
  
Thomas Richter June 19, 2023, 7:58 a.m. UTC | #4
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 <tmricht@linux.ibm.com>
>> Cc: Ian Rogers <irogers@google.com>
>> ---
>>  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
>>
>
  

Patch

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)