当前位置: 首页 > news >正文

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. 初始化流程时序图

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

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_groupdrivers/iommu/iommu.c设备分组管理包含多个device,共享domain
arm_smmu_devicedrivers/iommu/arm-smmu-v3.cSMMU硬件抽象管理多个master,提供硬件接口
arm_smmu_masterdrivers/iommu/arm-smmu-v3.c设备在SMMU中的表示连接device和domain,管理SID
arm_smmu_domaindrivers/iommu/arm-smmu-v3.c地址转换域管理页表,连接多个master
pgtbl_opsdrivers/iommu/io-pgtable-arm.c页表操作实现提供IOVA到PA的转换
iommu_opsdrivers/iommu/arm-smmu-v3.cIOMMU操作接口连接核心层和具体实现

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

http://www.dtcms.com/a/304070.html

相关文章:

  • Android四大组件之BroadcastReceiver解析
  • [2025CVPR]HUGNet2架构:事件相机光流估计
  • 智能落地扇方案:青稞RISC-V电机 MCU一览
  • Java 10 新特性解析
  • 【嵌入式电机控制#18】有刷直流串级控制
  • Redis的持久化策略-AOF和RDB(详细图解)
  • 同创永益 IStorM Chaos 混沌工程平台智能化:智能实验工作台,多智能体协作,筑牢系统稳定性防线
  • [css]旋转流光效果
  • RabbitMQ 消息持久化的三大支柱 (With Spring Boot)
  • 焊接机器人智能化气体节约方案
  • arm smmu v3 队列实现机制
  • 【Linux知识】Linux Shell 脚本中的 `set -ex` 命令深度解析
  • Spark SQL 数组函数合集:array_agg、array_contains、array_sort…详解
  • 水仙花数(python)
  • CMake 完全实战指南:从入门到精通
  • Linux重定向的理解
  • VR全景制作流程分享-众趣VR全景制作平台
  • 【微信小程序】12、生物认证能力
  • 【MySQL基础篇】:MySQL表的约束常用类型以及实战示例
  • 算法篇----前缀和
  • 【前端开发】一. html css js 初印象
  • 验证pyspark提交参数指定环境变量生效
  • 什么情况下会出现数据库和缓存不一致的问题?
  • VS Code编辑器
  • jvm冷门知识十讲
  • Three.js实现银河螺旋星云粒子特效——原理、实现
  • 译 | 介绍PyTabKit:一个试图超越 Scikit-Learn的新机器学习库
  • 基于dcmtk的dicom工具 第九章 以json文件或sqlite为数据源的worklist服务(附工程源码)
  • JVM指令集
  • LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记