Skip to content

Commit c63d2dd

Browse files
sulixshuahkh
authored andcommitted
Documentation: kunit: Add some troubleshooting tips to the FAQ
Add an FAQ entry to the KUnit documentation with some tips for troubleshooting KUnit and kunit_tool. These suggestions largely came from an email thread: https://lore.kernel.org/linux-kselftest/[email protected]/T/#m23213d4e156db6d59b0b460a9014950f5ff6eb03 Signed-off-by: David Gow <[email protected]> Reviewed-by: Alan Maguire <[email protected]> Reviewed-by: Brendan Higgins <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
1 parent ee61492 commit c63d2dd

File tree

1 file changed

+40
-0
lines changed
  • Documentation/dev-tools/kunit

1 file changed

+40
-0
lines changed

Documentation/dev-tools/kunit/faq.rst

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,43 @@ test, or an end-to-end test.
6161
kernel by installing a production configuration of the kernel on production
6262
hardware with a production userspace and then trying to exercise some behavior
6363
that depends on interactions between the hardware, the kernel, and userspace.
64+
65+
KUnit isn't working, what should I do?
66+
======================================
67+
68+
Unfortunately, there are a number of things which can break, but here are some
69+
things to try.
70+
71+
1. Try running ``./tools/testing/kunit/kunit.py run`` with the ``--raw_output``
72+
parameter. This might show details or error messages hidden by the kunit_tool
73+
parser.
74+
2. Instead of running ``kunit.py run``, try running ``kunit.py config``,
75+
``kunit.py build``, and ``kunit.py exec`` independently. This can help track
76+
down where an issue is occurring. (If you think the parser is at fault, you
77+
can run it manually against stdin or a file with ``kunit.py parse``.)
78+
3. Running the UML kernel directly can often reveal issues or error messages
79+
kunit_tool ignores. This should be as simple as running ``./vmlinux`` after
80+
building the UML kernel (e.g., by using ``kunit.py build``). Note that UML
81+
has some unusual requirements (such as the host having a tmpfs filesystem
82+
mounted), and has had issues in the past when built statically and the host
83+
has KASLR enabled. (On older host kernels, you may need to run ``setarch
84+
`uname -m` -R ./vmlinux`` to disable KASLR.)
85+
4. Make sure the kernel .config has ``CONFIG_KUNIT=y`` and at least one test
86+
(e.g. ``CONFIG_KUNIT_EXAMPLE_TEST=y``). kunit_tool will keep its .config
87+
around, so you can see what config was used after running ``kunit.py run``.
88+
It also preserves any config changes you might make, so you can
89+
enable/disable things with ``make ARCH=um menuconfig`` or similar, and then
90+
re-run kunit_tool.
91+
5. Try to run ``make ARCH=um defconfig`` before running ``kunit.py run``. This
92+
may help clean up any residual config items which could be causing problems.
93+
6. Finally, try running KUnit outside UML. KUnit and KUnit tests can run be
94+
built into any kernel, or can be built as a module and loaded at runtime.
95+
Doing so should allow you to determine if UML is causing the issue you're
96+
seeing. When tests are built-in, they will execute when the kernel boots, and
97+
modules will automatically execute associated tests when loaded. Test results
98+
can be collected from ``/sys/kernel/debug/kunit/<test suite>/results``, and
99+
can be parsed with ``kunit.py parse``. For more details, see "KUnit on
100+
non-UML architectures" in :doc:`usage`.
101+
102+
If none of the above tricks help, you are always welcome to email any issues to
103+

0 commit comments

Comments
 (0)