public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen
@ 2015-08-03 17:51 Andrew Jones
  0 siblings, 0 replies; 6+ messages in thread
From: Andrew Jones @ 2015-08-03 17:51 UTC (permalink / raw)
  To: kvm; +Cc: alex.bennee, pbonzini

At least on the ARM side of things we're making sure unit tests can
be used for [MT]TCG, as well as for KVM. This series adds support to
unittests.cfg to allow us to specify kvm vs. tcg, as not all tests
will be able to run on both. The first patch is a repost of one of
Alex's pending patches, as the 3rd patch depends on it. The 3rd patch
obsoletes/replaces Alex's pending "arm/run: introduce usingkvm var
and use it" patch.

Alex Bennée (1):
  configure: emit HOST=$host to config.mak

Andrew Jones (2):
  run_tests: pass test name to run script
  arm/run: use ACCEL to choose between kvm and tcg

 arm/run                | 36 ++++++++++++++++++++++++++++++------
 arm/unittests.cfg      |  4 +++-
 configure              |  2 ++
 run_tests.sh           |  3 ++-
 scripts/functions.bash |  8 ++++++--
 5 files changed, 43 insertions(+), 10 deletions(-)

-- 
2.4.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen
@ 2015-08-04  7:25 Andrew Jones
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 1/3] configure: emit HOST=$host to config.mak Andrew Jones
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Andrew Jones @ 2015-08-04  7:25 UTC (permalink / raw)
  To: kvm; +Cc: alex.bennee, pbonzini

At least on the ARM side of things we're making sure unit tests can
be used for [MT]TCG, as well as for KVM. This series adds support to
unittests.cfg to allow us to specify kvm vs. tcg, as not all tests
will be able (should/need) to run on both. The first patch is a repost
of one of Alex's pending patches, as the 3rd patch depends on it. The
3rd patch obsoletes/replaces Alex's pending "arm/run: introduce
usingkvm var and use it" patch.

Alex Bennée (1):
  configure: emit HOST=$host to config.mak

Andrew Jones (2):
  run_tests: pass test name to run script
  arm/run: use ACCEL to choose between kvm and tcg

 arm/run                 | 43 +++++++++++++++++++++++++++++++++++++------
 arm/unittests.cfg       |  4 +++-
 configure               |  2 ++
 run_tests.sh            |  3 ++-
 scripts/functions.bash  |  8 ++++++--
 scripts/mkstandalone.sh | 15 +++++++++++----
 6 files changed, 61 insertions(+), 14 deletions(-)

-- 
2.4.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [kvm-unit-tests PATCH 1/3] configure: emit HOST=$host to config.mak
  2015-08-04  7:25 [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
@ 2015-08-04  7:25 ` Andrew Jones
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 2/3] run_tests: pass test name to run script Andrew Jones
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Andrew Jones @ 2015-08-04  7:25 UTC (permalink / raw)
  To: kvm; +Cc: alex.bennee, pbonzini

From: Alex Bennée <alex.bennee@linaro.org>

This is useful information for the run scripts to know, especially if
they want to drop to using TCG.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Andrew Jones <drjones@redhat.com>
---
 configure | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/configure b/configure
index b2ad32a3e3a52..078b70ce096a6 100755
--- a/configure
+++ b/configure
@@ -7,6 +7,7 @@ ld=ld
 objcopy=objcopy
 ar=ar
 arch=`uname -m | sed -e s/i.86/i386/ | sed -e 's/arm.*/arm/'`
+host=$arch
 cross_prefix=
 
 usage() {
@@ -122,6 +123,7 @@ ln -s $asm lib/asm
 cat <<EOF > config.mak
 PREFIX=$prefix
 KERNELDIR=$(readlink -f $kerneldir)
+HOST=$host
 ARCH=$arch
 ARCH_NAME=$arch_name
 PROCESSOR=$processor
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [kvm-unit-tests PATCH 2/3] run_tests: pass test name to run script
  2015-08-04  7:25 [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 1/3] configure: emit HOST=$host to config.mak Andrew Jones
@ 2015-08-04  7:25 ` Andrew Jones
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 3/3] arm/run: use ACCEL to choose between kvm and tcg Andrew Jones
  2015-08-04  8:05 ` [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
  3 siblings, 0 replies; 6+ messages in thread
From: Andrew Jones @ 2015-08-04  7:25 UTC (permalink / raw)
  To: kvm; +Cc: alex.bennee, pbonzini

With this $TEST_DIR/run can output test specific error messages.

Signed-off-by: Andrew Jones <drjones@redhat.com>
---
 run_tests.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/run_tests.sh b/run_tests.sh
index ebb7e9fe6fdfc..80b87823c3358 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -46,7 +46,7 @@ function run()
         fi
     done
 
-    cmdline="./$TEST_DIR-run $kernel -smp $smp $opts"
+    cmdline="TESTNAME=$testname ./$TEST_DIR-run $kernel -smp $smp $opts"
     if [ $verbose != 0 ]; then
         echo $cmdline
     fi
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [kvm-unit-tests PATCH 3/3] arm/run: use ACCEL to choose between kvm and tcg
  2015-08-04  7:25 [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 1/3] configure: emit HOST=$host to config.mak Andrew Jones
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 2/3] run_tests: pass test name to run script Andrew Jones
@ 2015-08-04  7:25 ` Andrew Jones
  2015-08-04  8:05 ` [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
  3 siblings, 0 replies; 6+ messages in thread
From: Andrew Jones @ 2015-08-04  7:25 UTC (permalink / raw)
  To: kvm; +Cc: alex.bennee, pbonzini

Inspired by a patch by Alex Bennée. This version uses a new
unittests.cfg variable and includes support for mkstandalone.

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
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen
  2015-08-04  7:25 [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
                   ` (2 preceding siblings ...)
  2015-08-04  7:25 ` [kvm-unit-tests PATCH 3/3] arm/run: use ACCEL to choose between kvm and tcg Andrew Jones
@ 2015-08-04  8:05 ` Andrew Jones
  3 siblings, 0 replies; 6+ messages in thread
From: Andrew Jones @ 2015-08-04  8:05 UTC (permalink / raw)
  To: kvm; +Cc: alex.bennee, pbonzini


Crap. Forgot -v2 on my format-patch command line...
Paolo, should I repost?

drew

On Tue, Aug 04, 2015 at 09:25:52AM +0200, Andrew Jones wrote:
> At least on the ARM side of things we're making sure unit tests can
> be used for [MT]TCG, as well as for KVM. This series adds support to
> unittests.cfg to allow us to specify kvm vs. tcg, as not all tests
> will be able (should/need) to run on both. The first patch is a repost
> of one of Alex's pending patches, as the 3rd patch depends on it. The
> 3rd patch obsoletes/replaces Alex's pending "arm/run: introduce
> usingkvm var and use it" patch.
> 
> Alex Bennée (1):
>   configure: emit HOST=$host to config.mak
> 
> Andrew Jones (2):
>   run_tests: pass test name to run script
>   arm/run: use ACCEL to choose between kvm and tcg
> 
>  arm/run                 | 43 +++++++++++++++++++++++++++++++++++++------
>  arm/unittests.cfg       |  4 +++-
>  configure               |  2 ++
>  run_tests.sh            |  3 ++-
>  scripts/functions.bash  |  8 ++++++--
>  scripts/mkstandalone.sh | 15 +++++++++++----
>  6 files changed, 61 insertions(+), 14 deletions(-)
> 
> -- 
> 2.4.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-08-04  8:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-04  7:25 [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
2015-08-04  7:25 ` [kvm-unit-tests PATCH 1/3] configure: emit HOST=$host to config.mak Andrew Jones
2015-08-04  7:25 ` [kvm-unit-tests PATCH 2/3] run_tests: pass test name to run script Andrew Jones
2015-08-04  7:25 ` [kvm-unit-tests PATCH 3/3] arm/run: use ACCEL to choose between kvm and tcg Andrew Jones
2015-08-04  8:05 ` [kvm-unit-tests PATCH 0/3] tcg is becoming a first class citizen Andrew Jones
  -- strict thread matches above, loose matches on Subject: below --
2015-08-03 17:51 Andrew Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox