From: David Jeffery <djeffery@redhat.com>
To: driver-core@lists.linux.dev,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
linux-scsi@vger.kernel.org, Tarun Sahu <tarunsahu@google.com>,
Stuart Hayes <stuart.w.hayes@gmail.com>,
Laurence Oberman <loberman@redhat.com>,
Bjorn Helgaas <helgaas@kernel.org>,
kexec@lists.infradead.org, David Jeffery <djeffery@redhat.com>
Subject: [PATCH 7/9] PCI: Link a virtual function to its physical function
Date: Fri, 21 Aug 2026 10:24:12 -0400 [thread overview]
Message-ID: <20260821142414.150892-8-djeffery@redhat.com> (raw)
In-Reply-To: <20260821142414.150892-1-djeffery@redhat.com>
With a PCI virtual function having the same bus for its parent
as the physical function it is associated with, there is no
explicit dependency between the two in the device tree. With
async shutdown, this can result in the PF being shutdown before the
VF has an opportunity to shutdown.
Link the VF as a consumer of the PF to note its dependency and
ensure clean shutdown ordering.
Signed-off-by: Tarun Sahu <tarunsahu@google.com>
Signed-off-by: David Jeffery <djeffery@redhat.com>
---
drivers/pci/iov.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index b0d24839c084..c75da093d60c 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -382,14 +382,20 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
}
pci_device_add(virtfn, virtfn->bus);
+ if (!device_link_add(&virtfn->dev, &dev->dev, DL_FLAG_STATELESS)) {
+ rc = -ENOMEM;
+ goto failed1;
+ }
+
rc = pci_iov_sysfs_link(dev, virtfn, id);
if (rc)
- goto failed1;
+ goto unlink;
pci_bus_add_device(virtfn);
return 0;
-
+unlink:
+ device_link_remove(&virtfn->dev, &dev->dev);
failed1:
pci_stop_and_remove_bus_device(virtfn);
pci_dev_put(dev);
@@ -421,6 +427,7 @@ void pci_iov_remove_virtfn(struct pci_dev *dev, int id)
if (virtfn->dev.kobj.sd)
sysfs_remove_link(&virtfn->dev.kobj, "physfn");
+ device_link_remove(&virtfn->dev, &dev->dev);
pci_stop_and_remove_bus_device(virtfn);
virtfn_remove_bus(dev->bus, virtfn->bus);
--
2.55.0
next prev parent reply other threads:[~2026-08-21 14:25 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-21 14:24 [PATCH v20 0/9] shut down devices asynchronously David Jeffery
2026-08-21 14:24 ` [PATCH 1/9] driver core: rely on put_device to free dev->p David Jeffery
2026-08-21 14:32 ` sashiko-bot
2026-08-21 14:24 ` [PATCH 2/9] driver core: prevent device_add() during system shutdown David Jeffery
2026-08-21 14:43 ` sashiko-bot
2026-08-21 14:24 ` [PATCH 3/9] driver core: warn should device_move try to move a need_parent_lock device David Jeffery
2026-08-21 14:34 ` sashiko-bot
2026-08-21 14:24 ` [PATCH 4/9] driver core: separate function to shutdown one device David Jeffery
2026-08-21 14:29 ` sashiko-bot
2026-08-21 14:24 ` [PATCH 5/9] driver core: do not always lock parent in shutdown David Jeffery
2026-08-21 14:33 ` sashiko-bot
2026-08-21 14:24 ` [PATCH 6/9] driver core: async device shutdown infrastructure David Jeffery
2026-08-21 14:38 ` sashiko-bot
2026-08-21 14:24 ` David Jeffery [this message]
2026-08-21 14:34 ` [PATCH 7/9] PCI: Link a virtual function to its physical function sashiko-bot
2026-08-21 14:24 ` [PATCH 8/9] PCI: Enable async shutdown support David Jeffery
2026-08-21 14:39 ` sashiko-bot
2026-08-21 14:24 ` [PATCH 9/9] scsi: " David Jeffery
2026-08-21 14:38 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260821142414.150892-8-djeffery@redhat.com \
--to=djeffery@redhat.com \
--cc=dakr@kernel.org \
--cc=driver-core@lists.linux.dev \
--cc=gregkh@linuxfoundation.org \
--cc=helgaas@kernel.org \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=loberman@redhat.com \
--cc=rafael@kernel.org \
--cc=stuart.w.hayes@gmail.com \
--cc=tarunsahu@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox