With NSCFG definitions in place, record the per-table NSCFG bits in SMMUTransTableInfo during CD decode for later use.
Signed-off-by: Tao Tang <[email protected]> --- hw/arm/smmuv3.c | 1 + include/hw/arm/smmu-common.h | 1 + 2 files changed, 2 insertions(+) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index aa1a95a0093..b8f2fae9a1d 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -838,6 +838,7 @@ static int decode_cd(SMMUv3State *s, SMMUTransCfg *cfg, tt->ttb = CACHED_ENTRY_TO_ADDR(entry, tt->ttb); } + tt->nscfg = i ? CD_NSCFG(cd, 1) : CD_NSCFG(cd, 0); tt->had = CD_HAD(cd, i); trace_smmuv3_decode_cd_tt(i, tt->tsz, tt->ttb, tt->granule_sz, tt->had); } diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h index 9e44c9f7710..bd88e599c77 100644 --- a/include/hw/arm/smmu-common.h +++ b/include/hw/arm/smmu-common.h @@ -83,6 +83,7 @@ typedef struct SMMUTransTableInfo { uint8_t tsz; /* input range, ie. 2^(64 -tsz)*/ uint8_t granule_sz; /* granule page shift */ bool had; /* hierarchical attribute disable */ + int nscfg; /* Non-secure attribute of Starting-level TT */ } SMMUTransTableInfo; typedef struct SMMUTLBEntry { -- 2.34.1
