On 10/21/2026 11:12 AM, Pierrick Bouvier wrote:
> This series removes duplication of cpu_get_note_size and cpu_get_dump_info per
> target. For this, we define a new sysemu operations for a given cpu, and
> implement it per target.
>
> Existing implementations were using first_cpu, which is what we continue to do.
> When we'll work on heterogeneous later, we can revisit this to either forbid a
> dump, or perform a dump for each target active. Meanwhile, add a check if we run
> heterogeneous emulation, and refuse to dump if that's the case.
>
> v5
> --
>
> - remove redundant typedefs for ArchDumpInfo and GuestPhysBlockList
> - make new sysemu op infallible (get_dump_info has no return, and get_note_size
> return size_t). Keep fallible global wrappers.
>
> v4
> --
>
> - define global wrapper for cpu_get_dump_info and cpu_get_note_size, both using
> the sysemu op we introduced.
>
> v3
> --
>
> - riscv_get_dump_info: add const to riscv cpu
> - use forward decl for ArchDumpInfo instead of including system/dump.h
> - use forward decl for GuestPhysBlockList instead of including system/memory_mapping.h
> - update comment for get_note_size sysemu ops
> - add target_heterogeneous to target_info: returns false for now
> - edit commit description for dump_init changes about why we can have first_cpu null
> - add target_heterogeneous check in dump_init
> - rebased on master (previous "based on" is not needed anymore)
>
> v2
> --
>
> - Add new ops to existing SysEmuOps instead of a new DumpOps.
>
> Pierrick Bouvier (21):
> target-info: add target_heterogeneous
> dump/dump: do not dump machine if doing heterogeneous emulation
> include/qemu/typedefs: add ArchDumpInfo
> include/qemu/typedefs: add GuestPhysBlockList
> hw/core/sysemu-cpu-ops: add get_dump_info
> target/arm: implement get_dump_info sysemu op
> target/i386: implement get_dump_info sysemu op
> target/ppc/cpu: constify cpu parameter for
> ppc_interrupts_little_endian
> target/ppc: implement get_dump_info sysemu op
> target/riscv: implement get_dump_info sysemu op
> target/s390x: implement get_dump_info sysemu op
> target/loongarch: implement get_dump_info sysemu op
> dump: reimplement cpu_get_dump_info using get_dump_info sysemu op
> hw/core/sysemu-cpu-ops: add get_note_size
> target/arm: implement get_note_size sysemu op
> target/i386: implement get_note_size sysemu op
> target/ppc: implement get_note_size sysemu op
> target/riscv: implement get_note_size sysemu op
> target/s390x: implement get_note_size sysemu op
> target/loongarch: implement get_note_size sysemu op
> dump: reimplement cpu_get_note_size using get_note_size sysemu op
>
> dump/dump.c | 14 ++++++++++----
> hw/core/cpu-system.c | 19 +++++++++++++++++++
> include/hw/core/cpu.h | 24 ++++++++++++++++++++++++
> include/hw/core/sysemu-cpu-ops.h | 12 ++++++++++++
> include/qemu/target-info.h | 8 ++++++++
> include/qemu/typedefs.h | 2 ++
> include/system/dump-arch.h | 9 ++-------
> include/system/memory_mapping.h | 4 ++--
> stubs/dump.c | 27 ---------------------------
> stubs/meson.build | 1 -
> target-info.c | 6 ++++++
> target/arm/arch_dump.c | 22 +++++++---------------
> target/arm/cpu.c | 2 ++
> target/arm/internals.h | 4 ++++
> target/i386/arch_dump.c | 14 +++++++-------
> target/i386/cpu-internal.h | 5 +++++
> target/i386/cpu.c | 2 ++
> target/loongarch/arch_dump.c | 9 ++++-----
> target/loongarch/cpu.c | 2 ++
> target/loongarch/internals.h | 5 +++++
> target/ppc/arch_dump.c | 18 ++++++------------
> target/ppc/cpu.h | 6 +++---
> target/ppc/cpu_init.c | 2 ++
> target/ppc/internal.h | 7 +++++++
> target/riscv/arch_dump.c | 20 +++++++-------------
> target/riscv/cpu.c | 2 ++
> target/riscv/internals.h | 4 ++++
> target/s390x/arch_dump.c | 8 ++++----
> target/s390x/cpu-system.c | 2 ++
> target/s390x/s390x-internal.h | 5 +++++
> 30 files changed, 165 insertions(+), 100 deletions(-)
> delete mode 100644 stubs/dump.c
>
This was merged into master (3745b15e090e3dbcfcf28fc96928abba8fd2ed2a).
Regards,
Pierrick