Pan*_*shi 2 linux memory-management linux-device-driver linux-kernel embedded-linux
大多数设备需要连续的内存。例如 GPU、VPU。
CMA 和静态内存分配是连续内存的例子。
为什么需要连续内存?
对于只能使用连续物理内存范围的 I/O 设备,需要连续内存分配 (CMA)。在具有 I/O 内存管理单元 (IOMMU) 的系统上,这不会成为问题,因为设备地址空间中连续的缓冲区可以由 IOMMU 映射到物理内存的非连续区域。此外,一些设备可以执行分散/收集 DMA(即,可以从/向多个非连续缓冲区读取/写入)。理想情况下,所有 I/O 设备都应该设计为在 IOMMU 后面工作,或者应该能够进行分散/聚集 DMA。不幸的是,情况并非如此,有些设备需要物理上连续的缓冲区。设备驱动程序有两种分配连续缓冲区的方法:
CMA 通过提供这两种方法的优点而没有它们的缺点来解决这个确切的问题。基本思想是可以迁移已分配的物理页面,以便为连续缓冲区创建足够的空间。可以在此处找到有关 CMA 如何工作的更多信息。
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |