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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.