Am 10.01.2013 15:49, schrieb Paolo Bonzini: > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > hw/qdev-core.h | 12 ++++++++++++ > hw/qdev.c | 7 ++++++- > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/hw/qdev-core.h b/hw/qdev-core.h > index fdf14ec..853bd08 100644 > --- a/hw/qdev-core.h > +++ b/hw/qdev-core.h > @@ -182,6 +182,18 @@ int qbus_walk_children(BusState *bus, qdev_walkerfn > *devfn, > int qdev_walk_children(DeviceState *dev, qdev_walkerfn *devfn, > qbus_walkerfn *busfn, void *opaque); > void qdev_reset_all(DeviceState *dev); > + > +/** > + * @qbus_reset_all:
Just " * qbus_reset_all:" please. > + * @bus: Bus to be reset. > + * > + * Reset @bus and perform a bus-level ("hard") reset of all devices connected > + * to it, including recursive processing of all buses below @bus itself. A > + * hard reset means that qbus_reset_all will reset all state of the device. qbus_reset_all()? > + * For PCI devices, for example, this will include the base address registers #PCIDevice? > + * or configuration space. > + */ > +void qbus_reset_all(BusState *bus); Otherwise looks trivial and okay. Andreas > void qbus_reset_all_fn(void *opaque); > > void qbus_free(BusState *bus); > diff --git a/hw/qdev.c b/hw/qdev.c > index f2c2484..e2f957e 100644 > --- a/hw/qdev.c > +++ b/hw/qdev.c > @@ -228,10 +228,15 @@ void qdev_reset_all(DeviceState *dev) > qdev_walk_children(dev, qdev_reset_one, qbus_reset_one, NULL); > } > > +void qbus_reset_all(BusState *bus) > +{ > + qbus_walk_children(bus, qdev_reset_one, qbus_reset_one, NULL); > +} > + > void qbus_reset_all_fn(void *opaque) > { > BusState *bus = opaque; > - qbus_walk_children(bus, qdev_reset_one, qbus_reset_one, NULL); > + qbus_reset_all(bus); > } > > /* can be used as ->unplug() callback for the simple cases */ -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg