[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc.
From: |
Paolo Bonzini |
Subject: |
Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc. |
Date: |
Wed, 20 May 2020 18:28:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 |
On 20/05/20 16:42, Markus Armbruster wrote:
> If something goes
> wrong there, we execute
>
> fail:
> error_propagate(errp, local_err);
> if (unattached_parent) {
> /*
> * Beware, this doesn't just revert
> * object_property_add_child(), it also runs bus_remove()!
> */
> object_unparent(OBJECT(dev));
> unattached_count--;
> }
>
> and bus_remove() drops the reference count to zero.
Whoa whoa... I didn't expect this from a failure to realize.
I think we should move the whole /machine/unattached dance into
qdev_realize, and just assert that a device being realized already has a
parent. Then the ref/unref _will_ be unnecessary. In the meanwhile, I
agree to either keep it or move it inside device_set_realized.
Thanks,
Paolo
- [PATCH 49/55] sysbus: sysbus_init_child_obj() is now unused, drop, (continued)
- [PATCH 49/55] sysbus: sysbus_init_child_obj() is now unused, drop, Markus Armbruster, 2020/05/19
- [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/19
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Alistair Francis, 2020/05/19
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Alistair Francis, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Paolo Bonzini, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Paolo Bonzini, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc.,
Paolo Bonzini <=
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/25
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Paolo Bonzini, 2020/05/25
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Markus Armbruster, 2020/05/29
Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., Gerd Hoffmann, 2020/05/20
[PATCH 48/55] sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 4, Markus Armbruster, 2020/05/19
[PATCH 15/55] pci: Convert uses of pci_create() etc. manually, Markus Armbruster, 2020/05/19
[PATCH 54/55] qdev: qdev_init_nofail() is now unused, drop, Markus Armbruster, 2020/05/19
[PATCH 17/55] isa: New isa_new(), isa_realize_and_unref() etc., Markus Armbruster, 2020/05/19
[PATCH 52/55] qdev: Use qdev_realize() in qdev_device_add(), Markus Armbruster, 2020/05/19
[PATCH 37/55] sysbus: Drop useless OBJECT() in sysbus_init_child_obj() calls, Markus Armbruster, 2020/05/19