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. Reviewed-by: Andrew Jones <andrew.jo...@linux.dev> Reviewed-by: Shaoqin Huang <shahu...@redhat.com> Signed-off-by: Alexandru Elisei <alexandru.eli...@arm.com> --- Changes v3->v4: * Use vmmm_probe_maxsmp() instead of indexing vmm_optname in run_tests.sh. run_tests.sh | 3 ++- scripts/runtime.bash | 16 ---------------- scripts/vmm.bash | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index 150a06a91064..4cfc3cd9e4cf 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_probe_maxsmp $RUNTIME_arch_run ;; --) ;; diff --git a/scripts/runtime.bash b/scripts/runtime.bash index 5839ca5ca665..766d1d28fb75 100644 --- a/scripts/runtime.bash +++ b/scripts/runtime.bash @@ -207,19 +207,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 44954a711cad..724c96f9e665 100644 --- a/scripts/vmm.bash +++ b/scripts/vmm.bash @@ -91,6 +91,23 @@ 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 runtime_arch_run="$1" + 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_fixup_return_code() { local ret=$1 @@ -112,6 +129,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_optname=( [qemu,args]='-append' [qemu,default_opts]='' @@ -119,6 +142,7 @@ declare -A vmm_optname=( [qemu,initrd]='-initrd' [qemu,nr_cpus]='-smp' [qemu,parse_premature_failure]=qemu_parse_premature_failure + [qemu,probe_maxsmp]=qemu_probe_maxsmp [kvmtool,args]='--params' [kvmtool,default_opts]="$KVMTOOL_DEFAULT_OPTS" @@ -126,6 +150,7 @@ declare -A vmm_optname=( [kvmtool,initrd]='--initrd' [kvmtool,nr_cpus]='--cpus' [kvmtool,parse_premature_failure]=kvmtool_parse_premature_failure + [kvmtool,probe_maxsmp]=kvmtool_probe_maxsmp ) function vmm_optname_args() @@ -158,6 +183,11 @@ function vmm_parse_premature_failure() ${vmm_optname[$(vmm_get_target),parse_premature_failure]} "$@" } +function vmm_probe_maxsmp() +{ + ${vmm_optname[$(vmm_get_target),probe_maxsmp]} "$1" +} + function vmm_get_target() { if [[ -z "$TARGET" ]]; then -- 2.50.0