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-d...@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