一筆輸入的transaction會經過以下幾個邏輯步驟:
1. 如果SMMU全局禁用(例如,剛結束復位SMMU_CR0.SMMUEN == 0),則transaction將通過SMMU而不進行任何地址轉換。全局屬性,例如 memory type或Shareability,可能從SMMU的SMMU_GBPA寄存器應用,或者SMMU_GBPA寄存器可以配置為abort所有transactions。
2. 如果SMMU沒有全局禁用或者全局bypass,則首先確定VA->PA轉換的配置:
?索引到STE。
?如果STE啟用了stage2轉換,則STE包含stage2 translation table base。
?如果STE啟用了stage1轉換,則繼續索引CD。如果STE啟用了stage2轉換,則從IPA空間獲取CD,否則從PA空間獲取CD。
3. 如果配置有效(STE+CD),則執行VA->PA轉換。
?如果配置了stage1轉換,則CD包含一個translation table base,否則bypass stage1轉換,并將輸入地址直接提供給stage2。
?如果配置了stage2轉換,則STE包含一個translation table base用于stage2(輸入可能是VA,也可能是stage1的輸出IPA)。如果沒有配置stage2,則輸入就會直接作為輸出地址(bypass)。
4. 具有有效配置且在VA->PA轉換過程中未發生fault的transaction將輸出地址以及memory attributes。
上面步驟展示了Non-secure stream transaction 處理的流程,如果支持 Secure stream,則流程也是類似的。過程中使用到的寄存器有所區別:
SMMU_S_CR0.SMMUEN
SMMU_S_GBPA
實現可能會根據需要cache這些步驟中的任何數據。此外,在處理過程中的幾個stage可能會發生 fault。如果transaction未能找到有效配置,則會
terminated with an abort, and an event might be recorded。
如果transaction進展到transaction(已經找到了有效的配置),則fault可能出現在transaction的任一stage。如果發生了fault,其后的行為取決于使用的CD和STE的配置,確定是否terminated或者stalled。
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5336瀏覽量
120235 -
STE
+關注
關注
0文章
8瀏覽量
9231 -
cache技術
+關注
關注
0文章
41瀏覽量
1062
原文標題:SMMU VA->PA的轉換流程
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論