1
0
Fork 0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-01-23 08:35:19 -05:00
linux/tools/perf/tests
Thomas Richter b6d8b858db perf test: test case 'Setup struct perf_event_attr' fails on s390 on z/vm
perf test 17 'Setup struct perf_event_attr' fails on s390 z/VM guest,
using linux-next kernel.

Root cause is the fall-back from hardware counter cycles

   perf_event_attr:
    type                             0 (PERF_TYPE_HARDWARE)
    size                             136
    config                           0 (PERF_COUNT_HW_CPU_CYCLES)
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|ADDR|PERIOD|DATA_SRC
    read_format                      ID|LOST

which returns -ENOENT on s390 z/VM guest. This causes the code to fall
back to software counter task-clock, as can be seen in the debug output:

  ------------------------------------------------------------
   perf_event_attr:
    type                             1 (PERF_TYPE_SOFTWARE)
    size                             136
    config                           0x1 (PERF_COUNT_SW_TASK_CLOCK) <-here
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|ADDR|PERIOD|DATA_SRC
    read_format                      ID|LOST

This succeeds on s390 z/VM guest.

This successful installation of the counter task-clock is not listed in
the expected results and the test case fails.

This is caused by commit eb2eac0c7b ("perf evsel: Fallback to
"task-clock" when not system wide") which introduced fall back from
event 'cycles' to event 'task-clock'.

To fix this on s390 allow event number 0 (cycles) and event number 1
(task-clock) as expected result.

Output before:

  # ./perf test -Fv 17
  17: Setup struct perf_event_attr                                    :
  --- start ---
  running './tests/attr/test-stat-group1'
  unsupp  './tests/attr/test-stat-group1'
  running './tests/attr/test-record-graph-default'
  test limitation '!aarch64'
  excluded architecture list ['aarch64']
  expected config=0, got 1
  FAILED './tests/attr/test-record-graph-default' - match failure
  ---- end ----
  Setup struct perf_event_attr: FAILED!
  #

Output after:

  # ./perf test -F 17
  17: Setup struct perf_event_attr               : Ok
  #

Fixes: eb2eac0c7b ("perf evsel: Fallback to "task-clock" when not system wide")
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Link: https://lore.kernel.org/r/20231219143235.1075522-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2024-01-04 18:44:53 -03:00
..
attr perf test: test case 'Setup struct perf_event_attr' fails on s390 on z/vm 2024-01-04 18:44:53 -03:00
config-fragments
shell perf tests: Add perf script test 2024-01-04 18:29:17 -03:00
workloads perf test: Remove atomics from test_loop to avoid test failures 2023-11-27 10:21:06 -03:00
api-io.c
attr.c
attr.py
backward-ring-buffer.c
bitmap.c
bp_account.c
bp_signal.c
bp_signal_overflow.c
Build perf build: Shellcheck support for OUTPUT directory 2023-12-05 15:46:43 -03:00
builtin-test-list.c
builtin-test-list.h
builtin-test.c perf tests: Make DSO tests a suite rather than individual 2023-12-18 21:34:36 -03:00
code-reading.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
cpumap.c libperf cpumap: Rename perf_cpu_map__dummy_new() to perf_cpu_map__new_any_cpu() 2023-12-12 14:01:47 -03:00
demangle-java-test.c
demangle-ocaml-test.c
dlfilter-test.c
dso-data.c perf tests: Make DSO tests a suite rather than individual 2023-12-18 21:34:36 -03:00
dwarf-unwind.c
event-times.c
event_groups.c
event_update.c
evsel-roundtrip-name.c
evsel-tp-sched.c
expand-cgroup.c
expr.c
fdarray.c
genelf.c
hists_common.c
hists_common.h
hists_cumulate.c
hists_filter.c
hists_link.c
hists_output.c
is_printable_array.c
keep-tracking.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
kmod-path.c
make
maps.c perf tests: Use function to add missing maps lock 2023-12-18 21:35:01 -03:00
mem.c
mem2node.c
mmap-basic.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
mmap-thread-lookup.c
openat-syscall-all-cpus.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
openat-syscall-tp-fields.c
openat-syscall.c
parse-events.c perf parse-events: Make legacy events lower priority than sysfs/JSON 2023-11-27 10:21:27 -03:00
parse-metric.c
parse-no-sample-id-all.c
pe-file-parsing.c
pe-file.c
pe-file.exe
pe-file.exe.debug
perf-hooks.c
perf-record.c
perf-targz-src-pkg
perf-time-to-tsc.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
pfm.c
pmu-events.c
pmu.c
python-use.c
sample-parsing.c
sdt.c
sigtrap.c perf tests sigtrap: Skip if running on a kernel with sleepable spinlocks 2023-11-29 17:49:24 -03:00
stat.c
sw-clock.c libperf cpumap: Rename perf_cpu_map__dummy_new() to perf_cpu_map__new_any_cpu() 2023-12-12 14:01:47 -03:00
switch-tracking.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
symbols.c
task-exit.c libperf cpumap: Rename perf_cpu_map__dummy_new() to perf_cpu_map__new_any_cpu() 2023-12-12 14:01:47 -03:00
tests.h
thread-map.c
thread-maps-share.c
time-utils-test.c
topology.c libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
unit_number__scnprintf.c
util.c
vmlinux-kallsyms.c perf tests: Use function to add missing maps lock 2023-12-18 21:35:01 -03:00
wp.c