rcutorture: Abstract qemu-flavor identification
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 1 Oct 2013 00:17:57 +0000 (17:17 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 3 Dec 2013 18:11:14 +0000 (10:11 -0800)
The task of working out which flavor of qemu to use gets more complex
as more types of CPUs are supported.  Adding Power makes three in addition
to 32-bit and 64-bit x86, so it is time to pull this out into a function.
This commit therefore creates an identify_qemu function and also adds
a --qemu-cmd command-line argument for the inevitable case where the
identify_qemu cannot figure it out.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Greg KH <gregkh@linuxfoundation.org>
tools/testing/selftests/rcutorture/bin/functions.sh
tools/testing/selftests/rcutorture/bin/kvm-test-1-rcu.sh
tools/testing/selftests/rcutorture/bin/kvm.sh

index 8f912419ed7f59c877b10d7f0716f2cd6ab7ab84..c974414ef7a5bd121aa1bf54d3ba7d8d9fe5e2d3 100644 (file)
@@ -51,3 +51,30 @@ configfrag_hotplug_cpu () {
        fi
        grep -q '^CONFIG_HOTPLUG_CPU=y$' "$1"
 }
        fi
        grep -q '^CONFIG_HOTPLUG_CPU=y$' "$1"
 }
+
+# identify_qemu builddir
+#
+# Returns our best guess as to which qemu command is appropriate for
+# the kernel at hand.  Override with the RCU_QEMU_CMD environment variable.
+identify_qemu () {
+       local u="`file "$1"`"
+       if test -n "$RCU_QEMU_CMD"
+       then
+               echo $RCU_QEMU_CMD
+       elif echo $u | grep -q x86-64
+       then
+               echo qemu-system-x86_64
+       elif echo $u | grep -q "Intel 80386"
+       then
+               echo qemu-system-i386
+       elif uname -a | grep -q ppc64
+       then
+               echo qemu-system-ppc64
+       else
+               echo Cannot figure out what qemu command to use! 1>&2
+               # Usually this will be one of /usr/bin/qemu-system-*
+               # Use RCU_QEMU_CMD environment variable or appropriate
+               # argument to top-level script.
+               exit 1
+       fi
+}
index 5526550a5d568511c83e1444f5ba87d6a4fc92b1..ddf3bd6eaf19f39fa821eae979a0e15c25dbdc8e 100755 (executable)
@@ -109,12 +109,9 @@ boot_args=$6
 cd $KVM
 kstarttime=`awk 'BEGIN { print systime() }' < /dev/null`
 echo ' ---' `date`: Starting kernel
 cd $KVM
 kstarttime=`awk 'BEGIN { print systime() }' < /dev/null`
 echo ' ---' `date`: Starting kernel
-if file linux-2.6/*.o | grep -q 64-bit
-then
-       QEMU=qemu-system-x86_64
-else
-       QEMU=qemu-system-i386
-fi
+
+# Determine the appropriate flavor of qemu command.
+QEMU="`identify_qemu $builddir/vmlinux.o`"
 
 # Generate -smp qemu argument.
 cpu_count=`configNR_CPUS.sh $config_template`
 
 # Generate -smp qemu argument.
 cpu_count=`configNR_CPUS.sh $config_template`
index bf6d68e96e94480d3ee3e1061f3f0d9614ca83d4..89164c245ca109e69b6662428880faa56e0fe5ca 100644 (file)
@@ -45,6 +45,7 @@ usage () {
        echo "       --datestamp string"
        echo "       --duration minutes"
        echo "       --kversion vN.NN"
        echo "       --datestamp string"
        echo "       --duration minutes"
        echo "       --kversion vN.NN"
+       echo "       --qemu-cmd qemu-system-..."
        echo "       --rcu-kvm absolute-pathname"
        echo "       --results absolute-pathname"
        echo "       --relbuilddir relative-pathname"
        echo "       --rcu-kvm absolute-pathname"
        echo "       --results absolute-pathname"
        echo "       --relbuilddir relative-pathname"
@@ -101,6 +102,11 @@ do
                kversion=$2
                shift
                ;;
                kversion=$2
                shift
                ;;
+       --qemu-cmd)
+               checkarg --qemu-cmd "(qemu-system-...)" $# "$2" 'qemu-system-' '^--'
+               RCU_QEMU_CMD="$2"; export RCU_QEMU_CMD
+               shift
+               ;;
        --rcu-kvm)
                checkarg --rcu-kvm "(absolute pathname)" "$#" "$2" '^/' error
                KVM=$2; export KVM
        --rcu-kvm)
                checkarg --rcu-kvm "(absolute pathname)" "$#" "$2" '^/' error
                KVM=$2; export KVM
This page took 0.027239 seconds and 5 git commands to generate.