[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/22] target/arm: Implement FEAT_RME
From: |
Richard Henderson |
Subject: |
[PATCH 00/22] target/arm: Implement FEAT_RME |
Date: |
Mon, 23 Jan 2023 14:00:05 -1000 |
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
- [PATCH 00/22] target/arm: Implement FEAT_RME,
Richard Henderson <=
- [PATCH 01/22] target/arm: Fix pmsav8 stage2 secure parameter, Richard Henderson, 2023/01/23
- [PATCH 03/22] target/arm: Add isar_feature_aa64_rme, Richard Henderson, 2023/01/23
- [PATCH 02/22] target/arm: Rewrite check_s2_mmu_setup, Richard Henderson, 2023/01/23
- [PATCH 04/22] target/arm: Update SCR and HCR for RME, Richard Henderson, 2023/01/23
- [PATCH 05/22] target/arm: SCR_EL3.NS may be RES1, Richard Henderson, 2023/01/23
- [PATCH 06/22] target/arm: Add RME cpregs, Richard Henderson, 2023/01/23
- [PATCH 07/22] target/arm: Introduce ARMSecuritySpace, Richard Henderson, 2023/01/23
- [PATCH 08/22] include/exec/memattrs: Add two bits of space to MemTxAttrs, Richard Henderson, 2023/01/23
- [PATCH 09/22] target/arm: Adjust the order of Phys and Stage2 ARMMMUIdx, Richard Henderson, 2023/01/23
- [PATCH 10/22] target/arm: Introduce ARMMMUIdx_Phys_{Realm,Root}, Richard Henderson, 2023/01/23