qbus_reset_all can be used instead. There is no semantic change because pcibus_reset returns 1 and takes care of the device tree traversal.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/pci.c | 10 +++------- hw/pci.h | 1 - hw/pci_bridge.c | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index ace9368..436982e 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -209,8 +209,9 @@ void pci_device_reset(PCIDevice *dev) * Trigger pci bus reset under a given bus. * To be called on RST# assert. */ -void pci_bus_reset(PCIBus *bus) +static int pcibus_reset(BusState *qbus) { + PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus); int i; for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) { @@ -221,13 +222,8 @@ void pci_bus_reset(PCIBus *bus) for (i = 0; i < bus->nirq; i++) { assert(bus->irq_count[i] == 0); } -} - -static int pcibus_reset(BusState *qbus) -{ - pci_bus_reset(DO_UPCAST(PCIBus, qbus, qbus)); - /* topology traverse is done by pci_bus_reset(). + /* topology traverse is done in the pci_device_reset() loop above. Tell qbus/qdev walker not to traverse the tree */ return 1; } diff --git a/hw/pci.h b/hw/pci.h index 4da0c2a..88fd4a3 100644 --- a/hw/pci.h +++ b/hw/pci.h @@ -334,7 +334,6 @@ void pci_bus_fire_intx_routing_notifier(PCIBus *bus); void pci_device_set_intx_routing_notifier(PCIDevice *dev, PCIINTxRoutingNotifier notifier); void pci_device_reset(PCIDevice *dev); -void pci_bus_reset(PCIBus *bus); PCIDevice *pci_nic_init(NICInfo *nd, const char *default_model, const char *default_devaddr); diff --git a/hw/pci_bridge.c b/hw/pci_bridge.c index 4680501..30ed34e 100644 --- a/hw/pci_bridge.c +++ b/hw/pci_bridge.c @@ -234,7 +234,7 @@ void pci_bridge_write_config(PCIDevice *d, newctl = pci_get_word(d->config + PCI_BRIDGE_CONTROL); if (~oldctl & newctl & PCI_BRIDGE_CTL_BUS_RESET) { /* Trigger hot reset on 0->1 transition. */ - pci_bus_reset(&s->sec_bus); + qbus_reset_all(&s->sec_bus.qbus); } } -- 1.8.0.2