This series contains some low-hanging fruit fixes I came up with when investigating Rust for QEMU, especially QOM object lifecycle vs. the Drop trait.
I noticed that no finalize methods were called in Rust sysbus devices when QEMU quits, and neither are its C variants. What is probably missing in the first place is a object_unref(object_get_root()); at the end of qemu_cleanup() in runstate.c (see TODO there). Adding it before this series won't clean up machines since their refcount won't reach zero. With this series applied this additional line will cause various issues when quitting QEMU, allowing the problem to be investigated. Fixing it is beyond the scope of this series (and my time budget). Testing done: * `make check` * Run imx8mp-evk with a Buildroot image Bernhard Beschow (5): hw/arm/fsl-imx8mp: Do not create redundant unimplemented devices hw/arm/fsl-imx8mp: Fix parent of ocram memory region hw/arm/imx8mp-evk: Fix reference count of SoC object system/vl: Fix reference count of machine object Revert "sysbus: add irq_routing_notifier" include/hw/core/sysbus.h | 1 - hw/arm/fsl-imx8mp.c | 3 ++- hw/arm/imx8mp-evk.c | 4 ++-- hw/core/sysbus.c | 6 ------ system/vl.c | 1 + 5 files changed, 5 insertions(+), 10 deletions(-) -- 2.53.0
