【发布时间】:2015-01-19 07:59:11
【问题描述】:
我尝试使用连续内存分配器 (CMA) 功能并将 cma=1G 作为引导参数传递给内核 (3.18),但我没有设法让它工作。我尝试在设备驱动程序中分配大块连续内存 (200-500MB),但是对于大于 4MB 的数据大小,使用 dma_alloc_coherent 分配总是失败。
我对此进行了一些研究,并建议禁用 SWIOTLB,但这并没有帮助。另外,我查看了内核源代码,实际上我不确定是否真的为内核的主分支实现了 CMA?我也找不到令人满意的答案。
有人知道更多吗?预计 CMA 会起作用吗?如果是这样,dma_alloc_coherent 可能存在什么问题?它只是返回 NULL,我没有从中得到更多信息。
感谢您的帮助!
【问题讨论】:
-
这个问题听起来更适合LKML。特别是考虑到它是关于内核的最新版本。
-
感谢您的提示!我也用 Kernel 3.13 试过了,也没有用。我认为这更像是关于 CMA 及其在主要开发分支中的实施的一般性问题。 LKML 上有一些关于它的文章,但正如我所说,它对我不起作用。
标签: memory-management linux-kernel