linux -IOMMU
- 了解IOMMU
1.什么是IOMMU?
在计算机领域,IOMMU(Input/Output Memory Management Unit)是一个内存管理单元(Memory Management Unit),它的作用是连接DMA-capable I/O总线(Direct Memory Access-capable I/O Bus)和主存(main memory)。传统的内存管理单元会把CPU访问的虚拟地址转化成实际的物理地址。而IOMMU则是把设备(device)访问的虚拟地址转化成物理地址。为了防止设备错误地访问内存,有些IOMMU还提供了访问内存保护机制。
MMU(Memory Management Unit, 内存管理单元): 将虚拟地址转化为物理地址,cpu与主存之间地址转换。
DMA(Direct Memory Access,直接内存存取): 是一种快速传送数据的机制。DMA 传输将数据从一个地址空间复制到另外一个地址空间。包括以下:
当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实现和完成。最初的DMA地址是物理地址,后来dmar就出现了。 dmar意为DMA remapping,是Intel为支持虚拟机而设计的I/O虚拟化技术,I/O设备访问的DMA地址不再是物理内存地址,而要通过DMA remapping硬件进行转译,DMA remapping硬件会把DMA地址翻译成物理内存地址,并检查访问权限等等。负责DMA remapping操作的硬件称为IOMMU。IOMMU把设备访问的虚拟地址转化为物理地址,连接DMA-capable 总线和主存。为了防止设备错误地访问内存,有些IOMMU还提供了访问内存保护机制(检查访问权限)。IOMMU不仅将DMA地址虚拟化,还起到隔离,保护等作用。
- IOMMU使得设备无法直接访问物理地址,大大增加了设备进行DMA攻击的难度。
- 部分设备的引脚数较少,导致其位数较低,无法寻址到整个物理内存空间。以目前主流的32位设备为例,其在物理内存中直接寻址的范围是[0, 4GB)。但是,现代操作系统的内存往往大于4GB。如果设备申请DMA时,内核为设备分配的DMA buffer的地址高于4GB(以下简称为“high buffer”),则设备将无法寻址到它。
有了IOMMU以后,IOMMU就可以在[0, 4GB)范围内分配一段与高地址buffer长度相同的内存,让设备能够直接寻址(以下称为“low buffer”)。设备向low buffer写入后,IOMMU就会将low buffer中的内容,复制到high buffer,而后通知CPU从high buffer读取内容。反之亦然——CPU向high buffer写入后,IOMMU就会将high buffer中的内容,复制到low buffer,而后通知设备从low buffer读取内容。这样,CPU和设备都能读取到对方写入的内容。这样在high buffer和low buffer之间复制内容的操作,在IOMMU机制中被称为“sync”或“bounce”。
refer to
- https://blog.csdn.net/qq_34719392/article/details/114834467
- https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit
linux -IOMMU相关推荐
- Linux IOMMU支持
文章目录 Linux IOMMU 基本的东西 什么是RMRR? IOVA是如何产生的? 图形问题? IOVA的一些例外情况 故障报告 启动消息示例 故障报告 待决定 Linux IOMMU 架构规范可 ...
- Linux平台上DPDK入门指南
目录 1. 简介 1.1. 文档地图 2. 系统要求 2.1. X86 上预先设置 BIOS 2.2. 编译DPDK 2.3. 运行DPDK应用程序 2.3.1. 系统软件 2.3.2. 在 Linu ...
- Linux平台上DPDK入门指南(二)
4. 编译和运行简单应用程序 本章介绍如何在DPDK环境下编译和运行应用程序.还指出应用程序的存储位置. 注意:此过程的部分操作也可以使用脚本来完成. 4.1. 编译一个简单应用程序 一个DPDK目标 ...
- linux内核文档汇集
链接:https://01.org/linuxgraphics/gfx-docs/drm/ The Linux Kernel documentation This is the top level o ...
- MMU和SMMU/IOMMU使用场景和区别,SMMU技术与cache
目录 1.各种MMU 2.各种MMU的使用场景 2.1 各自的使用场景 2.1.1 地址转换 2.1.2 内存保护 3.MMU和SMMU的区别 4. MMU/SMMU/IOMMU与cache 5.扩展 ...
- linux内核笔记之SMMU代码分析
2020/06/10: first version, 主要介绍smmu驱动的初始化流程 在前一篇博文ARM SMMU学习笔记中, 介绍了SMMU的一些基本概念以及SMMU地址转换的基本流程,本文主要分 ...
- DPDK — DPDK APP 的指令行参数
目录 文章目录 目录 Lcore-related options(逻辑线程相关参数) Device-related options(设备相关参数) Multiprocessing-related op ...
- 官档翻译-启用High Precision Event Timer (HPET) Functionality
原文地址:http://doc.dpdk.org/guides/linux_gsg/enable_func.html#enabling-additional-functionality BIOS准备 ...
- linux开启IOMMU方法
一.IOMMU简介 IOMMU:input/output memory management unit. 连接DMA io bus和主存,完成从设备虚拟地址到物理地址的映射. 提供对故障设备的内存保护 ...
- Linux驱动:VFIO概述(vfio/iommu/device passthrough)
<ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <提升KVM异构虚拟机启动效率:透传(pass-through).DM ...
最新文章
- hdu 1003 dp
- JVM调优实战:G1中的to-space exhausted问题
- C++通过hiredis连接到redis
- 人生第一个过 5K Star 的 项目 x-spreadsheet 感谢各位大佬的支持
- mycat 启动失败 The specified size exceeds the maximum representable size JVM exited while loading the a
- Oracle数据库的数据统计(Analyze)
- lucene解决全文检索word2003,word2007的办法
- scala seq java_Scala中的两个Seq比较
- 实战经验:Oracle DG 的归档缺失修复
- 关系图谱在贝壳的构建和应用
- 新在线一键制作表白网系统源码
- 课程表的实现(基于强智科技教务系统)
- Python语言在人工智能(AI)中的优势
- 2022-2028年全球与中国红外(IR)摄像机行业市场前瞻与投资战略规划分析
- 【转】一个交警肺腑之言:高速公路行车的安全注意事项
- html中table的样式设置
- QuickBooks 2020 for Mac(mac财务管理软件)
- RT-Thread I/O设备模型及驱动框架解析(一)
- linux 板卡驱动开源项目Comedi使用编译流程
- 央视影音 服务器暂时无法连接服务器,央视影音APP播放不了怎样办 打开不知道决办法...
热门文章
- contos7改分辨率_centos桌面分辨率修改
- DSP CCS5.5安装步骤
- 基于Springboot的个人健康监控管理系统 毕业论文+项目源码、
- C++ log4cpp(tx2)
- matlab 机械振动,MATLAB使用教程之用MATLAB仿真机械振动.doc
- ArcPad8新功能介绍
- Chaff Bugs: Deterring Attackers by Making Software Buggier
- openvpen最新安卓中文版_ins下载官方安卓最新版-ins下载安卓版中文版下载v2.5.46 手机版-西西软件下载...
- PowerBuilder资源分享汇总
- mcal rtm_RTM的完整形式是什么?