From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org
Subject: [Qemu-devel] [PATCH v3 00/28] target/arm: Implement ARMv8.5-MemTag
Date: Mon, 11 Feb 2019 15:52:30 -0800 [thread overview]
Message-ID: <20190211235258.542-1-richard.henderson@linaro.org> (raw)
Based-on: <20190204131228.25949-1-richard.henderson@linaro.org>
aka "[PATCH v3 0/4] target/arm: Implement ARMv8.5-BTI".
The full tree is available at
https://github.org/rth7680/qemu.git tgt-arm-mte
Major changes since v2:
* LDG, STG, ST2G, LDGM, STGM STZGM instructions updated.
The new definition of these functions allows me to clean TBI
within the translator, without having to have the helpers dig
back down into TCR to determine this. Removing strip_tbi from
mte_helper.c does make things a bit cleaner.
* Add GMID_EL1, trap MTE register accesses to EL[23] as required.
Major changes since v1:
* Updates to a newer revision of the spec. I know there is still work to
do here: another argument to STG, ST2G, and a new STZGM insn.
* User emulation adds an x-tagged-pages property. Without that, all pages
are MemAttr != Tagged and so all accesses unchecked. I am not turning
off SCTLR_EL1.ATA0, so even without x-tagged-pages the program has access
to tag generation (e.g. the IRG insn).
* System emulation is new, though effectively untested. I need to fiddle
around with the kernel to see what I can put together there.
What I can see is:
address-space: cpu-tag-memory-0
0000000000000000-07fffffffffffffe (prio 0, i/o): tag-memory
0000000002000000-0000000009ffffff (prio 0, ram): mach-virt.tag
address-space: cpu-memory-0
0000000000000000-ffffffffffffffff (prio 0, i/o): system
0000000040000000-000000013fffffff (prio 0, ram): mach-virt.ram
* New checks for alignment and page permissions before allowing
access to the tag memory.
r~
Richard Henderson (28):
target/arm: Split out arm_sctlr
target/arm: Split helper_msr_i_pstate into 3
target/arm: Add clear_pstate_bits, share gen_ss_advance
target/arm: Add MTE_ACTIVE to tb_flags
target/arm: Extract TCMA with ARMVAParameters
target/arm: Add MTE system registers
target/arm: Assert no manual change to CACHED_PSTATE_BITS
target/arm: Add helper_mte_check{1,2}
target/arm: Suppress tag check for sp+offset
target/arm: Implement the IRG instruction
target/arm: Implement ADDG, SUBG instructions
target/arm: Implement the GMI instruction
target/arm: Implement the SUBP instruction
target/arm: Define arm_cpu_do_unaligned_access for CONFIG_USER_ONLY
target/arm: Implement LDG, STG, ST2G instructions
target/arm: Implement the STGP instruction
target/arm: Implement the LDGM and STGM instructions
target/arm: Implement the access tag cache flushes
target/arm: Clean address for DC ZVA
target/arm: Implement data cache set allocation tags
target/arm: Set PSTATE.TCO on exception entry
tcg: Introduce target-specific page data for user-only
target/arm: Cache the Tagged bit for a page in MemTxAttrs
target/arm: Create tagged ram when MTE is enabled
target/arm: Add allocation tag storage for user mode
target/arm: Add allocation tag storage for system mode
target/arm: Enable MTE
tests/tcg/aarch64: Add mte smoke tests
include/exec/cpu-all.h | 10 +-
target/arm/cpu.h | 52 ++-
target/arm/helper-a64.h | 19 +
target/arm/helper.h | 3 -
target/arm/internals.h | 44 +++
target/arm/translate.h | 36 ++
accel/tcg/translate-all.c | 28 ++
hw/arm/virt.c | 33 ++
linux-user/mmap.c | 10 +-
linux-user/syscall.c | 4 +-
target/arm/cpu.c | 31 +-
target/arm/cpu64.c | 19 +
target/arm/helper-a64.c | 30 ++
target/arm/helper.c | 229 +++++++++--
target/arm/mte_helper.c | 617 ++++++++++++++++++++++++++++++
target/arm/op_helper.c | 80 +---
target/arm/translate-a64.c | 390 +++++++++++++++----
target/arm/translate.c | 11 -
tests/tcg/aarch64/mte-1.c | 27 ++
tests/tcg/aarch64/mte-2.c | 39 ++
target/arm/Makefile.objs | 2 +-
tests/tcg/aarch64/Makefile.target | 4 +
22 files changed, 1517 insertions(+), 201 deletions(-)
create mode 100644 target/arm/mte_helper.c
create mode 100644 tests/tcg/aarch64/mte-1.c
create mode 100644 tests/tcg/aarch64/mte-2.c
--
2.17.2
next reply other threads:[~2019-02-11 23:53 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-11 23:52 Richard Henderson [this message]
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 01/28] target/arm: Split out arm_sctlr Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 02/28] target/arm: Split helper_msr_i_pstate into 3 Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 03/28] target/arm: Add clear_pstate_bits, share gen_ss_advance Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 04/28] target/arm: Add MTE_ACTIVE to tb_flags Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 05/28] target/arm: Extract TCMA with ARMVAParameters Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 06/28] target/arm: Add MTE system registers Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 07/28] target/arm: Assert no manual change to CACHED_PSTATE_BITS Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 08/28] target/arm: Add helper_mte_check{1, 2} Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 09/28] target/arm: Suppress tag check for sp+offset Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 10/28] target/arm: Implement the IRG instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 11/28] target/arm: Implement ADDG, SUBG instructions Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 12/28] target/arm: Implement the GMI instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 13/28] target/arm: Implement the SUBP instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 14/28] target/arm: Define arm_cpu_do_unaligned_access for CONFIG_USER_ONLY Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 15/28] target/arm: Implement LDG, STG, ST2G instructions Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 16/28] target/arm: Implement the STGP instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 17/28] target/arm: Implement the LDGM and STGM instructions Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 18/28] target/arm: Implement the access tag cache flushes Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 19/28] target/arm: Clean address for DC ZVA Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 20/28] target/arm: Implement data cache set allocation tags Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 21/28] target/arm: Set PSTATE.TCO on exception entry Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 22/28] tcg: Introduce target-specific page data for user-only Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 23/28] target/arm: Cache the Tagged bit for a page in MemTxAttrs Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 24/28] target/arm: Create tagged ram when MTE is enabled Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 25/28] target/arm: Add allocation tag storage for user mode Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 26/28] target/arm: Add allocation tag storage for system mode Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 27/28] target/arm: Enable MTE Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 28/28] tests/tcg/aarch64: Add mte smoke tests Richard Henderson
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=20190211235258.542-1-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.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).