@@ -61,3 +61,43 @@ test, or an end-to-end test.
61
61
kernel by installing a production configuration of the kernel on production
62
62
hardware with a production userspace and then trying to exercise some behavior
63
63
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