This patchset takes the mmio-dispatch out of big lock's protection into consideration. In that scene, the finalize of parent can not mean the end of children immediately.
Also, this patchset elimate one major obstale to change the 3rd param of memory_region_init_io from void* to Object * refer to: http://lists.gnu.org/archive/html/qemu-devel/2012-08/msg02409.html Background: Inspired by the disscussion between Paolo Bonzini and Anthony Liguori refer to http://www.mail-archive.com/qemu-devel@nongnu.org/msg127344.html Liu Ping Fan (10) qom: add,remove of link property need to ref,unref its target qdev: change iterator callback seq qom: export object_property_is_child,object_property_is_link qdev: introduce new interface to remove composite sub-tree qdev: finalize of qbus,qdev will not the right place to free children qom: expose object_property_del_child unplug: using new intf qdev_delete_subtree in acpi_piix_eject_slot qdev: rename qdev_unplug to qdev_unplug_req mon: release dev's ref hold by qdev_get_peripheral qdev: fix create in place obj's life cycle problem hw/acpi_piix4.c | 3 + hw/pci-hotplug.c | 4 +- hw/qdev-monitor.c | 8 +++- hw/qdev.c | 113 ++++++++++++++++++++++++++++++++++++------------- hw/qdev.h | 8 ++- hw/scsi-bus.c | 4 +- hw/usb/dev-storage.c | 2 +- hw/xen_platform.c | 2 +- include/qemu/object.h | 6 +++ qom/object.c | 22 +++++++-- 10 files changed, 128 insertions(+), 44 deletions(-)