From: "Emilio G. Cota" <cota@braap.org>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Cornelia Huck <cohuck@redhat.com>,
kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
James Hogan <jhogan@kernel.org>,
Anthony Green <green@moxielogic.com>,
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
Guan Xuetao <gxt@mprc.pku.edu.cn>, Marek Vasut <marex@denx.de>,
Alexander Graf <agraf@suse.de>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Richard Henderson <rth@twiddle.net>,
Artyom Tarasenko <atar4qemu@gmail.com>,
Eduardo Habkost <ehabkost@redhat.com>,
qemu-s390x@nongnu.org, qemu-arm@nongnu.org,
Stafford Horne <shorne@gmail.com>,
David Gibson <david@gibson.dropbear.id.au>,
Chris Wulff <crwulff@gmail.com>,
Peter Crosthwaite <crosthwaite.peter@gmail.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Laurent Vivier <laurent@vivier.eu>,
Michael Walle <michael@walle.cc>,
q
Subject: [PATCH 00/35] exec: drop BQL from interrupt handling
Date: Mon, 17 Sep 2018 12:30:28 -0400 [thread overview]
Message-ID: <20180917163103.6113-1-cota@braap.org> (raw)
This series comes originally from a series of patches that Paolo
sent to me a long time ago. I have kept most of his S-o-b tags,
but I have done the forward port of the patches to the current
QEMU code base, so please blame all possible bugs on me, not him.
The goal of this series is to push the BQL out of interrupt
handling wherever possible. Many targets do not need the BQL
to handle interrupts, so for those targets we get rid of the
BQL in interrupt handling. In TCG mode, this by itself does
not yield measurable performance gains. However, it is a
necessary first step before tackling BQL contention when
managing CPU states (i.e. exiting the exec loop always
involves taking the BQL, which does not scale).
The patches:
- Patch 0 accesses icount_decr.u16 consistently with atomics.
This is important because we use it across threads to signal
that an interrupt is pending.
- 2-28: convert direct callers of cpu->interrupt_request
to use atomic accesses or CPU helper functions that use atomics.
I have broken these up into individual patches to ease review.
Note that in some cases I have added many atomic_reads, most
of which are probably unnecessary. However, I'd leave this up
to the maintainers, since I do not want to break things by
doing a single atomic_read(&cpu->interrupt_request) at the
beginning of a function and then miss subsequent updates to
cpu->interrupt_request.
- 29-31: drop the BQL requirement when handling cpu->interrupt_request
- 32-33: drop now unnecessary BQL acquisitions in i386 and ppc
- 34-35: push down the BQL acquisition to cpu->do_interrupt
and cpu->cpu_exec_interrupt. Here I am Cc'ing everyone so that
we can make sure I am not missing any target that requires
the BQL on either do_interrupt or cpu_exec_interrupt.
This series is checkpatch-clean, and can be fetched from:
https://github.com/cota/qemu/tree/cpu-lock
Note that the series applies on top of patches that are
already on the qemu-devel list and will hopefully soon
be upstream. This series begins after commit
4ece0cbd74 ("cpus: access .qemu_icount_bias with atomic64")
in that tree.
Thanks,
Emilio
next reply other threads:[~2018-09-17 16:30 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-17 16:30 Emilio G. Cota [this message]
2018-09-17 16:30 ` [PATCH 02/35] target/i386: use cpu_reset_interrupt Emilio G. Cota
2018-09-18 20:47 ` Richard Henderson
2018-09-17 16:30 ` [PATCH 11/35] target/i386: access cpu->interrupt_request with atomics Emilio G. Cota
2018-09-18 21:04 ` Richard Henderson
2018-09-19 15:02 ` Emilio G. Cota
2018-09-17 16:31 ` [PATCH 32/35] target/i386/kvm: do not acquire the BQL to call cpu_reset_interrupt Emilio G. Cota
2018-09-18 21:12 ` Richard Henderson
2018-09-19 21:19 ` Philippe Mathieu-Daudé
2018-09-17 16:31 ` [PATCH 34/35] exec: push BQL down to cpu->do_interrupt Emilio G. Cota
2018-09-18 4:11 ` David Gibson
2018-09-18 7:12 ` David Hildenbrand
2018-09-19 16:38 ` Cornelia Huck
2018-09-17 16:31 ` [PATCH 35/35] exec: push BQL down to cpu->cpu_exec_interrupt Emilio G. Cota
2018-09-18 4:12 ` David Gibson
2018-09-18 7:48 ` David Hildenbrand
2018-09-18 9:51 ` [PATCH 00/35] exec: drop BQL from interrupt handling David Hildenbrand
2018-09-20 20:05 ` Mark Cave-Ayland
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=20180917163103.6113-1-cota@braap.org \
--to=cota@braap.org \
--cc=agraf@suse.de \
--cc=atar4qemu@gmail.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=crosthwaite.peter@gmail.com \
--cc=crwulff@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=david@redhat.com \
--cc=edgar.iglesias@gmail.com \
--cc=ehabkost@redhat.com \
--cc=green@moxielogic.com \
--cc=gxt@mprc.pku.edu.cn \
--cc=jhogan@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=laurent@vivier.eu \
--cc=marex@denx.de \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=michael@walle.cc \
--cc=mtosatti@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rth@twiddle.net \
--cc=shorne@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox