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