mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
qdev: add children before qdev_init
We want the composition tree to to be in order by the time we call qdev_init, so that a single set of the toplevel realize property can propagate all the way down the composition tree. This is not the case so far. Unfortunately, this is incompatible with calling qdev_init in the constructor wrappers for devices, so for now we need to unattach some devices that are created through those wrappers. This will be fixed by removing qdev_init and instead setting the toplevel realize property after machine init. Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
a612b2a663
commit
f424d5c4c9
4 changed files with 7 additions and 24 deletions
|
@ -458,10 +458,6 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
|||
qdev_free(qdev);
|
||||
return NULL;
|
||||
}
|
||||
if (qdev_init(qdev) < 0) {
|
||||
qerror_report(QERR_DEVICE_INIT_FAILED, driver);
|
||||
return NULL;
|
||||
}
|
||||
if (qdev->id) {
|
||||
object_property_add_child(qdev_get_peripheral(), qdev->id,
|
||||
OBJECT(qdev), NULL);
|
||||
|
@ -472,6 +468,10 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
|||
OBJECT(qdev), NULL);
|
||||
g_free(name);
|
||||
}
|
||||
if (qdev_init(qdev) < 0) {
|
||||
qerror_report(QERR_DEVICE_INIT_FAILED, driver);
|
||||
return NULL;
|
||||
}
|
||||
qdev->opts = opts;
|
||||
return qdev;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue