From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, yier.jin@huawei.com,
jonathan.cameron@huawei.com, leonardo.garcia@linaro.org
Subject: [PATCH 00/22] target/arm: Implement FEAT_RME
Date: Mon, 23 Jan 2023 14:00:05 -1000 [thread overview]
Message-ID: <20230124000027.3565716-1-richard.henderson@linaro.org> (raw)
This is based on mainline, without any extra ARMv9-A dependencies
which are still under development. This is good enough to pass
all of the tests within
https://github.com/Huawei/Huawei_CCA_QEMU
With the exception of the final patch, all of the code below is my own.
The Huawei code was based on last year's qemu-6.2, and the Granule
Protection Check was done at the wrong level. I have integrated the
GPC into the normal arm_cpu_tlb_fill code path.
The first two patches are bug fixes that are unrelated to RME.
The bug fixed by the second patch was uncovered by the VTCR_EL2
setting used by the Realm Management Monitor included with TF-A.
The final patch is more or less a hack, required by Huawei's changes
to TF-A. Given that current TF-A supports QEMU virt board, using FDT,
I think the correct solution going forward is to *not* skip creating
the fdt node. I have not yet tried to build mainline TF-A and TF-RMM,
or see what has been integrated into TF-A-TESTS. See
https://git.trustedfirmware.org/
for the relevant repos.
r~
Richard Henderson (22):
target/arm: Fix pmsav8 stage2 secure parameter
target/arm: Rewrite check_s2_mmu_setup
target/arm: Add isar_feature_aa64_rme
target/arm: Update SCR and HCR for RME
target/arm: SCR_EL3.NS may be RES1
target/arm: Add RME cpregs
target/arm: Introduce ARMSecuritySpace
include/exec/memattrs: Add two bits of space to MemTxAttrs
target/arm: Adjust the order of Phys and Stage2 ARMMMUIdx
target/arm: Introduce ARMMMUIdx_Phys_{Realm,Root}
target/arm: Pipe ARMSecuritySpace through ptw.c
target/arm: NSTable is RES0 for the RME EL3 regime
target/arm: Handle Block and Page bits for security space
target/arm: Handle no-execute for Realm and Root regimes
target/arm: Use get_phys_addr_with_struct in S1_ptw_translate
target/arm: Move s1_is_El0 into S1Translate
target/arm: Use get_phys_addr_with_struct for stage2
target/arm: Add GPC syndrome
target/arm: Implement GPC exceptions
target/arm: Implement the granule protection check
target/arm: Enable RME for -cpu max
hw/arm/virt: Add some memory for Realm Management Monitor
include/exec/memattrs.h | 9 +-
include/hw/arm/virt.h | 2 +
target/arm/cpu-param.h | 2 +-
target/arm/cpu.h | 143 ++++++--
target/arm/internals.h | 27 ++
target/arm/syndrome.h | 9 +
hw/arm/virt.c | 43 +++
target/arm/cpu.c | 4 +
target/arm/cpu64.c | 37 ++
target/arm/helper.c | 138 +++++++-
target/arm/ptw.c | 749 ++++++++++++++++++++++++++++++----------
target/arm/tlb_helper.c | 92 ++++-
12 files changed, 1030 insertions(+), 225 deletions(-)
--
2.34.1
next reply other threads:[~2023-01-24 0:00 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-24 0:00 Richard Henderson [this message]
2023-01-24 0:00 ` [PATCH 01/22] target/arm: Fix pmsav8 stage2 secure parameter Richard Henderson
2023-02-07 14:26 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 02/22] target/arm: Rewrite check_s2_mmu_setup Richard Henderson
2023-02-07 16:00 ` Peter Maydell
2023-02-07 19:31 ` Richard Henderson
2023-01-24 0:00 ` [PATCH 03/22] target/arm: Add isar_feature_aa64_rme Richard Henderson
2023-02-07 14:31 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 04/22] target/arm: Update SCR and HCR for RME Richard Henderson
2023-02-07 14:34 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 05/22] target/arm: SCR_EL3.NS may be RES1 Richard Henderson
2023-02-07 14:39 ` Peter Maydell
2023-02-07 19:43 ` Richard Henderson
2023-01-24 0:00 ` [PATCH 06/22] target/arm: Add RME cpregs Richard Henderson
2023-02-07 14:53 ` Peter Maydell
2023-02-08 21:51 ` Richard Henderson
2023-01-24 0:00 ` [PATCH 07/22] target/arm: Introduce ARMSecuritySpace Richard Henderson
2023-02-07 15:00 ` Peter Maydell
2023-02-08 22:00 ` Richard Henderson
2023-01-24 0:00 ` [PATCH 08/22] include/exec/memattrs: Add two bits of space to MemTxAttrs Richard Henderson
2023-02-07 15:05 ` Peter Maydell
2023-02-08 22:12 ` Richard Henderson
2023-01-24 0:00 ` [PATCH 09/22] target/arm: Adjust the order of Phys and Stage2 ARMMMUIdx Richard Henderson
2023-02-07 15:07 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 10/22] target/arm: Introduce ARMMMUIdx_Phys_{Realm,Root} Richard Henderson
2023-02-07 15:09 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 11/22] target/arm: Pipe ARMSecuritySpace through ptw.c Richard Henderson
2023-02-07 16:15 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 12/22] target/arm: NSTable is RES0 for the RME EL3 regime Richard Henderson
2023-02-10 11:36 ` Peter Maydell
2023-02-10 19:49 ` Richard Henderson
2023-01-24 0:00 ` [PATCH 13/22] target/arm: Handle Block and Page bits for security space Richard Henderson
2023-02-10 11:53 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 14/22] target/arm: Handle no-execute for Realm and Root regimes Richard Henderson
2023-02-10 11:59 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 15/22] target/arm: Use get_phys_addr_with_struct in S1_ptw_translate Richard Henderson
2023-02-10 13:21 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 16/22] target/arm: Move s1_is_El0 into S1Translate Richard Henderson
2023-02-10 13:23 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 17/22] target/arm: Use get_phys_addr_with_struct for stage2 Richard Henderson
2023-02-10 13:28 ` Peter Maydell
2023-02-20 22:15 ` Richard Henderson
2023-02-21 11:11 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 18/22] target/arm: Add GPC syndrome Richard Henderson
2023-02-10 13:32 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 19/22] target/arm: Implement GPC exceptions Richard Henderson
2023-02-10 13:53 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 20/22] target/arm: Implement the granule protection check Richard Henderson
2023-02-10 14:18 ` Peter Maydell
2023-01-24 0:00 ` [PATCH 21/22] target/arm: Enable RME for -cpu max Richard Henderson
2023-02-10 14:20 ` Peter Maydell
2023-02-20 23:31 ` Richard Henderson
2023-01-24 0:00 ` [RFC PATCH 22/22] hw/arm/virt: Add some memory for Realm Management Monitor Richard Henderson
2023-02-10 14:24 ` Peter Maydell
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=20230124000027.3565716-1-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=jonathan.cameron@huawei.com \
--cc=leonardo.garcia@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=yier.jin@huawei.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.