Messages in this thread | | | Date | Fri, 14 Jan 2022 11:51:38 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH] tools/perf: Fix perf test 7 Simple expression parser on s390 |
| |
Em Wed, Nov 24, 2021 at 07:41:40AM -0800, Ian Rogers escreveu: > On Wed, Nov 24, 2021 at 1:04 AM Thomas Richter <tmricht@linux.ibm.com> wrote: > > > > Commit fdf1e29b6118 ("perf expr: Add metric literals for topology.") > > fails on s390: > > # ./perf test -Fv 7 > > ... > > # FAILED tests/expr.c:173 #num_dies >= #num_packages > > ---- end ---- > > Simple expression parser: FAILED! > > # > > > > Investigating this issue leads to these functions: > > build_cpu_topology() > > +--> has_die_topology(void) > > { > > struct utsname uts; > > > > if (uname(&uts) < 0) > > return false; > > if (strncmp(uts.machine, "x86_64", 6)) > > return false; > > .... > > } > > > > which always returns false on s390. The caller build_cpu_topology() > > checks has_die_topology() return value. On false the > > the struct cpu_topology::die_cpu_list is not contructed and has zero > > entries. This leads to the failing comparison: #num_dies >= #num_packages. > > s390 of course has a positive number of packages. > > > > Fix this by adding s390 architecture to support CPU die list.
Thanks, applied.
- Arnaldo
> > Output after: > > # ./perf test -Fv 7 > > 7: Simple expression parser : > > --- start --- > > division by zero > > syntax error > > ---- end ---- > > Simple expression parser: Ok > > # > > Cc: Ian Rogers <irogers@google.com> > > Fixes: fdf1e29b6118 ("perf expr: Add metric literals for topology.") > > > > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> > > Reviewed-by: Ian Rogers <irogers@google.com> > > Thanks! > Ian > > > --- > > tools/perf/util/cputopo.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/tools/perf/util/cputopo.c b/tools/perf/util/cputopo.c > > index 51b429c86f98..aad7a9e6e31b 100644 > > --- a/tools/perf/util/cputopo.c > > +++ b/tools/perf/util/cputopo.c > > @@ -165,7 +165,8 @@ static bool has_die_topology(void) > > if (uname(&uts) < 0) > > return false; > > > > - if (strncmp(uts.machine, "x86_64", 6)) > > + if (strncmp(uts.machine, "x86_64", 6) && > > + strncmp(uts.machine, "s390x", 5)) > > return false; > > > > scnprintf(filename, MAXPATHLEN, DIE_CPUS_FMT, > > -- > > 2.31.1 > >
--
- Arnaldo
| |