On Wed, Sep 08, 2021 at 03:33:19PM +0100, Alexandru Elisei wrote: ... > >> +fixup_kvmtool_opts() > >> +{ > >> + local opts=$1 > >> + local groups=$2 > >> + local gic > >> + local gic_version > >> + > >> + if find_word "pmu" $groups; then > >> + opts+=" --pmu" > >> + fi > >> + > >> + if find_word "its" $groups; then > >> + gic_version=3 > >> + gic="gicv3-its" > >> + elif [[ "$opts" =~ -machine\ *gic-version=(2|3) ]]; then > >> + gic_version="${BASH_REMATCH[1]}" > >> + gic="gicv$gic_version" > >> + fi > >> + > >> + if [ -n "$gic" ]; then > >> + opts=${opts/-machine gic-version=$gic_version/} > >> + opts+=" --irqchip=$gic" > >> + fi > >> + > >> + opts=${opts/-append/--params} > >> + > >> + echo "$opts" > >> +} > > Hmm, I don't think we want to write a QEMU parameter translator for > > all other VMMs, and all other VMM architectures, that we want to > > support. I think we should add new "extra_params" variables to the > > unittest configuration instead, e.g. "kvmtool_params", where the > > extra parameters can be listed correctly and explicitly. While at > > it, I would create an alias for "extra_params", which would be > > "qemu_params" allowing unittests that support more than one VMM > > to clearly show what's what. > > I agree, this is a much better idea than a parameter translator. Using a dedicated > variable in unittests.cfg will make it easier for new tests to get support for all > VMMs (for example, writing a list of parameters in unittests.cfg should be easier > than digging through the scripts to figure exactly how and where to add a > translation for a new parameter), and it allow us to express parameters for other > VMMs which don't have a direct correspondent in qemu. > > By creating an alias, do you mean replacing extra_params with qemu_params in > arm/unittests.cfg? Or something else? Probably something like this diff --git a/scripts/common.bash b/scripts/common.bash index 7b983f7d6dd6..e5119ff216e5 100644 --- a/scripts/common.bash +++ b/scripts/common.bash @@ -37,7 +37,12 @@ function for_each_unittest() elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then smp=${BASH_REMATCH[1]} elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then - opts=${BASH_REMATCH[1]} + elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then + qemu_opts=${BASH_REMATCH[1]} + elif [[ $line =~ ^qemu_params\ *=\ *(.*)$ ]]; then + qemu_opts=${BASH_REMATCH[1]} + elif [[ $line =~ ^kvmtool_params\ *=\ *(.*)$ ]]; then + kvmtool_opts=${BASH_REMATCH[1]} elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then groups=${BASH_REMATCH[1]} elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then and all other changes needed to support the s/opts/qemu_opts/ change should work. Also, an addition to the unittests.cfg documentation. The above diff doesn't consider that a unittests.cfg file could have both an 'extra_params' and a 'qemu_params' field, but I'm not sure we care about that. Users should read the documentation and we should review changes to the committed unittests.cfg files to avoid that. Thanks, drew