* [PATCH v4 5/9] rust: gem: Introduce DriverObject::Args
[not found] <20251016210955.2813186-1-lyude@redhat.com>
@ 2025-10-16 21:08 ` Lyude Paul
2025-10-17 13:24 ` Alice Ryhl
0 siblings, 1 reply; 2+ messages in thread
From: Lyude Paul @ 2025-10-16 21:08 UTC (permalink / raw)
To: dri-devel, rust-for-linux, Daniel Almeida, Alice Ryhl
Cc: Danilo Krummrich, David Airlie, Simona Vetter, Miguel Ojeda,
Alex Gaynor, Boqun Feng, Gary Guo, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Trevor Gross, Asahi Lina,
Shankari Anand, open list:DRM DRIVER FOR NVIDIA GPUS [RUST],
open list
This is an associated type that may be used in order to specify a data-type
to pass to gem objects when construction them, allowing for drivers to more
easily initialize their private-data for gem objects.
Signed-off-by: Lyude Paul <lyude@redhat.com>
---
V3:
* s/BaseDriverObject/DriverObject/
V4:
* Fix leftover reference to BaseObjectDriver in rustdoc for
DriverObject::Args
Signed-off-by: Lyude Paul <lyude@redhat.com>
---
drivers/gpu/drm/nova/gem.rs | 5 +++--
rust/kernel/drm/gem/mod.rs | 13 ++++++++++---
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/nova/gem.rs b/drivers/gpu/drm/nova/gem.rs
index 2760ba4f3450b..173077eeb2def 100644
--- a/drivers/gpu/drm/nova/gem.rs
+++ b/drivers/gpu/drm/nova/gem.rs
@@ -18,8 +18,9 @@ pub(crate) struct NovaObject {}
impl gem::DriverObject for NovaObject {
type Driver = NovaDriver;
+ type Args = ();
- fn new(_dev: &NovaDevice, _size: usize) -> impl PinInit<Self, Error> {
+ fn new(_dev: &NovaDevice, _size: usize, _args: Self::Args) -> impl PinInit<Self, Error> {
try_pin_init!(NovaObject {})
}
}
@@ -33,7 +34,7 @@ pub(crate) fn new(dev: &NovaDevice, size: usize) -> Result<ARef<gem::Object<Self
return Err(EINVAL);
}
- gem::Object::new(dev, aligned_size)
+ gem::Object::new(dev, aligned_size, ())
}
/// Look up a GEM object handle for a `File` and return an `ObjectRef` for it.
diff --git a/rust/kernel/drm/gem/mod.rs b/rust/kernel/drm/gem/mod.rs
index 760fcd61da0b7..f271c9176bca5 100644
--- a/rust/kernel/drm/gem/mod.rs
+++ b/rust/kernel/drm/gem/mod.rs
@@ -64,8 +64,15 @@ pub trait DriverObject: Sync + Send + Sized {
/// Parent `Driver` for this object.
type Driver: drm::Driver;
+ /// The data type to use for passing arguments to [`DriverObject::new`].
+ type Args;
+
/// Create a new driver data object for a GEM object of a given size.
- fn new(dev: &drm::Device<Self::Driver>, size: usize) -> impl PinInit<Self, Error>;
+ fn new(
+ dev: &drm::Device<Self::Driver>,
+ size: usize,
+ args: Self::Args,
+ ) -> impl PinInit<Self, Error>;
/// Open a new handle to an existing object, associated with a File.
fn open(_obj: &<Self::Driver as drm::Driver>::Object, _file: &DriverFile<Self>) -> Result {
@@ -246,11 +253,11 @@ impl<T: DriverObject> Object<T> {
};
/// Create a new GEM object.
- pub fn new(dev: &drm::Device<T::Driver>, size: usize) -> Result<ARef<Self>> {
+ pub fn new(dev: &drm::Device<T::Driver>, size: usize, args: T::Args) -> Result<ARef<Self>> {
let obj: Pin<KBox<Self>> = KBox::pin_init(
try_pin_init!(Self {
obj: Opaque::new(bindings::drm_gem_object::default()),
- data <- T::new(dev, size),
+ data <- T::new(dev, size, args),
// INVARIANT: The drm subsystem guarantees that the `struct drm_device` will live
// as long as the GEM object lives.
dev: dev.into(),
--
2.51.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v4 5/9] rust: gem: Introduce DriverObject::Args
2025-10-16 21:08 ` [PATCH v4 5/9] rust: gem: Introduce DriverObject::Args Lyude Paul
@ 2025-10-17 13:24 ` Alice Ryhl
0 siblings, 0 replies; 2+ messages in thread
From: Alice Ryhl @ 2025-10-17 13:24 UTC (permalink / raw)
To: Lyude Paul
Cc: dri-devel, rust-for-linux, Daniel Almeida, Danilo Krummrich,
David Airlie, Simona Vetter, Miguel Ojeda, Alex Gaynor,
Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Trevor Gross, Asahi Lina, Shankari Anand,
open list:DRM DRIVER FOR NVIDIA GPUS [RUST], open list
On Thu, Oct 16, 2025 at 05:08:18PM -0400, Lyude Paul wrote:
> This is an associated type that may be used in order to specify a data-type
> to pass to gem objects when construction them, allowing for drivers to more
> easily initialize their private-data for gem objects.
>
> Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-10-17 13:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20251016210955.2813186-1-lyude@redhat.com>
2025-10-16 21:08 ` [PATCH v4 5/9] rust: gem: Introduce DriverObject::Args Lyude Paul
2025-10-17 13:24 ` Alice Ryhl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox