pci - What is the difference between pci_enable_device_mem and pci_enable_device? -


what difference between pci_enable_device_mem , pci_enable_device?

in ixgbe pf driver uses pci_enable_device_mem , vf driver uses pci_enable_device.

well, both functions internally call pci_enable_device_flags(). difference pci_enable_device_mem() variant initializes memory-mapped bars, whereas pci_enable_device() initialize both memory-mapped , io bars.

if pci device not have io spaces (most indeed case) can use pci_enable_device_mem().

this code drivers/pci/pci.c:

int pci_enable_device_mem(struct pci_dev *dev) {     return pci_enable_device_flags(dev, ioresource_mem); }  int pci_enable_device(struct pci_dev *dev) {     return pci_enable_device_flags(dev, ioresource_mem | ioresource_io); }