[PATCH v8 03/12] PCI: liveupdate: Track incoming preserved PCI devices

Bjorn Helgaas helgaas at kernel.org
Thu Sep 10 16:49:56 PDT 2026


On Tue, Jul 28, 2026 at 10:09:57PM +0000, David Matlack wrote:
> During PCI enumeration, the previous kernel might have passed state about
> devices that were preserved across kexec. The PCI core needs to fetch
> this state to identify which devices are "incoming" and require special
> handling.
> 
> Add pci_liveupdate_setup_device() which is called during device setup
> to fetch the serialized state (struct pci_ser) from the Live Update
> Orchestrator. The first time this happens, pci_flb_retrieve() will run
> and convert the array of pci_dev_ser structs into an xarray so that it
> can be looked up efficiently.

> + * The PCI core does not enforce any ordering of ``pci_liveupdate_finish()`` and
> + * ``pci_liveupdate_preserve()``. i.e. A PCI device can be **outgoing**
> + * (preserved for next kernel) and **incoming** (preserved by previous kernel)

Thinking about how this will be rendered in the formatted doc, I think
"i.e." is really part of the sentence, so in U.S. usage this would be:

  ``pci_liveupdate_preserve()``, i.e., a PCI device can be ...

I understand British usage generally omits the comma after, so that's
OK too, but IIUC the first part of the sentence shouldn't be
terminated with a period, and the "A" shouldn't be capitalized as if
it's a new sentence.

Similar issue in "PCI: liveupdate: Document driver binding
responsibilities" later:

  bound to the correct driver. i.e. The PCI core does not protect ...

> +static unsigned long pci_ser_xa_key(u32 domain, u16 bdf)
> +{
> +	return (unsigned long)domain << 16 | bdf;
> +}

Add blank line.

>  static int pci_flb_preserve(struct liveupdate_flb_op_args *args)
>  {



More information about the kexec mailing list