summaryrefslogtreecommitdiff
path: root/drivers/pci
diff options
context:
space:
mode:
authorDavid Matlack <dmatlack@google.com>2026-09-18 20:06:30 +0000
committerPasha Tatashin <pasha.tatashin@soleen.com>2026-09-28 15:37:56 +0000
commitc7c6bc42b3eebba0562d128b5a578bfbe6a56d31 (patch)
tree45a3accae2eb752de987baa43f92bebf418289b9 /drivers/pci
parent16c1ff9563333530f97888fca4e48548b22ce282 (diff)
downloadlinux-next-c7c6bc42b3eebba0562d128b5a578bfbe6a56d31.tar.gz
linux-next-c7c6bc42b3eebba0562d128b5a578bfbe6a56d31.zip
PCI: liveupdate: Document driver binding responsibilities
Document how driver binding works during a Live Update and what the PCI core expects of drivers and users. Note that this is only a description of the current division of responsibilities. These can change in the future if we decide. Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com> Reviewed-by: Pranjal Shrivastava <praan@google.com> Reviewed-by: Samiullah Khawaja <skhawaja@google.com> Signed-off-by: David Matlack <dmatlack@google.com> Link: https://patch.msgid.link/20260918200640.887030-5-dmatlack@google.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/liveupdate.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
index 00776260ad6f..ec8db86ed66d 100644
--- a/drivers/pci/liveupdate.c
+++ b/drivers/pci/liveupdate.c
@@ -123,6 +123,20 @@
*
* * The device cannot be a Virtual Function (VF).
* * The device cannot be behind a PCI-to-PCI bridge.
+ *
+ * Driver Binding
+ * ==============
+ *
+ * In the outgoing kernel, the driver must ensure that it does not release a
+ * device between pci_liveupdate_preserve() and pci_liveupdate_unpreserve().
+ *
+ * In the incoming kernel, the driver must ensure that it does not release a
+ * preserved device between probe() and pci_liveupdate_finish().
+ *
+ * It is the user's responsibility to ensure that incoming preserved devices are
+ * bound to the correct driver. The PCI core does not protect against a device
+ * getting preserved by driver A in the outgoing kernel and then getting bound
+ * to driver B in the incoming kernel.
*/
#define pr_fmt(fmt) "PCI: liveupdate: " fmt