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 <i...@linux.ibm.com>
Acked-by: Vasily Gorbik <g...@linux.ibm.com>
---
 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

Reply via email to