Re: [PATCH 0/4] PCI/PM: Do not save or restore the config space of an inaccessible device
From: Francisco Beltrán Millalén
Date: Thu Sep 24 2026 - 18:31:09 EST
Please don't apply patches 2/4 and 3/4 as they stand: they break SR-IOV
virtual functions.
Both treat an all-ones first dword (Vendor ID and Device ID) as "device
inaccessible", but a VF always reads 0xffff there; that is why
pci_device_is_present() checks the PF instead. With 2/4,
pci_save_state() fails for every VF, from pci_bus_add_device() and from
pci_dev_save_and_disable() before a reset, so no snapshot is ever taken
and nothing valid is restored after the reset. With 3/4 alone, a VF's
config space is never restored. The machine I tested on has no SR-IOV
devices, so nothing there could show it.
I'll send a v2 that uses pci_device_is_present() in 2/4 and reworks 3/4
accordingly. Two more things it will fix:
- The cover letter speaks of "v2 of this work", but the earlier version
was only reviewed privately and never posted. The next posting will
be v2, with changes listed against this one.
- 1/4 says the device is left alone when pci_save_state() fails. That
holds on its own, but with 2/4 applied the save fails without setting
state_saved, so pci_pm_suspend_noirq() calls pci_save_state() and
pci_prepare_to_sleep() itself afterwards. The code in 1/4 is not
affected, but its description is incomplete. Alan, I'm pointing this
out since you acked it with that text.
The v2 will also carry the Assisted-by tag this posting was missing.
Francisco