From: Eduardo Habkost <ehabkost@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Igor Mammedov <imammedo@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] in a device or CPU instance init/realize, can I rely on something having the BQL or equivalent?
Date: Thu, 7 Dec 2017 15:07:19 -0200 [thread overview]
Message-ID: <20171207170719.GT3037@localhost.localdomain> (raw)
In-Reply-To: <CAFEAcA9o-LyKZBZwSoz3SSPCY-sjo9e011UWy1=EwJ4U9rWYsg@mail.gmail.com>
On Thu, Dec 07, 2017 at 04:53:59PM +0000, Peter Maydell wrote:
> On 7 December 2017 at 16:48, Igor Mammedov <imammedo@redhat.com> wrote:
> > On Thu, 7 Dec 2017 16:05:50 +0000
> > Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> >> Hi; I'm currently writing '-cpu max' support for ARM. For that I'd
> >> like to be able to do the "probe host kernel for its supported feature
> >> set" in the CPU object's instance-init function, but I'd like to do
I don't think instance_init is appropriate for that, as
object_free(object_new(t)) must be always safe to call and free
of side-effects for all types. Wouldn't it work if you do that
on realize?
> >> it just once and cache the answer. Can I rely on something or other
> >> having the BQL or otherwise ensuring that two threads don't run
> >> the instance_init method in parallel (eg in a hotplug situation),
> >> or do I need to create and use my own mutex to protect the cached
> >> answer data?
> > considering cached data shouldn't change during qemu lifetime it
> > shouldn't be possible for instance_init() to clash at hotplug
> > time as object_new(cpu) calls serialized within monitor/qmp loop.
>
> Right, that was my question -- are we guaranteed that anything
> that calls object_new(cpu) does it with a lock?
object_new() itself doesn't seem to be thread-safe (see
type_initialize()), so I'm pretty sure there shouldn't be any
object_new() calls in QEMU without the BQL being held.
>
> > But why cpu's instance_init, we could cache host's value at
> > configure_accelerator() time (could be different depending on accel).
>
> I don't know if I need the information at configure_accelerator()
> time (if you say "-cpu cortex-a57" then we don't need to bother
> probing). The first time I know if we want to probe is when a
> "-cpu host" CPU is created.
>
> thanks
> -- PMM
--
Eduardo
next prev parent reply other threads:[~2017-12-07 17:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-07 16:05 [Qemu-devel] in a device or CPU instance init/realize, can I rely on something having the BQL or equivalent? Peter Maydell
2017-12-07 16:48 ` Igor Mammedov
2017-12-07 16:53 ` Peter Maydell
2017-12-07 17:07 ` Eduardo Habkost [this message]
2017-12-07 17:13 ` Peter Maydell
2017-12-07 17:26 ` Peter Maydell
2017-12-08 13:16 ` Igor Mammedov
2017-12-08 13:19 ` Peter Maydell
2017-12-08 14:50 ` Igor Mammedov
2017-12-08 15:05 ` Peter Maydell
2017-12-08 16:14 ` Eduardo Habkost
2017-12-08 17:32 ` Igor Mammedov
2017-12-08 17:58 ` Eduardo Habkost
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=20171207170719.GT3037@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@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.