我使用memmap=8G$4Glinux 内核引导参数保留了内存块。
需要ioremap这个内存吗?
ioremap手册页说:
ioremap 执行平台特定的操作序列,以使总线内存 CPU 可通过 readb/readw/readl/writeb/writew/writel 函数和其他 mmio 帮助程序访问。返回的地址不保证可以直接用作虚拟地址。
因此,如果我不能将返回的ioremap地址用作直接寻址内存的虚拟地址,那么一个更广泛的问题是我们何时应该ioremap使用内存?
我使用memmap=8G$4Glinux 内核引导参数保留了内存块。
需要ioremap这个内存吗?
ioremap手册页说:
ioremap 执行平台特定的操作序列,以使总线内存 CPU 可通过 readb/readw/readl/writeb/writew/writel 函数和其他 mmio 帮助程序访问。返回的地址不保证可以直接用作虚拟地址。
因此,如果我不能将返回的ioremap地址用作直接寻址内存的虚拟地址,那么一个更广泛的问题是我们何时应该ioremap使用内存?
是的,您必须到ioremap该区域才能访问它。当您指示内核忽略此区域时,内核不会为此内存区域设置页面目录条目。
如果重新映射地址空间的地址,则返回的地址ioremap可能无法直接使用。io-port当您从memory地址空间重新映射地址时,可以直接使用它们。
根据我保留(或阻塞)的经验,内存如下。
如果您尝试保留特定容量的内存,您可能必须重新映射 BIOS 提供的现有内存映射。
如果您的系统不允许您这样做,那么您将必须确定 BIOS 提供的内存映射中哪个区域是空闲的,并且只有那个区域可以保留。