^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) Livepatch Self Tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) This is a small set of sanity tests for the kernel livepatching.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) The test suite loads and unloads several test kernel modules to verify
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) livepatch behavior. Debug information is logged to the kernel's message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) buffer and parsed for expected messages. (Note: the tests will compare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) the message buffer for only the duration of each individual test.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) ------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Set these config options and their prerequisites:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) CONFIG_LIVEPATCH=y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) CONFIG_TEST_LIVEPATCH=m
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) Running the tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) -----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Test kernel modules are built as part of lib/ (make modules) and need to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) be installed (make modules_install) as the test scripts will modprobe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) To run the livepatch selftests, from the top of the kernel source tree:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) % make -C tools/testing/selftests TARGETS=livepatch run_tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) Adding tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) See the common functions.sh file for the existing collection of utility
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) functions, most importantly setup_config(), start_test() and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) check_result(). The latter function greps the kernel's ring buffer for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) "livepatch:" and "test_klp" strings, so tests be sure to include one of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) those strings for result comparison. Other utility functions include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) general module loading and livepatch loading helpers (waiting for patch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) transitions, sysfs entries, etc.)