mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-07 20:08:20 +00:00
qdev: add qbus_reset_all
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
8c43a6f05d
commit
d0508c3664
@ -182,6 +182,18 @@ int qbus_walk_children(BusState *bus, qdev_walkerfn *devfn,
|
|||||||
int qdev_walk_children(DeviceState *dev, qdev_walkerfn *devfn,
|
int qdev_walk_children(DeviceState *dev, qdev_walkerfn *devfn,
|
||||||
qbus_walkerfn *busfn, void *opaque);
|
qbus_walkerfn *busfn, void *opaque);
|
||||||
void qdev_reset_all(DeviceState *dev);
|
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_reset_all_fn(void *opaque);
|
||||||
|
|
||||||
void qbus_free(BusState *bus);
|
void qbus_free(BusState *bus);
|
||||||
|
@ -228,10 +228,15 @@ void qdev_reset_all(DeviceState *dev)
|
|||||||
qdev_walk_children(dev, qdev_reset_one, qbus_reset_one, NULL);
|
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)
|
void qbus_reset_all_fn(void *opaque)
|
||||||
{
|
{
|
||||||
BusState *bus = 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 */
|
/* can be used as ->unplug() callback for the simple cases */
|
||||||
|
Loading…
Reference in New Issue
Block a user