[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc.
From: |
Markus Armbruster |
Subject: |
Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc. |
Date: |
Mon, 25 May 2020 08:30:25 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Paolo Bonzini <address@hidden> writes:
> 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.
Me neither. But by the time I understood what's going on here, my
appetite for big, structural QOM changes was pretty much gone, so I
merely added the "Beware" comment.
> 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.
Could be done on top. I might try for v2, if I can find the time.
- [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc., (continued)
- [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, 2020/05/20
- Re: [PATCH 03/55] qdev: New qdev_new(), qdev_realize(), etc.,
Markus Armbruster <=
- 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