pci_enable_device_mem和pci_enable_device有什么区别?
在ixgbe中,pf驱动程序使用pci_enable_device_mem,而vf驱动程序使用pci_enable_device。
答案 0 :(得分:1)
好吧,两个函数都在内部调用pci_enable_device_flags()。区别在于pci_enable_device_mem()变量仅初始化内存映射的BAR,而pci_enable_device()将初始化内存映射和IO BAR。
如果您的PCI设备没有IO空间(很可能确实如此),您可以轻松使用pci_enable_device_mem()。
这是来自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);
}
答案 1 :(得分:0)
pci_enable_device_mem - 初始化用于存储空间的设备 https://www.kernel.org/doc/htmldocs/kernel-api/API-pci-enable-device-mem.html
pci_enable_device - 在驱动程序使用之前初始化设备。 https://www.kernel.org/doc/htmldocs/kernel-api/API-pci-enable-device.html
第一个是初始化设备,因此可以与内存空间一起使用。第二个将在驱动程序使用之前初始化设备。