Bridging Worlds: Using Device Tree Overlays To Support Complex PCI Devices in Linux
summary
Kernel support (landed in v6.13) creates runtime Device Tree nodes for PCI devices so existing SoC drivers can be reused unchanged; the first use is LAN966x where an overlay describing internal peripherals is embedded in the PCI module and applied with Device Tree overlay tooling. Enumeration happens after resource assignment using a kernel config option to create DT nodes, overlays are applied with OF_overlay_apply and children populated with OF_platform_populate. Workarounds include an IRQ domain for routing/MSI, refcount and module hotplug fixes, and per-driver handling of reset/clock/component cleanup.
AI-written summary · about
chapters (11)
- 0:00Introduction
- 1:48Device Tree Overlays on PCI
- 4:46Need for Device Tree Overlays
- 8:00PCI enumeration and runtime nodes
- 10:58PCI address translation
- 13:48PCI interrupts with Device Tree
- 16:36ACPI and dynamic nodes
- 19:03LAN96 PCI driver details
- 21:39Driver issues and fixes
- 23:51Acknowledgments and status
- 24:15Q&A: PCI interrupts vs MSI
related talks
29mNon-discoverable devices in PCI devices
25mDevice-tree overlay feature allows for runtime modification
01h 10mBoF: Devicetree
40mSecond Source Component Probing on Device Tree Platforms
01h 13mDevice Tree for Dummies!
45mPowering up "discoverable bus-attached" devices on DT-based platforms
20mUsing DTB overlays in OP-TEE
25mPCI Endpoint Drivers in Linux Kernel and How to Write One
