From: Sami Tolvanen <[email protected]> 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 <[email protected]> Signed-off-by: Janne Grunau <[email protected]> --- 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
