arm v3 smmu 图示

我来为您绘制一个更加清晰、图文并茂的ARM SMMU v3组件关系图:

ARM SMMU v3 组件关系详解图

1. 整体架构层次图

Physical Hardware Hardware Layer ARM SMMU v3 Driver Layer IOMMU Core Layer Application Layer SMMU Hardware Stream Table Command Queue Event Queue Page Tables arm_smmu_device arm_smmu_master arm_smmu_domain pgtbl_ops iommu_group iommu_domain iommu_ops 设备驱动 应用程序

2. 详细数据结构关系图

Stream Table Management Domain & Page Table Management ARM SMMU Device Management Device & Group Management STE entries SID to STE mapping CD/VTTBR pointers pgtbl_ops s1_cfg s2_cfg arm_lpae_map arm_lpae_unmap arm_lpae_iova_to_phys struct arm_smmu_master struct arm_smmu_device struct arm_smmu_domain strtab_cfg cmdq evtq asid_map vmid_map struct iommu_group struct device struct group_device default_domain current_domain PCI Device Network Device Storage Device

3. 初始化流程时序图

应用程序 Device iommu_group arm_smmu_device arm_smmu_master arm_smmu_domain iommu_ops pgtbl_ops Hardware 设备探测 iommu_group_get_for_dev() arm_smmu_add_device() 创建master结构 分配SID,配置STE arm_smmu_attach_dev() arm_smmu_domain_finalise() alloc_io_pgtable_ops() 赋值pgtbl_ops 配置页表基地址 设置TTBR/VTTBR 配置完成 绑定成功 设备就绪 初始化完成 设备可用 应用程序 Device iommu_group arm_smmu_device arm_smmu_master arm_smmu_domain iommu_ops pgtbl_ops Hardware

4. 地址转换详细流程图

Response Page Table Walk Domain Selection Stream Table Lookup DMA Request Yes No DMA Response Device Access Complete Page Table Base IOVA to PA Translation Page Table Levels Physical Address PA STE Valid? Extract CD/VTTBR Fault/Error Domain Configuration Stream Table Base SID Index Calculation STE Entry Access STE Content IOVA Address Device DMA Request Stream ID SID

5. 关键数据结构详细图

5.1 iommu_group 结构

group_device iommu_group device pointer struct group_device name list head devices list struct iommu_group default_domain current_domain mutex notifier

5.2 arm_smmu_device 结构

queues strtab_cfg arm_smmu_device command entries cmdq event entries L1 descriptors strtab pointer L2 tables STE entries base register struct arm_smmu_device features strtab_cfg cmdq evtq asid_map vmid_map ias/oas

5.3 arm_smmu_domain 结构

pgtbl_ops s2_cfg s1_cfg arm_smmu_domain unmap function map function iova_to_phys function VTTBR vmid VTCR ASID cdptr TTBR TCR MAIR smmu pointer struct arm_smmu_domain pgtbl_ops stage s1_cfg s2_cfg devices list

6. 操作函数调用关系图

Address Translation Page Table Operations ARM SMMU Operations IOMMU Core Operations domain->ops->iova_to_phys iommu_iova_to_phys arm_smmu_iova_to_phys pgtbl_ops->iova_to_phys arm_lpae_iova_to_phys domain->ops->map iommu_map arm_smmu_map pgtbl_ops->map arm_lpae_map arm_smmu_attach_dev arm_smmu_domain_finalise alloc_io_pgtable_ops arm_lpae_alloc_pgtable iommu_attach_group iommu_attach_device __iommu_attach_group group->ops->attach_dev

7. 内存布局和硬件映射图

DMA Coherent Memory Hardware Memory Mapping Software Memory Layout Command Queue DMA Allocated Memory Event Queue Context Descriptors Page Tables Stream Table Base SMMU Registers STE Entries CD/VTTBR Registers Page Table Walk strtab_cfg arm_smmu_device STE Array CD/VTTBR pointers Page Tables

8. 关键关系总结表

组件 文件位置 主要功能 关键关系
iommu_group drivers/iommu/iommu.c 设备分组管理 包含多个device,共享domain
arm_smmu_device drivers/iommu/arm-smmu-v3.c SMMU硬件抽象 管理多个master,提供硬件接口
arm_smmu_master drivers/iommu/arm-smmu-v3.c 设备在SMMU中的表示 连接device和domain,管理SID
arm_smmu_domain drivers/iommu/arm-smmu-v3.c 地址转换域 管理页表,连接多个master
pgtbl_ops drivers/iommu/io-pgtable-arm.c 页表操作实现 提供IOVA到PA的转换
iommu_ops drivers/iommu/arm-smmu-v3.c IOMMU操作接口 连接核心层和具体实现

这个详细的图文并茂的关系图展示了ARM SMMU v3中各个组件之间的复杂关系,从软件层到硬件层的完整数据流和配置关系。

相关推荐
Awh-13 小时前
ARM 裸机开发 DAY9 学习笔记
arm开发·笔记·学习
en.en..15 小时前
8086、x86、ARM 结构化详解
arm开发
sunoo-22918 小时前
嵌入式Linux驱动学习笔记(第3-6天):从misc封装、platform总线到设备树、中断与单总线外设实战
linux·arm开发·驱动开发·笔记·单片机·学习
半杯咖啡半行码1 天前
STM32之ARM通用汇编指令详解:从指令格式到寻址方式
汇编·arm开发·stm32
szxinmai主板定制专家1 天前
基于RK3588+FPGA+AI的储能电站边缘网关,实现电力数据采集与智能预警
arm开发·人工智能·fpga开发·rk3576·半导体设备
XMAIPC_Robot2 天前
储能控制器产品化:ARM+FPGA整机高低温、EMC可靠性测试实战总结
arm开发·人工智能·fpga开发·arm+fpga·rk3588+fpga
半杯咖啡半行码2 天前
ARM交叉编译环境搭建与Qt源码编译移植全过程详解
arm开发
XMAIPC_Robot2 天前
FPGA+ARM联合调试避坑:储能电力采样数据同步、丢包问题定位与根治方案,应用于储能EMS、微网控制器中
arm开发·人工智能·fpga开发·rk3588+fpga·rk3576+fpga
幼儿园蛋小黄3 天前
从设备树到 ARM 驱动:嵌入式 Linux 驱动开发学习总结
linux·arm开发·驱动开发