[PATCH 0/5] Rework PCI IRQ vector code
Danilo Krummrich <[email protected]>
| Newsgroups | dev.linux.lists.driver-core,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.rust-for-linux |
|---|---|
| Message-ID | <[email protected]> |
This series reworks the Rust PCI interrupt vector abstractions, motivated by review feedback on the nova-core interrupt support series [1]. Convert IrqVectorRegistration to a lifetime-managed owning type, replacing the devres-based approach. Add an anchor generic on IrqRequest and irq::Registration to create a borrow chain that prevents the vector allocation from being dropped while any IRQ handler is still registered. Remove IrqVector; resolve a vector index to an IrqRequest directly via IrqVectorRegistration::request(). Add pci_irq_type() as a C function in include/linux/pci.h, replacing open-coded checks across drivers [2], and wrap it for Rust. [1] https://lore.kernel.org/all/[email protected]/ [2] https://elixir.bootlin.com/linux/v7.1/source/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c#L196 Danilo Krummrich (5): rust: irq: add anchor generic to IrqRequest and Registration rust: pci: convert IrqVectorRegistration to a lifetime-managed owning type rust: pci: remove IrqVector and resolve IrqRequest directly PCI: add pci_irq_type() to query the allocated interrupt type rust: pci: expose the allocated interrupt type include/linux/pci.h | 25 +++++ rust/helpers/pci.c | 5 + rust/kernel/irq.rs | 10 +- rust/kernel/irq/request.rs | 86 +++++++++++---- rust/kernel/pci.rs | 2 +- rust/kernel/pci/irq.rs | 213 ++++++++++++++----------------------- 6 files changed, 182 insertions(+), 159 deletions(-) base-commit: dbaafe9cc56a996931eedfe043eb34418cc9cd9b -- 2.55.0