[PATCH 2/3] rust: drm: gem: add an is_imported() accessor

From: Janne Grunau

Date: Mon Oct 26 2026 - 07:24:49 EST


From: Sami Tolvanen <samitolvanen@xxxxxxxxxx>

Drivers need to check whether a GEM object is PRIME-imported.

Add BaseObject::is_imported(), wrapping drm_gem_is_imported() through a
C helper shim.

Signed-off-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx>
Signed-off-by: Janne Grunau <j@xxxxxxxxxx>
---
rust/helpers/drm.c | 6 ++++++
rust/kernel/drm/gem/mod.rs | 7 +++++++
2 files changed, 13 insertions(+)

diff --git a/rust/helpers/drm.c b/rust/helpers/drm.c
index 65f3f22b0e1d..8cf3ca7aeeb2 100644
--- a/rust/helpers/drm.c
+++ b/rust/helpers/drm.c
@@ -16,6 +16,12 @@ __rust_helper void rust_helper_drm_gem_object_put(struct drm_gem_object *obj)
drm_gem_object_put(obj);
}

+__rust_helper bool
+rust_helper_drm_gem_is_imported(const struct drm_gem_object *obj)
+{
+ return drm_gem_is_imported(obj);
+}
+
__rust_helper __u64
rust_helper_drm_vma_node_offset_addr(struct drm_vma_offset_node *node)
{
diff --git a/rust/kernel/drm/gem/mod.rs b/rust/kernel/drm/gem/mod.rs
index e01b8311dd89..5da8627275a2 100644
--- a/rust/kernel/drm/gem/mod.rs
+++ b/rust/kernel/drm/gem/mod.rs
@@ -187,6 +187,13 @@ fn size(&self) -> usize {
unsafe { (*self.as_raw()).size }
}

+ /// Returns whether the object's backing buffer is imported from another
+ /// driver.
+ fn is_imported(&self) -> bool {
+ // SAFETY: `self.as_raw()` is guaranteed to be a pointer to a valid `struct drm_gem_object`.
+ unsafe { bindings::drm_gem_is_imported(self.as_raw()) }
+ }
+
/// Creates a new handle for the object associated with a given `File`
/// (or returns an existing one).
fn create_handle<D, F>(&self, file: &drm::File<F>) -> Result<u32>

--
2.56.0