C语言 我们是否需要 ioremap for memmap 保留内存块



我使用 memmap=8G$4G linux 内核引导参数保留内存块。

是否需要ioremap此内存?

ioremap手册页说:

IOREMAP 执行特定于平台的操作序列,以使 总线内存 CPU 可通过读取/读取/读取/读取/写入/ writew/writel 函数和其他 mmio 帮助程序。返回的 不保证地址可直接用作虚拟地址。

因此,如果我不能使用返回的 ioremap 地址作为直接寻址内存的虚拟地址,那么一个更广泛的问题是我们什么时候应该ioremap内存?

是的,您必须ioremap此区域才能访问它。内核不会为此内存区域设置页面目录条目,因为您指示内核忽略此区域。

如果重新映射io-port地址空间的地址,则 ioremap 返回的地址可能不会直接使用。当您从memory地址空间重新映射地址时,可以直接使用它们。

但是,请查看 https://unix.stackexchange.com/questions/37729/how-can-i-reserve-a-block-of-memory-from-the-linux-kernel

根据我保留(或阻止)内存的经验如下。

如果您尝试保留特定的内存卷,则可能需要重新映射 BIOS 提供的现有内存映射。

如果您的系统不允许您这样做,那么您将不得不在 BIOS 提供的内存映射中确定哪个区域是空闲的,并且只能保留该区域。

最新更新