上圖就是SMMU Level 1 Stream Table Descriptor的數(shù)據(jù)格式,簡(jiǎn)稱(chēng)Level1 STD。
[4:0] Span(跨度)
描述Level2 STE數(shù)組的大小和L2Ptr的有效性。
如上圖,當(dāng)
Span為0,表明該STD是無(wú)效的,需要上報(bào)異常。
Span為1-11,表明該STD底下的Level STE包含2^(Span-1)個(gè)STEs
Span為12-31,Reserved,也需要上報(bào)異常。
Span必須在0到(SMMU_STRTAB_BASE_CFG.SPLIT + 1)的范圍內(nèi),即它必須保持在Stream table split point的范圍內(nèi)。
傳入事務(wù)StreamID所對(duì)應(yīng)的STDSpan如果設(shè)置為
Span == 0
Span ==Reserved value
Span out of bounds value given the split point
select a valid Level 1 descriptor but are outside of the level 2 range
都會(huì)視為無(wú)效。
[51:6] L2Ptr
指向Level-2 STE的起始位置。L2Ptr[N:0]被SMMU視為0,其中
N == 5 + (Span - 1)
因此,SMMU將Level-2 STE的起始地址對(duì)齊到其大小。在SMMUv3.0中,L2Ptr[51:48]是RES0。超出OAS或物理地址的行為是會(huì)上報(bào)異常的。
所有導(dǎo)致Stream table lookup未到達(dá)有效STE的事務(wù)都會(huì)終止,上報(bào)異常并可以記錄事件C_BAD_STREAMID(根據(jù)SMMU_(S_)CR2.RECINVSID設(shè)置)
當(dāng)L1STD更改時(shí), non-leaf CMD_CFGI_STE是使L1STD條目失效所需的最小范圍invalidate命令。根據(jù)更改情況,也可能需要其他STE失效,例如:
將Span == 0的inactive L1STD更改為non-zero active Span(引入新的部分Level-2 STE)僅需要使L1STD失效。
將Span != 0的active L1STD更改為inactive L1STD需要使L1STD以及受影響的緩存的STE失效。需要多個(gè)non-leaf CMD_CFGI_STE命令或更廣泛的命令,如CMD_CFGI_STE_RANGE或CMD_CFGI_ALL。
審核編輯:劉清
-
STD
+關(guān)注
關(guān)注
0文章
36瀏覽量
14511
原文標(biāo)題:SMMU數(shù)據(jù)結(jié)構(gòu)格式之 Level 1 Stream Table Descriptor
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
大話數(shù)據(jù)結(jié)構(gòu)pdf下載
常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)綏?b class='flag-5'>介紹
ARM系列之SMMU總線資料合集
多個(gè)設(shè)備是否可以共用一個(gè)SMMU StreamID?
SMMU學(xué)習(xí)這一篇就夠了
數(shù)據(jù)結(jié)構(gòu)教程,下載

什么是數(shù)據(jù)結(jié)構(gòu)
為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)的應(yīng)用詳細(xì)資料概述免費(fèi)下載

什么是數(shù)據(jù)結(jié)構(gòu)?為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)的應(yīng)用實(shí)例分析

arm smmu的原理

SMMU數(shù)據(jù)結(jié)構(gòu)格式之Stream Table Entry...V和Config介紹

ARM SMMU Data structures之Stream Table

評(píng)論