]> git.proxmox.com Git - mirror_qemu.git/commit - include/hw/qdev-core.h
qdev: switch reset to post-order
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 6 Dec 2013 16:54:27 +0000 (17:54 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 23 Dec 2013 11:12:35 +0000 (13:12 +0200)
commitdcc209314afdaeec42f1e2a7bbf37eec3ace23de
treee19b43b2d1acdc2bdb0b26dfe390e117ce19c963
parent0293214b8c5bf56a095d0a39c5821c9da66dd566
qdev: switch reset to post-order

Post-order is the only sensible direction for the reset signals.
For example, suppose pre-order is used and the parent has some data
structures that cache children state (for example a list of active
requests).  When the reset method is invoked on the parent, these caches
could be in any state.

If post-order is used, on the other hand, these will be in a known state
when the reset method is invoked on the parent.

This change means that it is no longer possible to block the visit of
the devices, so the callback is changed to return void.  This is not
a problem, because PCI was returning 1 exactly in order to achieve the
same ordering that this patch implements.

PCI can then rely on the qdev core having sent a "reset signal" (whatever
that means) to the device, and only do the PCI-specific initialization
with pci_do_device_reset.

MST: fixed up virtio-ccw

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/core/qdev.c
hw/pci/pci.c
hw/s390x/virtio-ccw.c
include/hw/qdev-core.h