Hi,
I am currently working on enabling SMMU-v3 in hypervisor, I notice in SMMU-v3, there are several memory attribute configuration options.
1. SMMU_CR1
a. TABLE_SH for Table access Shareability b. TABLE_OC for Table access Outer Cacheability c. TABLE_IC for Table access Inner Cancheability. same configurations for queue access( QUEUE_SH, QUEUE_OC, QUEUE_IC)
/* CR1 (table and queue memory attributes) */
reg = (CR1_SH_ISH << CR1_TABLE_SH_SHIFT) |
(CR1_CACHE_WB << CR1_TABLE_OC_SHIFT) |
(CR1_CACHE_WB << CR1_TABLE_IC_SHIFT) |
(CR1_SH_ISH << CR1_QUEUE_SH_SHIFT) |
(CR1_CACHE_WB << CR1_QUEUE_OC_SHIFT) |
(CR1_CACHE_WB << CR1_QUEUE_IC_SHIFT);
writel_relaxed(reg, smmu->base + ARM_SMMU_CR1);
2. STE
a. [169:168] S2IR0 for Inner region Cacheability for stage 2 translation table access. b. [171:170] S2OR0 for Outer region Cacheability for stage 2 translation table access. c. [173:172] S2SH0 for Shareability for stage 2 translation table access
thanks