SMMU架构手册之Address Size(2)
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)相关推荐
- SMMU架构手册之Address Size(1)
在SMMU中需要考虑三种地址size概念,从系统来的输入地址size,中间地址size(IAS),以及输出地址size(OAS). 1. SMMU输入地址size为64bit NOTE: 可以查看章节 ...
- SMMU架构手册之数据结构和转换流程(3)
3. 配置和转换的查找 图中 描述了配置查找和转换查找所涉及的相关概念. 正如3.3.2中所描述的,传入的事务首先受配置查找的约束,而SMMU决定怎样开始进行事务的转换.这涉及到找到合适的STE,如果 ...
- SMMU架构手册之HTTU(译)
HTTU(Hardware Translation Table Udate)即硬件更新转换表. SMMU可以支持硬件更新转换表的AF和dirty状态,该功能可选. 一些PE可能支持HTTU(Hardw ...
- SMMU架构手册之stream编号(译)
每个即将到来的事务有地址.size和属性如READ/WRITE,安全/非安全,共享性,CACHE一致性.若超过一个client device连接到SMMU,这需要使用StreamID来区分不同的来源. ...
- SMMU架构手册之数据结构和转换流程(1)
SMMU使用内存中一组数据结构来放置转换数据.寄存器指向初始根结构STE的基地址.STE包含stage2转换表基地址指针,同时也指向stage1的配置结构,该配置结构包含转换表基指针.CD表示stag ...
- SMMU架构手册之数据结构和转换流程(4)
4 事务的属性:incoming,两阶段转换和overrides 除了地址,size和读写属性,传入的事务还可能带有其他属性,如访问类型(例如对于设备,WB-cached普通内存),共性性(如oute ...
- SMMU架构手册之中断和通知
event被记录到event队列,PRI请求和全局error有相关中断来允许异步通知给PE. 实现可能支持MSI中断,该中断以32位数据写一个配置值到配置寄存器中,在GICv3系统中,为GITS_TR ...
- SMMU架构手册之数据结构和转换流程(2)
STE包含每个stream的配置: 是否使能来之设备的流量: 是否是stage1转换: 是否是stage2转换 哪个数据结构定位到stage1的转换表 若使用stage1,STE使用域STE.S1Co ...
- Alibaba内部首发“M8级”500页微服务架构手册,GitHub上杀疯了
当今,微服务已经不是概念,而是势不可挡的潮流,它在大型互联网电商类企业已有丰富的实践案例,效果很好.但对于其他有志于向微服务架构转型的技术爱好者,微服务如何落地还存在很多不清楚的地方,为了帮助大家更好 ...
最新文章
- RMB77元实现全身VR跟踪,来自配合微软Kinect的Driver4VR
- 题解 DTOJ #1515.三塔合一
- C# 动态调用webservice代码
- 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...
- IOS开发设置应用程序App启动图片
- ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库
- js深拷贝和浅拷贝对数组的影响_javascript之浅拷贝与深拷贝
- 网站制作---科讯万能搜索系统的简单实用教程
- 一个伤心人的帖和一群搞笑人的跟帖
- (day 15 - 双指针)剑指 Offer 18. 删除链表的节点
- 全网首发:神奇的WORD文字渲染效果,18个字符一组,每个字符渲染效果不同
- paip.提升安全性--CRSF跨站请求伪造的检测与防范
- - 网页右下角广告(加强训练)题目描述模拟某些网站右下角的广告提示:
- AutoCAD2013 以上利用AccoreConsole+ c# NetApi 批量处理图纸
- l10n i18n vue_带有Vue的更多i18n:格式和后备
- python环境准备(一)
- 马化腾:非常看重小程序,小游戏将会是微信互联网的焦点?
- 上传APP到AppStore遇到的各种错误
- 怎么实时监控手机cpu-----使用性能监视器PerfMon
- 华为HCNP认证考过了