1. 输入Address Size和虚拟Address Size

架构上SMMU输入地址size为64bit。如果client设备输出一个小于64bit,或在client设备和SMMU输入之间的中间size小于64bit,小于64bit的地址会被转化为64bit SMMU输入地址。这种转换不是本文档的范围。

ARMv8.0 和 ARMv8.1在AArch64上支持最大49bit,这意味着49bit地址要符号扩展为64bit地址。ARMv8.2支持最大53bit VA或49bit,这意味着53bit或49bit也要符号扩展为64bit地址。AArch64配置的stage1 转换内容有可配的达到最大的输入VA范围(通过TTB0和TTB1转换)。

术语VAS表示SMMU实现的VA size。当SMMU_IDR5.VAX=0表示49bit。当SMMU_IDR5.VAX=1表示53bit。

NOTE:在SMMUv3.0上SMMU_IDR5.VAX保留,因此VAS一般为49bit。

如果VAS地址的高位为SMMU的符号扩展,stage1高转换表TTB1被选择。如果应用要求同时使用TTB0和TTB1,系统设计必须发送至少端到端的地址,通过与SMMU连接的设备地址寄存器,从输入的MSB产生符号扩展。

AArch32配置的stage1转换内容有32bit。在这种情况下,输入地址的bits[31:0]直接用着VA。若输入地址的高32位非全0,产生转换fault。从输入高bit[31:n]中的TxSZ域用来选择TTB0或TTB1。

若VA[addrtop: N-1]不相同,对输入范围的N个重要位的stage1 AArch64转换表的输入范围检查失败。

(1)当TBI不使用时,AddrTop=63;

(2)当TBI使能时,AddrTop=55,意味着VA[63:56]忽略。

当使能TBI,只有VA[55:N-1]必须相同,VA[63:56]为了转换目的需要符号扩展VA[55]位。

NOTE: TBI配置是CD的一部分,因此当stage1转换被使能。当stage1 bypass和disable,CD不会使用且TBI也会disable。

术语UAS表示从client设备发送给SMMU的地址有效bit的数目。

(1)若57<=UAS<=64,TBI有意义,因为VA[63:56]可能不同于VA[55:VAS-1]。如果不相同,TBI决定是否产生转换fault;

(2)若VAS<=UAS<=57,TBI无意义,输入符号扩展意味着VA[63:56]不能与VA[55]不一样;

(3)若UAS<=VAS,若转换表范围被T0SZ或T1SZ配置(若UAS=49),小于需要的地址大小,范围检查会失败。stage1转换表的最大配置覆盖所有输入地址。

对于AArch64,stage1转换表TTB0和TTB1从最高位来选择。最高地址位当TBI=0时由VA[63]决定,当TBI=1由VA[55]位决定。因此,从client设备的地址size小于或等于VAS,需要0扩展到64位,着意味着VA[63]=VA[55]=0,TTB1不会被选择。

如果对外设编程的64bit地址的任何高位不适用于SMMU的符号检查逻辑,是否被截断,在SMMU软件不能依赖于编程错误来产生转换fault。若系统要求这种检查,软件必须检查DMA地址的有效性。

所有输入的地址位没有修改的记录到SMMU fault event中。

2. 地址对齐检查

SMMU架构不会检查传入的地址的对齐。

NOTE: 对于PE,对齐检查基于访问的size。这种语义不会直接应用于client设备访问。

SMMU架构手册之Address Size(2)相关推荐

  1. SMMU架构手册之Address Size(1)

    在SMMU中需要考虑三种地址size概念,从系统来的输入地址size,中间地址size(IAS),以及输出地址size(OAS). 1. SMMU输入地址size为64bit NOTE: 可以查看章节 ...

  2. SMMU架构手册之数据结构和转换流程(3)

    3. 配置和转换的查找 图中 描述了配置查找和转换查找所涉及的相关概念. 正如3.3.2中所描述的,传入的事务首先受配置查找的约束,而SMMU决定怎样开始进行事务的转换.这涉及到找到合适的STE,如果 ...

  3. SMMU架构手册之HTTU(译)

    HTTU(Hardware Translation Table Udate)即硬件更新转换表. SMMU可以支持硬件更新转换表的AF和dirty状态,该功能可选. 一些PE可能支持HTTU(Hardw ...

  4. SMMU架构手册之stream编号(译)

    每个即将到来的事务有地址.size和属性如READ/WRITE,安全/非安全,共享性,CACHE一致性.若超过一个client device连接到SMMU,这需要使用StreamID来区分不同的来源. ...

  5. SMMU架构手册之数据结构和转换流程(1)

    SMMU使用内存中一组数据结构来放置转换数据.寄存器指向初始根结构STE的基地址.STE包含stage2转换表基地址指针,同时也指向stage1的配置结构,该配置结构包含转换表基指针.CD表示stag ...

  6. SMMU架构手册之数据结构和转换流程(4)

    4 事务的属性:incoming,两阶段转换和overrides 除了地址,size和读写属性,传入的事务还可能带有其他属性,如访问类型(例如对于设备,WB-cached普通内存),共性性(如oute ...

  7. SMMU架构手册之中断和通知

    event被记录到event队列,PRI请求和全局error有相关中断来允许异步通知给PE. 实现可能支持MSI中断,该中断以32位数据写一个配置值到配置寄存器中,在GICv3系统中,为GITS_TR ...

  8. SMMU架构手册之数据结构和转换流程(2)

    STE包含每个stream的配置: 是否使能来之设备的流量: 是否是stage1转换: 是否是stage2转换 哪个数据结构定位到stage1的转换表 若使用stage1,STE使用域STE.S1Co ...

  9. Alibaba内部首发“M8级”500页微服务架构手册,GitHub上杀疯了

    当今,微服务已经不是概念,而是势不可挡的潮流,它在大型互联网电商类企业已有丰富的实践案例,效果很好.但对于其他有志于向微服务架构转型的技术爱好者,微服务如何落地还存在很多不清楚的地方,为了帮助大家更好 ...

最新文章

  1. RMB77元实现全身VR跟踪,来自配合微软Kinect的Driver4VR
  2. 题解 DTOJ #1515.三塔合一
  3. C# 动态调用webservice代码
  4. 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...
  5. IOS开发设置应用程序App启动图片
  6. ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库
  7. js深拷贝和浅拷贝对数组的影响_javascript之浅拷贝与深拷贝
  8. 网站制作---科讯万能搜索系统的简单实用教程
  9. 一个伤心人的帖和一群搞笑人的跟帖
  10. (day 15 - 双指针)剑指 Offer 18. 删除链表的节点
  11. 全网首发:神奇的WORD文字渲染效果,18个字符一组,每个字符渲染效果不同
  12. paip.提升安全性--CRSF跨站请求伪造的检测与防范
  13. - 网页右下角广告(加强训练)题目描述模拟某些网站右下角的广告提示:
  14. AutoCAD2013 以上利用AccoreConsole+ c# NetApi 批量处理图纸
  15. l10n i18n vue_带有Vue的更多i18n:格式和后备
  16. python环境准备(一)
  17. 马化腾:非常看重小程序,小游戏将会是微信互联网的焦点?
  18. 上传APP到AppStore遇到的各种错误
  19. 怎么实时监控手机cpu-----使用性能监视器PerfMon
  20. 华为HCNP认证考过了

热门文章

  1. 关于博弈论的一点笔记
  2. 数项级数1——级数的收敛性
  3. Oracle VM virtualbox安装操作系统win7
  4. RAMPS1.4 3d打印控制板接线与测试2
  5. Python的自动操作(挂机)脚本相关1
  6. 登峰造极的Javascript
  7. 内存数据库如何发挥内存优势?
  8. 教你如何快速出租写字楼
  9. 办公室出租,包注册出红本
  10. C++高性能服务器框架——日志系统详解