@@ -1,6 +1,52 @@
==================
BPF Selftest Notes
==================
+First verify the built kernel config options match the config options
+specified in the config file in this directory. Test failures for
+unknown helpers, inability to find BTF etc will be observed otherwise.
+
+To ensure the maximum number of tests pass, it is best to use the latest
+trunk LLVM/clang, i.e.
+
+git clone https://github.com/llvm/llvm-project
+
+Build/install trunk LLVM:
+
+.. code-block:: bash
+ git clone https://github.com/llvm/llvm-project
+ cd llvm-project
+ mkdir build/llvm
+ cd build/llvm
+ cmake ../../llvm/
+ make
+ sudo make install
+ cd ../../
+
+Build/install trunk clang:
+
+.. code-block:: bash
+ mkdir -p build/clang
+ cd build/clang
+ cmake ../../clang
+ make
+ sudo make install
+
+When building the kernel with CONFIG_DEBUG_INFO_BTF, pahole
+version 16 or later is also required for BTF function
+support. pahole can be built from the source at
+
+https://github.com/acmel/dwarves
+
+It is often available in "dwarves/libdwarves" packages also,
+but be aware that versions prior to 1.16 will fail with
+errors that functions cannot be found in BTF.
+
+When running selftests, the default timeout of 45 seconds
+can be exceeded by some tests. We can override the default
+timeout via a "settings" file; for example:
+
+.. code-block:: bash
+ echo "timeout=120" > tools/testing/selftests/bpf/settings
Additional information about selftest failures are
documented here.
Getting a clean BPF selftests run involves ensuring latest trunk LLVM/clang are used, pahole is recent (>=1.16) and config matches the specified config file as closely as possible. Document all of this in the general README.rst file. Also note how to work around timeout failures. Signed-off-by: Alan Maguire <alan.maguire@oracle.com> --- tools/testing/selftests/bpf/README.rst | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+)