mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
PCI: Create SR-IOV virtfn/physfn links before attaching driver
[ Upstream commit 27d6162944
]
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: Stuart Hayes <stuart.w.hayes@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6d95d05baf
commit
7af9f9cd68
1 changed files with 2 additions and 1 deletions
|
@ -162,7 +162,6 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id, int reset)
|
||||||
|
|
||||||
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)
|
||||||
|
@ -173,6 +172,8 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id, int reset)
|
||||||
|
|
||||||
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:
|
||||||
|
|
Loading…
Reference in a new issue