The --probe-maxsmp parameter updates MAX_SMP with the maximum number of VCPUs that the host supports. Qemu will exit with an error when creating a virtual machine if the number of VCPUs is exceeded.
kvmtool behaves differently: it will automatically limit the number of VCPUs to the what KVM supports, which is exactly what --probe-maxsmp wants to achieve. When doing --probe-maxsmp with kvmtool, print a message explaining why it's redundant and don't do anything else. Signed-off-by: Alexandru Elisei <alexandru.eli...@arm.com> --- run_tests.sh | 3 ++- scripts/runtime.bash | 16 ---------------- scripts/vmm.bash | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index 150a06a91064..a69c3665b7a4 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -10,6 +10,7 @@ if [ ! -f config.mak ]; then fi source config.mak source scripts/common.bash +source scripts/vmm.bash function usage() { @@ -90,7 +91,7 @@ while [ $# -gt 0 ]; do list_tests="yes" ;; --probe-maxsmp) - probe_maxsmp + ${vmm_opts[$TARGET:probe_maxsmp]} ;; --) ;; diff --git a/scripts/runtime.bash b/scripts/runtime.bash index 01ec8eae2bba..a802686c511d 100644 --- a/scripts/runtime.bash +++ b/scripts/runtime.bash @@ -209,19 +209,3 @@ function run() return $ret } - -# -# Probe for MAX_SMP, in case it's less than the number of host cpus. -# -function probe_maxsmp() -{ - local smp - - if smp=$($RUNTIME_arch_run _NO_FILE_4Uhere_ -smp $MAX_SMP |& grep 'SMP CPUs'); then - smp=${smp##* } - smp=${smp/\(} - smp=${smp/\)} - echo "Restricting MAX_SMP from ($MAX_SMP) to the max supported ($smp)" >&2 - MAX_SMP=$smp - fi -} diff --git a/scripts/vmm.bash b/scripts/vmm.bash index a1d50ed51981..ef9819f4132c 100644 --- a/scripts/vmm.bash +++ b/scripts/vmm.bash @@ -105,6 +105,22 @@ function qemu_parse_premature_failure() return 0 } +# +# Probe for MAX_SMP, in case it's less than the number of host cpus. +# +function qemu_probe_maxsmp() +{ + local smp + + if smp=$($RUNTIME_arch_run _NO_FILE_4Uhere_ -smp $MAX_SMP |& grep 'SMP CPUs'); then + smp=${smp##* } + smp=${smp/\(} + smp=${smp/\)} + echo "Restricting MAX_SMP from ($MAX_SMP) to the max supported ($smp)" >&2 + MAX_SMP=$smp + fi +} + function kvmtool_parse_premature_failure() { local log="$@" @@ -114,6 +130,12 @@ function kvmtool_parse_premature_failure() return 0 } +function kvmtool_probe_maxsmp() +{ + echo "kvmtool automatically limits the number of VCPUs to maximum supported" + echo "The 'smp' test parameter won't be modified" +} + declare -A vmm_opts=( [qemu:nr_cpus]='-smp' [qemu:kernel]='-kernel' @@ -122,6 +144,7 @@ declare -A vmm_opts=( [qemu:default_opts]='' [qemu:fixup_return_code]=qemu_fixup_return_code [qemu:parse_premature_failure]=qemu_parse_premature_failure + [qemu:probe_maxsmp]=qemu_probe_maxsmp [kvmtool:nr_cpus]='--cpus' [kvmtool:kernel]='--kernel' @@ -130,6 +153,7 @@ declare -A vmm_opts=( [kvmtool:default_opts]="$KVMTOOL_DEFAULT_OPTS" [kvmtool:fixup_return_code]=kvmtool_fixup_return_code [kvmtool:parse_premature_failure]=kvmtool_parse_premature_failure + [kvmtool:probe_maxsmp]=kvmtool_probe_maxsmp ) function check_vmm_supported() -- 2.49.0