From: Tim Wiederhake <twiederh@redhat.com>
To: "Igor Mammedov" <imammedo@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>
Cc: qemu-devel@nongnu.org,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Michael S . Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH v2 00/10] Generate x86 cpu features
Date: Fri, 15 Sep 2023 17:53:16 +0200 [thread overview]
Message-ID: <bbf3127802e95a7c9985c179bb470de4a970b64f.camel@redhat.com> (raw)
In-Reply-To: <20230911132618.16af94de@imammedo.users.ipa.redhat.com>
On Mon, 2023-09-11 at 13:26 +0200, Igor Mammedov wrote:
> On Fri, 8 Sep 2023 17:55:12 +0100
> Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> > On Fri, Sep 08, 2023 at 04:48:46PM +0200, Igor Mammedov wrote:
> > > On Fri, 8 Sep 2023 14:45:24 +0200
> > > Tim Wiederhake <twiederh@redhat.com> wrote:
> > >
> > > > 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.
> > >
> > > modulo fixing typos/name conflicts in 1st 3 patches,
> > >
> > > I don't think it's a great idea for libvirt (or any other user)
> > > to parse
> > > QEMU source (whether it's C code or yaml) or other way around for
> > > users
> > > to influence QEMU internals.
> >
> > NB It isn't for libvirt to parse at runtime, rather it is for
> > libvirt
> > maintainers to consume during dev, so libvirt keeps in sync with
> > QEMU
> > features.
>
> As QEMU dev, I'm not fond of code generators as sometimes they make
> difficult for me to read, and on to of that inventing new 'language'
> to describe features that works on some cases only (not everything
> is described in feature array, and for non x86 properties mostly
> coded in initfn/realizefn).
> (I'd dislike it less if it were part of QMP schema as it gets us
> closer to processing '-device' with QMP machinery).
>
> why not use existing QMP interface there as well (or alter it if
> it's not sufficient)?
>
>
I understand your concern regarding the legibility of generated code.
If you have a look at patches 6 - 9, you will see that the only changes
introduced are white space changes, harmonizing the usage of trailing
commas, breaking lines, and filling the "feat_names" field fully. That,
if anything, makes the code more readable in my opinion.
The format of the yaml file is chosen to mimic struct FeatureWordInfo
as closely as possible, it is effectively a 1:1 mapping.
Regarding using the QMP interface: That is what libvirt is currently
doing, see [1] if you are interested. The problem with that approach is
that the response to
{
"execute": "qom-list-properties",
"arguments": { "typename": "max-x86_64-cpu"}
}
does not distinguish between cpu features and other information about
that cpu model, thus forcing libvirt to maintain a list of non-
features. Examples of such items are "check", "enforce", "start-
powered-off", or "migratable".
Additionally, the response does not include information about the cpuid
leaf, register and bit, or msr register respectively. This has to be
supplemented manually.
If there is a way to query for this information that I am not aware of,
please let me know.
Ultimately I would love to see libvirt stop querying qemu for x86 cpu
feature information but instead have both qemu and libvirt query a
common source / database for this kind of information, for all
architectures, not only x86.
Regards,
Tim
[1]
https://gitlab.com/libvirt/libvirt/-/blob/master/src/cpu_map/sync_qemu_features_i386.py
prev parent reply other threads:[~2023-09-15 15:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-08 12:45 [PATCH v2 00/10] Generate x86 cpu features Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 01/10] target/i386: Add missing feature names in FEAT_VMX_EPT_VPID_CAPS Tim Wiederhake
2023-09-08 14:06 ` Igor Mammedov
2023-09-08 12:45 ` [PATCH v2 02/10] target/i386: Fix " Tim Wiederhake
2023-09-08 14:17 ` Igor Mammedov
2023-09-08 14:26 ` Igor Mammedov
2023-09-08 12:45 ` [PATCH v2 03/10] target/i386: Fix duplicated feature name in FEAT_KVM Tim Wiederhake
2023-09-08 14:21 ` Igor Mammedov
2023-09-15 15:53 ` Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 04/10] target/i386: Split out feature_word_info Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 05/10] target/i386: Translate feature_word_info to yaml Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 06/10] target/i386: Format feature_word_info.c.inc: Remove comments Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 07/10] target/i386: Format feature_word_info.c.inc: Fill out feat_names Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 08/10] target/i386: Format feature_word_info.c.inc: Unfold cpuid member Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 09/10] target/i386: Format feature_word_info.c.inc: Whitespaces and trailing commas Tim Wiederhake
2023-09-08 12:45 ` [PATCH v2 10/10] target/i386: Autogenerate feature_word_info.c.inc Tim Wiederhake
2023-09-09 23:42 ` Richard Henderson
2023-09-08 14:48 ` [PATCH v2 00/10] Generate x86 cpu features Igor Mammedov
2023-09-08 16:55 ` Daniel P. Berrangé
2023-09-11 11:26 ` Igor Mammedov
2023-09-15 15:53 ` Tim Wiederhake [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bbf3127802e95a7c9985c179bb470de4a970b64f.camel@redhat.com \
--to=twiederh@redhat.com \
--cc=berrange@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).