On Wed, Jul 17, 2024 at 04:53:16PM +0200, Christian König wrote:
> Am 16.07.24 um 23:53 schrieb Matthew Brost:
> > On Tue, Jul 16, 2024 at 02:35:11PM +0200, Christian König wrote:
> > > Instead of a TTM reference grab a GEM reference whenever necessary.
> > > 
> > > Signed-off-by: Christian König <christian.koe...@amd.com>
> > > ---
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    | 8 ++++----
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 7 ++-----
> > >   2 files changed, 6 insertions(+), 9 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c 
> > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> > > index 67c234bcf89f..6be3d7cd1c51 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> > > @@ -87,11 +87,11 @@ static const struct vm_operations_struct 
> > > amdgpu_gem_vm_ops = {
> > >   static void amdgpu_gem_object_free(struct drm_gem_object *gobj)
> > >   {
> > > - struct amdgpu_bo *robj = gem_to_amdgpu_bo(gobj);
> > > + struct amdgpu_bo *aobj = gem_to_amdgpu_bo(gobj);
> > > - if (robj) {
> > > -         amdgpu_hmm_unregister(robj);
> > > -         amdgpu_bo_unref(&robj);
> > > + if (aobj) {
> > > +         amdgpu_hmm_unregister(aobj);
> > > +         ttm_bo_put(&aobj->tbo);
> > So, this relates to my comment in patch number #9 about dropping the TTM
> > ref count. If TTM only uses the GEM ref count, could we convert this
> > ttm_bo_put to something like ttm_bo_fini here (also in Xe and any other
> > drivers with code like this)?
> 
> That's exactly what I was planning to do as a follow up.
> 

Cool, glad we are aligned.

Matt

> Regards,
> Christian.
> 
> > 
> > I think that might be cleaner.
> > 
> > Matt
> > 
> > >           }
> > >   }
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
> > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> > > index 8d8c39be6129..6c187e310034 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> > > @@ -853,7 +853,7 @@ struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo)
> > >           if (bo == NULL)
> > >                   return NULL;
> > > - ttm_bo_get(&bo->tbo);
> > > + drm_gem_object_get(&bo->tbo.base);
> > >           return bo;
> > >   }
> > > @@ -865,13 +865,10 @@ struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo 
> > > *bo)
> > >    */
> > >   void amdgpu_bo_unref(struct amdgpu_bo **bo)
> > >   {
> > > - struct ttm_buffer_object *tbo;
> > > -
> > >           if ((*bo) == NULL)
> > >                   return;
> > > - tbo = &((*bo)->tbo);
> > > - ttm_bo_put(tbo);
> > > + drm_gem_object_get(&(*bo)->tbo.base);
> > >           *bo = NULL;
> > >   }
> > > -- 
> > > 2.34.1
> > > 
> 

Reply via email to