This allows additional options to be passed to QEMU. It follows the convention of passing parameters after a -- to the child process. In my case I'm using it to toggle MTTCG on an off: ./run_tests.sh -- --accel tcg,thread=multi Signed-off-by: Alex Bennée <alex.bennee@xxxxxxxxxx> --- v1 - changes from -o to -- - fixed whitespace damage v2 - ensure extra opts have precendence over extra_params in config --- README.md | 6 ++++++ run_tests.sh | 13 ++++++++++--- scripts/common.bash | 7 ++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 153ae5e..99806f5 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,12 @@ To modify or disable the timeouts (see man timeout(1)): TIMEOUT=$DURATION ./run_tests.sh TIMEOUT=0 ./run_tests.sh +Any arguments past the end-of-arguments marker (--) is passed on down +to the QEMU invocation. This can of course be combined with the other +modifiers: + + ACCEL=tcg ./run_tests.sh -v -- --accel tcg,thread=multi + # Contributing ## Directory structure diff --git a/run_tests.sh b/run_tests.sh index 09cd057..a3f6f8f 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -13,8 +13,7 @@ function usage() { cat <<EOF -Usage: $0 [-g group] [-h] [-v] -Usage: $0 [-g group] [-h] [-v] [-j NUM-TASKS] +Usage: $0 [-g group] [-h] [-v] [-j NUM-TASKS] [-- QEMU options] -g: Only execute tests in the given group -h: Output this help text @@ -24,6 +23,8 @@ Usage: $0 [-g group] [-h] [-v] [-j NUM-TASKS] Set the environment variable QEMU=/path/to/qemu-system-ARCH to specify the appropriate qemu binary for ARCH-run. +All options specified after -- are passed on to QEMU. + EOF } @@ -55,6 +56,12 @@ while getopts "g:hj:v" opt; do esac done +# Any options left for QEMU? +shift $((OPTIND-1)) +if [ "$#" -gt 0 ]; then + extra_opts="$@" +fi + # RUNTIME_log_file will be configured later RUNTIME_log_stderr () { cat >> $RUNTIME_log_file; } RUNTIME_log_stdout () { @@ -93,7 +100,7 @@ mkdir $unittest_log_dir || exit 2 echo "BUILD_HEAD=$(cat build-head)" > $unittest_log_dir/SUMMARY trap "wait; exit 130" SIGINT -for_each_unittest $config run_task +for_each_unittest $config run_task "$extra_opts" # wait until all tasks finish wait diff --git a/scripts/common.bash b/scripts/common.bash index ee9143c..ab33ef1 100644 --- a/scripts/common.bash +++ b/scripts/common.bash @@ -3,10 +3,11 @@ function for_each_unittest() { local unittests="$1" local cmd="$2" + local extra_opts=$3 local testname local smp local kernel - local opts + local opts=$extra_opts local groups local arch local check @@ -21,7 +22,7 @@ function for_each_unittest() testname=${BASH_REMATCH[1]} smp=1 kernel="" - opts="" + opts=$extra_opts groups="" arch="" check="" @@ -32,7 +33,7 @@ function for_each_unittest() elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then smp=${BASH_REMATCH[1]} elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then - opts=${BASH_REMATCH[1]} + opts="${BASH_REMATCH[1]} $opts" elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then groups=${BASH_REMATCH[1]} elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html