SMMU概述

来源:互联网 发布:淘宝详情编辑不用神笔 编辑:程序博客网 时间:2024/05/23 12:45
SMMU本质上就是一个MMU设备,它的内存转换逻辑与CPU的MMU采用相同的逻辑,都允许将物理上非连续的页虚拟为连续的内存页。SMMU和IOMMU可以交替使用。

关键术语
-Context Bank
 定义转换上下文的寄存器集,系统中的每个Context Bank都有相同的寄存器集。
 PS:这里要记录的有哪些信息?
-Stream ID
 SMMU的输入源,用于唯一标记当前转换流的标记符。
 PS:有哪些转换流?
-IOVA
 I/O虚拟地址
-Page Tables
 定义虚拟到物理内存映射的表格,SMMU依靠这些表格完成转换。
-TTBR0
 保存Page Tables基地址的寄存器
-Page Level
 Page Table走过的级别(目前理解是转换过程中当前所处的转换页表的级别),一半只有在转换出错时才会用到。
-Translation Stage
 转换进程的阶段,HLOS管理第一阶段,系统管理程序管理第二阶段。
 PS:分别完成什么功能?
-IPA
 中间物理地址,第一阶段的输出地址和第二阶段的输入地址
 PS:本身不是硬件过程吗,怎么HLOS还会生成中间地址?
-TLB
 转换后援缓存器,也称页表缓存,用于加快地址转换过程,缓存着IOVA到物理地址的映射。
-Bypass

 用于某个阶段(Stage 1/2或全部)不进行转换,即输出等于输入。

重要API

API描述arm_iommu_create_mappingconfigure a VA rangearm_iommu_attach_deviceassociate a VA range with a device and enable SMMU translationsdma_alloc_coherentallocate buffer and map into SMMU for devicedma_map_sgmap existing buffer (by struct scatterlist) into SMMU for deviceion_share_dma_bufConvert an Ion handle to a dma bufdma_buf_attachPrepare a dma buf for dma on the given devicedma_buf_map_attachmentGet the scatterlist for the given attachmentmsm_iommu_get_busGet proper bus for your domain针对上述的疑问,目前的理解如下:

1)SMMU并不是MMU,而是按照相同原理工作在QSEE环境中的一个硬件。

2)加入安全访问控制的关键设备,通过增加SMMU额外实现了一层安全防护措施。而Context Bank就是与要访问的设备有关的上下文标志,因为在MMU阶段就可以通过地址来过滤出设备相关的信息,并应用这些新增的策略。

3)第一阶段的HLOS是在MMU完成地址转换的基础上对地址的又一次修正,可以假定的认为MMU转换出的地址增加上Context Bank相关的信息生成了一个全新的地址,而SMMU就是完成这个全新地址到最终地址的转换。至于增加SMMU之后是否对MMU转换出的地址进行修正,还不得而知。

参考文档:80-p2055-1_b