From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Pierrick Bouvier <pierrick.bouvier@linaro.org>, qemu-devel@nongnu.org
Cc: richard.henderson@linaro.org, stefanha@redhat.com,
"Michael Roth" <michael.roth@amd.com>,
pbonzini@redhat.com, berrange@redhat.com,
peter.maydell@linaro.org, thuth@redhat.com, jsnow@redhat.com,
"Alex Bennée" <alex.bennee@linaro.org>,
"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [RFC PATCH 0/3] single-binary: make QAPI generated files common
Date: Thu, 24 Apr 2025 22:43:12 +0200 [thread overview]
Message-ID: <b0d553d0-be66-40cb-8fde-1b1554720db8@linaro.org> (raw)
In-Reply-To: <20250424183350.1798746-1-pierrick.bouvier@linaro.org>
On 24/4/25 20:33, Pierrick Bouvier wrote:
> QAPI
> ====
>
> QAPI generated files contain conditional clauses to define various structures,
> enums, and commands only for specific targets. This forces files to be
> compiled for every target. What we try to do here is to build them only once
> instead.
>
> In the past, we identied that the best approach to solve this is to expose code
> for all targets (thus removing all #if clauses), and stub missing
> symbols for concerned targets.
>
> This series build QAPI generated code once, by removing all TARGET_{arch} and
> CONFIG_KVM clauses. What it does *not* at the moment is:
> - prevent target specific commands to be visible for all targets
> (see TODO comment on patch 2 explaining how to address this)
+ # "#if TARGET_S390X && CONFIG_KVM" will become:
+ # "if (target_s390x() || kvm_enabled()) {"
I like it.
> - nothing was done to hide all this from generated documentation
>
> From what I understood, the only thing that matters is to limit qmp commands
> visible. Exposing enums, structure, or events is not a problem, since they
> won't be used/triggered for non concerned targets. Please correct me if this is
> wrong, and if there are unexpected consequences for libvirt or other consumers.
What about function name clashes? I.e.:
389 ##
390 # @query-cpu-definitions:
391 #
392 # Return a list of supported virtual CPU definitions
393 #
394 # Returns: a list of CpuDefinitionInfo
395 #
396 # Since: 1.2
397 ##
398 { 'command': 'query-cpu-definitions', 'returns': ['CpuDefinitionInfo'],
399 'if': { 'any': [ 'TARGET_PPC',
400 'TARGET_ARM',
401 'TARGET_I386',
402 'TARGET_S390X',
403 'TARGET_MIPS',
404 'TARGET_LOONGARCH64',
405 'TARGET_RISCV' ] } }
$ git grep qmp.query.cpu.definitions
target/arm/arm-qmp-cmds.c:238:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
target/i386/cpu.c:6418:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
target/loongarch/loongarch-qmp-cmds.c:30:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
target/mips/system/mips-qmp-cmds.c:28:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
target/ppc/ppc-qmp-cmds.c:192:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
target/riscv/riscv-qmp-cmds.c:56:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
target/s390x/cpu_models_system.c:85:CpuDefinitionInfoList
*qmp_query_cpu_definitions(Error **errp)
Prepend target name to these functions and dispatch generated code?
next prev parent reply other threads:[~2025-04-24 20:44 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-24 18:33 [RFC PATCH 0/3] single-binary: make QAPI generated files common Pierrick Bouvier
2025-04-24 18:33 ` [RFC PATCH 1/3] qapi: add weak stubs for target specific commands Pierrick Bouvier
2025-04-24 18:52 ` Pierrick Bouvier
2025-04-24 18:33 ` [RFC PATCH 2/3] qapi: always expose TARGET_* or CONFIG_KVM code Pierrick Bouvier
2025-04-24 18:33 ` [RFC PATCH 3/3] qapi: make all generated files common Pierrick Bouvier
2025-04-24 20:31 ` Philippe Mathieu-Daudé
2025-04-24 21:08 ` Richard Henderson
2025-04-24 20:43 ` Philippe Mathieu-Daudé [this message]
2025-04-24 21:15 ` [RFC PATCH 0/3] single-binary: make QAPI " Richard Henderson
2025-04-24 22:22 ` Pierrick Bouvier
2025-04-24 20:44 ` Philippe Mathieu-Daudé
2025-04-25 7:35 ` Daniel P. Berrangé
2025-04-25 20:39 ` Pierrick Bouvier
2025-04-28 8:37 ` Daniel P. Berrangé
2025-04-28 15:54 ` Pierrick Bouvier
2025-04-25 22:16 ` Philippe Mathieu-Daudé
2025-04-26 4:53 ` Markus Armbruster
2025-04-25 15:38 ` Markus Armbruster
2025-04-25 21:07 ` Pierrick Bouvier
2025-04-25 21:13 ` Pierrick Bouvier
2025-04-26 6:21 ` Markus Armbruster
2025-04-28 16:05 ` Pierrick Bouvier
2025-04-29 7:43 ` Markus Armbruster
2025-04-29 8:37 ` Daniel P. Berrangé
2025-04-29 19:26 ` Pierrick Bouvier
2025-05-07 11:21 ` Markus Armbruster
2025-04-29 19:15 ` Pierrick Bouvier
2025-05-07 7:55 ` Markus Armbruster
2025-05-07 11:32 ` Daniel P. Berrangé
2025-05-07 19:00 ` Pierrick Bouvier
2025-05-07 18:54 ` Pierrick Bouvier
2025-04-28 10:25 ` Peter Krempa
2025-04-28 16:18 ` Pierrick Bouvier
2025-04-28 8:55 ` Peter Krempa
2025-04-28 11:07 ` Markus Armbruster
2025-04-28 12:48 ` Philippe Mathieu-Daudé
2025-04-28 16:35 ` Pierrick Bouvier
2025-04-29 8:23 ` Markus Armbruster
2025-04-29 9:20 ` Thomas Huth
2025-04-29 9:32 ` Daniel P. Berrangé
2025-04-29 9:39 ` Philippe Mathieu-Daudé
2025-04-29 19:48 ` Pierrick Bouvier
2025-04-30 5:40 ` Thomas Huth
2025-04-30 6:18 ` Pierrick Bouvier
2025-04-29 9:35 ` Philippe Mathieu-Daudé
2025-04-29 9:47 ` Daniel P. Berrangé
2025-04-29 19:57 ` Pierrick Bouvier
2025-04-29 20:11 ` Pierrick Bouvier
2025-04-29 12:04 ` BALATON Zoltan
2025-04-28 18:14 ` Stefan Hajnoczi
2025-04-28 19:25 ` Pierrick Bouvier
2025-04-28 19:54 ` Stefan Hajnoczi
2025-04-28 21:35 ` Pierrick Bouvier
2025-05-07 23:19 ` Pierrick Bouvier
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=b0d553d0-be66-40cb-8fde-1b1554720db8@linaro.org \
--to=philmd@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=jsnow@redhat.com \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
/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).