On Mon, Feb 23, 2026 at 11:44:12AM +0100, Danilo Krummrich wrote:
> On Mon Feb 23, 2026 at 10:15 AM CET, Alice Ryhl wrote:
> > On Sat, Feb 21, 2026 at 04:09:41PM +0100, Danilo Krummrich wrote:
> >> On Sat Feb 21, 2026 at 9:46 AM CET, Alice Ryhl wrote:
> >> > So, should we get rid of GpuVmBoRegistered in favor of ARef<GpuVm<T>>?
> >> 
> >> I wanted to avoid exposing the reference count, as I suspect drivers might 
> >> not
> >> need it in Rust, but I don't know for sure.
> >> 
> >> We could also define it as GpuVmBo<T>(ARef<GpuVmBoInner<T>>), where
> >> GpuVmBoInner<T> is private, but I also don't want you to go back and forth 
> >> with
> >> this in case it turns out we do need drivers to be able to take a reference
> >> count and I also don't think it hurts too much exposing the reference 
> >> count,
> >> even if not needed.
> >> 
> >> So, either is fine with me, ARef<GpuVmBo<T>> or
> >> GpuVmBo<T>(ARef<GpuVmBoInner<T>>).
> >
> > I don't think GpuVmBo<T>(ARef<GpuVmBoInner<T>>) works because we need to
> > be able to talk about both ARef<GpuVmBoInner<T>> and &GpuVmBoInner<T>.
> > The reference type is returned by several different APIs, so the Inner
> > type can't be private.
> 
> I meant NonNull<GpuVmBoInner<T>>, analogous to the current GpuVmBoRegistered.

Not sure what you mean.

Ultimately there is GpuVmBo<T> which is just an Opaque wrapper. Around
that, we need two pointer types: &_ and owned. The owned one can be
ARef<_>, or it can be a custom pointer type like the patch has right
now. Or maybe it could be Owned<_>, but it's honestly not a great match
as it's not really unique.

Alice

Reply via email to