[PATCH v7 01/12] PCI: liveupdate: Set up FLB handler for the PCI core

Pasha Tatashin pasha.tatashin at soleen.com
Fri Jul 17 12:42:37 PDT 2026


On 07-17 19:28, Pasha Tatashin wrote:
> On Fri, 10 Jul 2026 21:26:04 +0000, David Matlack <dmatlack at google.com> wrote:
> > diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
> > new file mode 100644
> > index 000000000000..899758883dd5
> > --- /dev/null
> > +++ b/drivers/pci/liveupdate.c
> > @@ -0,0 +1,155 @@
> > [ ... skip 50 lines ... ]
> > +#include <linux/slab.h>
> > +
> > +/**
> > + * struct pci_flb_outgoing - Outgoing PCI FLB object
> > + * @ser: Pointer to the preserved struct pci_ser.
> > + * @block_set: The KHO block set holding the outgoing devices.
> 
> AFAIK, these should be aligned after column:
> @ser:       Pointer to ...
> @block_set: The KHO block ...
> 
> > [ ... skip 26 lines ... ]
> > +	ser->devices = 0;
> > +
> > +	outgoing->ser = ser;
> > +	kho_block_set_init(&outgoing->block_set, sizeof(struct pci_dev_ser));
> > +
> > +	args->obj = outgoing;
> 
> Nit:
> You could re-write the above:
> 
> args->obj = no_free_ptr(outgoing);
> 
> And declare outgoing like this:
> struct pci_flb_outgoing *outgoing __free(kfree) = kzalloc_obj(*outgoing);
> 
> Also, remove kfree(outgoing) call.
> 
> >
> > diff --git a/include/linux/kho/abi/pci.h b/include/linux/kho/abi/pci.h
> > new file mode 100644
> > index 000000000000..de549016807a
> > --- /dev/null
> > +++ b/include/linux/kho/abi/pci.h
> > @@ -0,0 +1,58 @@
> > [ ... skip 30 lines ... ]
> > + * @domain: The device's PCI domain number (segment).
> > + * @bdf: The device's PCI bus, device, and function number.
> > + * @refcount: Reference count used by the PCI core to keep track of whether it
> > + *            is done using a device's struct pci_dev_ser. The value of the
> > + *            refcount is equal to 1 when the struct pci_dev_ser is in use, and
> > + *            0 otherwise.
> 
> I believe descriptions must be aligned.
> 
> > + */
> > +struct pci_dev_ser {
> > +	u32 domain;
> > +	u16 bdf;
> > +	u16 refcount;
> > +} __packed;
> > +
> > +/**
> > + * struct pci_ser - PCI Subsystem Live Update State
> > + *
> > + * This struct tracks state about all devices that are being preserved across
> > + * a Live Update for the next kernel.
> > + *
> > + * @nr_devices: The number of devices that were preserved.
> > + * @devices: Physical address of the first KHO block containing pci_dev_ser.
> 
> I believe descriptions must be aligned.
> 
> Nit: Please order the included headers alphabetically.
> 
> Nit: Please order the included headers alphabetically.

The above was supposed to be right after #include, but b4 had a mind 
of its own.

> 
> -- 
> Pasha Tatashin <pasha.tatashin at soleen.com>



More information about the kexec mailing list