🧶 Linux x86-64 IOMMU 详解(六)——Intel IOMMU 参与下的 DMA Coherent Mapping 流程

在上一篇文章中,我们详细介绍了 Intel IOMMU 的初始化流程,并耗费大量笔墨讲述了此过程中 Intel IOMMU 与 SWIOTLB 二虎相争的故事。最终,SWIOTLB 被禁用,而 Intel IOMMU 得以保留。现在,所有的 DMA 操作,都要经由 Intel IOMMU 了。本文将介绍 Intel IOMMU 在 DMA Coherent Mapping 过程中的作用。

Linux x86-64 IOMMU 详解(六)——Intel IOMMU 参与下的 DMA Coherent Mapping 流程
🗒️ linux内核源码解析01–启动代码分析之汇编部分

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_...

linux内核源码解析01–启动代码分析之汇编部分
🗒️ linux内核源码解析02–启动代码分析之固定映射

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:即上篇博文里的“第二次建立页表映射”,页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待pag...

linux内核源码解析02–启动代码分析之固定映射
🗒️ linux内核源码解析03–启动代码分析之主内核页表创建

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_...

linux内核源码解析03–启动代码分析之主内核页表创建
🗒️ linux源码解析05–ioremap原理

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_...

linux源码解析05–ioremap原理
🗒️ linux源码解析06–常用内存分配函数kmalloc、vmalloc、malloc和mmap实现原理

1.kmalloc函数 static __always_inline void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { #ifndef CONFIG_SLOB unsigned int ind...

linux源码解析06–常用内存分配函数kmalloc、vmalloc、malloc和mmap实现原理