linux/tools/testing/selftests
Hao Luo 50c6b8a9ae selftests/bpf: Add a test for btf_type_tag "percpu"
Add test for percpu btf_type_tag. Similar to the "user" tag, we test
the following cases:

 1. __percpu struct field.
 2. __percpu as function parameter.
 3. per_cpu_ptr() accepts dynamically allocated __percpu memory.

Because the test for "user" and the test for "percpu" are very similar,
a little bit of refactoring has been done in btf_tag.c. Basically, both
tests share the same function for loading vmlinux and module btf.

Example output from log:

 > ./test_progs -v -t btf_tag

 libbpf: prog 'test_percpu1': BPF program load failed: Permission denied
 libbpf: prog 'test_percpu1': -- BEGIN PROG LOAD LOG --
 ...
 ; g = arg->a;
 1: (61) r1 = *(u32 *)(r1 +0)
 R1 is ptr_bpf_testmod_btf_type_tag_1 access percpu memory: off=0
 ...
 test_btf_type_tag_mod_percpu:PASS:btf_type_tag_percpu 0 nsec
 #26/6 btf_tag/btf_type_tag_percpu_mod1:OK

 libbpf: prog 'test_percpu2': BPF program load failed: Permission denied
 libbpf: prog 'test_percpu2': -- BEGIN PROG LOAD LOG --
 ...
 ; g = arg->p->a;
 2: (61) r1 = *(u32 *)(r1 +0)
 R1 is ptr_bpf_testmod_btf_type_tag_1 access percpu memory: off=0
 ...
 test_btf_type_tag_mod_percpu:PASS:btf_type_tag_percpu 0 nsec
 #26/7 btf_tag/btf_type_tag_percpu_mod2:OK

 libbpf: prog 'test_percpu_load': BPF program load failed: Permission denied
 libbpf: prog 'test_percpu_load': -- BEGIN PROG LOAD LOG --
 ...
 ; g = (__u64)cgrp->rstat_cpu->updated_children;
 2: (79) r1 = *(u64 *)(r1 +48)
 R1 is ptr_cgroup_rstat_cpu access percpu memory: off=48
 ...
 test_btf_type_tag_vmlinux_percpu:PASS:btf_type_tag_percpu_load 0 nsec
 #26/8 btf_tag/btf_type_tag_percpu_vmlinux_load:OK

 load_btfs:PASS:could not load vmlinux BTF 0 nsec
 test_btf_type_tag_vmlinux_percpu:PASS:btf_type_tag_percpu 0 nsec
 test_btf_type_tag_vmlinux_percpu:PASS:btf_type_tag_percpu_helper 0 nsec
 #26/9 btf_tag/btf_type_tag_percpu_vmlinux_helper:OK

Signed-off-by: Hao Luo <haoluo@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20220304191657.981240-5-haoluo@google.com
2022-03-05 18:39:51 -08:00
..
alsa kselftest: alsa: Validate values read from enumerations 2021-12-25 09:13:28 +01:00
arm64 kselftest/arm64: Correct logging of FPSIMD register read via ptrace 2022-01-28 11:30:51 +00:00
bpf selftests/bpf: Add a test for btf_type_tag "percpu" 2022-03-05 18:39:51 -08:00
breakpoints
capabilities
cgroup linux-kselftest-next-5.17-rc1 2022-01-10 12:08:12 -08:00
clone3 selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
core selftests/core: remove ARRAY_SIZE define from close_range_test.c 2021-12-10 17:50:38 -07:00
cpu-hotplug
cpufreq selftests: cpufreq: Write test output to stdout as well 2022-01-25 13:20:03 -07:00
damon selftests/damon: split test cases 2021-12-10 17:10:56 -08:00
dma
dmabuf-heaps
drivers selftests: mlxsw: resource_scale: Fix return value 2022-03-03 08:14:01 -08:00
efivarfs
exec selftests/exec: Add non-regular to TEST_GEN_PROGS 2022-02-11 10:18:13 -07:00
filesystems selftests/binderfs: add test for feature files 2021-07-21 13:46:36 +02:00
firmware selftests: firmware: Fix ignored return val of asprintf() warn 2021-07-21 16:11:42 +02:00
fpu
ftrace selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT 2022-02-14 13:28:17 -07:00
futex selftests: futex: Use variable MAKE instead of make 2022-01-27 16:29:23 -07:00
gpio gpio updates for v5.17 2022-01-11 12:31:35 -08:00
ia64
intel_pstate
ipc
ir selftests/ir: fix build with ancient kernel headers 2022-02-04 13:14:41 -07:00
kcmp
kexec selftests/kexec: Enable secureboot tests for PowerPC 2022-01-05 11:44:57 -05:00
kmod
kselftest selftests/kselftest/runner/run_one(): allow running non-executable files 2021-11-09 10:02:53 -08:00
kvm KVM/arm64 fixes for 5.17, take #4 2022-02-25 09:49:30 -05:00
landlock selftests/landlock: remove ARRAY_SIZE define from common.h 2021-12-10 17:50:51 -07:00
lib
livepatch
lkdtm selftest/lkdtm: Skip stack-entropy test if lkdtm is not available 2021-12-16 15:54:38 -08:00
locking
media_tests
membarrier
memfd selftests/memfd: clean up mapping in mfd_fail_write 2022-02-26 09:51:17 -08:00
memory-hotplug mm/memory_hotplug: remove CONFIG_MEMORY_HOTPLUG_SPARSE 2021-11-06 13:30:42 -07:00
mincore selftests: skip mincore.check_file_mmap when fs lacks needed support 2022-01-27 16:40:45 -07:00
mount selftests/mount: remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mount_setattr tests: fix idmapped mount_setattr test 2022-02-11 09:08:20 +01:00
move_mount_set_group selftests/move_mount_set_group remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mqueue
nci selftests: nci: replace unsigned int with int 2021-09-16 13:55:51 +01:00
net selftests: mptcp: update output info of chk_rm_nr 2022-03-04 21:54:31 -08:00
netfilter selftests: netfilter: add nfqueue TCP_NEW_SYN_RECV socket race test 2022-03-01 11:48:58 +01:00
nsfs
ntb
openat2 selftests: openat2: Skip testcases that fail with EOPNOTSUPP 2022-01-27 16:31:07 -07:00
perf_events selftests/perf_events: Test modification of perf_event_attr::sig_data 2022-02-02 13:11:40 +01:00
pid_namespace
pidfd selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
powerpc selftests/powerpc: Add a test of sigreturning to an unaligned address 2021-12-25 10:56:05 +11:00
prctl
proc procfs: do not list TID 0 in /proc/<pid>/task 2021-11-09 10:02:48 -08:00
pstore
ptp testptp: add option to shift clock by nanoseconds 2022-02-22 17:03:40 -08:00
ptrace
rcutorture Merge branches 'doc.2021.11.30c', 'exp.2021.12.07a', 'fastnohz.2021.11.30c', 'fixes.2021.11.30c', 'nocb.2021.12.09a', 'nolibc.2021.11.30c', 'tasks.2021.12.09a', 'torture.2021.12.07a' and 'torturescript.2021.11.30c' into HEAD 2021-12-09 11:38:09 -08:00
resctrl
rlimits
rseq selftests/rseq: remove ARRAY_SIZE define from individual tests 2021-12-10 17:51:03 -07:00
rtc selftests: rtc: Increase test timeout so that all tests run 2022-01-25 13:16:01 -07:00
safesetid selftests: safesetid: Fix spelling mistake "cant" -> "can't" 2021-08-26 15:15:24 -06:00
sched kselftests/sched: cleanup the child processes 2021-10-05 15:51:43 +02:00
seccomp selftests/seccomp: Fix seccomp failure by adding missing headers 2022-02-14 11:14:38 -07:00
sgx selftests/sgx: Fix corrupted cpuid macro invocation 2021-12-17 08:52:33 -08:00
sigaltstack
size
sparc64 selftests/sparc64: remove ARRAY_SIZE define from adi-test 2021-12-10 17:51:15 -07:00
splice
static_keys
sync selftests/sync: Remove the deprecated config SYNC 2021-08-31 10:58:00 -06:00
syscall_user_dispatch
sysctl
tc-testing selftests: tc-testing: add action offload selftest for action and filter 2021-12-19 14:08:48 +00:00
timens selftests/timens: remove ARRAY_SIZE define from individual tests 2021-12-10 17:51:20 -07:00
timers selftests: timers: Remove unneeded semicolon 2021-12-10 16:46:00 -07:00
tmpfs
tpm2
uevent
user
vDSO kselftest: Fix vdso_test_abi return status 2022-01-31 10:35:14 -07:00
vm selftest/vm: fix map_fixed_noreplace test failure 2022-02-26 09:51:17 -08:00
watchdog
wireguard wireguard: device: reset peer src endpoint when netns exits 2021-11-29 19:50:45 -08:00
x86 linux-kselftest-next-5.16-rc1 2021-11-02 22:00:17 -07:00
zram selftests/zram: Adapt the situation that /dev/zram0 is being used 2022-01-27 10:59:02 -07:00
.gitignore
gen_kselftest_tar.sh
kselftest_deps.sh
kselftest_harness.h kselftest: signal all child processes 2022-01-25 13:48:21 -07:00
kselftest_install.sh
kselftest_module.h
kselftest.h tools: fix ARRAY_SIZE defines in tools and selftests hdrs 2021-12-10 17:50:17 -07:00
lib.mk selftests: cgroup: build error multiple outpt files 2021-12-10 16:46:01 -07:00
Makefile kselftest: alsa: Add simplistic test for ALSA mixer controls kselftest 2021-12-12 10:04:27 +01:00
run_kselftest.sh