From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Yonggang Luo <luoyonggang@gmail.com>
Cc: "Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
qemu-devel@nongnu.org, "Chao Liu" <chao.liu@processmission.com>,
"Eric Blake" <eblake@redhat.com>,
qemu-arm@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Brian Cain" <brian.cain@oss.qualcomm.com>,
"Stafford Horne" <shorne@gmail.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Daniel Henrique Barboza" <daniel.barboza@oss.qualcomm.com>,
qemu-riscv@nongnu.org, "Laurent Vivier" <lvivier@redhat.com>,
"Max Filippov" <jcmvbkbc@gmail.com>,
"Song Gao" <17746591750@163.com>,
"Philippe Mathieu-Daude" <philmd@mailo.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Laurent Vivier" <laurent@vivier.eu>,
"Weiwei Li" <liwei1518@gmail.com>,
"Zhao Liu" <zhao1.liu@intel.com>
Subject: Re: [PATCH v3 01/10] machine: allow -M name to differ from QOM type
Date: Fri, 2 Oct 2026 17:34:51 +0100 [thread overview]
Message-ID: <ar_dK-_KUS3h2dkL@redhat.com> (raw)
In-Reply-To: <CAE2XoE9o3o6KUZyvBgSqEL14ahVp1SmFAVp1j_C5K8pVE9dRog@mail.gmail.com>
On Sat, Oct 03, 2026 at 12:27:08AM +0800, Yonggang Luo wrote:
> On Sat, Oct 3, 2026 at 12:14 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Thu, Oct 01, 2026 at 11:56:13AM -0700, Pierrick Bouvier wrote:
> > > On 10/1/2026 11:26 AM, Daniel P. Berrangé wrote:
> > > > On Thu, Oct 01, 2026 at 11:08:17AM -0700, Pierrick Bouvier wrote:
> > > >> On 10/1/2026 10:40 AM, Daniel P. Berrangé wrote:
> > > >>> Even with the current per-target binaries there are countless
> > > >>> devices linked in which are incompatible / not usable with
> > > >>> certain machine types. A new multi-target binary with a union
> > > >>> of all devices will just be a bigger example of a scenario that
> > > >>> already has to be dealt with for today's binaries.
> > > >>>
> > > >>> So if we have that assumption that we don't need to do device
> > > >>> filtering, at that point, a --target option doesn't have as
> > > >>> big of a role to play. The machine type code knows what target(s)
> > > >>> it wants (1 or 2 targets depending on if there are 32 + 64 bit
> > > >>> varaints. The CPU model the user requests (if the CPU is not
> > > >>> hardcoded by the machine), determines 32 bit vs 64 bit.
> > > >>>
> > > >>
> > > >> How can we deduce this information (bitness or target for existing
> > > >> machines/cpus)?
> > > >
> > > > It would require that we introduce a new field in MachineClass
> > > > that returned that information about what target a machine is
> > > > associated with.
> > > >
> > > > I note the SysEmuTarget covers both 32-bit and 64-bit variants.
> > > >
> > > > It might be better use QEMU_ARCH which correlates directly to
> > > > the TCG targets, rather than the traditional binary target
> > > > names ?
> > > >
> > > > Likely the CPU class would also want to declare its list of
> > > > supported targets.
> > > >
> > >
> > > QEMU_ARCH only represents base architectures, and not variant, so
> > > SysEmuTarget is the right choice.
> > >
> > > So, we would need a list of SysEmuTarget for every cpu/machine that is
> > > target specific, since one could be available for variants of base arch?
> >
> > Ok
> >
> > > @Daniel: how do we deal with machines available for all targets like
> > > null? We would need a way to ensure all machines/cpus are tagged
> > > correctly, in an independent way from "available for all", without
> > > having to repeat all existing SysEmuTarget.
> >
> > Or could the 'none' machine simply report '0xffffffff' for the
> > list of targets so it includes everything today & in the future,
> > or specialize "0" to mean everything ?
> I think for is_avaible give a
> bool target_is_any(const TargetInfo *ti)
> {
> (void)ti;
> return true;
> }
> is enough. then we iterate the target list we will found every target
> support for it.
Yep, that would work.
> > One idea I had was that when define the 'virt' class type we could
> > have a way to identify whether it is linked into the traditional
> > binaries, or linked into the multi-target binary, and from
> > that choose what name to register it under. eg
> >
> > "extern bool multi_target;"
>
> This idea already resolved, see commit
> https://gitlab.com/lygstate-qemu/qemu/-/commit/3342c04451bb21174e6bd53a7040e4929008b9d0
> The idea is
> bool target_combined_binary(void)
> {
> return true;
> }
> for multi-target binary, and stub for single-target binary
> for single-target binary
> bool target_combined_binary(void)
> {
> return false;
> }
Ok, yes, that works, even if that feels a bit like overkill
vs a global variable !
> > and have two .c files, one setting it 'true' and one 'false',
> > and link each to the respective binaries. So we know statically
> > before main() has even run, what mode this binary is intended
> > to operate in.
> >
> > > Also, for compatibility with existing binaries, should we accept -M
> > > $arch-virt also? I feel like it does not hurt and would make thing
> > > simpler to switch between existing and new binary.
> >
> > Yes, that's another viable option. Always register '$arch-virt' and
> > only register 'virt' for traditional binaries.
> Oh, I see, for single-target binary, the "virt" is QOM name, and for
> multi-target binary.
> "$arch-virt" is the QOM name? So this series needs to consider this. made sense.
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
next prev parent reply other threads:[~2026-10-02 16:36 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-26 8:15 [PATCH v3 00/10] machine: uniquify virt QOM names Yonggang Luo
2026-09-26 8:15 ` [PATCH v3 01/10] machine: allow -M name to differ from QOM type Yonggang Luo
2026-09-30 8:44 ` Zhao Liu
2026-09-30 18:19 ` Pierrick Bouvier
2026-10-01 1:55 ` Yonggang Luo
2026-10-01 4:23 ` Pierrick Bouvier
2026-10-01 8:01 ` Daniel P. Berrangé
2026-10-01 8:13 ` Yonggang Luo
2026-10-01 8:44 ` Philippe Mathieu-Daudé
2026-10-01 10:33 ` Yonggang Luo
2026-10-01 16:14 ` Yonggang Luo
2026-10-01 16:19 ` Pierrick Bouvier
2026-10-01 17:40 ` Daniel P. Berrangé
2026-10-01 18:08 ` Pierrick Bouvier
2026-10-01 18:26 ` Daniel P. Berrangé
2026-10-01 18:56 ` Pierrick Bouvier
2026-10-02 2:00 ` Yonggang Luo
2026-10-02 15:40 ` Pierrick Bouvier
2026-10-02 16:32 ` Daniel P. Berrangé
2026-10-02 16:43 ` Yonggang Luo
2026-10-02 16:52 ` Daniel P. Berrangé
2026-10-02 16:58 ` Yonggang Luo
2026-10-02 16:17 ` Daniel P. Berrangé
2026-10-02 16:29 ` Yonggang Luo
2026-10-02 3:10 ` Yonggang Luo
2026-10-02 15:34 ` Yonggang Luo
2026-10-02 16:14 ` Daniel P. Berrangé
2026-10-02 16:27 ` Yonggang Luo
2026-10-02 16:34 ` Daniel P. Berrangé [this message]
2026-10-03 18:29 ` Yonggang Luo
2026-10-01 2:07 ` Yonggang Luo
2026-09-26 8:15 ` [PATCH v3 02/10] hw/riscv/virt: use unique QOM name Yonggang Luo
2026-09-30 8:44 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 03/10] hw/arm/virt: " Yonggang Luo
2026-09-30 8:44 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 04/10] hw/or1k/virt: " Yonggang Luo
2026-09-30 8:44 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 05/10] hw/hexagon/virt: " Yonggang Luo
2026-09-30 8:45 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 06/10] hw/loongarch/virt: " Yonggang Luo
2026-09-30 8:45 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 07/10] hw/m68k/virt: " Yonggang Luo
2026-09-30 8:45 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 08/10] hw/xtensa/virt: " Yonggang Luo
2026-09-30 8:46 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 09/10] qapi: return MachineInfo typename from query-machines Yonggang Luo
2026-09-28 6:44 ` Markus Armbruster
2026-09-30 8:46 ` Zhao Liu
2026-09-26 8:15 ` [PATCH v3 10/10] machine: match the versioned virt example to arm virt Yonggang Luo
2026-09-30 8:47 ` Zhao Liu
2026-09-30 2:50 ` [PATCH v3 00/10] machine: uniquify virt QOM names Yonggang Luo
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=ar_dK-_KUS3h2dkL@redhat.com \
--to=berrange@redhat.com \
--cc=17746591750@163.com \
--cc=alistair.francis@wdc.com \
--cc=armbru@redhat.com \
--cc=brian.cain@oss.qualcomm.com \
--cc=chao.liu@processmission.com \
--cc=daniel.barboza@oss.qualcomm.com \
--cc=eblake@redhat.com \
--cc=farosas@suse.de \
--cc=jcmvbkbc@gmail.com \
--cc=jiaxun.yang@flygoat.com \
--cc=laurent@vivier.eu \
--cc=liwei1518@gmail.com \
--cc=luoyonggang@gmail.com \
--cc=lvivier@redhat.com \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@mailo.com \
--cc=philmd@oss.qualcomm.com \
--cc=pierrick.bouvier@oss.qualcomm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=shorne@gmail.com \
--cc=zhao1.liu@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.