[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 000/114] single-binary: link multi-targets into qemu-system



This series produces one qemu-system binary that can run ARM (32 and
64), RISC-V (32 and 64), and MicroBlaze.
Upstream filters machines with TypeInfo.is_available. This series
passes a TargetInfo into that callback, uniquifies QOM names that
collide in one process, and compiles those targets once so they can
share qemu-system.

A combined link cannot keep C symbols or QOM type names that were
unique only because each qemu-system-$arch was a separate binary.
These patches remove those collisions:

- TYPE_ACCEL_CPU is the fixed abstract type accel-cpu, registered
  once next to TYPE_ACCEL. Leaf names still encode the CPU type so
  accel_init_cpu_interfaces() can look up "<accel>-" plus
  target_cpu_type() (tcg-accel-arm-cpu).
- virt QOM names are prefixed: arm-virt, riscv-virt, and the same
  for or1k, hexagon, loongarch, m68k, and xtensa. Boards keep
  -machine virt via machine_class_set_name(). query-machines returns
  the QOM type in MachineInfo typename.
- virt ACPI helpers and RISC-V TCG crc32/crc32c/wfi helpers get an
  arch prefix so the combined link does not need meson -D name
  mangling. LoongArch virt_acpi_setup is renamed in the same pass.

Target selection has to work with more than one TargetInfo:

- The combined binary takes arch:name on -M/-machine and in a
  [machine] type (aarch64:virt). arch: binds the target. microblaze:
  runs that target's default machine. arm, aarch64, riscv32, and
  riscv64 have no default. No -M leaves target none and the empty
  none machine. qemu-system-$arch keeps the historic -M name.
  -M help lists every target; arch:help lists one. query-targets
  lists each linked target, including none.
- TargetInfo is a constructor list. target_info_select() picks the
  entry, including SYS_EMU_TARGET_NONE. is_available takes const
  TargetInfo *. While the target is still none, QOM skips the
  unavailable filter so grouped -M help can list every machine.
- query-cpu-definitions, dump notes, and Angel semihosting sit on
  TargetCpuOps indexed by target_arch(). Registration uses a
  QEMU_ARCH_* bitmask so one object can fill ARM and AARCH64. The
  table is target-ops.h / target-ops.c.

qemu-system-$TARGET is still built, including the Windows *w twin.
qemu-system is extra. It links each target whose arch sources are
only target-info-def.c: arm, aarch64, riscv32, riscv64, and
microblaze. Do not add qemu-systemw for that binary. A GUI
twin would keep QEMU exporting data from the .exe into DLLs, and
those data exports cannot be delay-loaded (qdev_prop_array and
other qdev_prop_*). That would block enabling modules globally on
Windows.

Examples:

  qemu-system -M aarch64:virt ...
  qemu-system -M microblaze:petalogix-s3adsp1800 ...
  qemu-system-riscv64 -M virt ...

A bare machine name on qemu-system needs an arch: prefix. An unknown
target fails with "target '...' is not available".

Prerequisites:
  [PATCH v2 0/9] machine: uniquify virt QOM names
  https://patchew.org/QEMU/20260922215533.641-1-luoyonggang@xxxxxxxxx/
  [PATCH 00/21] accel/tcg: share raise_excp across TCG targets
  https://patchew.org/QEMU/20260918004225.827-1-luoyonggang@xxxxxxxxx/
  [PATCH v5 00/11] single-binary: Compile hw/riscv once
  https://patchew.org/QEMU/20260918-hw-riscv-cpu-int-v5-0-f98c5a244636@xxxxxx/

v1: https://patchew.org/QEMU/20260823150731.896-1-luoyonggang@xxxxxxxxx/
v2: https://patchew.org/QEMU/20260826184229.1145-1-luoyonggang@xxxxxxxxx/
branch: 
https://gitlab.com/lygstate-qemu/qemu/-/tree/single-binary-arm-riscv?ref_type=heads
x86_64 and i386: 
https://gitlab.com/lygstate-qemu/qemu/-/tree/combined-binary-multi-targets?ref_type=heads

Changes v2 -> v3:
- Drop -target. v2 parsed a target_name token and required it on
  bare qemu-system, with -target ? to list names. v3 selects the
  target with arch:name on -M. No -M leaves target none. -M help
  and arch:help list machines.
- Rebased onto current master. Upstream is_available(void) replaces
  TYPE_TARGET_SPECIFIC. v3 passes const TargetInfo * into
  is_available. The v2 patches that registered TYPE_TARGET_SPECIFIC
  on ARM and RISC-V virt are dropped.
- TargetInfo is a constructor list, not chosen from argv[0].
  target_info_select() sets the current entry. Add SysEmuTarget
  none. A single-target binary does not switch TargetInfo; arch:
  must match that binary or the machine is rejected.
- Drop -Dsingle_binary. qemu-system is built from
  single_binary_supported_targets once arch_srcs are only
  target-info-def.c. microblaze joins ARM and RISC-V. Per-target
  binaries stay. Still no qemu-systemw for the combined binary.
- Unique virt QOM names extend past ARM and RISC-V to or1k,
  hexagon, loongarch, m68k, and xtensa. query-machines returns
  MachineInfo typename.
- TargetCpuOps is an array indexed by target_arch(), registered
  with a QEMU_ARCH_* bitmask. The header moves from
  target-info-qom.h to target-ops.h.
- Those targets are compiled once: ARM, RISC-V, and MicroBlaze fold
  into common source sets, TARGET_* ifdefs become runtime checks, and
  KVM moves to system_ss.

Pierrick Bouvier (2):
  configs/targets: remove target info definitions
  target-info: rename target-info-stub.c in target-info-def.c

Yonggang Luo (112):
  meson: stale qemu-version.h only when .git exists
  target-info: rename target-info-impl.h to target-info-def.h
  target-info: set cpu_type from TARGET_BASE_ARCH
  target: remove CPU_RESOLVING_TYPE
  vl: parse early options before target-info init
  target-info: replace QOM registration with a constructor list
  tests/unit: add test-target-info
  tests/qtest: prepare machine-list-test for combined qemu-system
  kconfig: rename REGISTER to HW_REGISTER
  target-info: add TargetKconfig
  target-info: add target_is_* helpers for each architecture
  target-info: add i386 and x86_64 helpers
  qom: pass TargetInfo to is_available
  module: use static ModuleEntry and per-type DSO lists
  module: add before/after hooks and module_call_init_fn
  qom: register late types through module_call_init_fn
  qom: inherit is_available and filter after MODULE_INIT_QOM
  tests/unit: add module-init and qom is-available tests
  hw/arm/virt: prefix ACPI helpers with arm_virt_
  hw/riscv/virt: prefix ACPI helpers with riscv_virt_
  hw/loongarch/virt: prefix ACPI helper with loongarch_virt_
  target/riscv: uniquify TCG crc32, crc32c, and wfi helper names
  hw/riscv: gate boards with target_is_base_riscv
  hw/intc: use target_long_bits in IMSIC geilen
  hw/misc/riscv_cmgcr: replace target_ulong with uint64_t
  hw/intc: use kvm_enabled() in APLIC AIA helpers
  hw/intc: send IMSIC MSI via kvm_irqchip_send_msi()
  target/riscv: add kvm stubs source set
  tcg: fix off-by-one in helper extend-free assert
  gdbstub: drop per-target cpu-param.h from helpers.h
  hw/riscv: expand boston-aia and microblaze-v-generic to TypeInfo
  target/riscv: Include migration/vmstate.h instead of migration/cpu.h
    in machine.c
  target/riscv: gate CPU types with TargetInfo
  target/riscv: select ELF dump class from target_riscv64
  target/riscv: replace TARGET_* macros in CSR helpers
  target/riscv: use target_long_bits in pmpaddr granule checks
  target/riscv: preserve signed XLEN semantics without target_long
  target/riscv: replace leftover TARGET_LONG_BITS
  target/riscv: select monitor width at runtime
  target/riscv: replace target-width format macros
  target/riscv: replace TARGET_LONG_BITS in translate
  target-info: add tl_is_64() and target_is_tl32/64 helpers
  target-info: dispatch CPU QMP, dump, and Angel semihosting
  tcg: give TCGv its own type and runtime tl ops
  exec: allow target_long.h, abi_ptr.h and cpu-ldst.h from common code
  migration: add TargetInfo-gated vmstate fields
  target/i386: always compile XMM, YMMH, and Hi16 VMSD
  target/i386: replace VMSTATE_UINTTL with 32/64 TI fields
  target/ppc: replace VMSTATE_UINTTL with 32/64 TI fields
  target/sparc: replace VMSTATE_UINTTL with 32/64 TI fields
  target/mips: replace VMSTATE_UINTTL with 32/64 TI fields
  hw/hexagon: drop unused migration/cpu.h include
  migration: remove unused cpu.h
  target/riscv: gate KVM CPU VMSDs with target_has_kconfig_kvm
  target/riscv: use tcg_imm_tl in translate
  target/riscv: select FP and amocas width at runtime
  target/riscv: drop TARGET_RISCV XL shortcuts in translate
  target/riscv: select KVM host CPU width at runtime
  accel: use a shared TYPE_ACCEL_CPU parent
  kvm: always compile guest debug
  hw/i386: move APIC_DEFAULT_ADDRESS to apic.h
  kvm: stop including cpu.h from kvm.h
  kvm: default kvm_arch_reset_parked_vcpu in stubs
  kvm: drop COMPILING_PER_TARGET wrap around kvm_arch APIs
  kvm: add split irqchip and send_msi stubs
  kvm: replace TARGET_S390X and TARGET_PPC hints
  kvm: move kvm_ss to system_ss
  system: add qemu_host_arch() and reject unavailable -accel
  kvm: add AccelClass is_available for host/guest pairing
  hvf: add AccelClass is_available for host/guest pairing
  xen: add AccelClass is_available for host/guest pairing
  nitro: add AccelClass is_available for host/guest pairing
  mshv: add AccelClass is_available for host/guest pairing
  whpx: add AccelClass is_available for host/guest pairing
  target/i386/nvmm: add AccelClass is_available for host/guest pairing
  accel: replace ACCEL_CPU_NAME with accel_cpu_register_type
  whpx: move whpx_ss to system_ss
  hw/riscv: move boards and irqchip onto hw_common_arch
  target/riscv: include target_long.h in TCG helpers
  target/riscv: compile CPU and TCG once
  target/arm: replace target_long in A64 translate
  target/arm: use 64-bit TCG addresses in A64 translate
  target/arm: move kvm_arm_set_cpreg_mig_tolerances to kvm.c
  target/arm: allow -cpu host with Nitro
  target/arm: gate -cpu host with TypeIsAvailable
  target/arm: fix family-common KVM compile
  tests/qtest: raise aspeed_smc-test timeout to 12 minutes
  hw/intc: move ARM GIC kvm/hvf/whpx onto arm_common_ss
  target/arm: fold arm_ss into common source sets
  meson: link shared objects into qemu-system
  target/microblaze: fold system sources into common source sets
  meson: add microblaze-softmmu to the combined qemu-system list
  boards: remove unused DEFINE_MACHINE_WITH_INTERFACES
  hw/arm: set virt TypeInfo.is_available
  hw/arm: set remaining 32-bit machine TypeInfo.is_available
  hw/arm: set aarch64-only machine TypeInfo.is_available
  hw/microblaze: set petalogix-s3adsp1800 TypeInfo.is_available
  hw/arm: expand leftover 32-bit DEFINE_MACHINE to TypeInfo
  hw/arm: expand imx8mm-evk DEFINE_MACHINE to TypeInfo
  hw/microblaze: expand petalogix-ml605 and xlnx-zynqmp-pmu to TypeInfo
  hw/i386: set TYPE_X86_MACHINE TypeInfo.is_available
  hw/block/dataplane: move xen-block onto system_ss
  hw/remote: move multiprocess memory onto remote_ss
  hw/remote: set x-remote TypeInfo.is_available
  target-info: add SysEmuTarget none
  accel/tcg: tolerate NULL target_cpu_type for -M none
  qom: skip unavailable filter when target_none()
  module: load every arch-tagged module when target is none
  target-info: select combined qemu-system target by name
  vl: parse arch: machine types on combined qemu-system
  qapi: add query-targets
  tests/qtest: cover combined qemu-system machines and accel-cpu

 MAINTAINERS                                   |    1 -
 accel/accel-common.c                          |   62 +-
 accel/hvf/hvf-all.c                           |   15 +
 accel/kvm/kvm-accel-ops.c                     |    4 -
 accel/kvm/kvm-all.c                           |   45 +-
 accel/kvm/meson.build                         |    2 +-
 accel/mshv/mshv-all.c                         |    8 +
 accel/nitro/nitro-accel.c                     |    8 +
 accel/stubs/kvm-stub.c                        |   11 +
 accel/tcg/tcg-all.c                           |    9 +-
 accel/whpx/meson.build                        |    2 +-
 accel/whpx/whpx-common.c                      |   32 +-
 accel/xen/xen-all.c                           |   18 +
 configs/targets/aarch64-softmmu.c             |   25 -
 configs/targets/aarch64-softmmu.mak           |    1 -
 configs/targets/arm-softmmu.c                 |   25 -
 configs/targets/i386-softmmu.mak              |    2 -
 configs/targets/loongarch64-softmmu.mak       |    1 -
 configs/targets/meson.build                   |    6 -
 configs/targets/ppc-softmmu.mak               |    1 -
 configs/targets/ppc64-softmmu.mak             |    1 -
 configs/targets/riscv32-softmmu.c             |   24 -
 configs/targets/riscv64-softmmu.c             |   24 -
 configs/targets/riscv64-softmmu.mak           |    1 -
 configs/targets/s390x-softmmu.mak             |    1 -
 configs/targets/x86_64-softmmu.mak            |    2 -
 hw/Kconfig                                    |    2 +-
 hw/arm/aspeed_ast1040_evb.c                   |    1 +
 hw/arm/aspeed_ast10x0_evb.c                   |    2 +
 hw/arm/aspeed_ast2400_palmetto.c              |    1 +
 hw/arm/aspeed_ast2400_quanta-q71l.c           |    1 +
 hw/arm/aspeed_ast2400_supermicrox11.c         |    1 +
 hw/arm/aspeed_ast2500_evb.c                   |    1 +
 hw/arm/aspeed_ast2500_g220a.c                 |    1 +
 hw/arm/aspeed_ast2500_romulus.c               |    1 +
 hw/arm/aspeed_ast2500_supermicro-x11spi.c     |    1 +
 hw/arm/aspeed_ast2500_tiogapass.c             |    1 +
 hw/arm/aspeed_ast2500_witherspoon.c           |    1 +
 hw/arm/aspeed_ast2500_yosemitev2.c            |    1 +
 hw/arm/aspeed_ast2600_anacapa.c               |    1 +
 hw/arm/aspeed_ast2600_bletchley.c             |    1 +
 hw/arm/aspeed_ast2600_catalina.c              |    1 +
 hw/arm/aspeed_ast2600_evb.c                   |    1 +
 hw/arm/aspeed_ast2600_fby35.c                 |    1 +
 hw/arm/aspeed_ast2600_fuji.c                  |    1 +
 hw/arm/aspeed_ast2600_gb200nvl.c              |    1 +
 hw/arm/aspeed_ast2600_rainier.c               |    1 +
 hw/arm/aspeed_ast2600_sanmiguel.c             |    1 +
 hw/arm/aspeed_ast27x0-fc.c                    |    2 +-
 hw/arm/aspeed_ast27x0_evb.c                   |    4 +-
 hw/arm/ax3000-evk.c                           |    1 +
 hw/arm/b-l475e-iot01a.c                       |    1 +
 hw/arm/bananapi_m2u.c                         |   22 +-
 hw/arm/collie.c                               |    1 +
 hw/arm/cubieboard.c                           |   23 +-
 hw/arm/digic_boards.c                         |   19 +-
 hw/arm/exynos4_boards.c                       |    2 +
 hw/arm/imx25_pdk.c                            |   19 +-
 hw/arm/imx8mm-evk.c                           |   23 +-
 hw/arm/imx8mp-evk.c                           |    1 +
 hw/arm/integratorcp.c                         |   23 +-
 hw/arm/kzm.c                                  |   19 +-
 hw/arm/max78000fthr.c                         |   19 +-
 hw/arm/mcimx6ul-evk.c                         |   19 +-
 hw/arm/mcimx7d-sabre.c                        |   23 +-
 hw/arm/microbit.c                             |    1 +
 hw/arm/mps2-tz.c                              |    5 +
 hw/arm/mps2.c                                 |    4 +
 hw/arm/mps3r.c                                |    1 +
 hw/arm/msf2-som.c                             |   19 +-
 hw/arm/musca.c                                |    2 +
 hw/arm/netduino2.c                            |   19 +-
 hw/arm/netduinoplus2.c                        |   19 +-
 hw/arm/npcm7xx_boards.c                       |    5 +
 hw/arm/npcm8xx_boards.c                       |    1 +
 hw/arm/olimex-stm32-h405.c                    |   19 +-
 hw/arm/omap_sx1.c                             |    2 +
 hw/arm/orangepi.c                             |   23 +-
 hw/arm/raspi.c                                |    7 +-
 hw/arm/raspi4b.c                              |    2 +-
 hw/arm/realview.c                             |    4 +
 hw/arm/sabrelite.c                            |    1 +
 hw/arm/sbsa-ref.c                             |    1 +
 hw/arm/stellaris.c                            |    2 +
 hw/arm/stm32vldiscovery.c                     |   19 +-
 hw/arm/versatilepb.c                          |    2 +
 hw/arm/vexpress.c                             |    2 +
 hw/arm/virt-acpi-build.c                      |    4 +-
 hw/arm/virt.c                                 |   13 +-
 hw/arm/xen-pvh.c                              |    1 +
 hw/arm/xilinx_zynq.c                          |    1 +
 hw/arm/xlnx-versal-virt.c                     |    2 +
 hw/arm/xlnx-zcu102.c                          |    1 +
 hw/block/dataplane/meson.build                |    2 +-
 hw/core/Kconfig                               |    2 +-
 hw/core/cpu-system.c                          |   23 +
 hw/core/machine-qmp-cmds.c                    |   57 +
 hw/core/meson.build                           |    2 +-
 hw/dma/Kconfig                                |    4 +-
 hw/hexagon/hexagon_dsp.c                      |    1 -
 hw/i2c/Kconfig                                |    2 +-
 hw/i386/acpi-common.c                         |    1 +
 hw/i386/sgx.c                                 |    1 +
 hw/i386/vmport.c                              |    1 +
 hw/i386/x86.c                                 |    2 +
 hw/intc/arm_gic_kvm.c                         |    1 +
 hw/intc/arm_gicv3_its_kvm.c                   |    1 +
 hw/intc/arm_gicv3_kvm.c                       |    1 +
 hw/intc/meson.build                           |   16 +-
 hw/intc/riscv_aplic.c                         |   14 +-
 hw/intc/riscv_imsic.c                         |   18 +-
 hw/intc/s390_flic.c                           |    1 +
 hw/intc/s390_flic_kvm.c                       |    1 +
 hw/loongarch/virt-acpi-build.c                |    6 +-
 hw/loongarch/virt.c                           |    2 +-
 hw/microblaze/petalogix_ml605_mmu.c           |   19 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c      |    1 +
 hw/microblaze/xlnx-zynqmp-pmu.c               |   19 +-
 hw/misc/meson.build                           |    4 +-
 hw/misc/riscv_cmgcr.c                         |    2 +-
 hw/remote/machine.c                           |    3 +
 hw/remote/meson.build                         |    4 +-
 hw/riscv/boston-aia.c                         |    4 +-
 hw/riscv/k230.c                               |    5 +-
 hw/riscv/microblaze-v-generic.c               |   19 +-
 hw/riscv/microchip_pfsoc.c                    |    5 +-
 hw/riscv/opentitan.c                          |    5 +-
 hw/riscv/shakti_c.c                           |    5 +-
 hw/riscv/sifive_e.c                           |    1 +
 hw/riscv/sifive_u.c                           |    1 +
 hw/riscv/spike.c                              |    1 +
 hw/riscv/tt_atlantis.c                        |    5 +-
 hw/riscv/virt-acpi-build.c                    |    2 +-
 hw/riscv/virt.c                               |    7 +-
 hw/riscv/xiangshan_kmh.c                      |    5 +-
 hw/s390x/css.c                                |    1 +
 hw/s390x/s390-pci-bus.c                       |    1 +
 hw/s390x/s390-pci-inst.c                      |    1 +
 hw/s390x/virtio-ccw.c                         |    1 +
 hw/timer/meson.build                          |    2 +-
 hw/usb/Kconfig                                |    2 +-
 include/accel/accel-cpu-target.h              |   31 -
 include/accel/accel-cpu.h                     |   13 +
 include/accel/tcg/cpu-ldst.h                  |    4 +-
 include/exec/abi_ptr.h                        |    7 +-
 include/exec/helper-head.h.inc                |   21 +-
 include/exec/poison.h                         |    2 +
 include/exec/target_long.h                    |   13 +
 include/gdbstub/helpers.h                     |    3 -
 include/hw/arm/virt.h                         |    4 +-
 include/hw/core/boards.h                      |   10 +-
 include/hw/i386/apic.h                        |    3 +
 include/hw/loongarch/virt.h                   |    2 +-
 include/hw/riscv/virt.h                       |    4 +-
 include/migration/cpu.h                       |   30 -
 include/migration/vmstate.h                   |  125 ++
 include/qemu/base-arch-defs.h                 |    9 +
 include/qemu/config-file.h                    |    2 +
 include/qemu/module.h                         |   41 +-
 include/qemu/queue.h                          |   10 +
 include/qemu/target-info-def.h                |   90 ++
 include/qemu/target-info-impl.h               |   42 -
 include/qemu/target-info-init.h               |   53 -
 include/qemu/target-info-qom.h                |   30 -
 include/qemu/target-info-select.h             |   24 +
 include/qemu/target-info.h                    |  214 +++-
 include/qemu/target-kconfig-has.h             |    7 +
 include/qemu/target-kconfig.h                 |   34 +
 include/qemu/target-ops.h                     |   58 +
 include/qom/object.h                          |   27 +-
 include/semihosting/common-semi.h             |   63 +-
 include/system/kvm.h                          |   23 +-
 include/system/kvm_int.h                      |    2 -
 include/tcg/tcg-op-common.h                   |    2 +
 include/tcg/tcg-op-gvec-common.h              |   12 +
 include/tcg/tcg-op-gvec.h                     |   12 -
 include/tcg/tcg-op-mem.h                      |   96 +-
 include/tcg/tcg-op-tl.h                       | 1133 +++++++++++++++++
 include/tcg/tcg-op.h                          |  293 +----
 include/tcg/tcg.h                             |   42 +-
 meson.build                                   |  221 +++-
 migration/savevm.c                            |    4 +
 migration/trace-events                        |    1 +
 migration/vmstate-types.c                     |   86 ++
 migration/vmstate.c                           |  135 +-
 page-vary-common.c                            |    2 +-
 page-vary-system.c                            |    2 +-
 qapi/machine.json                             |   48 +-
 qemu-options.hx                               |   11 +-
 qom/object.c                                  |  145 ++-
 rust/util/src/module.rs                       |   16 +-
 scripts/gen-target-kconfig.py                 |  162 +++
 stubs/dump.c                                  |   27 -
 stubs/kvm.c                                   |    4 +
 stubs/meson.build                             |    3 +-
 stubs/qmp-cpu.c                               |   21 -
 stubs/target-info-select.c                    |   14 +
 system/arch_init.c                            |   19 +
 system/target-info-select.c                   |   26 +
 system/vl.c                                   |  319 ++++-
 target-info-stub.c => target-info-def.c       |   20 +-
 target-info-qom.c                             |   55 -
 target-info.c                                 |  213 +++-
 target-kconfig.c                              |   20 +
 target-ops.c                                  |   50 +
 target/alpha/cpu.h                            |    2 -
 target/arm/arch_dump.c                        |    8 +-
 target/arm/arm-qmp-cmds.c                     |   15 +-
 target/arm/common-semi-target.c               |   26 +-
 target/arm/cpu.c                              |    6 +-
 target/arm/cpu.h                              |    3 +-
 target/arm/cpu64.c                            |   80 +-
 target/arm/hvf/hvf-stub.c                     |   14 +
 target/arm/hvf/meson.build                    |    1 +
 target/arm/kvm-stub.c                         |    5 +
 target/arm/kvm.c                              |   40 +-
 target/arm/kvm_arm.h                          |    9 +
 target/arm/meson.build                        |   11 +-
 target/arm/tcg/translate-a64.c                |    6 +-
 target/arm/tcg/translate-a64.h                |    3 +
 target/arm/tcg/translate-sme.c                |    5 +-
 target/arm/tcg/translate-sve.c                |   18 +-
 target/arm/whpx/whpx-all.c                    |    1 -
 target/arm/whpx/whpx-stub.c                   |    5 +
 target/avr/cpu.h                              |    2 -
 target/hexagon/common-semi-target.c           |   26 +-
 target/hexagon/cpu.h                          |    1 -
 target/hppa/cpu.h                             |    2 -
 target/i386/arch_dump.c                       |    8 +-
 target/i386/cpu-qom.h                         |    1 +
 target/i386/cpu-system.c                      |   12 +-
 target/i386/cpu.c                             |    6 +-
 target/i386/cpu.h                             |   12 +-
 target/i386/hvf/hvf-cpu.c                     |   13 +-
 target/i386/kvm/kvm-cpu.c                     |   12 +-
 target/i386/kvm/kvm_i386.h                    |    2 +
 target/i386/kvm/xen-emu.c                     |    1 +
 target/i386/machine.c                         |   94 +-
 target/i386/mshv/mshv-cpu.c                   |   12 +-
 target/i386/nvmm/nvmm-all.c                   |   28 +-
 target/i386/tcg/tcg-cpu.c                     |   12 +-
 target/i386/whpx/whpx-all.c                   |    1 -
 target/loongarch/arch_dump.c                  |    8 +-
 target/loongarch/cpu.h                        |    2 -
 target/loongarch/kvm/kvm.c                    |    1 +
 target/loongarch/kvm/kvm_loongarch.h          |    2 +
 target/loongarch/loongarch-qmp-cmds.c         |   15 +-
 target/m68k/cpu.h                             |    2 -
 target/microblaze/cpu.h                       |    2 -
 target/microblaze/meson.build                 |    2 +-
 target/mips/cpu.h                             |    2 -
 target/mips/system/machine.c                  |  124 +-
 target/mips/system/mips-qmp-cmds.c            |   15 +-
 target/none/cpu-param.h                       |    6 +
 target/none/cpu-qom.h                         |    6 +
 target/or1k/cpu-qom.h                         |    1 +
 target/or1k/cpu.h                             |    2 -
 target/ppc/arch_dump.c                        |    8 +-
 target/ppc/cpu-qom.h                          |    1 +
 target/ppc/cpu.h                              |    2 -
 target/ppc/cpu_init.c                         |    1 +
 target/ppc/kvm.c                              |   24 +-
 target/ppc/machine.c                          |   78 +-
 target/ppc/ppc-qmp-cmds.c                     |   15 +-
 target/riscv/arch_dump.c                      |   18 +-
 target/riscv/common-semi-target.c             |   28 +-
 target/riscv/cpu.c                            |  133 +-
 target/riscv/cpu.h                            |    9 +-
 target/riscv/helper.h                         |    6 +-
 target/riscv/internals.h                      |   12 +-
 target/riscv/kvm/kvm-cpu.c                    |  115 +-
 target/riscv/kvm/kvm-stub.c                   |   33 +-
 target/riscv/kvm/meson.build                  |    2 +-
 target/riscv/machine.c                        |   16 +-
 target/riscv/meson.build                      |   18 +-
 target/riscv/monitor.c                        |   41 +-
 target/riscv/riscv-qmp-cmds.c                 |   15 +-
 target/riscv/tcg/bitmanip_helper.c            |   14 +-
 target/riscv/tcg/cpu_helper.c                 |   53 +-
 target/riscv/tcg/crypto_helper.c              |    1 +
 target/riscv/tcg/csr.c                        |   20 +-
 .../tcg/insn_trans/trans_privileged.c.inc     |    2 +-
 target/riscv/tcg/insn_trans/trans_rvb.c.inc   |   18 +-
 target/riscv/tcg/insn_trans/trans_rvd.c.inc   |   18 +-
 target/riscv/tcg/insn_trans/trans_rvf.c.inc   |   11 +-
 target/riscv/tcg/insn_trans/trans_rvi.c.inc   |   12 +-
 target/riscv/tcg/insn_trans/trans_rvm.c.inc   |    6 +-
 .../riscv/tcg/insn_trans/trans_rvzacas.c.inc  |   32 +-
 target/riscv/tcg/insn_trans/trans_rvzfh.c.inc |    8 +-
 target/riscv/tcg/insn_trans/trans_xlrbr.c.inc |    4 +-
 .../riscv/tcg/insn_trans/trans_xthead.c.inc   |    2 +-
 target/riscv/tcg/m128_helper.c                |    3 +-
 target/riscv/tcg/meson.build                  |    8 +-
 target/riscv/tcg/op_helper.c                  |    2 +-
 target/riscv/tcg/pmp.c                        |    5 +-
 target/riscv/tcg/tcg-cpu.c                    |   13 +-
 target/riscv/tcg/translate.c                  |  123 +-
 target/riscv/tcg/vector_helper.c              |   21 +-
 target/riscv/tcg/vector_internals.c           |    2 +-
 target/riscv/tcg/vector_internals.h           |    9 +-
 target/rx/cpu.h                               |    2 -
 target/s390x/arch_dump.c                      |    8 +-
 target/s390x/cpu-qom.h                        |    1 +
 target/s390x/cpu.h                            |    3 -
 target/s390x/cpu_models_system.c              |   15 +-
 target/sh4/cpu-qom.h                          |    1 +
 target/sh4/cpu.h                              |    2 -
 target/sparc/cpu.h                            |    2 -
 target/sparc/machine.c                        |   24 +-
 target/tricore/cpu.h                          |    2 -
 target/xtensa/cpu.h                           |    2 -
 tcg/tcg.c                                     |   42 +-
 tests/qtest/accel-cpu-qom-test.c              |   82 ++
 tests/qtest/fuzz/fuzz.c                       |    3 -
 tests/qtest/machine-list-combined-test.c      |  111 ++
 tests/qtest/machine-list-test.c               |   94 ++
 tests/qtest/machine-list-test.inc.h           |  876 +++++++++++++
 tests/qtest/machine-option-test.c             |  714 +++++++++++
 tests/qtest/meson.build                       |   31 +-
 tests/unit/check-qom-interface.c              |   12 +-
 tests/unit/check-qom-proplist.c               |   13 +-
 tests/unit/meson.build                        |   13 +
 tests/unit/test-io-channel-websock.c          |    7 +-
 tests/unit/test-io-task.c                     |    7 +-
 tests/unit/test-module-init.c                 |  186 +++
 tests/unit/test-qdev-global-props.c           |   14 +-
 tests/unit/test-qdev.c                        |    8 +-
 tests/unit/test-qom-is-available.c            |  250 ++++
 tests/unit/test-ram-discard-manager.c         |    7 +-
 tests/unit/test-target-info.c                 |   38 +
 tests/unit/test-target-kconfig-has.c          |   22 +
 tests/unit/test-vmstate.c                     |  377 +++++-
 ui/console-vc.c                               |   13 +-
 ui/dbus.c                                     |    8 +-
 ui/gtk.c                                      |   10 +-
 ui/spice-app.c                                |    7 +-
 util/module.c                                 |  171 ++-
 util/qemu-config.c                            |   10 +-
 338 files changed, 8224 insertions(+), 1876 deletions(-)
 delete mode 100644 configs/targets/aarch64-softmmu.c
 delete mode 100644 configs/targets/arm-softmmu.c
 delete mode 100644 configs/targets/meson.build
 delete mode 100644 configs/targets/riscv32-softmmu.c
 delete mode 100644 configs/targets/riscv64-softmmu.c
 delete mode 100644 include/accel/accel-cpu-target.h
 delete mode 100644 include/migration/cpu.h
 create mode 100644 include/qemu/target-info-def.h
 delete mode 100644 include/qemu/target-info-impl.h
 delete mode 100644 include/qemu/target-info-init.h
 delete mode 100644 include/qemu/target-info-qom.h
 create mode 100644 include/qemu/target-info-select.h
 create mode 100644 include/qemu/target-kconfig-has.h
 create mode 100644 include/qemu/target-kconfig.h
 create mode 100644 include/qemu/target-ops.h
 create mode 100644 include/tcg/tcg-op-tl.h
 create mode 100644 scripts/gen-target-kconfig.py
 delete mode 100644 stubs/dump.c
 delete mode 100644 stubs/qmp-cpu.c
 create mode 100644 stubs/target-info-select.c
 create mode 100644 system/target-info-select.c
 rename target-info-stub.c => target-info-def.c (71%)
 delete mode 100644 target-info-qom.c
 create mode 100644 target-kconfig.c
 create mode 100644 target-ops.c
 create mode 100644 target/arm/hvf/hvf-stub.c
 create mode 100644 target/none/cpu-param.h
 create mode 100644 target/none/cpu-qom.h
 create mode 100644 tests/qtest/accel-cpu-qom-test.c
 create mode 100644 tests/qtest/machine-list-combined-test.c
 create mode 100644 tests/qtest/machine-list-test.c
 create mode 100644 tests/qtest/machine-list-test.inc.h
 create mode 100644 tests/qtest/machine-option-test.c
 create mode 100644 tests/unit/test-module-init.c
 create mode 100644 tests/unit/test-qom-is-available.c
 create mode 100644 tests/unit/test-target-info.c
 create mode 100644 tests/unit/test-target-kconfig-has.c

-- 
2.52.0.windows.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.