From: Eduardo Habkost <ehabkost@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Thomas Huth <thuth@redhat.com>,
qemu-arm@nongnu.org, qemu-devel@nongnu.org,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-arm] [PATCH] hw/arm/bcm283x: Fix crash with device_add bcm2837 on unsupported machines
Date: Wed, 11 Jul 2018 15:30:31 -0300 [thread overview]
Message-ID: <20180711183031.GM914@localhost.localdomain> (raw)
In-Reply-To: <ca91bffe-2bcf-78a2-02cd-8ae7cc48074c@redhat.com>
On Wed, Jul 11, 2018 at 07:20:42PM +0200, Paolo Bonzini wrote:
> On 09/07/2018 23:03, Thomas Huth wrote:
> >
> > The problem is that qdev_set_parent_bus() from instance_init adds a link
> > to the child devices which is not valid anymore after the device init
> > failed. Thus the qdev_set_parent_bus() must rather be done in the realize
> > function instead.
>
> The theoretical behavior should be:
It's not clear below where you expect
qdev_set_parent_bus(..., sysbus_get_default())
to be called (if it should be called at all).
I don't know where it should be called, but I'm absolutely sure
instance_init is not the right place.
>
> - realize fails
>
> - object_unparent is called on the device that failed to realize (see
> qdev_device_add). object_unparent calls device_unparent
>
> - after device_unparent finishes, the last reference to the device has
> been dropped and the device is freed
>
> - object finalization releases all properties
>
> - this includes child properties, so for each child device
> object_unparent is called
>
> - again device_unparent is called (for the child) and this removes the
> child from the bus.
>
> Paolo
--
Eduardo
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>,
qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
qemu-arm@nongnu.org, Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] hw/arm/bcm283x: Fix crash with device_add bcm2837 on unsupported machines
Date: Wed, 11 Jul 2018 15:30:31 -0300 [thread overview]
Message-ID: <20180711183031.GM914@localhost.localdomain> (raw)
In-Reply-To: <ca91bffe-2bcf-78a2-02cd-8ae7cc48074c@redhat.com>
On Wed, Jul 11, 2018 at 07:20:42PM +0200, Paolo Bonzini wrote:
> On 09/07/2018 23:03, Thomas Huth wrote:
> >
> > The problem is that qdev_set_parent_bus() from instance_init adds a link
> > to the child devices which is not valid anymore after the device init
> > failed. Thus the qdev_set_parent_bus() must rather be done in the realize
> > function instead.
>
> The theoretical behavior should be:
It's not clear below where you expect
qdev_set_parent_bus(..., sysbus_get_default())
to be called (if it should be called at all).
I don't know where it should be called, but I'm absolutely sure
instance_init is not the right place.
>
> - realize fails
>
> - object_unparent is called on the device that failed to realize (see
> qdev_device_add). object_unparent calls device_unparent
>
> - after device_unparent finishes, the last reference to the device has
> been dropped and the device is freed
>
> - object finalization releases all properties
>
> - this includes child properties, so for each child device
> object_unparent is called
>
> - again device_unparent is called (for the child) and this removes the
> child from the bus.
>
> Paolo
--
Eduardo
next prev parent reply other threads:[~2018-07-11 18:30 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-09 21:03 [Qemu-arm] [PATCH] hw/arm/bcm283x: Fix crash with device_add bcm2837 on unsupported machines Thomas Huth
2018-07-09 21:03 ` [Qemu-devel] " Thomas Huth
2018-07-09 21:31 ` [Qemu-arm] " Eduardo Habkost
2018-07-09 21:31 ` [Qemu-devel] " Eduardo Habkost
2018-07-09 21:36 ` [Qemu-arm] " Thomas Huth
2018-07-09 21:36 ` [Qemu-devel] " Thomas Huth
2018-07-09 21:42 ` [Qemu-arm] " Peter Maydell
2018-07-09 21:42 ` [Qemu-devel] " Peter Maydell
2018-07-09 22:03 ` [Qemu-arm] " Thomas Huth
2018-07-09 22:03 ` [Qemu-devel] " Thomas Huth
2018-07-10 6:50 ` [Qemu-arm] " Peter Maydell
2018-07-10 6:50 ` [Qemu-devel] " Peter Maydell
2018-07-11 7:21 ` [Qemu-arm] " Thomas Huth
2018-07-11 7:21 ` [Qemu-devel] " Thomas Huth
2018-07-11 16:12 ` [Qemu-arm] " Eduardo Habkost
2018-07-11 16:12 ` [Qemu-devel] " Eduardo Habkost
2018-07-11 17:15 ` [Qemu-arm] " Peter Maydell
2018-07-11 17:15 ` [Qemu-devel] " Peter Maydell
2018-07-12 12:06 ` [Qemu-arm] " Markus Armbruster
2018-07-12 12:06 ` Markus Armbruster
2018-07-12 12:55 ` [Qemu-arm] " Peter Maydell
2018-07-12 12:55 ` Peter Maydell
2018-07-12 13:19 ` [Qemu-arm] " Markus Armbruster
2018-07-12 13:19 ` Markus Armbruster
2018-07-12 15:25 ` [Qemu-arm] " Thomas Huth
2018-07-12 15:25 ` Thomas Huth
2018-07-12 16:16 ` [Qemu-arm] " Markus Armbruster
2018-07-12 16:16 ` Markus Armbruster
2018-07-12 16:22 ` [Qemu-arm] " Peter Maydell
2018-07-12 16:22 ` Peter Maydell
2018-07-12 16:32 ` Thomas Huth
2018-07-16 6:41 ` [Qemu-arm] " Markus Armbruster
2018-07-16 6:41 ` Markus Armbruster
2018-07-11 17:21 ` [Qemu-arm] " Paolo Bonzini
2018-07-11 17:21 ` [Qemu-devel] " Paolo Bonzini
2018-07-11 19:04 ` [Qemu-arm] " Thomas Huth
2018-07-11 19:04 ` [Qemu-devel] " Thomas Huth
2018-07-11 19:59 ` [Qemu-arm] " Eduardo Habkost
2018-07-11 19:59 ` [Qemu-devel] " Eduardo Habkost
2018-07-12 8:04 ` [Qemu-arm] " Paolo Bonzini
2018-07-12 8:04 ` Paolo Bonzini
2018-07-12 12:04 ` [Qemu-arm] " Markus Armbruster
2018-07-12 12:04 ` Markus Armbruster
2018-07-11 17:20 ` [Qemu-arm] " Paolo Bonzini
2018-07-11 17:20 ` [Qemu-devel] " Paolo Bonzini
2018-07-11 18:30 ` Eduardo Habkost [this message]
2018-07-11 18:30 ` Eduardo Habkost
2018-07-11 20:16 ` [Qemu-arm] " Paolo Bonzini
2018-07-11 20:16 ` [Qemu-devel] " Paolo Bonzini
2018-07-11 20:23 ` [Qemu-arm] " Eduardo Habkost
2018-07-11 20:23 ` [Qemu-devel] " Eduardo Habkost
2018-07-12 8:05 ` Paolo Bonzini
2018-07-12 18:04 ` [Qemu-arm] " Eduardo Habkost
2018-07-12 18:04 ` Eduardo Habkost
2018-07-16 6:43 ` [Qemu-arm] " Markus Armbruster
2018-07-16 6:43 ` Markus Armbruster
2018-07-16 14:25 ` [Qemu-arm] " Eduardo Habkost
2018-07-16 14:25 ` Eduardo Habkost
2018-07-11 18:43 ` [Qemu-arm] " Thomas Huth
2018-07-11 18:43 ` [Qemu-devel] " Thomas Huth
2018-07-11 20:15 ` [Qemu-arm] " Paolo Bonzini
2018-07-11 20:15 ` [Qemu-devel] " Paolo Bonzini
2018-07-12 5:57 ` [Qemu-arm] " Thomas Huth
2018-07-12 5:57 ` [Qemu-devel] " Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180711183031.GM914@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=armbru@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.