Re: [PATCH kvm-unit-tests] arch-run: Introduce QEMU_ARCH

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <alexandru.elisei@xxxxxxx>
Reviewed-by: Alexandru Elisei <alexandru.elisei@xxxxxxx>

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 <alexandru.elisei@xxxxxxx>
> Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
> ---
>  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
> 



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux