Skip to content

Commit b14caff

Browse files
committed
fixup! rust: drm: Add GPUVM Manager abstraction
1 parent 80de0b4 commit b14caff

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

rust/kernel/drm/gpuvm.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ use crate::{
2323
types::{ARef, AlwaysRefCounted, Opaque},
2424
};
2525

26-
use crate::drm::gem::BaseDriverObject;
27-
use crate::drm::gem::IntoGEMObject;
2826
use core::cell::UnsafeCell;
2927
use core::marker::{PhantomData, PhantomPinned};
3028
use core::mem::ManuallyDrop;
@@ -140,6 +138,9 @@ impl<T: Default> DriverGpuVmBo for T {
140138
}
141139
}
142140

141+
/// A convenience type for the driver's GEM object.
142+
type Object<T> = <<T as DriverGpuVm>::Driver as drm::driver::Driver>::Object;
143+
143144
#[repr(transparent)]
144145
pub struct OpMap<T: DriverGpuVm>(bindings::drm_gpuva_op_map, PhantomData<T>);
145146
#[repr(transparent)]
@@ -160,9 +161,9 @@ impl<T: DriverGpuVm> OpMap<T> {
160161
pub fn flags(&self) -> GpuVaFlags {
161162
GpuVaFlags(self.0.flags)
162163
}
163-
pub fn object(&self) -> &<<T::Driver as drm::Driver>::Object as BaseDriverObject>::Object {
164+
pub fn object(&self) -> &Object<T> {
164165
let p = unsafe {
165-
<<<T::Driver as drm::Driver>::Object as BaseDriverObject>::Object as IntoGEMObject>::from_raw(self.0.gem.obj)
166+
<Object::<T> as IntoGEMObject>::from_raw(self.0.gem.obj)
166167
};
167168
// SAFETY: The GEM object has an active reference for the lifetime of this op
168169
&*p
@@ -495,7 +496,7 @@ impl<T: DriverGpuVm> GpuVm<T> {
495496
name: &'static CStr,
496497
flags: bindings::drm_gpuvm_flags,
497498
dev: &device::Device<T::Driver>,
498-
r_obj: ARef<<<T::Driver as drm::Driver>::Object as BaseDriverObject>::Object>,
499+
r_obj: ARef<Object<T>>,
499500
range: Range<u64>,
500501
reserve_range: Range<u64>,
501502
inner: impl PinInit<T, E>,
@@ -548,7 +549,7 @@ impl<T: DriverGpuVm> GpuVm<T> {
548549

549550
pub fn exec_lock<'a, 'b>(
550551
&'a self,
551-
obj: Option<&'b <<T::Driver as drm::Driver>::Object as BaseDriverObject>::Object>,
552+
obj: Option<&'b Object<T>>,
552553
interruptible: bool,
553554
) -> Result<LockedGpuVm<'a, 'b, T>> {
554555
// Do not try to lock the object if it is internal (since it is already locked).
@@ -672,7 +673,7 @@ unsafe impl<T: DriverGpuVm> AlwaysRefCounted for GpuVm<T> {
672673
pub struct LockedGpuVm<'a, 'b, T: DriverGpuVm> {
673674
gpuvm: &'a GpuVm<T>,
674675
vm_exec: KBox<bindings::drm_gpuvm_exec>,
675-
obj: Option<&'b <<T::Driver as drm::Driver>::Object as BaseDriverObject>::Object>,
676+
obj: Option<&'b Object<T>>,
676677
}
677678

678679
impl<T: DriverGpuVm> LockedGpuVm<'_, '_, T> {

0 commit comments

Comments
 (0)