【问题标题】:pci_alloc_consistent uncached memorypci_alloc_consistent 未缓存内存
【发布时间】:2015-10-27 07:09:47
【问题描述】:

公平地说pci_alloc_consistent 分配了一个连续的非缓存、非分页内核内存块。我问的原因是我在一些内核/驱动程序代码中看到了这个评论(不是在香草内核源代码中),我想我理解内存是连续的,但不确定它是非缓存分配的,因为缓存一致性的思想是保持缓存中的数据与DMA内存一致。

另外,不知道他们为什么称它为非分页。

例如https://www.kernel.org/doc/Documentation/DMA-API.txtPart Ia 部分中说:

一致的内存是由设备或设备写入的内存 处理器或设备可以立即读取处理器 无需担心缓存效果。

所以不能推断出内存是非缓存的,所以我倾向于认为我看到的 cmets 有点误导。

如果能获得有用的 cmets,我将不胜感激。谢谢!

【问题讨论】:

    标签: linux-kernel dma pci pci-e


    【解决方案1】:

    在 x86 上,缓存是 DMA 一致的(这要求缓存控制器监听所有 DMA 流量),因此一致的内存只是普通(缓存的)内存。

    在大多数其他架构上,缓存不是 DMA 一致的,因此pci_alloc_consistent() 必须分配非缓存内存。

    “非分页”表示内存不能交换到磁盘。但是,这是 Windows 驱动程序编写者会关心的事情;正常的 Linux 内核分配函数都不会返回可交换内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 2010-12-13
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 2013-06-13
      相关资源
      最近更新 更多