How to reserve hotplug bridge’s memory only for prefetchable memory using the Linux kernel command line

kernellinuxpci

I have been trying to reserve more bridge memory for PCI hot plug devices using the kernel command line option 'pci=hpmemsize=256M,realloc'. This ends up causing an issue for non-prefetchable memory where the kernel fails to assign memory due to the size used for hpmemsize.

I actually only need to reserve hotplug bridge memory for prefetchable memory and not non-prefetchable memory, but the hpmemsize option seems to apply to both. Is there any way to only reserve extra hotplug bridge prefetchable memory and use the default for non-prefetchable memory?

Best Answer

I know it has been almost four years, but there is finally a solution as of 2020-01-27.

Since Linux v5.5 has been released with my commit d7b8a217521ca21e2c6391da88d4928c6ce1f539, it is possible to do what you want with:

pci=hpmmioprefsize=256M,realloc

My commit kept the existing kernel parameters the same, whilst adding pci=hpmmiosize and pci=hpmmioprefsize to control MMIO and MMIO_PREF sizes independently.

You can see more information at: https://www.kernel.org/doc/html/v5.5/admin-guide/kernel-parameters.html

You can find the commit here: https://github.com/torvalds/linux/commit/d7b8a217521ca21e2c6391da88d4928c6ce1f539

If you want to use a kernel version before v5.5, you will have to apply this commit to the source code and build it yourself.

Related Question