From: Chris Li <chrisl@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>, Len Brown <lenb@kernel.org>,
Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
linux-acpi@vger.kernel.org, David Matlack <dmatlack@google.com>,
Pasha Tatashin <tatashin@google.com>,
Jason Miu <jasonmiu@google.com>,
Vipin Sharma <vipinsh@google.com>,
Saeed Mahameed <saeedm@nvidia.com>,
Adithya Jayachandran <ajayachandra@nvidia.com>,
Parav Pandit <parav@nvidia.com>, William Tu <witu@nvidia.com>,
Mike Rapoport <rppt@kernel.org>, Chris Li <chrisl@kernel.org>,
Jason Gunthorpe <jgg@ziepe.ca>,
Leon Romanovsky <leon@kernel.org>
Subject: [PATCH v2 08/10] PCI/LUO: Add pci_liveupdate_get_driver_data()
Date: Tue, 16 Sep 2025 00:45:16 -0700 [thread overview]
Message-ID: <20250916-luo-pci-v2-8-c494053c3c08@kernel.org> (raw)
In-Reply-To: <20250916-luo-pci-v2-0-c494053c3c08@kernel.org>
Similar to liveupdate_get_subsystem_data(), the PCI subsystem
provide pci_liveupdate_get_driver_data() for the driver to
receive the driver data during new kernel boot up, in the liveupdate
updated state.
This function will return an error on any other liveupdate state.
For example, vfio-pci will use this API in probe() to access the
liveupdate state from the previous kernel.
Signed-off-by: Chris Li <chrisl@kernel.org>
---
drivers/pci/liveupdate.c | 15 +++++++++++++++
include/linux/pci.h | 9 +++++++++
2 files changed, 24 insertions(+)
diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
index ae8f4dc5cf92577a4da83743c3b80bc72974a43e..1b12fc0649f479c6f45ffb26e6e3754f41054ea8 100644
--- a/drivers/pci/liveupdate.c
+++ b/drivers/pci/liveupdate.c
@@ -395,6 +395,21 @@ void pci_liveupdate_restore(struct pci_dev *dev)
return pci_dev_do_restore(dev, s);
}
+int pci_liveupdate_get_driver_data(struct pci_dev *pdev, u64 *data)
+{
+ struct dev_liveupdate *lu = &pdev->dev.lu;
+ struct pci_dev_ser *s = lu->dev_state;
+
+ if (!liveupdate_state_updated())
+ return -EINVAL;
+
+ if (!lu->dev_state)
+ return -ENOENT;
+
+ *data = s->driver_data;
+ return 0;
+}
+
void pci_liveupdate_override_driver(struct pci_dev *dev)
{
struct pci_dev_ser *s = dev->dev.lu.dev_state;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 05e68f35f39238f8b9ce08df97b384d1c1e89bbe..50296bb04aaa7f2bbd2260f8ec4670533e019e38 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2767,4 +2767,13 @@ void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
WARN_ONCE(condition, "%s %s: " fmt, \
dev_driver_string(&(pdev)->dev), pci_name(pdev), ##arg)
+#ifdef CONFIG_LIVEUPDATE
+int pci_liveupdate_get_driver_data(struct pci_dev *pdev, u64 *data);
+#else
+static inline int pci_liveupdate_get_driver_data(struct pci_dev *pdev,
+ u64 *data)
+{
+ return 0;
+}
+#endif
#endif /* LINUX_PCI_H */
--
2.51.0.384.g4c02a37b29-goog
next prev parent reply other threads:[~2025-09-16 7:45 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-16 7:45 [PATCH v2 00/10] LUO: PCI subsystem (phase I) Chris Li
2025-09-16 7:45 ` [PATCH v2 01/10] PCI/LUO: Register with Liveupdate Orchestrator Chris Li
2025-09-30 15:15 ` Greg Kroah-Hartman
2025-09-30 23:41 ` Chris Li
2025-09-30 15:17 ` Greg Kroah-Hartman
2025-09-30 23:38 ` Chris Li
2025-09-16 7:45 ` [PATCH v2 02/10] PCI/LUO: Create requested liveupdate device list Chris Li
2025-09-29 17:46 ` Jason Gunthorpe
2025-09-30 2:13 ` Chris Li
2025-09-30 16:47 ` Jason Gunthorpe
2025-10-03 7:09 ` Chris Li
2025-10-03 5:33 ` Chris Li
2025-10-03 14:04 ` Jason Gunthorpe
2025-10-03 21:06 ` Chris Li
2025-09-30 15:26 ` Greg Kroah-Hartman
2025-10-03 6:57 ` Chris Li
2025-09-16 7:45 ` [PATCH v2 03/10] PCI/LUO: Forward prepare()/freeze()/cancel() callbacks to driver Chris Li
2025-09-29 17:48 ` Jason Gunthorpe
2025-09-30 2:11 ` Chris Li
2025-09-30 16:38 ` Jason Gunthorpe
2025-10-02 18:54 ` David Matlack
2025-10-02 20:57 ` Chris Li
2025-10-02 21:31 ` David Matlack
2025-10-02 23:21 ` Jason Gunthorpe
2025-10-02 23:42 ` David Matlack
2025-10-03 12:03 ` Jason Gunthorpe
2025-10-03 16:03 ` David Matlack
2025-10-03 16:16 ` Jason Gunthorpe
2025-10-03 16:28 ` Pasha Tatashin
2025-10-03 16:56 ` David Matlack
2025-10-03 5:24 ` Chris Li
2025-10-03 12:06 ` Jason Gunthorpe
2025-10-03 16:27 ` David Matlack
2025-10-03 16:41 ` Vipin Sharma
2025-10-03 17:44 ` Chris Li
2025-10-03 5:17 ` Chris Li
2025-10-02 20:44 ` Chris Li
2025-09-30 15:27 ` Greg Kroah-Hartman
2025-10-02 20:38 ` Chris Li
2025-10-03 6:18 ` Greg Kroah-Hartman
2025-10-03 7:26 ` Chris Li
2025-10-03 12:26 ` Greg Kroah-Hartman
2025-10-03 17:49 ` Chris Li
2025-10-03 18:27 ` David Matlack
2025-10-03 21:10 ` Chris Li
2025-09-16 7:45 ` [PATCH v2 04/10] PCI/LUO: Restore state at PCI enumeration Chris Li
2025-09-16 7:45 ` [PATCH v2 05/10] PCI/LUO: Forward finish callbacks to drivers Chris Li
2025-09-16 7:45 ` [PATCH v2 06/10] PCI/LUO: Save and restore driver name Chris Li
2025-09-29 17:57 ` Jason Gunthorpe
2025-09-30 2:10 ` Chris Li
2025-09-30 13:02 ` Pasha Tatashin
2025-09-30 13:41 ` Greg Kroah-Hartman
2025-09-30 14:53 ` Pasha Tatashin
2025-09-30 15:08 ` Greg Kroah-Hartman
2025-09-30 15:56 ` Pasha Tatashin
2025-10-01 5:06 ` Greg Kroah-Hartman
2025-10-01 21:03 ` Pasha Tatashin
2025-10-02 6:09 ` Greg Kroah-Hartman
2025-10-02 13:23 ` Jason Gunthorpe
2025-10-02 22:30 ` Chris Li
2025-09-30 15:41 ` Chris Li
2025-10-01 5:13 ` Greg Kroah-Hartman
2025-10-02 22:05 ` Chris Li
2025-09-30 16:37 ` Jason Gunthorpe
2025-10-02 21:39 ` Chris Li
2025-10-03 14:28 ` Jason Gunthorpe
2025-09-16 7:45 ` [PATCH v2 07/10] PCI/LUO: Add liveupdate to pcieport driver Chris Li
2025-09-16 7:45 ` Chris Li [this message]
2025-09-16 7:45 ` [PATCH v2 09/10] PCI/LUO: Avoid write to bus master at boot Chris Li
2025-09-29 17:14 ` Bjorn Helgaas
2025-09-16 7:45 ` [PATCH v2 10/10] PCI: pci-lu-stub: Add a stub driver for Live Update testing Chris Li
2025-09-27 17:13 ` [PATCH v2 00/10] LUO: PCI subsystem (phase I) Bjorn Helgaas
2025-09-27 18:05 ` Pasha Tatashin
2025-09-29 15:04 ` Bjorn Helgaas
2025-09-29 18:13 ` Chris Li
2025-10-07 23:32 ` Chris Li
2025-10-08 23:00 ` David Matlack
2025-10-09 17:12 ` Chris Li
2025-10-09 23:21 ` Pratyush Yadav
2025-10-10 4:19 ` Chris Li
2025-10-10 23:49 ` Jason Miu
2025-10-13 13:58 ` Pratyush Yadav
2025-10-14 16:11 ` Pratyush Yadav
2025-10-14 20:44 ` Chris Li
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=20250916-luo-pci-v2-8-c494053c3c08@kernel.org \
--to=chrisl@kernel.org \
--cc=ajayachandra@nvidia.com \
--cc=bhelgaas@google.com \
--cc=dakr@kernel.org \
--cc=dmatlack@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=jasonmiu@google.com \
--cc=jgg@ziepe.ca \
--cc=lenb@kernel.org \
--cc=leon@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=parav@nvidia.com \
--cc=pasha.tatashin@soleen.com \
--cc=rafael@kernel.org \
--cc=rppt@kernel.org \
--cc=saeedm@nvidia.com \
--cc=tatashin@google.com \
--cc=vipinsh@google.com \
--cc=witu@nvidia.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;
as well as URLs for NNTP newsgroup(s).