[PATCH v2 0/2] single-binary: implement dynamic filtering for machine types

Pierrick Bouvier <[email protected]>
Newsgroups org.nongnu.qemu-devel
Message-ID <[email protected]>
Now that we can link a single-binary with at least two targets (arm, aarch64),
we want to make sure that we expose the same set of machines (later devices and
cpus) than target binaries. For that, we implemented a static filtering based on
target interfaces that each machine will implement to declare which targets have
this machine.

However, we discovered that this static filtering is not enough. Indeed, some
machines and devices do not depend only on target, and their presence can depend
on Kconfig or host/target combination. Thus, our static approach can't work, and
we need something more flexible.

In v1:
This series adds a new TYPE_TARGET_SPECIFIC, that declare a single function
bool is_available(void). From there, any machine type (and later devices and
cpus) can implement it to override their presence for each target.
We first replace the existing static mechanism with this, and once done, we
cleanup all the old interface. One nice benefit is that we can get rid of
config/targets/*.c files, which saves duplication.
In v2:
Suggested by Daniel, we share a list of requirement for type to be available,
for future introspection needs.

This series was tested by comparing list of machines for all qemu system
binaries, before and after this change, to make sure we don't introduce a
regression.

v2
--

Changed the design to use a list of requirements instead of a callback.
Implement it on one machine to show usage and get feedback before going further.

Pierrick Bouvier (2):
  qom/object: add available_if field to TypeInfo
  remote/machine: add available_if for x-remote machine type

 hw/remote/machine.c        |  3 ++-
 include/qemu/target-info.h | 11 +++++++++++
 include/qom/object.h       |  5 +++++
 qom/object.c               | 10 ++++++++++
 rust/qom/src/qom.rs        |  1 +
 stubs/meson.build          |  1 +
 stubs/target-info.c        | 11 +++++++++++
 target-info.c              | 13 +++++++++++++
 8 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 stubs/target-info.c

-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.