Non-discoverable devices in PCI devices
summary
Modern PCI endpoints expose multiple MMIO peripherals behind BARs and those peripherals change with FPGA reprogramming, so the practical solution is to attach a DeviceTree node to the PCI function, load a DT fragment carried with the FPGA bitstream, and apply overlays to instantiate platform drivers. Linux already adds generated PCI device DT nodes (Linux 6.6) and fixed address-translation for three-cell mappings, FPGA flows use FPGA image includes DT fragment, but concerns remain about refcounting of DT nodes/properties and that ACPI lacks subsystem descriptions for some devices.
AI-written summary · about
chapters (9)
- 0:00Introduction to talk
- 1:25Problem with PCI discoverability
- 5:27AMD FPGA PCIe card use case
- 12:30Device tree solution overview
- 16:25ACPI challenges and solutions
- 20:12Dynamic device handling issues
- 23:27Discovering device tree overlays
- 27:03ACPI vs device tree tradeoffs
- 29:00Q&A and closing
related talks
26mBridging Worlds: Using Device Tree Overlays To Support Complex PCI Devices in Linux
50mHotplug of Non-discoverable Hardware: Status and Future Directions
40mSecond Source Component Probing on Device Tree Platforms
30mReconfigurable Computing Architecture for the Linux Kernel
41mIntroducing IO Devices into Trusted Execution Environments
40mSecond Source Component Probing on Device Tree Platforms
41mVirtIo-Net PCIe Function Using Linux PCI Endpoint Framework
31mInstant Detection of Virtual Devices
