Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.
We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.
Thank you for your understanding.
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