Re: [kvm-unit-tests RFC PATCH 3/5] run_tests.sh: Add kvmtool support

Alexandru Elisei <[email protected]>
Newsgroups org.kernel.vger.kvm-ppc,dev.linux.lists.kvmarm,org.kernel.vger.kvm,org.kernel.vger.linux-s390
Message-ID <[email protected]>
Hi Drew,

On 9/8/21 4:49 PM, Andrew Jones wrote:
> On Wed, Sep 08, 2021 at 04:46:19PM +0100, Alexandru Elisei wrote:
>> Hi Drew,
>>
>> On 9/8/21 4:09 PM, Andrew Jones wrote:
>>> 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.
>> Got it, replace extra_opts with qemu_opts in the scripts.
>>
>> Yes, the documentation for unittests.cfg (at the top of the file) should
>> definitely be updated to document the new configuration option, kvmtool_params.
>>
>>> 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.
>> What do you feel about renaming extra_params -> qemu_params in unittests.cfg?
> Yes, that's what I would expect the patch to do.
>
>> I'm
>> thinking it would make the usage clearer, improve consistency (we would have
>> qemu_params and kvmtool_params, instead of extra_params and kvmtool_params), and
>> remove any confusions regarding when they are used (I can see someone thinking
>> that extra_params are used all the time, and are appended to kvmtool_params when
>> --target=kvmtool). On the other hand, this could be problematic for people using
>> out-of-tree scripts that parse the unittest.cfg file for whatever reason (are
>> there people that do that?).
> I'm not as worried about that as about people using out-of-tree
> unittests.cfg files that will break when the 'extra_params' field
> disappears. That's why I suggested to make 'extra_params' an alias.

I'm sorry, but I'm still having trouble parsing what alias means in this context.
Do you mean keep extra_params for current tests, encourage qemu_params for new
tests, document that they mean the same thing and going forward qemu_params should
be used?

Thanks,

Alex

>
> Thanks,
> drew
>
>> Thanks,
>>
>> Alex
>>
>>> Thanks,
>>> drew
>>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.