1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/rust/kernel
Danilo Krummrich bf9651f84b rust: pci: implement I/O mappable pci::Bar
Implement `pci::Bar`, `pci::Device::iomap_region` and
`pci::Device::iomap_region_sized` to allow for I/O mappings of PCI BARs.

To ensure that a `pci::Bar`, and hence the I/O memory mapping, can't
out-live the PCI device, the `pci::Bar` type is always embedded into a
`Devres` container, such that the `pci::Bar` is revoked once the device
is unbound and hence the I/O mapped memory is unmapped.

A `pci::Bar` can be requested with (`pci::Device::iomap_region_sized`) or
without (`pci::Device::iomap_region`) a const generic representing the
minimal requested size of the I/O mapped memory region. In case of the
latter only runtime checked I/O reads / writes are possible.

Co-developed-by: Philipp Stanner <pstanner@redhat.com>
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Tested-by: Dirk Behme <dirk.behme@de.bosch.com>
Link: https://lore.kernel.org/r/20241219170425.12036-11-dakr@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-20 17:19:26 +01:00
..
alloc rust: alloc: Fix ArrayLayout allocations 2024-11-25 00:11:07 +01:00
block block-6.13-20242901 2024-11-30 15:47:29 -08:00
fs rust: file: add FileDescriptorReservation 2024-09-30 13:02:29 +02:00
init rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00
list rust: enable arbitrary_self_types and remove Receiver 2024-10-07 21:39:57 +02:00
net Rust changes for v6.13 2024-11-26 14:00:26 -08:00
sync rust: add rcu abstraction 2024-12-20 17:19:26 +01:00
.gitignore rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
alloc.rs rust: alloc: update module comment of alloc.rs 2024-10-15 23:10:32 +02:00
block.rs rust: block: introduce kernel::block::mq module 2024-06-14 07:45:04 -06:00
build_assert.rs rust: upgrade to Rust 1.68.2 2023-05-31 17:35:03 +02:00
cred.rs rust: file: add Kuid wrapper 2024-09-30 13:02:29 +02:00
device.rs rust: add dev_* print macros. 2024-11-05 05:33:46 +01:00
device_id.rs rust: implement IdArray, IdTable and RawDeviceId 2024-12-20 17:19:25 +01:00
devres.rs rust: add devres abstraction 2024-12-20 17:19:26 +01:00
driver.rs rust: implement generic driver registration 2024-12-20 17:19:25 +01:00
error.rs rust: use custom FFI integer types 2024-11-10 23:58:00 +01:00
firmware.rs rust: device: change the from_raw() function 2024-10-03 13:54:48 +02:00
fs.rs rust: file: add Rust abstraction for struct file 2024-09-30 13:02:28 +02:00
generated_arch_static_branch_asm.rs.S rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
init.rs rust: use custom FFI integer types 2024-11-10 23:58:00 +01:00
io.rs rust: add io::{Io, IoRaw} base types 2024-12-20 17:19:26 +01:00
ioctl.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
jump_label.rs rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
kunit.rs rust: kunit: use C-string literals to clean warning 2024-10-01 23:46:42 +02:00
lib.rs rust: pci: add basic PCI device / driver abstractions 2024-12-20 17:19:26 +01:00
list.rs rust: enable clippy::undocumented_unsafe_blocks lint 2024-10-07 21:39:05 +02:00
miscdevice.rs rust: miscdevice: add fops->show_fdinfo() hook 2024-12-16 16:12:57 +01:00
net.rs rust: core abstractions for network PHY drivers 2023-12-15 09:35:50 +00:00
page.rs rust: page: add Rust version of PAGE_ALIGN 2024-10-21 20:34:46 +02:00
pci.rs rust: pci: implement I/O mappable pci::Bar 2024-12-20 17:19:26 +01:00
pid_namespace.rs rust: add PidNamespace 2024-10-08 15:44:36 +02:00
prelude.rs Char/Misc/IIO/Whatever driver subsystem updates for 6.13-rc1 2024-11-29 11:58:27 -08:00
print.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
rbtree.rs rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00
revocable.rs rust: add Revocable type 2024-12-20 17:19:26 +01:00
security.rs rust: security: add abstraction for secctx 2024-09-30 13:02:28 +02:00
seq_file.rs rust: add seqfile abstraction 2024-10-08 14:32:39 +02:00
sizes.rs rust: sizes: add commonly used constants 2024-08-30 10:27:34 +01:00
static_assert.rs rust: static_assert: add static_assert! macro 2022-12-04 01:59:16 +01:00
std_vendor.rs rust: std_vendor: update dbg macro from Rust upstream 2024-10-10 00:33:42 +02:00
str.rs rust: use custom FFI integer types 2024-11-10 23:58:00 +01:00
sync.rs rust: add rcu abstraction 2024-12-20 17:19:26 +01:00
task.rs rust: fix up formatting after merge 2024-11-26 17:54:58 -08:00
time.rs rust: use custom FFI integer types 2024-11-10 23:58:00 +01:00
tracepoint.rs rust: add tracepoint support 2024-11-04 16:21:44 -05:00
transmute.rs rust: kernel: move FromBytes and AsBytes traits to a new transmute module 2024-10-10 00:33:42 +02:00
types.rs rust: types: add Opaque::pin_init 2024-12-20 17:19:26 +01:00
uaccess.rs rust: use custom FFI integer types 2024-11-10 23:58:00 +01:00
workqueue.rs rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00