linux-yocto/tools/testing/selftests/livepatch
Ryan Sullivan 052f395164 selftests/livepatch: wait for atomic replace to occur
On some machines with a large number of CPUs there is a sizable delay
between an atomic replace occurring and when sysfs updates accordingly.
This fix uses 'loop_until' to wait for the atomic replace to unload all
previous livepatches.

Reported-by: CKI Project <cki-project@redhat.com>
Closes: https://datawarehouse.cki-project.org/kcidb/tests/redhat:1413102084-x86_64-kernel_upt_28
Signed-off-by: Ryan Sullivan <rysulliv@redhat.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
Link: https://lore.kernel.org/r/20240822173122.14760-1-rysulliv@redhat.com
Signed-off-by: Petr Mladek <pmladek@suse.com>
2024-08-26 14:52:25 +02:00
..
test_modules selftests: livepatch: Avoid running the tests if kernel-devel is missing 2024-02-27 17:03:35 -07:00
.gitignore selftests: livepatch: Add initial .gitignore 2024-02-27 17:03:28 -07:00
config livepatch: Move tests from lib/livepatch to selftests/livepatch 2024-01-22 10:29:47 -07:00
functions.sh linux_kselftest-next-6.9-rc1 2024-03-11 09:25:33 -07:00
Makefile selftests: livepatch: Test livepatching a heavily called syscall 2024-01-22 10:29:53 -07:00
README livepatch: Move tests from lib/livepatch to selftests/livepatch 2024-01-22 10:29:47 -07:00
settings
test_klp-call_getpid.c selftests: livepatch: Test livepatching a heavily called syscall 2024-01-22 10:29:53 -07:00
test-callbacks.sh livepatch: Move tests from lib/livepatch to selftests/livepatch 2024-01-22 10:29:47 -07:00
test-ftrace.sh livepatch: Move tests from lib/livepatch to selftests/livepatch 2024-01-22 10:29:47 -07:00
test-livepatch.sh selftests/livepatch: wait for atomic replace to occur 2024-08-26 14:52:25 +02:00
test-shadow-vars.sh livepatch: Move tests from lib/livepatch to selftests/livepatch 2024-01-22 10:29:47 -07:00
test-state.sh livepatch: Move tests from lib/livepatch to selftests/livepatch 2024-01-22 10:29:47 -07:00
test-syscall.sh selftests/livepatch: define max test-syscall processes 2024-06-12 16:56:30 +02:00
test-sysfs.sh selftests/livepatch: Add selftests for "replace" sysfs attribute 2024-07-02 16:56:18 +02:00

==================== Livepatch Self Tests

This is a small set of sanity tests for the kernel livepatching.

The test suite loads and unloads several test kernel modules to verify livepatch behavior. Debug information is logged to the kernel's message buffer and parsed for expected messages. (Note: the tests will compare the message buffer for only the duration of each individual test.)

Config

Set CONFIG_LIVEPATCH=y option and it's prerequisites.

Building the tests

To only build the tests without running them, run:

% make -C tools/testing/selftests/livepatch

The command above will compile all test modules and test programs, making them ready to be packaged if so desired.

Running the tests

Test kernel modules are built before running the livepatch selftests. The modules are located under test_modules directory, and are built as out-of-tree modules. This is specially useful since the same sources can be built and tested on systems with different kABI, ensuring they the tests are backwards compatible. The modules will be loaded by the test scripts using insmod.

To run the livepatch selftests, from the top of the kernel source tree:

% make -C tools/testing/selftests TARGETS=livepatch run_tests

or

% make kselftest TARGETS=livepatch

Adding tests

See the common functions.sh file for the existing collection of utility functions, most importantly setup_config(), start_test() and check_result(). The latter function greps the kernel's ring buffer for "livepatch:" and "test_klp" strings, so tests be sure to include one of those strings for result comparison. Other utility functions include general module loading and livepatch loading helpers (waiting for patch transitions, sysfs entries, etc.)