qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 4/4] scripts: add script to compare compatible properties


From: Markus Armbruster
Subject: Re: [PATCH v2 4/4] scripts: add script to compare compatible properties
Date: Fri, 16 Sep 2022 07:57:30 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)

Maksim Davydov <davydov-max@yandex-team.ru> writes:

> This script run QEMU to obtain compat_props of machines and default
> values of different types and produce appropriate table. This table
> can be used to compare machine types to choose the most suitable
> machine. Also table in json or csv format should be used to check that
> new machine doesn't affect previous ones via comparisin tables with and

Do you mean "comparing tables"?

> without new machine.

Sounds useful.

Can we make this check part of "make check"?  Commit tables for stable
machine types, run the script and diff output against the committed
table?

> Default values of properties are needed to fill "holes" in the table (one
> machine has these properties and another not).

I'm confused.  Can you elaborate?

> Notes:
> * some init values from the devices can't be available like properties
> from virtio-9p when configure has --disable-virtfs. This situations will
> be seen in the table as "unavailable driver".
> * Default values can be get can be obtained in an unobvious way, like
> x86 features. If the script doesn't know how to get property default value
> to compare one machine with another it fills "holes" with "unavailable
> method". This is done because script uses whitelist model to get default
> values of different types. It means that the method that can't be applied
> to a new type that can crash this script. It is better to get an
> "unavailable driver" when creating a new machine with new compatible
> properties than to break this script. So it turns out a more stable and
> generic script.
> * If the default value can't be obtained because this property doesn't
> exist or because this property can't have default value, appropriate
> "hole" will be filled by "unknown property" or "no default value"
> * If the property is applied to the abstract class, the script collects
> default values from all child classes (set of default values)
>
> Example:
>
> ./scripts/compare_mt.py --mt pc-q35-3.1 pc-q35-2.12
>
> ╒════════════════════════════════════╤═══════════════╤═══════════════╕
> │                                    │  pc-q35-2.12  │  pc-q35-3.1   │
> ╞════════════════════════════════════╪═══════════════╪═══════════════╡
> │    EPYC-IBPB-x86_64-cpu-xlevel     │  0x8000000a   │  2147483678   │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │       EPYC-x86_64-cpu-xlevel       │  0x8000000a   │  2147483678   │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │ Skylake-Server-IBRS-x86_64-cpu-pku │     False     │     True      │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │   Skylake-Server-x86_64-cpu-pku    │     False     │     True      │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │         VGA-global-vmstate         │     True      │     False     │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │     cirrus-vga-global-vmstate      │     True      │     False     │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │        hda-audio-use-timer         │     False     │     True      │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │  migration-decompress-error-check  │     False     │     True      │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │       qxl-vga-global-vmstate       │     True      │     False     │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │     vmware-svga-global-vmstate     │     True      │     False     │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │      x86_64-cpu-legacy-cache       │     True      │ [True, False] │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │         x86_64-cpu-topoext         │     False     │ [True, False] │
> ├────────────────────────────────────┼───────────────┼───────────────┤
> │   x86_64-cpu-x-hv-synic-kvm-only   │     True      │     False     │
> ╘════════════════════════════════════╧═══════════════╧═══════════════╛

Would examples showing "unavailable driver", "unavailable method",
"unknown property", and "no default value" be useful here?

> Signed-off-by: Maksim Davydov <davydov-max@yandex-team.ru>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]