mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
hw/pci: switch to a generic hotplug handling for PCIDevice
make qdev_unplug()/device_set_realized() to call hotplug handler's plug/unplug methods if available and remove not needed anymore hot(un)plug handling from PCIDevice. In case if hotplug handler is not available, revert to the legacy hotplug method for compatibility with not yet converted buses. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
a66e657e18
commit
5e95494380
5 changed files with 15 additions and 45 deletions
|
@ -213,7 +213,6 @@ void qdev_unplug(DeviceState *dev, Error **errp)
|
|||
error_set(errp, QERR_BUS_NO_HOTPLUG, dev->parent_bus->name);
|
||||
return;
|
||||
}
|
||||
assert(dc->unplug != NULL);
|
||||
|
||||
if (!dc->hotpluggable) {
|
||||
error_set(errp, QERR_DEVICE_NO_HOTPLUG,
|
||||
|
@ -223,9 +222,13 @@ void qdev_unplug(DeviceState *dev, Error **errp)
|
|||
|
||||
qdev_hot_removed = true;
|
||||
|
||||
if (dc->unplug(dev) < 0) {
|
||||
error_set(errp, QERR_UNDEFINED_ERROR);
|
||||
return;
|
||||
if (dev->parent_bus && dev->parent_bus->hotplug_handler) {
|
||||
hotplug_handler_unplug(dev->parent_bus->hotplug_handler, dev, errp);
|
||||
} else {
|
||||
assert(dc->unplug != NULL);
|
||||
if (dc->unplug(dev) < 0) { /* legacy handler */
|
||||
error_set(errp, QERR_UNDEFINED_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -720,6 +723,12 @@ static void device_set_realized(Object *obj, bool value, Error **err)
|
|||
dc->realize(dev, &local_err);
|
||||
}
|
||||
|
||||
if (dev->parent_bus && dev->parent_bus->hotplug_handler &&
|
||||
local_err == NULL) {
|
||||
hotplug_handler_plug(dev->parent_bus->hotplug_handler,
|
||||
dev, &local_err);
|
||||
}
|
||||
|
||||
if (qdev_get_vmsd(dev) && local_err == NULL) {
|
||||
vmstate_register_with_alias_id(dev, -1, qdev_get_vmsd(dev), dev,
|
||||
dev->instance_id_alias,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue