Re: [PATCH v3 0/5] Rework PCI IRQ vector code
"Gary Guo" <[email protected]>
| Newsgroups | org.kernel.vger.rust-for-linux,dev.linux.lists.driver-core,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
On Thu Aug 13, 2026 at 5:52 PM BST, Danilo Krummrich wrote: > 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. Since index() borrows the registration, the returned > IrqVector inherits that lifetime, preventing the allocation from being dropped > while any handler is live. > > IrqVector embeds a resolved IrqRequest, making the conversion infallible. The > request_irq()/request_threaded_irq() wrappers on Device are removed since their > &self receiver could refer to an unrelated device. > > 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 > > Changes in v3: > - Rename s/count/len/, s/vector()/index()/, s/vector_count()/len()/. > - Remove redundant range check in index(). > - Add missing #[inline]. > > Changes in v2: > - Drop the IrqRequestAnchor approach and keep IrqVector as a new type over > IrqRequest. > > Danilo Krummrich (5): > rust: pci: convert IrqVectorRegistration to a lifetime-managed owning > type > rust: pci: resolve IRQ in index() and embed IrqRequest in IrqVector > rust: pci: remove request_irq() and request_threaded_irq() from Device > PCI: Add pci_irq_type() to query the allocated interrupt type For the series: Reviewed-by: Gary Guo <[email protected]> I think the duplicate irq alloc issue is still worth solving, but I agree that it should be a separate series. > rust: pci: expose the allocated interrupt type > > include/linux/pci.h | 25 +++++ > rust/helpers/pci.c | 5 + > rust/kernel/pci.rs | 3 +- > rust/kernel/pci/irq.rs | 220 ++++++++++++++++++----------------------- > 4 files changed, 128 insertions(+), 125 deletions(-) > > > base-commit: dbaafe9cc56a996931eedfe043eb34418cc9cd9b