我们需要ioremap for memmap保留内存块吗?

时间:2012-10-16 22:02:24

标签: c memory-management linux-kernel linux-device-driver kernel

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

是否需要ioremap这段记忆?

ioremap手册页说:

  

ioremap执行特定于平台的操作序列   总线内存CPU可通过readb / readw / readl / writeb /访问   writew / writel函数和其他mmio助手。归来了   地址不保证可以直接用作虚拟地址。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

根据我保留(或阻止)的经验,记忆如下。

  

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

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