Re: [PATCH v2 02/22] PCI: Add API to track PCI devices preserved across Live Update

From: Samiullah Khawaja

Date: Mon Feb 23 2026 - 18:45:06 EST


On Mon, Feb 23, 2026 at 03:08:19PM -0800, David Matlack wrote:
On Mon, Feb 23, 2026 at 2:04 PM Samiullah Khawaja <skhawaja@xxxxxxxxxx> wrote:
On Thu, Jan 29, 2026 at 09:24:49PM +0000, David Matlack wrote:

>Drivers can notify the PCI subsystem whenever a device is preserved and
>unpreserved with the following APIs:
>
> pci_liveupdate_outgoing_preserve(pci_dev)
> pci_liveupdate_outgoing_unpreserve(pci_dev)

nit: Preserve and Unpreserve can only be done from outgoing kernel, maybe
remove the "outgoing" from the function name.

That's reasonable, I can make that change in v3.

I should have added it earlier, but the same applies to the
pci_liveupdate_incoming_finish() as it can only be done with incoming
kernel. Maybe we can remove incoming from it also for consistency?

>+static int pci_flb_preserve(struct liveupdate_flb_op_args *args)
>+{
>+ struct pci_dev *dev = NULL;
>+ int max_nr_devices = 0;
>+ struct pci_ser *ser;
>+ unsigned long size;
>+
>+ for_each_pci_dev(dev)
>+ max_nr_devices++;

This will not work for SRIOV as new devices will be registered when
sriov is enabled and the max will increase. As we are not handling VFs
with this patch series, this can be fine?

That's right. Since this series does not support VFs
(pci_liveupdate_outgoing_preserve(VF) will return -EINVAL), I dropped
the logic from v1 that included the maximum possible number of VFs in
max_nr_devices.

Once we add support for preserving VFs, we can update this logic.

Another way that pci_liveupdate_outgoing_preserve() could fail due to
running out of room is if hot-plugged devices are preserved. But I
don't think that's an important problem to solve right now.