PCI Endpoint Drivers in Linux Kernel and How to Write One
summary
Framework exists since v4.11 and shows concrete controller and function code paths: use pci_epc_create in the EPC driver to register callbacks, allocate MSI and host-mapped windows via EPC mem and iATU, and register function drivers with epf_register_driver plus bind/unbind ops. Runtime uses userspace configfs to link controllers and functions and start the controller. Notes real pain points: probe/blocking on host refclock, atomic notifier callbacks, and lack of kernel-only or device-tree provisioning.
AI-written summary · about
chapters (13)
- 0:00Start
- 0:31Agenda
- 1:03PCI Subsystem
- 10:30Initialize Endpoint Controller Contd...
- 12:29Initialize DMA Engine (optional)
- 13:08Allocate memory for MSI
- 14:02Setup PCI host memory mapping
- 14:51Enable Endpoint IRQS
- 16:13Create PCI EPC device Contd...
- 17:02Writing a PCI Endpoint Function Driver
- 19:21Service EPF notifications
- 20:37Using the PCI Endpoint Framework
- 22:09Productizing the PCI Endpoint Framework
related talks
26mBridging Worlds: Using Device Tree Overlays To Support Complex PCI Devices in Linux
34mFW centric devices, NIC customization
28mXen VPCI Weather Report
50mHotplug of Non-discoverable Hardware: Status and Future Directions
32mProposing Common PHY Framework in Zephyr
20mExtending Power Over Ethernet to the LTC4266
47mWhat Every Driver Developer Should Know about RT
59mUnderstanding the Structure of a Linux Kernel Device Driver
