Synchronizing the list of cpu features and models with qemu is a recurring task in libvirt. For x86, this is done by reading qom-list-properties for max-x86_64-cpu and manually filtering out everthing that does not look like a feature name, as well as parsing target/i386/cpu.c for cpu models.
This is a flawed, tedious and error-prone procedure. Ideally, qemu and libvirt would query a common source for cpu feature and model related information. Meanwhile, converting this information into an easier to parse format would help libvirt a lot. This patch series converts the cpu feature information present in target/i386/cpu.c (`feature_word_info`) into a yaml file and adds a script to generate the c code from this data. A patch set to convert the cpu model data (`builtin_x86_defs`) in the same way will follow. v1: https://lists.nongnu.org/archive/html/qemu-devel/2023-08/msg02005.html Changes since v1: * Incorporated changes from https://lists.nongnu.org/archive/html/qemu-devel/2023-08/msg04241.html. * Changed data format from xml to yaml, as proposed in https://lists.nongnu.org/archive/html/qemu-devel/2023-09/msg01033.html. Using json has some drawbacks, see https://lists.nongnu.org/archive/html/qemu-devel/2023-08/msg03384.html. * Rebased on top of current master. Features added in the meantime: amx-complex and vmx-enable-user-wait-pause * Split up the reformatting of feature_word_info.c.inc to make it easier to review. These patches could be squashed together before merging. Tim Wiederhake (10): target/i386: Add missing feature names in FEAT_VMX_EPT_VPID_CAPS target/i386: Fix feature names in FEAT_VMX_EPT_VPID_CAPS target/i386: Fix duplicated feature name in FEAT_KVM target/i386: Split out feature_word_info target/i386: Translate feature_word_info to yaml target/i386: Format feature_word_info.c.inc: Remove comments target/i386: Format feature_word_info.c.inc: feat_names target/i386: Format feature_word_info.c.inc: Unfold cpuid member target/i386: Format feature_word_info.c.inc: Whitespaces and trailing commas target/i386: Autogenerate feature_word_info.c.inc target/i386/cpu.c | 677 +----------------- target/i386/feature_word_info.c.inc | 1030 +++++++++++++++++++++++++++ target/i386/feature_word_info.py | 62 ++ target/i386/feature_word_info.yaml | 697 ++++++++++++++++++ 4 files changed, 1790 insertions(+), 676 deletions(-) create mode 100644 target/i386/feature_word_info.c.inc create mode 100755 target/i386/feature_word_info.py create mode 100644 target/i386/feature_word_info.yaml -- 2.39.2