mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 15:22:21 -04:00
rust: drm: gpuvm: update DriverGpuVm for DeviceContext
Since the introduction of DeviceContext, there is no longer a single
driver object type to equate with the GPUVM object type.
Instead of threading DeviceContext through GPUVM, remove the strict
identity between DriverGpuVm::Object and drm::Driver::Object and
instead tighten the requirement that the DriverGpuVm::Object be an
allocatable GEM object associated with the same DRM driver.
Also, make GpuVm::new() generic over DeviceContext so it can accept a
drm::Device<T::Driver, Ctx>.
Fixes: 0023a1e8d0 ("rust/drm/gem: Use DeviceContext with GEM objects")
Signed-off-by: Deborah Brouwer <deborah.brouwer@collabora.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Link: https://patch.msgid.link/20260610-gpuvm_device_context_v1-v1-1-01a890b17448@collabora.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
committed by
Danilo Krummrich
parent
d055768429
commit
20003c1a1f
@@ -116,9 +116,9 @@ const fn vtable() -> &'static bindings::drm_gpuvm_ops {
|
||||
|
||||
/// Creates a GPUVM instance.
|
||||
#[expect(clippy::new_ret_no_self)]
|
||||
pub fn new<E>(
|
||||
pub fn new<E, Ctx: drm::DeviceContext>(
|
||||
name: &'static CStr,
|
||||
dev: &drm::Device<T::Driver>,
|
||||
dev: &drm::Device<T::Driver, Ctx>,
|
||||
r_obj: &T::Object,
|
||||
range: Range<u64>,
|
||||
reserve_range: Range<u64>,
|
||||
@@ -252,10 +252,10 @@ fn raw_resv(&self) -> *mut bindings::dma_resv {
|
||||
/// The manager for a GPUVM.
|
||||
pub trait DriverGpuVm: Sized + Send {
|
||||
/// Parent `Driver` for this object.
|
||||
type Driver: drm::Driver<Object = Self::Object>;
|
||||
type Driver: drm::Driver;
|
||||
|
||||
/// The kind of GEM object stored in this GPUVM.
|
||||
type Object: IntoGEMObject;
|
||||
type Object: drm::driver::AllocImpl<Driver = Self::Driver>;
|
||||
|
||||
/// Data stored with each [`struct drm_gpuva`](struct@GpuVa).
|
||||
type VaData;
|
||||
|
||||
Reference in New Issue
Block a user