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
