summaryrefslogtreecommitdiffstats
path: root/drivers/pci/iov.c
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2013-06-05 12:27:19 -0600
committerBjorn Helgaas <bhelgaas@google.com>2013-06-05 12:27:19 -0600
commitbb4bac9308bf8df5027dcbf27f1016104e3a504f (patch)
tree7c02fddf034225871db208cc6e7fee0f959bcaf3 /drivers/pci/iov.c
parent06886e8043877d5c439f5e2a3bcf23761bc1ae9d (diff)
parentdfab88beda88d6c24111e5966b08ecf813c3a18a (diff)
downloadlinux-bb4bac9308bf8df5027dcbf27f1016104e3a504f.tar.gz
linux-bb4bac9308bf8df5027dcbf27f1016104e3a504f.tar.xz
Merge branch 'pci/jiang-iov-fixes' into next
* pci/jiang-iov-fixes: PCI: Hide remove and rescan sysfs interfaces for SR-IOV virtual functions PCI: Finish SR-IOV VF setup before adding the device
Diffstat (limited to 'drivers/pci/iov.c')
-rw-r--r--drivers/pci/iov.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index c93071d428f5..a971a6f6268d 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -92,6 +92,8 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset)
pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device);
pci_setup_device(virtfn);
virtfn->dev.parent = dev->dev.parent;
+ virtfn->physfn = pci_dev_get(dev);
+ virtfn->is_virtfn = 1;
for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
res = dev->resource + PCI_IOV_RESOURCES + i;
@@ -113,9 +115,6 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset)
pci_device_add(virtfn, virtfn->bus);
mutex_unlock(&iov->dev->sriov->lock);
- virtfn->physfn = pci_dev_get(dev);
- virtfn->is_virtfn = 1;
-
rc = pci_bus_add_device(virtfn);
sprintf(buf, "virtfn%u", id);
rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);