]> www.infradead.org Git - users/jedix/linux-maple.git/commit
rust: drm: gem: Add GEM object abstraction
authorAsahi Lina <lina@asahilina.net>
Thu, 10 Apr 2025 23:55:26 +0000 (01:55 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Mon, 28 Apr 2025 08:08:23 +0000 (10:08 +0200)
commitc284d3e423382be3591d5b1e402e330e6c3f726c
tree965a13ac0a22001bf864e3512ce70467a2a560b1
parenta98a73be9ee9c42495690b2fe56e1ce27768289a
rust: drm: gem: Add GEM object abstraction

DRM GEM is the DRM memory management subsystem used by most modern
drivers; add a Rust abstraction for DRM GEM.

This includes the BaseObject trait, which contains operations shared by
all GEM object classes.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Link: https://lore.kernel.org/r/20250410235546.43736-8-dakr@kernel.org
[ Rework of GEM object abstractions
    * switch to the Opaque<T> type
    * fix (mutable) references to struct drm_gem_object (which in this
      context is UB)
    * drop all custom reference types in favor of AlwaysRefCounted
    * bunch of minor changes and simplifications (e.g. IntoGEMObject
      trait)
    * write and fix safety and invariant comments
    * remove necessity for and convert 'as' casts
    * original source archive: https://archive.is/dD5SL

  - Danilo ]
[ Fix missing CONFIG_DRM guards in rust/helpers/drm.c. - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
rust/bindings/bindings_helper.h
rust/helpers/drm.c [new file with mode: 0644]
rust/helpers/helpers.c
rust/kernel/drm/device.rs
rust/kernel/drm/driver.rs
rust/kernel/drm/gem/mod.rs [new file with mode: 0644]
rust/kernel/drm/mod.rs