From: KarimAllah Ahmed Date: Sat, 3 Mar 2018 04:33:10 +0000 (+0100) Subject: PCI/IOV: Skip BAR sizing for VFs X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=bf4447fd1cb6158b60bd60a79998e1d029d31e68;p=linux.git PCI/IOV: Skip BAR sizing for VFs Per PCIe r4.0, sec 9.3.4.1.11, the BAR registers in VF config space are all RO Zero, so skip sizing them. This is an optimization when enabling SR-IOV on a device with many VFs. Suggested-by: Bjorn Helgaas Signed-off-by: KarimAllah Ahmed Signed-off-by: Bjorn Helgaas --- diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index a1cddca37793d..9f80b904bf767 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -329,6 +329,10 @@ static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom) if (dev->non_compliant_bars) return; + /* Per PCIe r4.0, sec 9.3.4.1.11, the VF BARs are all RO Zero */ + if (dev->is_virtfn) + return; + for (pos = 0; pos < howmany; pos++) { struct resource *res = &dev->resource[pos]; reg = PCI_BASE_ADDRESS_0 + (pos << 2);