Hi,
On Tue, Mar 15, 2022 at 09:01:52AM +0100, Andrew Jones wrote:
> Add QEMU_ARCH, which allows run scripts to specify which architecture
> of QEMU should be used. This is useful on AArch64 when running with
> KVM and running AArch32 tests. For those tests, we *don't* want to
> select the 'arm' QEMU, as would have been selected, but rather the
> $HOST ('aarch64') QEMU.
>
> To use this new variable, simply ensure it's set prior to calling
> search_qemu_binary().
Looks good, tested on an arm64 machine, with ACCEL set to tcg -
run_tests.sh selects qemu-system-arm; ACCEL unset - run_tests.sh selects
ACCEL=kvm and qemu-system-aarch64; also tested on an x86 machine -
run_tests.sh selects ACCEL=tcg and qemu-system-arm:
Tested-by: Alexandru Elisei <[email protected]>
Reviewed-by: Alexandru Elisei <[email protected]>
One thing I noticed is that if the user sets QEMU=qemu-system-arm on an arm64
machine, run_tests.sh still selects ACCEL=kvm which leads to the following
failure:
SKIP selftest-setup (qemu-system-arm: -accel kvm: invalid accelerator kvm)
I'm not sure if this deserves a fix, if the user set the QEMU variable I
believe it is probable that the user is also aware of the ACCEL variable
and the error message does a good job explaining what is wrong. Just in
case, this is what I did to make kvm-unit-tests pick the right accelerator
(copied-and-pasted the find_word function from scripts/runtime.bash):
diff --git a/arm/run b/arm/run
index 94adcddb7399..b0c9613b8d28 100755
--- a/arm/run
+++ b/arm/run
@@ -10,6 +15,10 @@ if [ -z "$KUT_STANDALONE" ]; then
fi
processor="$PROCESSOR"
+if [ -z $ACCEL ] && [ "$HOST" = "aarch64" ] && ! find_word "qemu-system-arm"
"$QEMU"; then
+ ACCEL=tcg
+fi
+
Thanks,
Alex
>
> Cc: Alexandru Elisei <[email protected]>
> Signed-off-by: Andrew Jones <[email protected]>
> ---
> arm/run | 4 ++++
> scripts/arch-run.bash | 4 +++-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/arm/run b/arm/run
> index 0629b69a117c..28a0b4ad2729 100755
> --- a/arm/run
> +++ b/arm/run
> @@ -13,6 +13,10 @@ processor="$PROCESSOR"
> ACCEL=$(get_qemu_accelerator) ||
> exit $?
>
> +if [ "$ACCEL" = "kvm" ]; then
> + QEMU_ARCH=$HOST
> +fi
> +
> qemu=$(search_qemu_binary) ||
> exit $?
>
> diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
> index aae552321f9b..0dfaf017db0a 100644
> --- a/scripts/arch-run.bash
> +++ b/scripts/arch-run.bash
> @@ -176,8 +176,10 @@ search_qemu_binary ()
> local save_path=$PATH
> local qemucmd qemu
>
> + : "${QEMU_ARCH:=$ARCH_NAME}"
> +
> export PATH=$PATH:/usr/libexec
> - for qemucmd in ${QEMU:-qemu-system-$ARCH_NAME qemu-kvm}; do
> + for qemucmd in ${QEMU:-qemu-system-$QEMU_ARCH qemu-kvm}; do
> if $qemucmd --help 2>/dev/null | grep -q 'QEMU'; then
> qemu="$qemucmd"
> break
> --
> 2.34.1
>
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm