提交 27d61629 编写于 作者: S Stuart Hayes 提交者: Bjorn Helgaas

PCI: Create SR-IOV virtfn/physfn links before attaching driver

When creating virtual functions, create the "virtfn%u" and "physfn" links
in sysfs *before* attaching the driver instead of after.  When we attach
the driver to the new virtual network interface first, there is a race when
the driver attaches to the new sends out an "add" udev event, and the
network interface naming software (biosdevname or systemd, for example)
tries to look at these links.
Signed-off-by: NStuart Hayes <stuart.w.hayes@gmail.com>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
上级 7dfca152
...@@ -159,7 +159,6 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id) ...@@ -159,7 +159,6 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
pci_device_add(virtfn, virtfn->bus); pci_device_add(virtfn, virtfn->bus);
pci_bus_add_device(virtfn);
sprintf(buf, "virtfn%u", id); sprintf(buf, "virtfn%u", id);
rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf); rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);
if (rc) if (rc)
...@@ -170,6 +169,8 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id) ...@@ -170,6 +169,8 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE); kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE);
pci_bus_add_device(virtfn);
return 0; return 0;
failed2: failed2:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册