如何插入phram模块?

时间:2015-07-17 16:23:41

标签: c memory-management linux-kernel kernel-module dma

我需要直接写入和读取物理内存以供我的研究使用,我能想到的唯一方法是使用内核模块。我找到了这个名为phram的通用设备驱动程序,我一直试图用它来映射内存,然后写入和读取它,但我在映射时遇到的问题超过了〜1.5GB。在我的16GB系统中,我的操作系统使用率在0x0时限制为500MB。以下是我的内核参数:mem=500M memmap=500M@0。当我尝试加载大于~1.5GB的phram模块时:

sudo modprobe phram phram=test,500Mi,15Gi

我收到此错误消息:

modprobe: ERROR: could not insert 'phram': Input/output error

这就是dmesg:

[  247.303346] modprobe:1402 conflicting memory types 1f400000-3df400000 write-back<->write-combining
[  247.303350] reserve_memtype failed [mem 0x1f400000-0x3df3fffff], track uncached-minus, req uncached-minus
[  247.303352] ioremap reserve_memtype failed -16
[  247.303376] phram: ioremap failed
[  247.303393] phram: `test,500Mi,15Gi' invalid for parameter `phram'

除了源代码之外,我找不到关于phram的任何文档。根据我的研究,ioremap()(phram中的映射调用)不应该有最大大小,所以我不知道问题出在哪里。 dmesg输出对我来说有点过于神秘,所以如果有人能够至少翻译它也会给我带来很大的帮助。

谢谢!

0 个答案:

没有答案