【发布时间】:2020-05-17 13:07:19
【问题描述】:
不知道有没有办法在一些proc文件中识别用于DMA映射的内存,比如mtrr和iomem,或者通过lspic -vv。
在我的/proc/mtrr 中,只有一个uncachable 区域,它似乎指向了 3.5-4GB 的“PCI 孔”,差不多。
base=0x0e0000000 ( 3584MB), size= 512MB, count=1: uncachable
通过与/proc/iomem 交叉验证,在这 512MB 区域中,只有 4GB 之前的最后 21MB 未被 PCI 总线消耗,而这 21MB 条被诸如pnp/IOAPIC/Reserved 之类的东西占用。
所以我的问题是:
-
/proc/mtrr和/proc/iomem中 DMA 区域的签名是什么 - 是否有其他地方可以用来查看 DMA 区域,例如其他 proc 文件和命令?
- 似乎通过向
/proc/mtrr添加行,特权用户可以在运行时更改任何内存的缓存机制。那么除了DMA必须低于32位(假设没有DAC)之外,对于DMA内存分配还有其他特殊要求吗?如果没有进一步的要求,那么我可以用来识别 DMA 内存的唯一提示可能是/proc/mtrr?
【问题讨论】:
标签: c memory linux-kernel dma