]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rust: pci: make Bar lifetime-parameterized
authorDanilo Krummrich <dakr@kernel.org>
Mon, 25 May 2026 20:21:05 +0000 (22:21 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Wed, 27 May 2026 14:24:23 +0000 (16:24 +0200)
commit8ea0b6d5bef5e4f4637964c3b2cf732d9bf4f408
treefc6897833b283d0646ebc91e0a40fedce025f566
parentd31a349a7fd88c4cc7ba85bce6491c398408997a
rust: pci: make Bar lifetime-parameterized

Convert pci::Bar<SIZE> to pci::Bar<'a, SIZE>, storing &'a Device<Bound>
to tie the BAR mapping lifetime to the device.

iomap_region_sized() now returns Result<Bar<'a, SIZE>> directly instead
of impl PinInit<Devres<Bar<SIZE>>, Error>.

Since the lifetime ties the mapping to the device's bound state, callers
no longer need Devres for the common case where the Bar lives in the
driver's private data.

Add Bar::into_devres() to consume the bar and register it as a
device-managed resource, returning Devres<Bar<'static, SIZE>>. The
lifetime is erased to 'static because Devres guarantees the bar does not
actually outlive the device -- access is revoked on unbind.

Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260525202921.124698-19-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/gpu/nova-core/driver.rs
rust/kernel/devres.rs
rust/kernel/pci/io.rs
samples/rust/rust_driver_pci.rs