[PATCH 0/8] DRM Rust abstractions
Danilo Krummrich
dakr at kernel.org
Tue Mar 25 23:54:27 UTC 2025
This is the series for the initial DRM Rust abstractions, including DRM device /
driver, IOCTL, File and GEM object abstractions.
This series has been posted previously, however this is a long time ago and I
reworked a lot of things quite heavily. Hence, I decided to post this as a whole
new series.
Besides the rework, I want to credit Lina for her initial work, which this
series is based on.
In a private mail Lina told me to "feel free to take anything that's useful
from my past patch submissions or the downstream branches and use it/submit it
in any way".
@Lina: If you, however, feel uncomfortable with any of the Co-developed-by:
tags, due to the major changes, please let me know.
Those changes include:
- switch to the subclassing pattern for DRM device
- rework of the GEM object abstraction; dropping the custom reference types in
favor of AlwaysRefCounted
- rework of the File abstractions
- rework of the driver registration
- lots of minor changes (e.g. to better align with existing abstractions)
This patch series is also available in [1]; an example usage from nova-drm can
be found in [2] and [3].
[1] https://gitlab.freedesktop.org/drm/misc/kernel/-/tree/topic/rust-drm
[2] https://lore.kernel.org/nouveau/20250325232222.5326-1-dakr@kernel.org/
[3] https://gitlab.freedesktop.org/drm/nova/-/tree/staging/nova-drm
Asahi Lina (1):
rust: drm: ioctl: Add DRM ioctl abstraction
Danilo Krummrich (7):
drm: drv: implement __drm_dev_alloc()
rust: drm: add driver abstractions
rust: drm: add device abstraction
rust: drm: add DRM driver registration
rust: drm: file: Add File abstraction
rust: drm: gem: Add GEM object abstraction
MAINTAINERS: add DRM Rust source files to DRM DRIVERS
MAINTAINERS | 1 +
drivers/gpu/drm/drm_drv.c | 58 ++++--
include/drm/drm_drv.h | 5 +
rust/bindings/bindings_helper.h | 6 +
rust/helpers/drm.c | 19 ++
rust/helpers/helpers.c | 1 +
rust/kernel/drm/device.rs | 195 +++++++++++++++++++
rust/kernel/drm/driver.rs | 194 +++++++++++++++++++
rust/kernel/drm/file.rs | 99 ++++++++++
rust/kernel/drm/gem/mod.rs | 321 ++++++++++++++++++++++++++++++++
rust/kernel/drm/ioctl.rs | 159 ++++++++++++++++
rust/kernel/drm/mod.rs | 19 ++
rust/kernel/lib.rs | 2 +
rust/uapi/uapi_helper.h | 1 +
14 files changed, 1064 insertions(+), 16 deletions(-)
create mode 100644 rust/helpers/drm.c
create mode 100644 rust/kernel/drm/device.rs
create mode 100644 rust/kernel/drm/driver.rs
create mode 100644 rust/kernel/drm/file.rs
create mode 100644 rust/kernel/drm/gem/mod.rs
create mode 100644 rust/kernel/drm/ioctl.rs
create mode 100644 rust/kernel/drm/mod.rs
--
2.49.0
More information about the dri-devel
mailing list