Many s390 setups (most notably, KVM guests) do not have access to hardware performance events. Therefore, use the software event instead. Signed-off-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx> Acked-by: Vasily Gorbik <gor@xxxxxxxxxxxxx> --- tools/testing/selftests/bpf/prog_tests/send_signal.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/send_signal.c b/tools/testing/selftests/bpf/prog_tests/send_signal.c index 67cea1686305..4a45ea0b8448 100644 --- a/tools/testing/selftests/bpf/prog_tests/send_signal.c +++ b/tools/testing/selftests/bpf/prog_tests/send_signal.c @@ -176,10 +176,19 @@ static int test_send_signal_tracepoint(void) static int test_send_signal_nmi(void) { struct perf_event_attr attr = { +#if defined(__s390__) + /* Many s390 setups (most notably, KVM guests) do not have + * access to hardware performance events. + */ + .sample_period = 1, + .type = PERF_TYPE_SOFTWARE, + .config = PERF_COUNT_SW_CPU_CLOCK, +#else .sample_freq = 50, .freq = 1, .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_CPU_CYCLES, +#endif }; return test_send_signal_common(&attr, BPF_PROG_TYPE_PERF_EVENT, "perf_event"); -- 2.21.0