All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] single-binary: deduplicate target_info()
@ 2026-04-30  3:56 Pierrick Bouvier
  2026-04-30  3:56 ` [PATCH v2 1/7] target-info: extract target_info() definition in target-info-init.h Pierrick Bouvier
                   ` (7 more replies)
  0 siblings, 8 replies; 19+ messages in thread
From: Pierrick Bouvier @ 2026-04-30  3:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: Pierrick Bouvier, Philippe Mathieu-Daudé, Richard Henderson,
	Markus Armbruster, Anton Johansson, marcandre.lureau,
	Paolo Bonzini, Max Filippov, Daniel P. Berrangé

We are getting close to be able to link several targets in a single QEMU system
binary, and the last obstacle on the road is to embed several TargetInfo in the
same binary. The end result of this series is to have a single definition for
target_info symbol.

This series adds TargetInfo types in QOM, and retrieve them dynamically(). At
the moment, we don't deal yet with multiple TargetInfo selection, but install
all that is needed to be able to do it easily.

Because TargetInfo data is set through class_init, it creates an issue at
startup, where we may try to instantiate additional (unrelated) types just to
retrieve the list of "target-info-X" types. Those other types class_init may be
using target information, to add target specific properties for instance.
This issue has been fixed by adding a new object_class_get_list_by_name_prefix
that does not force instantiation of all QOM types, but only those matching a
specific pattern. This way, we first initialize and retrieve target-info types
before others.

An alternative would be to leave all this out of QOM, and use startup
initializer to add them in a single list. However, because all the single-binary
work has been using QOM where possible, it would be really sad to not use it for
this final step. Comments are welcome!

Finally, sticking to our promise not create a special "single-binary
configuration", the goal is to use the *exact* same codepath for normal binaries
also. It means that even for existing system binaries, the goal will be to use
QOM to retrieve current target, even if there is only one.

v2
--

- fix header guards
- introduce new module init step (MODULE_INIT_TARGET_INFO)
- as a consequence of item above, we need to register TYPE_OBJECT before startup
- fix xtensa core type registration using type_init instead of static ctor

Pierrick Bouvier (7):
  target-info: extract target_info() definition in target-info-init.h
  target-info: introduce TargetInfo in QOM
  qom/object: register OBJECT and INTERFACE QOM types before main
  target/xtensa/core: register types using type_init
  system/vl: register target info types first in qom
  target-info-qom: detect target from QOM
  target-info: replace target_info() in system-mode

 configs/targets/aarch64-softmmu.c |  6 +--
 configs/targets/arm-softmmu.c     |  6 +--
 include/qemu/module.h             |  1 +
 include/qemu/target-info-init.h   | 73 +++++++++++++++++++++++++++++++
 include/qemu/target-info-qom.h    | 30 +++++++++++++
 qom/object.c                      |  4 +-
 system/vl.c                       |  5 +++
 target-info-qom.c                 | 35 +++++++++++++++
 target-info-stub.c                |  6 +--
 target/xtensa/overlay_tool.h      |  5 ++-
 10 files changed, 154 insertions(+), 17 deletions(-)
 create mode 100644 include/qemu/target-info-init.h
 create mode 100644 include/qemu/target-info-qom.h

-- 
2.43.0



^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2026-04-30 20:40 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-30  3:56 [PATCH v2 0/7] single-binary: deduplicate target_info() Pierrick Bouvier
2026-04-30  3:56 ` [PATCH v2 1/7] target-info: extract target_info() definition in target-info-init.h Pierrick Bouvier
2026-04-30  8:03   ` Marc-André Lureau
2026-04-30 16:23     ` Pierrick Bouvier
2026-04-30  3:56 ` [PATCH v2 2/7] target-info: introduce TargetInfo in QOM Pierrick Bouvier
2026-04-30  3:56 ` [PATCH v2 3/7] qom/object: register OBJECT and INTERFACE QOM types before main Pierrick Bouvier
2026-04-30  7:12   ` Daniel P. Berrangé
2026-04-30 16:03     ` Pierrick Bouvier
2026-04-30 17:07       ` Daniel P. Berrangé
2026-04-30 17:28         ` Pierrick Bouvier
2026-04-30 17:37           ` Pierrick Bouvier
2026-04-30  3:56 ` [PATCH v2 4/7] target/xtensa/core: register types using type_init Pierrick Bouvier
2026-04-30  4:48   ` Philippe Mathieu-Daudé
2026-04-30  3:56 ` [PATCH v2 5/7] system/vl: register target info types first in qom Pierrick Bouvier
2026-04-30  7:47   ` Daniel P. Berrangé
2026-04-30 18:57     ` Pierrick Bouvier
2026-04-30  3:56 ` [PATCH v2 6/7] target-info-qom: detect target from QOM Pierrick Bouvier
2026-04-30  3:56 ` [PATCH v2 7/7] target-info: replace target_info() in system-mode Pierrick Bouvier
2026-04-30 20:40 ` [PATCH v2 0/7] single-binary: deduplicate target_info() Pierrick Bouvier

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.