From: Peter Xu <peterx@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH v2 7/9] cpus: Introduce qemu_mutex_unlock_iothread_prepare()
Date: Tue, 27 Jul 2021 12:08:24 -0400 [thread overview]
Message-ID: <YQAveIvA2SB1SmSI@t490s> (raw)
In-Reply-To: <0fb73c64-f915-7630-ba64-0524c6b8ed40@redhat.com>
On Tue, Jul 27, 2021 at 02:59:26PM +0200, David Hildenbrand wrote:
> On 23.07.21 21:34, Peter Xu wrote:
> > The prepare function before unlocking BQL. There're only three places that can
> > release the BQL: unlock(), cond_wait() or cond_timedwait().
> >
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> > softmmu/cpus.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/softmmu/cpus.c b/softmmu/cpus.c
> > index 9131f77f87..6085f8edbe 100644
> > --- a/softmmu/cpus.c
> > +++ b/softmmu/cpus.c
> > @@ -66,6 +66,10 @@
> > static QemuMutex qemu_global_mutex;
> > +static void qemu_mutex_unlock_iothread_prepare(void)
> > +{
> > +}
> > +
> > bool cpu_is_stopped(CPUState *cpu)
> > {
> > return cpu->stopped || !runstate_is_running();
> > @@ -523,16 +527,19 @@ void qemu_mutex_unlock_iothread(void)
> > {
> > g_assert(qemu_mutex_iothread_locked());
> > iothread_locked = false;
> > + qemu_mutex_unlock_iothread_prepare();
> > qemu_mutex_unlock(&qemu_global_mutex);
> > }
> > void qemu_cond_wait_iothread(QemuCond *cond)
> > {
> > + qemu_mutex_unlock_iothread_prepare();
> > qemu_cond_wait(cond, &qemu_global_mutex);
> > }
> > void qemu_cond_timedwait_iothread(QemuCond *cond, int ms)
> > {
> > + qemu_mutex_unlock_iothread_prepare();
> > qemu_cond_timedwait(cond, &qemu_global_mutex, ms);
> > }
> >
>
> I'd squash this patch into the next one.
>
> I don't quite like the function name, but don't really have a better
> suggestion .... maybe qemu_mutex_might_unlock_iothread(), similar to
> might_sleep() or might_fault() in the kernel. (although here it's pretty
> clear and not a "might"; could be useful in other context where we might
> conditionally unlock the BQL at some point in the future, though)
Yes, IMHO "might" describes a capability of doing something, here it's not
(this one should only be called right before releasing bql, not within any
context of having some capability). The other option I thought was "pre" but
it will be just a short version of "prepare".
Let me know if you have a better suggestion on naming. :) Otherwise I'll keep
the naming, squash this patch into the next and keep your r-b for that.
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2021-07-27 16:09 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-23 19:34 [PATCH v2 0/9] memory: Sanity checks memory transaction when releasing BQL Peter Xu
2021-07-23 19:34 ` [PATCH v2 1/9] cpus: Export queue work related fields to cpu.h Peter Xu
2021-07-27 13:02 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 2/9] cpus: Move do_run_on_cpu into softmmu/cpus.c Peter Xu
2021-07-27 13:04 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 3/9] memory: Introduce memory_region_transaction_{push|pop}() Peter Xu
2021-07-27 13:06 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 4/9] memory: Don't do topology update in memory finalize() Peter Xu
2021-07-27 13:21 ` David Hildenbrand
2021-07-27 16:02 ` Peter Xu
2021-07-28 12:13 ` David Hildenbrand
2021-07-28 13:56 ` Peter Xu
2021-07-28 14:01 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 5/9] cpus: Use qemu_cond_wait_iothread() where proper Peter Xu
2021-07-27 12:49 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 6/9] cpus: Remove the mutex parameter from do_run_on_cpu() Peter Xu
2021-07-27 12:50 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 7/9] cpus: Introduce qemu_mutex_unlock_iothread_prepare() Peter Xu
2021-07-27 12:59 ` David Hildenbrand
2021-07-27 16:08 ` Peter Xu [this message]
2021-07-28 12:11 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 8/9] memory: Assert on no ongoing memory transaction before release BQL Peter Xu
2021-07-27 13:00 ` David Hildenbrand
2021-07-23 19:34 ` [PATCH v2 9/9] memory: Delay the transaction pop() until commit completed Peter Xu
2021-07-27 13:02 ` David Hildenbrand
2021-07-23 22:36 ` [PATCH v2 0/9] memory: Sanity checks memory transaction when releasing BQL Peter Xu
2021-07-27 12:41 ` David Hildenbrand
2021-07-27 16:35 ` Peter Xu
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=YQAveIvA2SB1SmSI@t490s \
--to=peterx@redhat.com \
--cc=david@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.