Re: [PATCH v2 02/10] PCI/LUO: Create requested liveupdate device list

Jason Gunthorpe
2025-09-30T16:47:07Z

On Mon, Sep 29, 2025 at 07:13:51PM -0700, Chris Li wrote:
> On Mon, Sep 29, 2025 at 10:47 AM Jason Gunthorpe <jgg@ziepe.ca> wrote:
> >
> > On Tue, Sep 16, 2025 at 12:45:10AM -0700, Chris Li wrote:
> > > static int pci_liveupdate_prepare(void *arg, u64 *data)
> > > {
> > > + LIST_HEAD(requested_devices);
> > > +
> > > pr_info("prepare data[%llx]\n", *data);
> > > +
> > > + pci_lock_rescan_remove();
> > > + down_write(&pci_bus_sem);
> > > +
> > > + build_liveupdate_devices(&requested_devices);
> > > + cleanup_liveupdate_devices(&requested_devices);
> > > +
> > > + up_write(&pci_bus_sem);
> > > + pci_unlock_rescan_remove();
> > > return 0;
> > > }
> >
> > This doesn't seem conceptually right, PCI should not be preserving
> > everything. Only devices and their related hierarchy that are opted
> > into live update by iommufd should be preserved.
>
> Can you elaborate? This is not preserving everything, for repserveding
> bus master, only the device and the parent PCI bridge are added to the
> requested_devies list. That is done in the
> build_liveupdate_devices(), the device is added to the listhead pass
> into the function. So it matches the "their related hierarchy" part.
> Can you explain what unnecessary device was preserved in this?

I expected an exported function to request a pci device be preserved
and to populate a tracking list linked to a luo session when that
function is called.

This flags and then search over all the buses seems, IDK, strange and
should probably be justified.

Jason