Hi, On 9/25/25 6:26 PM, Tao Tang wrote: > Hi all, > > This is the second version of the patch series to introduce initial > support for Secure SMMUv3 emulation in QEMU. > > This version has been significantly restructured based on the excellent > feedback received on the RFC. > > This version addresses the major points raised during the RFC review. > Nearly all issues identified in v1 have been resolved. The most > significant changes include: > > - The entire series has been refactored to use a "banked register" > architecture. This new design serves as a solid base for all secure > functionality and significantly reduces code duplication. > > - The large refactoring patch from v1 has been split into smaller, more > focused commits (e.g., STE parsing, page table handling, and TLB > management) to make the review process easier. > > - Support for the complex SEL2 feature (Secure Stage 2) has been > deferred to a future series to reduce the scope of this RFC. > > - The mechanism for propagating the security context now correctly uses > the ARMSecuritySpace attribute from the incoming transaction. This > ensures the SMMU's handling of security is aligned with the rest of the > QEMU ARM architecture. > > > The series now begins with two preparatory patches that fix pre-existing > bugs in the SMMUv3 model. The first of these, which corrects the CR0 > reserved mask, has already been reviewed by Eric. > > - hw/arm/smmuv3: Fix incorrect reserved mask for SMMU CR0 register > - hw/arm/smmuv3: Correct SMMUEN field name in CR0 > > The subsequent patches implement the Secure SMMUv3 feature, refactored > to address the feedback from the v1 RFC.
could you shared a branch? It does not seem to apply on master. Thanks Eric > > > Changes from v1 RFC: > > - The entire feature implementation has been refactored to use a "banked > register" approach. This significantly reduces code duplication. > > - Support for the SEL2 feature (Secure Stage 2) has been deferred. As > Mostafa pointed out, a correct implementation is complex and depends on > FEAT_TTST. This will be addressed in a separate, future patch series. > As a result, this series now supports the following flows: > > - Non-secure Stage 1, Stage 2, and nested translations. > > - Secure Stage 1-only translations. > > - Nested translations (Secure Stage 1 + Non-secure Stage 2), with a > fault generated if a Secure Stage 2 translation is required. > > - Writability checks for various registers (both secure and non-secure) > have been hardened to ensure that enable bits are correctly checked. > > The series has been successfully validated with several test setups: > > - An environment using OP-TEE, Hafnium, and a custom platform > device as V1 series described. > > - A new, self-contained test device (smmu-testdev) built upon the > QTest framework, which will be submitted as a separate series as > discussed here: > https://lists.nongnu.org/archive/html/qemu-devel/2025-09/msg05365.html > > - The existing non-secure functionality was regression-tested using > PCIe passthrough to a KVM guest running inside a TCG guest. > > Signed-off-by: Tao Tang <tangtao1...@phytium.com.cn> > > Tao Tang (14): > hw/arm/smmuv3: Fix incorrect reserved mask for SMMU CR0 register > hw/arm/smmuv3: Correct SMMUEN field name in CR0 > hw/arm/smmuv3: Introduce secure registers and commands > refactor: Move ARMSecuritySpace to a common header > hw/arm/smmuv3: Introduce banked registers for SMMUv3 state > hw/arm/smmuv3: Add separate address space for secure SMMU accesses > hw/arm/smmuv3: Make Configuration Cache security-state aware > hw/arm/smmuv3: Add security-state handling for page table walks > hw/arm/smmuv3: Add secure TLB entry management > hw/arm/smmuv3: Add banked support for queues and error handling > hw/arm/smmuv3: Harden security checks in MMIO handlers > hw/arm/smmuv3: Use iommu_index to represent the security context > hw/arm/smmuv3: Add property to enable Secure SMMU support > hw/arm/smmuv3: Optional Secure bank migration via subsections > > hw/arm/smmu-common.c | 151 ++++- > hw/arm/smmu-internal.h | 7 + > hw/arm/smmuv3-internal.h | 114 +++- > hw/arm/smmuv3.c | 1130 +++++++++++++++++++++++++-------- > hw/arm/trace-events | 9 +- > hw/arm/virt.c | 5 + > include/hw/arm/arm-security.h | 54 ++ > include/hw/arm/smmu-common.h | 60 +- > include/hw/arm/smmuv3.h | 35 +- > target/arm/cpu.h | 25 +- > 10 files changed, 1257 insertions(+), 333 deletions(-) > create mode 100644 include/hw/arm/arm-security.h > > -- > 2.34.1 >