docs/devel: add "check-tcg" to testing.rst

It was pointed out we haven't documented the check-tcg part of the
build system. Attempt to rectify that now.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Alex Bennée 2019-09-19 14:36:35 +01:00
parent daa79d9a65
commit f8ed349e6d
1 changed files with 76 additions and 0 deletions

View File

@ -266,6 +266,8 @@ another application on the host may have locked the file, possibly leading to a
test failure. If using such devices are explicitly desired, consider adding
``locking=off`` option to disable image locking.
.. _docker-ref:
Docker based tests
==================
@ -799,3 +801,77 @@ And remove any package you want with::
If you've used ``make check-acceptance``, the Python virtual environment where
Avocado is installed will be cleaned up as part of ``make check-clean``.
Testing with "make check-tcg"
=============================
The check-tcg tests are intended for simple smoke tests of both
linux-user and softmmu TCG functionality. However to build test
programs for guest targets you need to have cross compilers available.
If your distribution supports cross compilers you can do something as
simple as::
apt install gcc-aarch64-linux-gnu
The configure script will automatically pick up their presence.
Sometimes compilers have slightly odd names so the availability of
them can be prompted by passing in the appropriate configure option
for the architecture in question, for example::
$(configure) --cross-cc-aarch64=aarch64-cc
There is also a ``--cross-cc-flags-ARCH`` flag in case additional
compiler flags are needed to build for a given target.
If you have the ability to run containers as the user you can also
take advantage of the build systems "Docker" support. It will then use
containers to build any test case for an enabled guest where there is
no system compiler available. See :ref: `_docker-ref` for details.
Running subset of tests
-----------------------
You can build the tests for one architecture::
make build-tcg-tests-$TARGET
And run with::
make run-tcg-tests-$TARGET
Adding ``V=1`` to the invocation will show the details of how to
invoke QEMU for the test which is useful for debugging tests.
TCG test dependencies
---------------------
The TCG tests are deliberately very light on dependencies and are
either totally bare with minimal gcc lib support (for softmmu tests)
or just glibc (for linux-user tests). This is because getting a cross
compiler to work with additional libraries can be challenging.
Other TCG Tests
---------------
There are a number of out-of-tree test suites that are used for more
extensive testing of processor features.
KVM Unit Tests
~~~~~~~~~~~~~~
The KVM unit tests are designed to run as a Guest OS under KVM but
there is no reason why they can't exercise the TCG as well. It
provides a minimal OS kernel with hooks for enabling the MMU as well
as reporting test results via a special device::
https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git
Linux Test Project
~~~~~~~~~~~~~~~~~~
The LTP is focused on exercising the syscall interface of a Linux
kernel. It checks that syscalls behave as documented and strives to
exercise as many corner cases as possible. It is a useful test suite
to run to exercise QEMU's linux-user code::
https://linux-test-project.github.io/