本讲是Camera KMD ISP子系统专题的第28讲,我们讲解Camera KMD ISP子系统SMMU之Buffer Map流程详解。
更多资源:
| 资源 | 描述 |
|---|---|
| 在线课程 | 极客笔记在线课程 |
| 知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
| 极客笔记圈 |
Camera SMMU Buffer Map详解
buffer map/unmap 概述

qcom smmu map流程

dma_buf_attach()接口流程

dma_buf_map_attachment()接口流程

iommu_map接口

递归调用__arm_lpae_map函数根据 映射物理内存size创建各级pte之后,填充pgd及pte页表内容,建立好映射关系
1. 第一次进来__arm_lpae_map lvl为1, block_size为1G,这个函数会递归调用直到map size与某一级页表能表示block size相等为止
2. 如果传入size不等于block_size,就会再次递归进入__arm_lpae_map lvl为2, block_size为2M
3. 如果传入size不等于block_size,就会再次递归进入__arm_lpae_map lvl为3, block_size为4K
图解map过程
39位[38:0]虚拟地址解释

如何map一块4K的物理内存

Level2 PTE entry

每个level2 pte能标识4K的空间, level2 pte指向的是物理内存
如何map一块2M的物理内存

Level1 PTE entry

每个level1 pte能标识2M的空间,level1 pte可以指向2M物理内存,或者储存level2 pte的物理页
完成map之后整个SMMU ste,cd, 页表

完成map之后整个SMMU ste,cd, 页表可能的样子(每级页表项是8个字节,所以每级页表有512个页表项 )
Map之后iova与物理地址关系

极客笔记