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); }