On Wed, Nov 26, 2025 at 07:35:49PM +0000, David Matlack wrote:
Add an API to enable the PCI subsystem to track all devices that are preserved across a Live Update, including both incoming devices (passed from the previous kernel) and outgoing devices (passed to the next kernel).
Use PCI segment number and BDF to keep track of devices across Live Update. This means the kernel must keep both identifiers constant across a Live Update for any preserved device.
While bus numbers will *usually* stay the same across next and previous kernel, there are exceptions. E.g. if "pci=assign-busses" is specified on the command line, the kernel will re-assign bus numbers on every boot.
The most portable way to identify PCI devices across kernels is to store their path from the root down the hierarchy. Because the bus number might change but the device/function number on each bus stays the same.
This is what EFI does with device paths: https://uefi.org/specs/UEFI/2.10/10_Protocols_Device_Path_Protocol.html
Example: Acpi(PNP0A03,0)/Pci(1E|0)/Pci(0|0)
Source: https://raw.githubusercontent.com/tianocore-docs/edk2-UefiDriverWritersGuide...
We've got a device path *parser* in drivers/firmware/efi/dev-path-parser.c, but we don't have a *generator* for device paths in the kernel yet.
Thanks,
Lukas