]> git.karo-electronics.de Git - linux-beck.git/commitdiff
torture: Choose bzImage location based on architecture
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 6 Mar 2014 22:44:46 +0000 (14:44 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 14 May 2014 16:46:04 +0000 (09:46 -0700)
Currently, the scripts hard-code arch/x86/boot/bzImage, which does not
work well for other architectures.  This commit therefore provides a
identify_boot_image function that selects the correct bzImage location
relative to the top of the Linux source tree.  This commit also adds a
--bootimage argument that allows selecting some other file, for example,
"vmlinux".

This change requires that the definition of the QEMU variable be
computed earlier in order to identify where to look for the boot image
when it comes time to copy it to the results directory.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
tools/testing/selftests/rcutorture/bin/functions.sh
tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
tools/testing/selftests/rcutorture/bin/kvm.sh

index 6b2adb29b073d15d821f5ef1a86be3258735f616..d01b865bb1002fa00e9351e42a2648109f7e1968 100644 (file)
@@ -76,6 +76,30 @@ configfrag_hotplug_cpu () {
        grep -q '^CONFIG_HOTPLUG_CPU=y$' "$1"
 }
 
+# identify_boot_image qemu-cmd
+#
+# Returns the relative path to the kernel build image.  This will be
+# arch/<arch>/boot/bzImage unless overridden with the TORTURE_BOOT_IMAGE
+# environment variable.
+identify_boot_image () {
+       if test -n "$TORTURE_BOOT_IMAGE"
+       then
+               echo $TORTURE_BOOT_IMAGE
+       else
+               case "$1" in
+               qemu-system-x86_64|qemu-system-i386)
+                       echo arch/x86/boot/bzImage
+                       ;;
+               qemu-system-ppc64)
+                       echo arch/powerpc/boot/bzImage
+                       ;;
+               *)
+                       echo ""
+                       ;;
+               esac
+       fi
+}
+
 # identify_qemu builddir
 #
 # Returns our best guess as to which qemu command is appropriate for
index cfa97e1ad8dcb8240068a2ef50b943518ee4739c..2301982b808750cac44137a7f14158bc8fc14c06 100755 (executable)
@@ -94,9 +94,17 @@ fi
 # CONFIG_YENTA=n
 if kvm-build.sh $config_template $builddir $T
 then
+       QEMU="`identify_qemu $builddir/vmlinux`"
+       BOOT_IMAGE="`identify_boot_image $QEMU`"
        cp $builddir/Make*.out $resdir
        cp $builddir/.config $resdir
-       cp $builddir/arch/x86/boot/bzImage $resdir
+       if test -n "$BOOT_IMAGE"
+       then
+               cp $builddir/$BOOT_IMAGE $resdir
+       else
+               echo No identifiable boot image, not running KVM, see $resdir.
+               echo Do the torture scripts know about your architecture?
+       fi
        parse-build.sh $resdir/Make.out $title
        if test -f $builddir.wait
        then
@@ -124,9 +132,6 @@ cd $KVM
 kstarttime=`awk 'BEGIN { print systime() }' < /dev/null`
 echo ' ---' `date`: Starting kernel
 
-# Determine the appropriate flavor of qemu command.
-QEMU="`identify_qemu $builddir/vmlinux`"
-
 # Generate -smp qemu argument.
 qemu_args="-nographic $qemu_args"
 cpu_count=`configNR_CPUS.sh $config_template`
@@ -151,13 +156,13 @@ boot_args="`configfrag_boot_params "$boot_args" "$config_template"`"
 # Generate kernel-version-specific boot parameters
 boot_args="`per_version_boot_params "$boot_args" $builddir/.config $seconds`"
 
-echo $QEMU $qemu_args -m 512 -kernel $builddir/arch/x86/boot/bzImage -append \"$qemu_append $boot_args\" > $resdir/qemu-cmd
+echo $QEMU $qemu_args -m 512 -kernel $builddir/$BOOT_IMAGE -append \"$qemu_append $boot_args\" > $resdir/qemu-cmd
 if test -n "$TORTURE_BUILDONLY"
 then
        echo Build-only run specified, boot/test omitted.
        exit 0
 fi
-( $QEMU $qemu_args -m 512 -kernel $builddir/arch/x86/boot/bzImage -append "$qemu_append $boot_args"; echo $? > $resdir/qemu-retval ) &
+( $QEMU $qemu_args -m 512 -kernel $builddir/$BOOT_IMAGE -append "$qemu_append $boot_args"; echo $? > $resdir/qemu-retval ) &
 qemu_pid=$!
 commandcompleted=0
 echo Monitoring qemu job at pid $qemu_pid
index 37960d707d3e71ff0d4656ee6e3715181f60a162..468d92f94e7f1056c3383d6107b54949c5b661c2 100644 (file)
@@ -39,6 +39,7 @@ dryrun=""
 KVM="`pwd`/tools/testing/selftests/rcutorture"; export KVM
 PATH=${KVM}/bin:$PATH; export PATH
 TORTURE_DEFCONFIG=defconfig
+TORTURE_BOOT_IMAGE=""
 TORTURE_INITRD="$KVM/initrd"; export TORTURE_INITRD
 TORTURE_KMAKE_ARG=""
 TORTURE_SUITE=rcu
@@ -53,6 +54,7 @@ kversion=""
 usage () {
        echo "Usage: $scriptname optional arguments:"
        echo "       --bootargs kernel-boot-arguments"
+       echo "       --bootimage relative-path-to-kernel-boot-image"
        echo "       --buildonly"
        echo "       --configs \"config-file list\""
        echo "       --cpus N"
@@ -80,6 +82,11 @@ do
                TORTURE_BOOTARGS="$2"
                shift
                ;;
+       --bootimage)
+               checkarg --bootimage "(relative path to kernel boot image)" "$#" "$2" '[a-zA-Z0-9][a-zA-Z0-9_]*' '^--'
+               TORTURE_BOOT_IMAGE="$2"
+               shift
+               ;;
        --buildonly)
                TORTURE_BUILDONLY=1
                ;;
@@ -245,6 +252,7 @@ CONFIGFRAG="$CONFIGFRAG"; export CONFIGFRAG
 KVM="$KVM"; export KVM
 KVPATH="$KVPATH"; export KVPATH
 PATH="$PATH"; export PATH
+TORTURE_BOOT_IMAGE="$TORTURE_BOOT_IMAGE"; export TORTURE_BOOT_IMAGE
 TORTURE_BUILDONLY="$TORTURE_BUILDONLY"; export TORTURE_BUILDONLY
 TORTURE_DEFCONFIG="$TORTURE_DEFCONFIG"; export TORTURE_DEFCONFIG
 TORTURE_INITRD="$TORTURE_INITRD"; export TORTURE_INITRD