Fix various QOM object life-cycle issues
This series adds a new "qom-tests" qtest command that exercises basic QOM
object life-cycle: it instantiates all non-abstract object types, gets/sets
their properties, and unrefs them. This quickly surfaces leaks and crashes
that could otherwise be triggered at runtime via QMP qom commands.
# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCgAdFiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmojrOsACgkQ2ujhCXWW
# nOUHSg/9EvbthHQZb0b9uKHoGrR9xCc2eGY/xnR6cNzl0jUvOQ9Hnqzm54Wmxw4s
# S5vql/3AISgYVl8ScTv5YZlwrXLCIM7FYCCbMIR4gcCjNfEBuxF3zmMQZSLdVFVx
# gUZ0d07sWVsT+jtPoehloWJAnIjsFDA/BlVFusN4MLtfmCRJV7QSbXsI3aN2mgZT
# vq2j8Ia8atRxf3mxkfKZwarTAz9tzIlHOD87gkHZJFv2lJfx2PgC9j5xmd8O5uXV
# cWZsZQldopa+hlZOGi++SfwbnFmYLHYPiVr/ZgM+gdMOrFaQxx1+SIrw8HDYLDK+
# o3I4YpE/sTUJoBMl9BA6nUJzxPlg1akziMUoI5us2uXUsU+QQvEL8zgpMYmqz4BW
# 5jhweo9SG7ZMQ21U4QLTX94HC/uPoq0WeBJuY+dHf57SApBdhMjq4l+pwTeUwk5c
# nGO4gT0aPSsjscYsJqpZeOXGLgjlvO/Lv7+2DpoP0mLWYy6CLHg/RuFGIG7IPlIu
# J17bSkD+g5HNBUCgABExqd+6FgfPHOPqlOYHTh93juYDvrrztLjevTZpgLzfMzi+
# qnBlx/688QCjp00wgGGjYY8afBFhGTn5Okm64F1KVmd0rzdCLQuVhLdV1zn31jwF
# 39EfdkguGr800AFKYaYOTfuPNzWSwH04m4c0EXZYfxg7/LBplzc=
# =8fwy
# -----END PGP SIGNATURE-----
# gpg: Signature made Sat 06 Jun 2026 01:15:23 EDT
# gpg: using RSA key
87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full]
# gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5
* tag 'qom-tests-pr-v2' of https://gitlab.com/marcandre.lureau/qemu: (23 commits)
qtest: add "qom-tests" command
hw/i2c/pmbus: fix undefined behavior in pmbus_direct_mode2data
target/riscv: use hash table as set for user_options
target/riscv: fix general_user_opts hash table leak
hw/ppc/spapr: free host_model and host_serial on finalization
hw/loongarch/virt: free flash devices and OEM strings on finalization
hw/tpm: free PPI buffer on finalization
hw/i386/pc: free pcspk on finalization
hw/i386/nitro_enclave: add instance finalize
target/i386/kvm/tdx: free strings in tdx_guest_finalize
target/i386/sev: add finalize functions and fix leaking setters
net/filter: free old values in property setters
hw/core/machine: free shim_filename on finalization
system/ioport: minor code simplification
backends/cryptodev-lkcf: skip cleanup when not initialized
hw/intc/apic: move checks to realize()
hw/xlnx_dp: reject NULL 'dpdma' property rather than crash
hw/ipmi: reject NULL 'bmc' property rather than crash
hw/pci-host/q35: handle NULL bus in pci-hole64 getters
hw/pci-host/i440fx: handle NULL bus in pci-hole64 getters
...
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>