Re: [PATCH v2 0/5] Rework PCI IRQ vector code
John Hubbard <[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]> |
On 8/11/26 4:39 PM, 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 vector() 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 v2: > - Drop the IrqRequestAnchor approach and keep IrqVector as a new type over > IrqRequest. > I've integrated this version into my work-in-progress v2 patchset for interrupt support for nova[1], and it still passes tests on some real GPU hardware. For example: $ dmesg -t | grep -B1 'interrupt self-test' nova-core 0000:c1:00.0: NVIDIA (Chipset: TU117, Architecture: Turing, Revision: a.1) nova-core 0000:c1:00.0: interrupt self-test: starting on vector 129, subtree 2, with Msi nova-core 0000:c1:00.0: interrupt self-test: passed, subtree 2, 2 deliveries -- nova-core 0000:c2:00.0: NVIDIA (Chipset: GB202, Architecture: BlackwellGB20x, Revision: a.1) nova-core 0000:c2:00.0: interrupt self-test: starting on vector 129, subtree 2, with Msi nova-core 0000:c2:00.0: interrupt self-test: passed, subtree 2, 2 deliveries -- nova-core 0000:01:00.0: NVIDIA (Chipset: GA104, Architecture: Ampere, Revision: a.1) nova-core 0000:01:00.0: interrupt self-test: starting on vector 129, subtree 2, with Msi nova-core 0000:01:00.0: interrupt self-test: passed, subtree 2, 2 deliveries So for the series, please feel free to add: Tested-by: John Hubbard <[email protected]> [1] https://github.com/johnhubbard/linux/tree/nova-core-gin-interrupt-tree-v2 thanks, -- John Hubbard