We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 66488

XAPP1177 - Larger PF/VF BAR Size Might Cause Issue When Inserting Driver Module


The following Error can occur when inserting an xpcie.ko driver module for a design that has a PF/VF BAR size larger than 64KB:

insmod: error inserting 'xpcie.ko': -1 Operation not permitted

Further debug messages can be seen by executing "dmesg" command in the terminal:

pci xxxx:xx:xx.x: not enough MMIO resources for SR-IOV
xpcie: Init: SRIOV not enabled."

This issue occurs because the system is unable to find a large contiguous Kernel space for the PCIe BARs.


PCI memory allocation is typically done by the BIOS.

However the Linux Kernel allows the PCI memory to be reallocated to allow for a larger BAR size to be mapped. This is done by providing a "pci=realloc=on" option in the Kernel boot parameter.

The following instruction was tested in Linux Kernel version 2.6.32-431.el6.x86_64 with Grub2 installed:

1) Make sure you have Root permission. Edit the /etc/default/grub file in a text editor. In this file, add pci=realloc=on option to GRUB_CMDLINE_LINUX.

An example of a grub file after editing is shown below:


2) Save the file and then in the terminal window, compile the configuration by executing the following command:

grub2-mkconfig -o /boot/grub2/grub.cfg

3) Verify that the new option has been added; you should now see the pci=realloc=on option when executing the following command:

cat /boot/grub2/grub.cfg |grep -i pci

4) Reboot the system and then install the driver:

insmod xpcie.ko

Revision History:

1/27/2016 - Initial Release

AR# 66488
Date 04/15/2016
Status Active
Type General Article
  • Kintex UltraScale
  • Virtex UltraScale
  • Vivado Design Suite
  • PCI-Express (PCIe)
Page Bookmarked