PCI is handling resetting of its devices before the bus is reset, but this is only necessary because qdev is broken and usually does pre-order reset. Post-order is a much better definition. Drop the unnecessary flexibility that lets bus decide the reset order, convert to post-order, and make PCI use common code for reset.
Paolo Bonzini (4): pci: do not export pci_bus_reset pci: clean up resetting of IRQs qdev: allow both pre- and post-order vists in qdev walking functions qdev: switch reset to post-order hw/core/qdev.c | 47 ++++++++++++++++++++++++++++++++++------------- hw/pci/pci.c | 42 ++++++++++++++++++++---------------------- hw/pci/pci_bridge.c | 2 +- include/hw/pci/pci.h | 1 - include/hw/qdev-core.h | 15 ++++++++++----- 5 files changed, 65 insertions(+), 42 deletions(-)