From: Paolo Bonzini <pbonzini@redhat.com>
To: Andrew Jones <drjones@redhat.com>, kvm@vger.kernel.org
Cc: alex.bennee@linaro.org, cov@codeaurora.org
Subject: Re: [kvm-unit-tests PATCH 09/18] arm/run: use ACCEL to choose between kvm and tcg
Date: Tue, 10 Nov 2015 17:30:54 +0100 [thread overview]
Message-ID: <56421BBE.1090001@redhat.com> (raw)
In-Reply-To: <1446769483-21586-10-git-send-email-drjones@redhat.com>
On 06/11/2015 01:24, Andrew Jones wrote:
> Inspired by a patch by Alex Bennée. This version uses a new
> unittests.cfg variable and includes support for DRYRUN.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> arm/run | 43 +++++++++++++++++++++++++++++++++++++------
> arm/unittests.cfg | 4 +++-
> run_tests.sh | 3 ++-
> scripts/functions.bash | 8 ++++++--
> scripts/mkstandalone.sh | 15 +++++++++++----
> 5 files changed, 59 insertions(+), 14 deletions(-)
>
> diff --git a/arm/run b/arm/run
> index 8cc2fa2571967..4a648697d7fb5 100755
> --- a/arm/run
> +++ b/arm/run
> @@ -7,6 +7,42 @@ fi
> source config.mak
> processor="$PROCESSOR"
>
> +if [ -c /dev/kvm ]; then
> + if [ "$HOST" = "arm" ] && [ "$ARCH" = "arm" ]; then
> + kvm_available=yes
> + elif [ "$HOST" = "aarch64" ]; then
> + kvm_available=yes
> + fi
> +fi
> +
> +if [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ] &&
> + [ "$DRYRUN" != "yes" ]; then
> + printf "skip $TESTNAME (kvm only)\n\n"
> + exit 2
> +fi
> +
> +if [ -z "$ACCEL" ]; then
> + if [ "$DRYRUN" = "yes" ]; then
> + # Output kvm with tcg fallback for dryrun (when both are
> + # allowed), since the command line we output may get used
> + # elsewhere.
> + ACCEL="kvm:tcg"
> + elif [ "$kvm_available" = "yes" ]; then
> + ACCEL="kvm"
> + else
> + ACCEL="tcg"
> + fi
> +fi
> +
> +if [ "$ARCH" = "arm64" ]; then
> + if [[ $ACCEL =~ kvm ]]; then
> + # arm64 must use '-cpu host' with kvm, and we can't use
> + # '-cpu host' with tcg, so we force kvm-only (no fallback)
> + ACCEL="kvm"
> + processor="host"
> + fi
> +fi
> +
> qemu="${QEMU:-qemu-system-$ARCH_NAME}"
> qpath=$(which $qemu 2>/dev/null)
>
> @@ -33,15 +69,10 @@ if $qemu $M -chardev testdev,id=id -initrd . 2>&1 \
> exit 2
> fi
>
> -M='-machine virt,accel=kvm:tcg'
> chr_testdev='-device virtio-serial-device'
> chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd'
>
> -# arm64 must use '-cpu host' with kvm
> -if [ "$(arch)" = "aarch64" ] && [ "$ARCH" = "arm64" ] && [ -c /dev/kvm ]; then
> - processor="host"
> -fi
> -
> +M+=",accel=$ACCEL"
> command="$qemu $M -cpu $processor $chr_testdev"
> command+=" -display none -serial stdio -kernel"
> echo $command "$@"
> diff --git a/arm/unittests.cfg b/arm/unittests.cfg
> index e068a0cdd9c1f..243c13301811b 100644
> --- a/arm/unittests.cfg
> +++ b/arm/unittests.cfg
> @@ -3,8 +3,10 @@
> # file = foo.flat # Name of the flat file to be used
> # smp = 2 # Number of processors the VM will use during this test
> # extra_params = -append <params...> # Additional parameters used
> -# arch = arm/arm64 # Only if test case is specific to one
> +# arch = arm|arm64 # Only if test case is specific to one
> # groups = group1 group2 # Used to identify test cases with run_tests -g ...
> +# accel = kvm|tcg # Optionally specify if test must run with kvm or tcg.
> +# # If not specified, then kvm will be used when available.
>
> #
> # Test that the configured number of processors (smp = <num>), and
> diff --git a/run_tests.sh b/run_tests.sh
> index 80b87823c3358..b1b4c541ecaea 100755
> --- a/run_tests.sh
> +++ b/run_tests.sh
> @@ -20,6 +20,7 @@ function run()
> local opts="$5"
> local arch="$6"
> local check="$7"
> + local accel="$8"
>
> if [ -z "$testname" ]; then
> return
> @@ -46,7 +47,7 @@ function run()
> fi
> done
>
> - cmdline="TESTNAME=$testname ./$TEST_DIR-run $kernel -smp $smp $opts"
> + cmdline="TESTNAME=$testname ACCEL=$accel ./$TEST_DIR-run $kernel -smp $smp $opts"
> if [ $verbose != 0 ]; then
> echo $cmdline
> fi
> diff --git a/scripts/functions.bash b/scripts/functions.bash
> index 7ed5a517250bc..f13fe6f88f23d 100644
> --- a/scripts/functions.bash
> +++ b/scripts/functions.bash
> @@ -10,12 +10,13 @@ function for_each_unittest()
> local groups
> local arch
> local check
> + local accel
>
> exec {fd}<"$unittests"
>
> while read -u $fd line; do
> if [[ "$line" =~ ^\[(.*)\]$ ]]; then
> - "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check"
> + "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel"
> testname=${BASH_REMATCH[1]}
> smp=1
> kernel=""
> @@ -23,6 +24,7 @@ function for_each_unittest()
> groups=""
> arch=""
> check=""
> + accel=""
> elif [[ $line =~ ^file\ *=\ *(.*)$ ]]; then
> kernel=$TEST_DIR/${BASH_REMATCH[1]}
> elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then
> @@ -35,8 +37,10 @@ function for_each_unittest()
> arch=${BASH_REMATCH[1]}
> elif [[ $line =~ ^check\ *=\ *(.*)$ ]]; then
> check=${BASH_REMATCH[1]}
> + elif [[ $line =~ ^accel\ *=\ *(.*)$ ]]; then
> + accel=${BASH_REMATCH[1]}
> fi
> done
> - "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check"
> + "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel"
> exec {fd}<&-
> }
> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
> index 4cf346ab87d24..0c39451e538c9 100755
> --- a/scripts/mkstandalone.sh
> +++ b/scripts/mkstandalone.sh
> @@ -29,6 +29,7 @@ function mkstandalone()
> local opts="$5"
> local arch="$6"
> local check="$7"
> + local accel="$8"
>
> if [ -z "$testname" ]; then
> return 1
> @@ -39,7 +40,7 @@ function mkstandalone()
> fi
>
> standalone=tests/$testname
> - cmdline=$(DRYRUN=yes ./$TEST_DIR-run $kernel)
> + cmdline=$(DRYRUN=yes ACCEL=$accel ./$TEST_DIR-run $kernel)
> if [ $? -ne 0 ]; then
> echo $cmdline
> exit 1
> @@ -94,10 +95,16 @@ qemu="$qemu"
> if [ "\$QEMU" ]; then
> qemu="\$QEMU"
> fi
> -cmdline="\`echo '$cmdline' | sed s%$kernel%\$bin%\`"
> echo \$qemu $cmdline -smp $smp $opts
> -\$qemu \$cmdline -smp $smp $opts
> -ret=\$?
> +
> +cmdline="\`echo '$cmdline' | sed s%$kernel%_NO_FILE_4Uhere_%\`"
> +if \$qemu \$cmdline 2>&1 | grep 'No accelerator found'; then
> + ret=2
> +else
> + cmdline="\`echo '$cmdline' | sed s%$kernel%\$bin%\`"
> + \$qemu \$cmdline -smp $smp $opts
> + ret=\$?
> +fi
> echo Return value from qemu: \$ret
> if [ \$ret -le 1 ]; then
> echo PASS $testname 1>&2
>
Applied, thanks.
Paolo
next prev parent reply other threads:[~2015-11-10 16:31 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-06 0:24 [kvm-unit-tests PATCH 00/18] bunch of mostly trivial patches Andrew Jones
2015-11-06 0:24 ` [kvm-unit-tests PATCH 01/18] makefiles: use bash Andrew Jones
2015-11-10 16:22 ` Paolo Bonzini
2015-11-10 16:37 ` Andrew Jones
2015-11-10 16:48 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 02/18] trivial: lib: fail hard on failed mallocs Andrew Jones
2015-11-06 14:05 ` Thomas Huth
2015-11-07 1:02 ` Andrew Jones
2015-11-09 20:53 ` [kvm-unit-tests PATCH v2 02/19] " Andrew Jones
2015-11-09 20:55 ` Thomas Huth
2015-11-10 16:23 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 03/18] trivial: alloc: don't use 'top' outside spinlock Andrew Jones
2015-11-10 16:24 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 04/18] trivial: lib: missing extern in string.h Andrew Jones
2015-11-10 16:24 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 05/18] README: add pointer to new wiki page Andrew Jones
2015-11-10 16:25 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 06/18] README: add some CONTRIBUTING notes Andrew Jones
2015-11-10 16:25 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 07/18] configure: emit HOST=$host to config.mak Andrew Jones
2015-11-10 16:26 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 08/18] run_tests: pass test name to run script Andrew Jones
2015-11-10 16:34 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 09/18] arm/run: use ACCEL to choose between kvm and tcg Andrew Jones
2015-11-10 16:30 ` Paolo Bonzini [this message]
2015-11-06 0:24 ` [kvm-unit-tests PATCH 10/18] run_tests: probe for max-smp Andrew Jones
2015-11-10 16:31 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 11/18] lib/printf: support the %u unsigned fmt field Andrew Jones
2015-11-10 16:33 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 12/18] lib/arm: add flush_tlb_page mmu function Andrew Jones
2015-11-10 16:33 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 13/18] arm: Fail on unknown subtest Andrew Jones
2015-11-10 16:34 ` Paolo Bonzini
2015-11-06 0:24 ` [kvm-unit-tests PATCH 14/18] arm/arm64: allow building a single test Andrew Jones
2015-11-06 0:24 ` [kvm-unit-tests PATCH 15/18] arm/arm64: generate map files Andrew Jones
2015-11-06 0:24 ` [kvm-unit-tests PATCH 16/18] lib: link in linux kernel headers (uapi) Andrew Jones
2015-11-06 0:24 ` [kvm-unit-tests PATCH 17/18] Revert "arm/arm64: import include/uapi/linux/psci.h" Andrew Jones
2015-11-06 0:24 ` [kvm-unit-tests PATCH 18/18] arm/arm64: uart0_init: check /chosen/stdout-path Andrew Jones
2015-11-10 16:37 ` Paolo Bonzini
2015-11-09 20:57 ` [kvm-unit-tests PATCH 19/18] don't embed code inside asserts Andrew Jones
2015-11-10 16:37 ` Paolo Bonzini
2015-11-10 16:38 ` [kvm-unit-tests PATCH 00/18] bunch of mostly trivial patches Paolo Bonzini
2015-11-10 16:54 ` Andrew Jones
2015-11-20 18:01 ` Andrew Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56421BBE.1090001@redhat.com \
--to=pbonzini@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=cov@codeaurora.org \
--cc=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.