SMMU概述

xiaoxiao2021-02-28  231

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

转载请注明原文地址: https://www.6miu.com/read-65932.html

最新回复(0)