linux/tools/testing/selftests
Eduard Zingerman 3209139d00 selftests/bpf: allow send_signal test to timeout
The following invocation:

  $ t1=send_signal/send_signal_perf_thread_remote \
    t2=send_signal/send_signal_nmi_thread_remote  \
    ./test_progs -t $t1,$t2

Leads to send_signal_nmi_thread_remote to be stuck
on a line 180:

  /* wait for result */
  err = read(pipe_c2p[0], buf, 1);

In this test case:
- perf event PERF_COUNT_HW_CPU_CYCLES is created for parent process;
- BPF program is attached to perf event, and sends a signal to child
  process when event occurs;
- parent program burns some CPU in busy loop and calls read() to get
  notification from child that it received a signal.

The perf event is declared with .sample_period = 1.
This forces perf to throttle events, and under some unclear conditions
the event does not always occur while parent is in busy loop.
After parent enters read() system call CPU cycles event won't be
generated for parent anymore. Thus, if perf event had not occurred
already the test is stuck.

This commit updates the parent to wait for notification with a timeout,
doing several iterations of busy loop + read_with_timeout().

Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20241112110906.3045278-4-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-11-12 13:53:27 -08:00
..
acct selftest: acct: Add selftest for the acct() syscall 2024-08-01 13:55:34 -06:00
alsa selftest: alsa: check if user has alsa installed 2024-09-30 09:47:34 +02:00
amd-pstate
arm64 Merge branch 'for-next/selftests' into for-next/core 2024-09-12 13:43:57 +01:00
bpf selftests/bpf: allow send_signal test to timeout 2024-11-12 13:53:27 -08:00
breakpoints selftests: breakpoints: use remaining time to check if suspend succeed 2024-10-02 14:37:30 -06:00
cachestat selftests: cachestat: Fix build warnings on ppc64 2024-05-29 12:24:44 -06:00
capabilities selftests/capabilities: fix warn_unused_result build warnings 2024-05-08 16:48:25 -06:00
cgroup ALong with the usual shower of singleton patches, notable patch series in 2024-09-21 07:29:05 -07:00
clone3 clone3: clone3_cap_checkpoint_restore: remove unused MAX_PID_NS_LEVEL macro 2024-09-30 11:39:56 -06:00
connector
core selftests: core: add unshare_test to gitignore 2024-09-30 11:42:11 -06:00
cpu-hotplug
cpufreq kselftest: cpufreq: Add RTC wakeup alarm 2024-07-31 11:42:36 -06:00
damon selftests/damon: add execute permissions to test scripts 2024-09-03 21:15:57 -07:00
devices kselftest/devices/probe: Fix SyntaxWarning in regex strings for Python3 2024-10-02 14:30:58 -06:00
dma selftests/dma:remove unused variable 2024-07-11 11:23:55 -06:00
dmabuf-heaps kselftests: dmabuf-heaps: Ensure the driver name is null-terminated 2024-07-29 09:02:54 +02:00
drivers linux_kselftest-next-6.12-rc1 2024-09-17 16:49:56 +02:00
dt kselftest: dt: Ignore nodes that have ancestors disabled 2024-09-05 07:54:16 -05:00
efivarfs
exec selftests: exec: update gitignore for load_address 2024-09-30 11:42:19 -06:00
fchmodat2 selftests/fchmodat2: fix clang build failure due to -static-libasan 2024-06-11 15:05:05 -06:00
filelock
filesystems Char/Misc and other driver changes for 6.12-rc1 2024-09-26 10:13:08 -07:00
firmware
fpu
ftrace ftrace/selftest: Test combination of function_graph tracer and function profiler 2024-10-11 15:05:16 -06:00
futex selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
gpio selftest: gpio: remove obsolete gpio-mockup test 2024-03-05 20:01:08 +01:00
hid selftest: hid: add the missing tests directory 2024-10-16 15:55:14 -06:00
ia64
intel_pstate selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
iommu iommufd: Do not allow creating areas without READ or WRITE 2024-08-26 09:16:13 +02:00
ipc selftests/ipc: ksft_exit functions do not return 2024-05-06 13:57:20 -06:00
ir
kcmp selftests/kcmp: remove unused open mode 2024-05-11 15:51:43 -07:00
kexec
kmod
kselftest selftests: support interpreted scripts with ksft_runner.sh 2024-09-09 17:38:02 -07:00
kvm KVM: selftests: Fix build on on non-x86 architectures 2024-10-21 15:49:33 -07:00
landlock selftests/landlock: Test signal created by out-of-bound message 2024-09-16 23:50:54 +02:00
lib selftests: lib: remove strscpy test 2024-08-01 13:55:33 -06:00
livepatch selftests/livepatch: wait for atomic replace to occur 2024-08-26 14:52:25 +02:00
lkdtm lkdtm/bugs: add test for hung smp_call_function_single() 2024-06-17 11:17:31 -07:00
locking
lsm lsm: add IPE lsm 2024-08-19 22:36:26 -04:00
media_tests
membarrier selftests: membarrier: ksft_exit_pass() does not return 2024-05-06 13:57:20 -06:00
memfd selftests/memfd: fix spelling mistakes 2024-05-07 10:36:59 -07:00
memory-hotplug
mincore
mm selftests: mm: fix the incorrect usage() info of khugepaged 2024-10-17 00:28:11 -07:00
mount
mount_setattr
move_mount_set_group selftests/move_mount_set_group:Make tests build with old libc 2024-01-22 15:33:37 +01:00
mqueue selftests/mqueue: fix 5 warnings about signed/unsigned mismatches 2024-06-24 22:25:03 -07:00
nci
net selftests: mptcp: join: test for prohibited MPC to port-based endp 2024-10-15 10:57:02 -07:00
nolibc selftests/nolibc: run-tests.sh: allow building through LLVM 2024-08-12 22:22:17 +02:00
nsfs
ntb
openat2 selftests/openat2: fix clang build failures: -static-libasan, LOCAL_HDRS 2024-06-11 15:00:11 -06:00
perf_events selftests/perf_events: Test FASYNC with watermark wakeups 2024-04-14 22:26:33 +02:00
pid_namespace
pidfd pidfs: add selftests for new namespace ioctls 2024-07-24 10:53:13 +02:00
power_supply selftests: power_supply: Make it POSIX-compliant 2024-05-06 13:57:20 -06:00
powerpc selftests/powerpc: Allow building without static libc 2024-09-09 16:35:04 +10:00
prctl
proc - In the series "treewide: Refactor heap related implementation", 2024-07-21 17:56:22 -07:00
pstore
ptp
ptrace
rcutorture Merge branches 'context_tracking.15.08.24a', 'csd.lock.15.08.24a', 'nocb.09.09.24a', 'rcutorture.14.08.24a', 'rcustall.09.09.24a', 'srcu.12.08.24a', 'rcu.tasks.14.08.24a', 'rcu_scaling_tests.15.08.24a', 'fixes.12.08.24a' and 'misc.11.08.24a' into next.09.09.24a 2024-09-09 00:09:47 +05:30
resctrl selftests:resctrl: Fix build failure on archs without __cpuid_count() 2024-09-06 10:46:03 -06:00
ring-buffer selftests/ring-buffer: Handle meta-page bigger than the system 2024-09-11 12:25:12 -04:00
riscv riscv: selftests: Remove mmap hint address checks 2024-08-29 06:03:28 -07:00
rlimits
rseq selftests/rseq: Fix mm_cid test failure 2024-10-11 15:05:05 -06:00
rtc selftest: rtc: Check if could access /dev/rtc0 before testing 2024-09-30 11:32:07 -06:00
rust selftests: rust: config: disable GCC_PLUGINS 2024-08-11 17:32:55 -06:00
safesetid
sched selftests/sched: fix code format issues 2024-07-11 11:23:53 -06:00
sched_ext selftests: sched_ext: Add sched_ext as proper selftest target 2024-10-09 06:42:51 -10:00
seccomp minmax: make generic MIN() and MAX() macros available everywhere 2024-07-28 15:49:18 -07:00
sgx selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
sigaltstack selftests/sigaltstack: Fix ppc64 GCC build 2024-07-01 21:35:38 +10:00
size
sparc64
splice
static_keys
sync selftests: sync: ksft_exit_pass() does not return 2024-05-06 13:57:21 -06:00
syscall_user_dispatch selftests: sud_test: return correct emulated syscall value on RISC-V 2024-04-25 09:46:41 -07:00
sysctl sysclt: Clarify the results of selftest run 2023-12-28 04:57:57 -08:00
tc-testing tc-testing: don't access non-existent variable on exception 2024-08-16 18:02:51 -07:00
tdx
thermal/intel selftests: thermal: intel: workload_hint: add missing gitignore 2024-02-20 16:30:55 -07:00
timens selftest/timerns: fix clang build failures for abs() calls 2024-07-05 13:21:48 -06:00
timers selftests:timers: posix_timers: Fix warn_unused_result in __fatal_error() 2024-09-30 11:37:55 -06:00
tmpfs selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
tpm2 selftests: tpm2: test_smoke: Run only when TPM2 is avaialable. 2024-09-17 18:56:37 +03:00
tty kselftest/tty: Report a consistent test name for the one test we run 2024-05-06 13:57:19 -06:00
turbostat tools/power turbostat: Add selftests for added perf counters 2024-07-26 13:51:25 -04:00
uevent selftests: uevent: add missing gitignore 2024-02-20 16:30:40 -07:00
user_events selftests/user_events: Add non-spacing separator check 2024-05-13 12:15:46 -04:00
vDSO selftests: vDSO: Explicitly include sched.h 2024-10-08 15:48:09 -06:00
watchdog
wireguard wireguard: selftests: use acpi=off instead of -no-acpi for recent QEMU 2024-07-05 17:21:10 -07:00
x86 Documentation/srso: Document a method for checking safe RET operates properly 2024-08-27 09:16:35 +02:00
zram
.gitignore
gen_kselftest_tar.sh
kselftest_deps.sh selftests: kselftest_deps: fix l5_test() empty variable 2024-05-08 16:46:41 -06:00
kselftest_harness.h selftests: harness: rename __constructor_order for clarification 2024-08-06 13:40:26 -06:00
kselftest_install.sh
kselftest_module.h
kselftest.h selftests: kselftest: Use strerror() on nolibc 2024-09-11 09:52:33 -06:00
lib.mk - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
Makefile selftests: sched_ext: Add sched_ext as proper selftest target 2024-10-09 06:42:51 -10:00
run_kselftest.sh