diff options
| author | Thomas Richter <[email protected]> | 2021-11-29 12:23:39 +0100 | 
|---|---|---|
| committer | Arnaldo Carvalho de Melo <[email protected]> | 2021-12-06 21:57:53 -0300 | 
| commit | 6c481031c9f71e2b0ff9c49d21116a38ca671746 (patch) | |
| tree | b0d3ec67dba16da43ef5b59ad8796feefda5500c /tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace | |
| parent | 3d1d57debee2d342a47615707588b96658fabb85 (diff) | |
perf test: Fix 'Simple expression parser' test on arch without CPU die topology info
Some platforms do not have CPU die support, for example s390.
Commit
Cc: Ian Rogers <[email protected]>
Fixes: fdf1e29b6118c18f ("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 and check if the function build_cpu_topology() did build up
a die_cpus_list. The number of entries in this list should be larger
than 0. If the number of list element is zero, the die_cpus_list has
not been created and the check in function test__expr():
    TEST_ASSERT_VAL("#num_dies >= #num_packages", \
		    num_dies >= num_packages)
always fails.
Output after:
  # perf test -Fv 7
   7: Simple expression parser                                        :
   --- start ---
   division by zero
   syntax error
   ---- end ----
   Simple expression parser: Ok
  #
Fixes: fdf1e29b6118c18f ("perf expr: Add metric literals for topology.")
Signed-off-by: Thomas Richter <[email protected]>
Acked-by: Ian Rogers <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Sumanth Korikkar <[email protected]>
Cc: Sven Schnelle <[email protected]>
Cc: Vasily Gorbik <[email protected]>
Link: http://lore.kernel.org/lkml/[email protected]
[ Added comment in the added 'if (num_dies)' line about architectures not having die topology ]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
0 files changed, 0 insertions, 0 deletions