一笔输入的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文章
5440浏览量
125030 -
STE
+关注
关注
0文章
8浏览量
9527 -
cache技术
+关注
关注
0文章
41浏览量
1253
原文标题:SMMU VA->PA的转换流程
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
移植vi->venc时提示VA and PA must be page aligned. va=0x70000000, pa=0x10823300,是什么问题?
ARM系列之SMMU总线资料合集
对硬件虚拟化及其相关逻辑进行罗列与理解
多个设备是否可以共用一个SMMU StreamID?
SMMU学习这一篇就够了
Arm CoreLink MMU?700系统内存管理单元技术参考手册
ARM CORELINK?MMU-600AE系统内存管理单元技术参考手册
ARM系统内存管理单元架构规范SMMU架构2.0版
arm smmu的原理

arm smmu的原理与smmu驱动iommu框架

通过处理器中的MMU进行VA-PA转换

评论