Everything is in place to run the tests using kvmtool: $ ./configure --target=kvmtool $ make clean && make $ KVMTOOL=<path/to/kvmtool> ./run_tests.sh so enable it, and remove ERRATA_FORCE=y when configuring for kvmtool, because the runner will generate and pass the correct environment to kvmtool. Missing is support for EFI tests. That's because distros don't ship a EDK2 binary compiled for kvmtool, and on top of that kvm-unit-tests as an EFI app hasn't been tested to work with kvmtool. Signed-off-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> --- Should I also revert commit 35145f140442 ("arm/arm64: kvmtool: force all tests to run") which introduced ERRATA_FORCE? I didn't do this now in case other architectures use it/planning to use it. README.md | 15 +++++++++++++++ arm/run | 2 +- configure | 1 - run_tests.sh | 2 +- scripts/mkstandalone.sh | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index be07dc28a094..5e7706f02553 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,9 @@ or: to run them all. +All tests can be run using QEMU. On arm and arm64, tests can also be run using +kvmtool. + By default the runner script searches for a suitable QEMU binary in the system. To select a specific QEMU binary though, specify the QEMU=path/to/binary environment variable: @@ -80,10 +83,22 @@ For running tests that involve migration from one QEMU instance to another you also need to have the "ncat" binary (from the nmap.org project) installed, otherwise the related tests will be skipped. +To run a test with kvmtool, please configure kvm-unit-tests accordingly first: + + ./configure --arch=arm64 --target=kvmtool + +then run the test(s) like with QEMU above. + +To select a kvmtool binary, specify the KVMTOOL=path/to/binary environment +variable. kvmtool supports only kvm as the accelerator. + ## Running the tests with UEFI Check [x86/efi/README.md](./x86/efi/README.md). +On arm and arm64, this is only supported with QEMU; kvmtool cannot run the +tests under UEFI. + # Tests configuration file The test case may need specific runtime configurations, for diff --git a/arm/run b/arm/run index 880d5afae86d..438a2617e564 100755 --- a/arm/run +++ b/arm/run @@ -10,7 +10,7 @@ if [ -z "$KUT_STANDALONE" ]; then fi case "$TARGET" in -qemu) +qemu | kvmtool) ;; *) echo "'$TARGET' not supported" diff --git a/configure b/configure index 86cf1da36467..17d3d931f2c0 100755 --- a/configure +++ b/configure @@ -299,7 +299,6 @@ elif [ "$arch" = "arm" ] || [ "$arch" = "arm64" ]; then arm_uart_early_addr=0x09000000 elif [ "$target" = "kvmtool" ]; then arm_uart_early_addr=0x1000000 - errata_force=1 else echo "--target must be one of 'qemu' or 'kvmtool'!" usage diff --git a/run_tests.sh b/run_tests.sh index d38954be9093..3921dcdcb344 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -110,7 +110,7 @@ while [ $# -gt 0 ]; do done case "$TARGET" in -qemu) +qemu | kvmtool) ;; *) echo "$0 does not support '$TARGET'" diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh index 10abb5e191b7..16383b05adfa 100755 --- a/scripts/mkstandalone.sh +++ b/scripts/mkstandalone.sh @@ -8,7 +8,7 @@ source config.mak source scripts/common.bash case "$TARGET" in -qemu) +qemu | kvmtool) ;; *) echo "'$TARGET' not supported for standlone tests" -- 2.47.1