From: David Matlack <dmatlack@google.com>
To: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: kexec@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-pci@vger.kernel.org,
Adithya Jayachandran <ajayachandra@nvidia.com>,
Alexander Graf <graf@amazon.com>,
Alex Williamson <alex@shazbot.org>,
Bjorn Helgaas <bhelgaas@google.com>, Chris Li <chrisl@kernel.org>,
David Rientjes <rientjes@google.com>,
Jacob Pan <jacob.pan@linux.microsoft.com>,
Jason Gunthorpe <jgg@nvidia.com>,
Jonathan Corbet <corbet@lwn.net>, Josh Hilke <jrhilke@google.com>,
Leon Romanovsky <leonro@nvidia.com>,
Lukas Wunner <lukas@wunner.de>, Mike Rapoport <rppt@kernel.org>,
Parav Pandit <parav@nvidia.com>,
Pranjal Shrivastava <praan@google.com>,
Pratyush Yadav <pratyush@kernel.org>,
Saeed Mahameed <saeedm@nvidia.com>,
Samiullah Khawaja <skhawaja@google.com>,
Shuah Khan <skhan@linuxfoundation.org>,
Vipin Sharma <vipinsh@google.com>, William Tu <witu@nvidia.com>,
Yi Liu <yi.l.liu@intel.com>
Subject: Re: [PATCH v6 03/12] PCI: liveupdate: Track incoming preserved PCI devices
Date: Mon, 15 Jun 2026 20:29:03 +0000 [thread overview]
Message-ID: <ajBgj_aSuzMZG47e@google.com> (raw)
In-Reply-To: <178144432039.1257322.9644414453415904478.b4-review@b4>
On 2026-06-14 01:38 PM, Pasha Tatashin wrote:
> On Fri, 22 May 2026 20:24:01 +0000, David Matlack <dmatlack@google.com> wrote:
> > diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
> > index 10c9b65aa242..e68ae5c172d4 100644
> > --- a/drivers/pci/Kconfig
> > +++ b/drivers/pci/Kconfig
> > @@ -330,7 +330,7 @@ config VGA_ARB_MAX_GPUS
> >
> > config PCI_LIVEUPDATE
> > bool "PCI Live Update Support"
> > - depends on PCI && LIVEUPDATE
> > + depends on PCI && LIVEUPDATE && 64BIT
>
> Please move this to the first patch, fewer changes between patches, and
> also KHO does not support anything but 64-bit mode.
I think it is preferred to introduce changes when they are needed. This
is the exact patch that requires 64BIT so it makes sense to add the
dependency within this patch no?
>
> >
> > diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
> > index 065d5af822f7..96c43b84532c 100644
> > --- a/drivers/pci/liveupdate.c
> > +++ b/drivers/pci/liveupdate.c
> > @@ -128,13 +157,49 @@ static void pci_flb_unpreserve(struct liveupdate_flb_op_args *args)
> > [ ... skip 31 lines ... ]
> > +
> > +err_xa_destroy:
> > + xa_destroy(&incoming->xa);
> > + kfree(incoming);
> > +err_restore_free:
> > + kho_restore_free(ser);
>
> This is the pattern we have been enforcing in other places in LUO. If
> the first retrieval fails, return the same error thereafter.
>
> > @@ -270,6 +335,91 @@ void pci_liveupdate_unpreserve(struct pci_dev *dev)
> > }
> > EXPORT_SYMBOL_GPL(pci_liveupdate_unpreserve);
> >
> > +static struct pci_flb_incoming *pci_liveupdate_flb_get_incoming(void)
> > +{
> > + struct pci_flb_incoming *incoming = NULL;
> > + int ret;
>
> Maybe make the error return static, and avoid another search through compatible
> FLBs if it failed before?
Good idea, will do.
>
> 1. Add "saved_err;"; if it is set, return it right away.
> 2. Change all errors to use goto save_err;, and at the end of the
> function, assign ret to saved_err;
>
> > [ ... skip 15 lines ... ]
> > + * This could mean that no PCI FLB data was passed by the previous
> > + * kernel, but it could also mean the previous kernel used a different
> > + * compatibility string (i.e. a different ABI).
> > + */
> > + if (ret == -ENOENT) {
> > + pr_info_once("No incoming FLB matched %s\n", pci_liveupdate_flb.compatible);
>
> I would assume this is very normal, e.g., no devices were preserved but
> memfd+hugetlb was preserved. Maybe use pr_debug_once().
The problem is described in the comment above. The PCI core cannot
distinguish between:
1. There was not PCI FLB preserved. and
2. There was PCI FLB preserved, but it was not compatible.
I agree we should not log anything for (1) but (2) definitely requires
at least some kind of logging so that's why I went with info-level here
and not debug.
>
> > + return NULL;
> > + }
> > +
> > + /*
> > + * There is incoming FLB data that matches pci_liveupdate_flb.compatible
> > + * but it cannot be retrieved.
> > + */
> > + if (ret) {
> > + WARN_ONCE(ret, "Failed to retrieve incoming FLB data\n");
>
> No need to print backtrace, please just print a warning:
> pr_warn_once("Failed to retrieve incoming FLB data: %pe\n", ERR_PTR(ret));
SGTM
>
> > [ ... skip 34 lines ... ]
> > + * through pci_liveupdate_finish(). This can happen if PCI core probes
> > + * the same device multiple times, e.g. due to hotplug.
> > + */
> > + if (!dev_ser->refcount) {
> > + pci_liveupdate_flb_put_incoming();
> > + return;
>
> Pleaes use 'goto put_incoming'
SGTM.
>
> > + }
> > +
> > + pci_info(dev, "Device was preserved by previous kernel across Live Update\n");
> > + dev->liveupdate.incoming = dev_ser;
> > +
> > + /*
> > + * Hold the ref on the incoming FLB until pci_liveupdate_finish() so
> > + * that dev->liveupdate.incoming does not get freed while it is in use.
> > + */
>
> How would that work? If finish is not called FLB stays around until the
> next reboot.
True... I think if the PCI core trusts drivers to call
pci_liveupdate_finish() then we don't need to hold onto the incoming
reference here.
>
> --
> Pasha Tatashin <pasha.tatashin@soleen.com>
next prev parent reply other threads:[~2026-06-15 20:29 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-22 20:23 [PATCH v6 00/12] PCI: liveupdate: PCI core support for Live Update David Matlack
2026-05-22 20:23 ` [PATCH v6 01/12] PCI: liveupdate: Set up FLB handler for the PCI core David Matlack
2026-05-22 20:43 ` sashiko-bot
2026-05-22 21:37 ` David Matlack
2026-05-23 11:17 ` Mike Rapoport
2026-05-25 16:50 ` Pratyush Yadav
2026-06-05 5:41 ` Pranjal Shrivastava
2026-06-08 20:51 ` David Matlack
2026-06-09 10:45 ` Pranjal Shrivastava
2026-06-12 5:15 ` Pasha Tatashin
2026-06-12 6:54 ` Mike Rapoport
2026-06-12 10:47 ` Pasha Tatashin
2026-06-15 22:19 ` David Matlack
2026-06-15 22:22 ` David Matlack
2026-05-22 20:24 ` [PATCH v6 02/12] PCI: liveupdate: Track outgoing preserved PCI devices David Matlack
2026-05-22 20:54 ` sashiko-bot
2026-05-22 21:28 ` David Matlack
2026-06-05 6:26 ` Pranjal Shrivastava
2026-06-05 6:11 ` Pranjal Shrivastava
2026-06-12 11:38 ` Pasha Tatashin
2026-05-22 20:24 ` [PATCH v6 03/12] PCI: liveupdate: Track incoming " David Matlack
2026-05-22 21:13 ` sashiko-bot
2026-05-22 21:34 ` David Matlack
2026-06-06 10:08 ` Pranjal Shrivastava
2026-06-08 20:57 ` David Matlack
2026-06-09 10:48 ` Pranjal Shrivastava
2026-06-14 13:38 ` Pasha Tatashin
2026-06-15 20:29 ` David Matlack [this message]
2026-05-22 20:24 ` [PATCH v6 04/12] PCI: liveupdate: Document driver binding responsibilities David Matlack
2026-05-25 15:35 ` Pratyush Yadav
2026-06-06 10:20 ` Pranjal Shrivastava
2026-06-14 13:41 ` Pasha Tatashin
2026-05-22 20:24 ` [PATCH v6 05/12] PCI: liveupdate: Keep bus numbers constant during Live Update David Matlack
2026-05-22 21:08 ` sashiko-bot
2026-05-22 21:31 ` David Matlack
2026-06-06 11:10 ` Pranjal Shrivastava
2026-06-14 14:01 ` Pasha Tatashin
2026-06-14 13:57 ` Pasha Tatashin
2026-06-15 20:20 ` David Matlack
2026-05-22 20:24 ` [PATCH v6 06/12] PCI: liveupdate: Auto-preserve upstream bridges across " David Matlack
2026-06-06 22:15 ` Pranjal Shrivastava
2026-06-08 21:34 ` David Matlack
2026-06-09 11:15 ` Pranjal Shrivastava
2026-05-22 20:24 ` [PATCH v6 07/12] PCI: Refactor matching logic for pci_dev_acs_ops David Matlack
2026-06-07 19:01 ` Pranjal Shrivastava
2026-06-08 21:49 ` David Matlack
2026-06-09 10:56 ` Pranjal Shrivastava
2026-05-22 20:24 ` [PATCH v6 08/12] PCI: liveupdate: Inherit ACS flags in incoming preserved devices David Matlack
2026-06-07 20:37 ` Pranjal Shrivastava
2026-06-08 10:49 ` Pranjal Shrivastava
2026-06-08 18:16 ` Jason Gunthorpe
2026-06-09 15:12 ` Pranjal Shrivastava
2026-06-09 15:34 ` Pranjal Shrivastava
2026-06-08 21:56 ` David Matlack
2026-06-09 17:20 ` Pranjal Shrivastava
2026-06-09 18:40 ` David Matlack
2026-06-09 19:25 ` Pranjal Shrivastava
2026-06-10 0:07 ` Jason Gunthorpe
2026-06-10 14:37 ` Pranjal Shrivastava
2026-05-22 20:24 ` [PATCH v6 09/12] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges David Matlack
2026-05-22 21:51 ` sashiko-bot
2026-06-08 11:33 ` Pranjal Shrivastava
2026-06-08 18:19 ` Jason Gunthorpe
2026-05-22 20:24 ` [PATCH v6 10/12] PCI: liveupdate: Freeze preservation status during shutdown David Matlack
2026-06-08 11:47 ` Pranjal Shrivastava
2026-05-22 20:24 ` [PATCH v6 11/12] PCI: liveupdate: Do not disable bus mastering on preserved devices during kexec David Matlack
2026-06-08 11:58 ` Pranjal Shrivastava
2026-05-22 20:24 ` [PATCH v6 12/12] Documentation: PCI: Add documentation for Live Update David Matlack
2026-06-08 12:01 ` Pranjal Shrivastava
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=ajBgj_aSuzMZG47e@google.com \
--to=dmatlack@google.com \
--cc=ajayachandra@nvidia.com \
--cc=alex@shazbot.org \
--cc=bhelgaas@google.com \
--cc=chrisl@kernel.org \
--cc=corbet@lwn.net \
--cc=graf@amazon.com \
--cc=jacob.pan@linux.microsoft.com \
--cc=jgg@nvidia.com \
--cc=jrhilke@google.com \
--cc=kexec@lists.infradead.org \
--cc=leonro@nvidia.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=parav@nvidia.com \
--cc=pasha.tatashin@soleen.com \
--cc=praan@google.com \
--cc=pratyush@kernel.org \
--cc=rientjes@google.com \
--cc=rppt@kernel.org \
--cc=saeedm@nvidia.com \
--cc=skhan@linuxfoundation.org \
--cc=skhawaja@google.com \
--cc=vipinsh@google.com \
--cc=witu@nvidia.com \
--cc=yi.l.liu@intel.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