![如何使用 Linux 内核命令行仅为可预取内存保留热插拔桥的内存?](https://linux22.com/image/1487193/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Linux%20%E5%86%85%E6%A0%B8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BB%85%E4%B8%BA%E5%8F%AF%E9%A2%84%E5%8F%96%E5%86%85%E5%AD%98%E4%BF%9D%E7%95%99%E7%83%AD%E6%8F%92%E6%8B%94%E6%A1%A5%E7%9A%84%E5%86%85%E5%AD%98%EF%BC%9F.png)
我一直尝试使用内核命令行选项“pci=hpmemsize=256M,realloc”为 PCI 热插拔设备保留更多桥接内存。这最终导致不可预取内存出现问题,内核无法分配内存,因为 hpmemsize 的大小过大。
我实际上只需要为可预取内存保留热插拔桥接内存,而无需为不可预取内存保留热插拔桥接内存,但 hpmemsize 选项似乎适用于两者。有没有办法只保留额外的热插拔桥接可预取内存,而对不可预取内存使用默认值?
答案1
我知道已经过去了将近四年,但截至 2020-01-27 终于有了解决方案。
由于 Linux v5.5 已经发布,我的提交是 d7b8a217521ca21e2c6391da88d4928c6ce1f539,因此您可以执行以下操作:
pci=hpmmioprefsize=256M,重新分配
我的提交保持现有的内核参数不变,同时添加 pci=hpmmiosize 和 pci=hpmmioprefsize 来独立控制 MMIO 和 MMIO_PREF 大小。
您可以在以下位置查看更多信息:https://www.kernel.org/doc/html/v5.5/admin-guide/kernel-parameters.html
您可以在这里找到提交:https://github.com/torvalds/linux/commit/d7b8a217521ca21e2c6391da88d4928c6ce1f539
如果您想使用 v5.5 之前的内核版本,您必须将此提交应用到源代码并自行构建。