SMMU数据结构格式之Level 1 Stream Table Descriptor介绍

描述

STD

上图就是SMMU Level 1 Stream Table Descriptor的数据格式,简称Level1 STD

[4:0] Span(跨度) 

描述Level2 STE数组的大小和L2Ptr的有效性。

STD

如上图,当

Span为0,表明该STD是无效的,需要上报异常。

Span为1-11,表明该STD底下的Level STE包含2^(Span-1)个STEs

Span为12-31,Reserved,也需要上报异常。

Span必须在0到(SMMU_STRTAB_BASE_CFG.SPLIT + 1)的范围内,即它必须保持在Stream table split point的范围内。

传入事务StreamID所对应的STD Span如果设置为

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 

都会视为无效。

[51:6] L2Ptr

指向Level-2 STE的起始位置。L2Ptr[N:0]被SMMU视为0,其中

 

N == 5 + (Span - 1)

 

因此,SMMU将Level-2 STE的起始地址对齐到其大小。在SMMUv3.0中,L2Ptr[51:48]是RES0。超出OAS或物理地址的行为是会上报异常的。

所有导致 Stream table lookup未到达有效STE的事务都会终止,上报异常并可以记录事件C_BAD_STREAMID(根据SMMU_(S_)CR2.RECINVSID设置)

当L1STD更改时, non-leaf CMD_CFGI_STE是使L1STD条目失效所需的最小范围invalidate命令。根据更改情况,也可能需要其他STE失效,例如:

将Span == 0的inactive L1STD更改为non-zero active Span(引入新的部分Level-2 STE)仅需要使L1STD失效。

将Span != 0的active L1STD更改为inactive L1STD需要使L1STD以及受影响的缓存的STE失效。需要多个non-leaf CMD_CFGI_STE命令或更广泛的命令,如CMD_CFGI_STE_RANGE或CMD_CFGI_ALL。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • STD

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分