From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, peter.maydell@linaro.org
Subject: [PATCH 0/7] exec: Improve code for TARGET_PAGE_BITS_VARY
Date: Thu, 19 Sep 2019 16:29:45 -0700 [thread overview]
Message-ID: <20190919232952.6382-1-richard.henderson@linaro.org> (raw)
There's currently a fair amount of overhead in the way we currently
treat TARGET_PAGE_{BITS,SIZE,MASK} with TARGET_PAGE_BITS_VARY.
We have assertions that TARGET_PAGE_BITS has been finalized. Which
is fine, but the variable that controls the assertion may be assumed
to be modified by any function call, which means that we have lots
of duplicate assertions.
This re-arranges things using a const symbol, which allows the compiler
to assume that the variable is not modified across calls. In order to
allow initialization of the variable during startup, use an alias that
is non-const and controls the allocation into a read-write section.
Remove the assertion for release builds.
Precompute TARGET_PAGE_MASK. This removes a runtime shift and allows
the variable to be used as a direct memory operand on x86.
Size reductions vs master for qemu-system-aarch64 for various hosts:
PPC64LE:
debug-tcg: -32264
release: -44360
AARCH64:
debug-tcg: -33304
relase: -77080
X86_64:
debug-tcg: -6685
relase: -15597
r~
Richard Henderson (7):
exec: Use TARGET_PAGE_BITS_MIN for TLB flags
exec: Split out variable page size support to exec-vary.c
exec: Use const alias for TARGET_PAGE_BITS_VARY
exec: Restrict TARGET_PAGE_BITS_VARY assert to CONFIG_DEBUG_TCG
exec: Promote TARGET_PAGE_MASK to target_long
exec: Tidy TARGET_PAGE_ALIGN
exec: Cache TARGET_PAGE_MASK for TARGET_PAGE_BITS_VARY
Makefile.target | 2 +-
include/exec/cpu-all.h | 41 +++++++++++++-------
include/qemu-common.h | 6 +++
exec-vary.c | 88 ++++++++++++++++++++++++++++++++++++++++++
exec.c | 34 ----------------
5 files changed, 123 insertions(+), 48 deletions(-)
create mode 100644 exec-vary.c
--
2.17.1
next reply other threads:[~2019-09-19 23:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-19 23:29 Richard Henderson [this message]
2019-09-19 23:29 ` [PATCH 1/7] exec: Use TARGET_PAGE_BITS_MIN for TLB flags Richard Henderson
2019-09-19 23:29 ` [PATCH 2/7] exec: Split out variable page size support to exec-vary.c Richard Henderson
2019-09-21 8:59 ` Philippe Mathieu-Daudé
2019-09-19 23:29 ` [PATCH 3/7] exec: Use const alias for TARGET_PAGE_BITS_VARY Richard Henderson
2019-09-19 23:29 ` [PATCH 4/7] exec: Restrict TARGET_PAGE_BITS_VARY assert to CONFIG_DEBUG_TCG Richard Henderson
2019-09-21 9:01 ` Philippe Mathieu-Daudé
2019-09-19 23:29 ` [PATCH 5/7] exec: Promote TARGET_PAGE_MASK to target_long Richard Henderson
2019-09-19 23:29 ` [PATCH 6/7] exec: Tidy TARGET_PAGE_ALIGN Richard Henderson
2019-09-19 23:29 ` [PATCH 7/7] exec: Cache TARGET_PAGE_MASK for TARGET_PAGE_BITS_VARY Richard Henderson
2019-09-20 7:30 ` [PATCH 0/7] exec: Improve code " Paolo Bonzini
2019-09-21 0:32 ` no-reply
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=20190919232952.6382-1-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/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;
as well as URLs for NNTP newsgroup(s).