Commit d0508c36 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Anthony Liguori
Browse files

qdev: add qbus_reset_all

parent 8c43a6f0
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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:
 * @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.
 * For PCI devices, for example, this will include the base address registers
 * or configuration space.
 */
void qbus_reset_all(BusState *bus);
void qbus_reset_all_fn(void *opaque);

void qbus_free(BusState *bus);
+6 −1
Original line number Diff line number Diff line
@@ -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 */