mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
rust: drm: gpuvm: add SmContext lifetime bound
If a DriverGpuVm implementation is lifetime-parameterized, its SmContext<'ctx> type may depend on lifetimes carried by that driver implementation. In this case, SmContext<'ctx> is only valid if the driver implementation outlives 'ctx. Add a Self: 'ctx bound to DriverGpuVm::SmContext<'ctx> to express that requirement. Then propagate the corresponding T: 'ctx bound to the GPUVM state machine helper types that store T::SmContext<'ctx>. This allows drivers to provide lifetime-parameterized implementations of DriverGpuVm. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Deborah Brouwer <deborah.brouwer@collabora.com> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Link: https://patch.msgid.link/20260610-gpuvm_smcontext_lifetime_bound_v1-v1-1-531e7d2ee7b4@collabora.com Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
committed by
Danilo Krummrich
parent
20003c1a1f
commit
5f7410aa26
@@ -264,7 +264,9 @@ pub trait DriverGpuVm: Sized + Send {
|
||||
type VmBoData;
|
||||
|
||||
/// The private data passed to callbacks.
|
||||
type SmContext<'ctx>;
|
||||
type SmContext<'ctx>
|
||||
where
|
||||
Self: 'ctx;
|
||||
|
||||
/// Indicates that a new mapping should be created.
|
||||
fn sm_step_map<'op, 'ctx>(
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use super::*;
|
||||
|
||||
/// The actual data that gets threaded through the callbacks.
|
||||
struct SmData<'a, 'ctx, T: DriverGpuVm> {
|
||||
struct SmData<'a, 'ctx, T: DriverGpuVm + 'ctx> {
|
||||
gpuvm: &'a mut UniqueRefGpuVm<T>,
|
||||
user_context: &'a mut T::SmContext<'ctx>,
|
||||
}
|
||||
@@ -20,7 +20,7 @@ struct SmMapData<'a, 'ctx, T: DriverGpuVm> {
|
||||
}
|
||||
|
||||
/// The argument for [`UniqueRefGpuVm::sm_map`].
|
||||
pub struct OpMapRequest<'a, 'ctx, T: DriverGpuVm> {
|
||||
pub struct OpMapRequest<'a, 'ctx, T: DriverGpuVm + 'ctx> {
|
||||
/// Address in GPU virtual address space.
|
||||
pub addr: u64,
|
||||
/// Length of mapping to create.
|
||||
|
||||
Reference in New Issue
Block a user