提交 79272138 编写于 作者: B Bjorn Helgaas

PCI: Enable upstream bridges even for VFs on virtual buses

Previously we enabled the upstream PCI-to-PCI bridge only when
"dev->bus->self != NULL".  In the case of a VF on a virtual bus, where
"bus->self == NULL", we didn't enable the upstream bridge.

This fixes that by enabling the upstream bridge of the PF corresponding to
the VF.
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
Acked-by: NYinghai Lu <yinghai@kernel.org>
上级 c6bde215
...@@ -1148,12 +1148,12 @@ int pci_reenable_device(struct pci_dev *dev) ...@@ -1148,12 +1148,12 @@ int pci_reenable_device(struct pci_dev *dev)
static void pci_enable_bridge(struct pci_dev *dev) static void pci_enable_bridge(struct pci_dev *dev)
{ {
struct pci_dev *bridge;
int retval; int retval;
if (!dev) bridge = pci_upstream_bridge(dev);
return; if (bridge)
pci_enable_bridge(bridge);
pci_enable_bridge(dev->bus->self);
if (pci_is_enabled(dev)) { if (pci_is_enabled(dev)) {
if (!dev->is_busmaster) if (!dev->is_busmaster)
...@@ -1170,6 +1170,7 @@ static void pci_enable_bridge(struct pci_dev *dev) ...@@ -1170,6 +1170,7 @@ static void pci_enable_bridge(struct pci_dev *dev)
static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags)
{ {
struct pci_dev *bridge;
int err; int err;
int i, bars = 0; int i, bars = 0;
...@@ -1188,7 +1189,9 @@ static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) ...@@ -1188,7 +1189,9 @@ static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags)
if (atomic_inc_return(&dev->enable_cnt) > 1) if (atomic_inc_return(&dev->enable_cnt) > 1)
return 0; /* already enabled */ return 0; /* already enabled */
pci_enable_bridge(dev->bus->self); bridge = pci_upstream_bridge(dev);
if (bridge)
pci_enable_bridge(bridge);
/* only skip sriov related */ /* only skip sriov related */
for (i = 0; i <= PCI_ROM_RESOURCE; i++) for (i = 0; i <= PCI_ROM_RESOURCE; i++)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册