All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Cc: "Yonggang Luo" <luoyonggang@gmail.com>,
	qemu-devel@nongnu.org, "Xianglai Li" <lixianglai@loongson.cn>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Chinmay Rath" <rathc@linux.ibm.com>,
	"Sunil V L" <sunilvl@ventanamicro.com>,
	qemu-riscv@nongnu.org, "Alexander Bulekov" <alxndr@bu.edu>,
	"Zhao Liu" <zhao1.liu@intel.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Chao Liu" <chao.liu@processmission.com>,
	"Liu Zhiwei" <zhiwei_liu@linux.alibaba.com>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"Song Gao" <17746591750@163.com>,
	"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
	"Glenn Miles" <milesg@linux.ibm.com>,
	"Daniel Henrique Barboza" <daniel.barboza@oss.qualcomm.com>,
	qemu-s390x@nongnu.org, "Jiaxun Yang" <jiaxun.yang@flygoat.com>,
	"Philippe Mathieu-Daudé" <philmd@mailo.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"David Hildenbrand" <david@kernel.org>,
	qemu-ppc@nongnu.org, qemu-arm@nongnu.org,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Aleksandar Rikalo" <arikalo@gmail.com>,
	"Nicholas Piggin" <npiggin@gmail.com>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Ilya Leoshkevich" <iii@linux.ibm.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Ani Sinha" <anisinha@redhat.com>,
	"Bibo Mao" <maobibo@loongson.cn>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Matthew Rosato" <mjrosato@linux.ibm.com>,
	"Weiwei Li" <liwei1518@gmail.com>,
	"Darren Kenny" <darren.kenny@oracle.com>
Subject: Re: [PATCH 10/12] target-info: add -target and program-name selection
Date: Thu, 27 Aug 2026 11:13:30 +0100	[thread overview]
Message-ID: <apANygsXLoXL96f6@redhat.com> (raw)
In-Reply-To: <0f3d8fe9-b3ad-40c5-9078-c13738997998@oss.qualcomm.com>

On Wed, Aug 26, 2026 at 11:13:05AM -0700, Pierrick Bouvier wrote:
> On 8/26/2026 5:46 AM, Daniel P. Berrangé wrote:
> By implementing *strict* identical behavior with existing binaries, we
> indeed didn't add any new feature, but:
> - we reduced total number of compilation units by 30%
> - we cleaned up a lot of headers and did a lot of refactoring
> - we have a systematic approach to add new targets in single-binary
> while being able to reuse all existing tests without any change.
>
> From my point of view, what you see as a detour was precisely what made
> us progress so far in a year.

No, on the contrary, that's all good stuff.

What I'm considering here is the behaviour of the new proposed
qemu-system and what it needs to be able todo.

Some of this work only appears relevant to a scenario where
qemu-system-$target is dropped in favour of a symlink to the
new qemu-system. That forces qemu-system to be 100% compatible
with the existing binaries, which IMHO is an undesirable
constraint and creates extra work.

We can have the benefits of the compliation unit reduction,
cleaner headers, etc, while still having qemu-system be a
distinct break with the past in a number of areas.

> > If we ignore historical compat and treat qemu-system as a
> > clean break, then I'd suggest that 'target' is not a concept
> > to be exposed to the user at all.
> >
> 
> If your only problem is with having a new -target option, I would be
> happy to just keep the behavior to derive the target from current binary
> name. That's a very small compromise on my side, and -target is just
> here for convenience. It's not the end of the path.

It isn't about the syntax - whether it is implicit from the binary
name or explicit from -target, that's still producing a design
where the target is the top level concept, and machine is a second
level concept. I don't see how that makes sense given the longer
term intent to have machines with heterogeneous CPU targets.

The machine looks like it should be the top level concept, with
target(s) derived from that.

> > The user cares about the machine (and CPUs) they want to run,
> > and their choice in this respect is what should determine the
> > target(s) QEMU needs to enable. We should take
> > 
> >   qemu-system --machine vexpress-a15
> > 
> > that tells us we need the arm target. If we need to distinguish
> > arm7 vs aarch64, then the choice of -cpu should determine 32
> > bs 64 bit.
> > 
> > This extends better into the future world where we have
> > machine type that could involve CPUs from multiple targets.
> > 
> > IOW machine config option / QOM class is what we should pivot
> > off rather than a global target config option.
> > 
> > This likely implies that the MachineClass should gain a class
> > method to query the QEMU_ARCH_XXXX bitmask required. Initially
> > restricted to only a single target, so you can wire that through
> > to the current global target info at startup. Later expanded to
> > support multiple concurrent targets.
> >
> 
> While it sounds nice on paper, you will be doomed to ambiguity with this:
> 
> qemu-system -machine virt -cpu max
> 
> What is your next plan? add an environment variable to solve it?

The machine names need to be globally unique across all targets.
So the 'virt' naming clash needs a rename, such as is done in
an earlier patch in this series.

> Deriving target from argv(0) or -target is explicit, predictable, boring
> and reliable, and it's exactly what we need now.

With the requirement that machine names are globally unique, we can
determine the target(s) directly.

Relying on argv(0) does not appear to work in a heterogeneous future
as target is no longer unique per process, but the machine type would
be unique.

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 :|



  reply	other threads:[~2026-08-27 10:14 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-23 15:07 [PATCH 00/12] single-binary: link ARM and RISC-V into qemu-system Yonggang Luo
2026-08-23 15:07 ` [PATCH 01/12] accel: use a shared TYPE_ACCEL_CPU parent Yonggang Luo
2026-08-23 15:07 ` [PATCH 02/12] hw/riscv/virt: use unique QOM name and target filter Yonggang Luo
2026-08-23 15:07 ` [PATCH 03/12] hw/arm/virt: " Yonggang Luo
2026-08-26 12:49   ` Daniel P. Berrangé
2026-08-23 15:07 ` [PATCH 04/12] hw/arm/virt: prefix ACPI helpers with arm_virt_ Yonggang Luo
2026-08-24  7:18   ` Philippe Mathieu-Daudé
2026-08-23 15:07 ` [PATCH 05/12] hw/riscv/virt: prefix ACPI helpers with riscv_virt_ Yonggang Luo
2026-08-24  7:19   ` Philippe Mathieu-Daudé
2026-08-23 15:07 ` [PATCH 06/12] hw/loongarch/virt: prefix ACPI helper with loongarch_virt_ Yonggang Luo
2026-08-24  1:00   ` gaosong
2026-08-24  7:20   ` Philippe Mathieu-Daudé
2026-08-23 15:07 ` [PATCH 07/12] target/riscv: uniquify TCG crc32, crc32c, and wfi helper names Yonggang Luo
2026-08-24  7:22   ` Philippe Mathieu-Daudé
2026-08-23 15:07 ` [PATCH 08/12] target/riscv: seed cfg.big_endian from TargetInfo Yonggang Luo
2026-08-26 18:37   ` Philippe Mathieu-Daudé
2026-08-23 15:07 ` [PATCH 09/12] target-info: register le and be TargetInfo variants Yonggang Luo
2026-08-24 16:22   ` Pierrick Bouvier
2026-08-24 19:01     ` Yonggang Luo
2026-08-26 18:41       ` Philippe Mathieu-Daudé
2026-08-23 15:07 ` [PATCH 10/12] target-info: add -target and program-name selection Yonggang Luo
2026-08-24 16:24   ` Pierrick Bouvier
2026-08-26 12:46   ` Daniel P. Berrangé
2026-08-26 18:13     ` Pierrick Bouvier
2026-08-27 10:13       ` Daniel P. Berrangé [this message]
2026-08-27 12:25     ` Daniel P. Berrangé
2026-08-23 15:07 ` [PATCH 11/12] target-info: dispatch CPU QMP, dump, and Angel semihosting Yonggang Luo
2026-08-23 15:07 ` [PATCH 12/12] meson: link ARM and RISC-V into qemu-system Yonggang Luo
2026-08-24 16:20   ` Pierrick Bouvier
2026-08-24 19:04     ` Yonggang Luo
2026-08-26 13:00     ` Daniel P. Berrangé
2026-08-26 17:40       ` Pierrick Bouvier
2026-08-26 18:05         ` Philippe Mathieu-Daudé
2026-08-26 18:08           ` Yonggang Luo
2026-08-24 16:36 ` [PATCH 00/12] single-binary: " Pierrick Bouvier
2026-08-25 15:42 ` Daniel P. Berrangé
2026-08-25 16:55   ` Yonggang Luo
2026-08-25 17:22     ` Daniel P. Berrangé
2026-08-25 17:11   ` Yonggang Luo
2026-08-26 12:32 ` Daniel P. Berrangé
2026-08-26 13:40   ` Mark Cave-Ayland
2026-08-26 13:58     ` Daniel P. Berrangé
2026-08-26 14:50     ` Yonggang Luo
2026-08-26 20:41     ` Daniel Henrique Barboza
2026-08-27  9:58       ` Daniel P. Berrangé
2026-08-26 18:35   ` Pierrick Bouvier
2026-08-26 18:53     ` Pierrick Bouvier
2026-08-27  9:44     ` Daniel P. Berrangé
2026-08-27 16:32       ` Pierrick Bouvier
2026-08-27 17:42         ` Peter Maydell
2026-08-27 17:48         ` Paolo Bonzini
2026-08-27 19:58           ` Pierrick Bouvier
2026-09-04 12:47             ` Paolo Bonzini
2026-09-14  5:46               ` Pierrick Bouvier
2026-08-27 10:22     ` Daniel P. Berrangé
2026-08-27 17:59   ` Paolo Bonzini
2026-08-28  5:44     ` 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=apANygsXLoXL96f6@redhat.com \
    --to=berrange@redhat.com \
    --cc=17746591750@163.com \
    --cc=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=alxndr@bu.edu \
    --cc=anisinha@redhat.com \
    --cc=arikalo@gmail.com \
    --cc=aurelien@aurel32.net \
    --cc=chao.liu@processmission.com \
    --cc=cohuck@redhat.com \
    --cc=daniel.barboza@oss.qualcomm.com \
    --cc=darren.kenny@oracle.com \
    --cc=david@kernel.org \
    --cc=farman@linux.ibm.com \
    --cc=farosas@suse.de \
    --cc=harshpb@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=imammedo@redhat.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=liwei1518@gmail.com \
    --cc=lixianglai@loongson.cn \
    --cc=luoyonggang@gmail.com \
    --cc=lvivier@redhat.com \
    --cc=maobibo@loongson.cn \
    --cc=marcandre.lureau@redhat.com \
    --cc=milesg@linux.ibm.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=mst@redhat.com \
    --cc=npiggin@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@mailo.com \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rathc@linux.ibm.com \
    --cc=richard.henderson@linaro.org \
    --cc=stefanha@redhat.com \
    --cc=sunilvl@ventanamicro.com \
    --cc=zhao1.liu@intel.com \
    --cc=zhiwei_liu@linux.alibaba.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.