mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 03:11:11 -04:00
rust: drm: dispatch delayed work items to the private data
Much like the patch that dispatched (regular) work items, we also need to dispatch delayed work items in order not to trigger the orphan rule. This allows a drm::Device<T> to dispatch the delayed work to T::Data. Reviewed-by: Alice Ryhl <aliceryhl@google.com> Acked-by: Danilo Krummrich <dakr@kernel.org> Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com> Link: https://lore.kernel.org/r/20260323-aref-workitem-v3-4-f59729b812aa@collabora.com Signed-off-by: Alice Ryhl <aliceryhl@google.com>
This commit is contained in:
committed by
Alice Ryhl
parent
332666484f
commit
206bada308
@@ -19,6 +19,7 @@
|
||||
},
|
||||
types::Opaque,
|
||||
workqueue::{
|
||||
HasDelayedWork,
|
||||
HasWork,
|
||||
Work,
|
||||
WorkItem, //
|
||||
@@ -291,3 +292,15 @@ unsafe fn work_container_of(ptr: *mut Work<Device<T>, ID>) -> *mut Self {
|
||||
unsafe { crate::container_of!(data_ptr, Self, data) }
|
||||
}
|
||||
}
|
||||
|
||||
// SAFETY: Our `HasWork<T, ID>` implementation returns a `work_struct` that is
|
||||
// stored in the `work` field of a `delayed_work` with the same access rules as
|
||||
// the `work_struct` owing to the bound on `T::Data: HasDelayedWork<Device<T>,
|
||||
// ID>`, which requires that `T::Data::raw_get_work` return a `work_struct` that
|
||||
// is inside a `delayed_work`.
|
||||
unsafe impl<T, const ID: u64> HasDelayedWork<Device<T>, ID> for Device<T>
|
||||
where
|
||||
T: drm::Driver,
|
||||
T::Data: HasDelayedWork<Device<T>, ID>,
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user