[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
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.