rcutorture: Abstract qemu-flavor identification

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>
This commit is contained in:
Paul E. McKenney 2013-09-30 17:17:57 -07:00
parent 50d48a1d15
commit 4f8a031279
3 changed files with 36 additions and 6 deletions

View file

@ -51,3 +51,30 @@ configfrag_hotplug_cpu () {
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
}

View file

@ -109,12 +109,9 @@ boot_args=$6
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`

View file

@ -45,6 +45,7 @@ usage () {
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"
@ -101,6 +102,11 @@ do
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