[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 54/58] qdev: Make qdev_realize() support bus-less devices
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 54/58] qdev: Make qdev_realize() support bus-less devices |
Date: |
Sat, 30 May 2020 09:59:51 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
On 5/29/20 3:45 PM, Markus Armbruster wrote:
> So far, qdev_realize() supports only devices that plug into a bus:
> argument @bus cannot be null. Extend it to support bus-less devices,
> too.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> hw/core/qdev.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 78a06db76e..50336168f2 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -408,7 +408,7 @@ void qdev_init_nofail(DeviceState *dev)
> /*
> * Realize @dev.
> * @dev must not be plugged into a bus.
> - * Plug @dev into @bus. This takes a reference to @dev.
> + * If @bus, plug @dev into @bus. This takes a reference to @dev.
> * If @dev has no QOM parent, make one up, taking another reference.
> * On success, return true.
> * On failure, store an error through @errp and return false.
> @@ -418,9 +418,12 @@ bool qdev_realize(DeviceState *dev, BusState *bus, Error
> **errp)
> Error *err = NULL;
>
> assert(!dev->realized && !dev->parent_bus);
> - assert(bus);
This simpler form is easier to review IMHO:
if (!bus) {
assert(!DEVICE_GET_CLASS(dev)->bus_type);
}
Whichever you prefer (the simpler the better):
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>
> - qdev_set_parent_bus(dev, bus);
> + if (bus) {
> + qdev_set_parent_bus(dev, bus);
> + } else {
> + assert(!DEVICE_GET_CLASS(dev)->bus_type);
> + }
>
> object_property_set_bool(OBJECT(dev), true, "realized", &err);
> if (err) {
>
- [PATCH v2 58/58] MAINTAINERS: Make section QOM cover hw/core/*bus.c as well, (continued)
- [PATCH v2 58/58] MAINTAINERS: Make section QOM cover hw/core/*bus.c as well, Markus Armbruster, 2020/05/29
- [PATCH v2 20/58] isa: Convert uses of isa_create(), isa_try_create() manually, Markus Armbruster, 2020/05/29
- [PATCH v2 13/58] pci: New pci_new(), pci_realize_and_unref() etc., Markus Armbruster, 2020/05/29
- [PATCH v2 36/58] qom: Less verbose object_initialize_child(), Markus Armbruster, 2020/05/29
- [PATCH v2 44/58] sysbus: New sysbus_realize(), sysbus_realize_and_unref(), Markus Armbruster, 2020/05/29
- [PATCH v2 09/58] qdev: Convert uses of qdev_create() with Coccinelle, Markus Armbruster, 2020/05/29
- [PATCH v2 26/58] usb: New usb_new(), usb_realize_and_unref(), Markus Armbruster, 2020/05/29
- [PATCH v2 50/58] sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 4, Markus Armbruster, 2020/05/29
- [PATCH v2 54/58] qdev: Make qdev_realize() support bus-less devices, Markus Armbruster, 2020/05/29
- Re: [PATCH v2 54/58] qdev: Make qdev_realize() support bus-less devices,
Philippe Mathieu-Daudé <=
- [PATCH v2 57/58] qdev: qdev_init_nofail() is now unused, drop, Markus Armbruster, 2020/05/29
- [PATCH v2 49/58] sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 3, Markus Armbruster, 2020/05/29
- [PATCH v2 47/58] sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 1, Markus Armbruster, 2020/05/29
- [PATCH v2 56/58] qdev: Convert bus-less devices to qdev_realize() with Coccinelle, Markus Armbruster, 2020/05/29
- [PATCH v2 45/58] sysbus: Convert to sysbus_realize() etc. with Coccinelle, Markus Armbruster, 2020/05/29
- [PATCH v2 43/58] sysbus: Tidy up sysbus_init_child_obj()'s @childsize arg, part 2, Markus Armbruster, 2020/05/29
- [PATCH v2 04/58] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/29
- [PATCH v2 11/58] qdev: Convert uses of qdev_set_parent_bus() with Coccinelle, Markus Armbruster, 2020/05/29
- [PATCH v2 55/58] qdev: Use qdev_realize() in qdev_device_add(), Markus Armbruster, 2020/05/29