To resolve this issue, a boot option named
pciBarAllocPolicy has been added in ESXi 6.5. The boot option has two settings:
- first-fit (0x0)
- smallest-fit (0x1)
By default, this boot option is set to
first-fit (0x0)in ESXi 6.5.
Note: From ESXi 6.7 and beyond, the
pciBARAllocPolicy to
smallest-fit (0x1) is set by default.
To work around this issue in ESXi 6.5, you must edit this boot option to
smallest-fit (pciBarAllocPolicy=0x1). This change causes ESXi to assign the base address registers of a virtual function to physical addresses. It chooses the smallest gap within the parent bridge's memory aperture that is large enough to fit the base address register of the virtual function.