[AMD Public Use] -----Original Message----- From: Chauhan, Madhav Sent: Tuesday, October 27, 2020 12:57 AM To: Koenig, Christian <Christian.Koenig@xxxxxxx>; dri-devel@xxxxxxxxxxxxxxxxxxxxx Cc: Huang, Ray <Ray.Huang@xxxxxxx> Subject: RE: [PATCH 01/13] drm/ttm: nuke ttm_tt_set_(un)populated again [AMD Public Use] -----Original Message----- From: Christian König <ckoenig.leichtzumerken@xxxxxxxxx> Sent: Monday, October 26, 2020 7:14 PM To: Chauhan, Madhav <Madhav.Chauhan@xxxxxxx>; dri-devel@xxxxxxxxxxxxxxxxxxxxx Cc: Huang, Ray <Ray.Huang@xxxxxxx> Subject: Re: [PATCH 01/13] drm/ttm: nuke ttm_tt_set_(un)populated again Am 26.10.20 um 14:36 schrieb Chauhan, Madhav: > [AMD Public Use] > > -----Original Message----- > From: Christian König <ckoenig.leichtzumerken@xxxxxxxxx> > Sent: Sunday, October 25, 2020 9:11 PM > To: Chauhan, Madhav <Madhav.Chauhan@xxxxxxx>; > dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: Huang, Ray <Ray.Huang@xxxxxxx> > Subject: [PATCH 01/13] drm/ttm: nuke ttm_tt_set_(un)populated again > > Neither page allocation backend nor the driver should mess with that. > > Looks fine to me: Reviewed-by: Madhav Chauhan <madhav.chauhan@xxxxxxx> Just for this patch or the series? Complete series looks good to me now. Series, Reviewed-by: Madhav Chauhan <madhav.chauhan@xxxxxxx> Will be doing MHT 3.0/3.1 offscreen/regression analysis to find the impact of this optimized allocator and update If found any issues. Tested this new allocator thoroughly with Raven Ridge APU, Navi 14 dGPU. Results: 1. No regression/BO allocation error observed while running LIBDRM testapps 2. MHT 3.0/3.1 1080P offscreen results are at par/similar with old allocator. Regards, Madhav Regards, Madhav Christian. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 -- > drivers/gpu/drm/nouveau/nouveau_bo.c | 1 - > drivers/gpu/drm/radeon/radeon_ttm.c | 2 -- > drivers/gpu/drm/ttm/ttm_page_alloc.c | 2 -- > drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 2 -- > drivers/gpu/drm/ttm/ttm_tt.c | 11 +++++++---- > include/drm/ttm/ttm_tt.h | 10 ---------- > 7 files changed, 7 insertions(+), 23 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > index 62f9194b1dd1..169468572930 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > @@ -1363,7 +1363,6 @@ static int amdgpu_ttm_tt_populate(struct ttm_bo_device *bdev, > return -ENOMEM; > > ttm->page_flags |= TTM_PAGE_FLAG_SG; > - ttm_tt_set_populated(ttm); > return 0; > } > > @@ -1383,7 +1382,6 @@ static int amdgpu_ttm_tt_populate(struct ttm_bo_device *bdev, > drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages, > gtt->ttm.dma_address, > ttm->num_pages); > - ttm_tt_set_populated(ttm); > return 0; > } > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c > b/drivers/gpu/drm/nouveau/nouveau_bo.c > index acff82afe260..06a1f4c4e96e 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > @@ -1321,7 +1321,6 @@ nouveau_ttm_tt_populate(struct ttm_bo_device *bdev, > /* make userspace faulting work */ > drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages, > ttm_dma->dma_address, ttm->num_pages); > - ttm_tt_set_populated(ttm); > return 0; > } > > diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c > b/drivers/gpu/drm/radeon/radeon_ttm.c > index 321c09d20c6c..75fa2f55186b 100644 > --- a/drivers/gpu/drm/radeon/radeon_ttm.c > +++ b/drivers/gpu/drm/radeon/radeon_ttm.c > @@ -670,14 +670,12 @@ static int radeon_ttm_tt_populate(struct ttm_bo_device *bdev, > return -ENOMEM; > > ttm->page_flags |= TTM_PAGE_FLAG_SG; > - ttm_tt_set_populated(ttm); > return 0; > } > > if (slave && ttm->sg) { > drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages, > gtt->ttm.dma_address, ttm->num_pages); > - ttm_tt_set_populated(ttm); > return 0; > } > > diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c > b/drivers/gpu/drm/ttm/ttm_page_alloc.c > index c8f6790962b9..04099dddce16 100644 > --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c > +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c > @@ -1041,7 +1041,6 @@ ttm_pool_unpopulate_helper(struct ttm_tt *ttm, unsigned mem_count_update) > put_pages: > ttm_put_pages(ttm->pages, ttm->num_pages, ttm->page_flags, > ttm->caching); > - ttm_tt_set_unpopulated(ttm); > } > > int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx) @@ -1080,7 +1079,6 @@ int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx) > } > } > > - ttm_tt_set_populated(ttm); > return 0; > } > EXPORT_SYMBOL(ttm_pool_populate); > diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > index 6625b43f6256..85dad69419f6 100644 > --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > @@ -983,7 +983,6 @@ int ttm_dma_populate(struct ttm_dma_tt *ttm_dma, struct device *dev, > } > } > > - ttm_tt_set_populated(ttm); > return 0; > } > EXPORT_SYMBOL_GPL(ttm_dma_populate); > @@ -1077,7 +1076,6 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev) > /* shrink pool if necessary (only on !is_cached pools)*/ > if (npages) > ttm_dma_page_pool_free(pool, npages, false); > - ttm_tt_set_unpopulated(ttm); > } > EXPORT_SYMBOL_GPL(ttm_dma_unpopulate); > > diff --git a/drivers/gpu/drm/ttm/ttm_tt.c > b/drivers/gpu/drm/ttm/ttm_tt.c index 3e5dd6271d4c..beb1e878fed9 100644 > --- a/drivers/gpu/drm/ttm/ttm_tt.c > +++ b/drivers/gpu/drm/ttm/ttm_tt.c > @@ -138,7 +138,6 @@ static void ttm_tt_init_fields(struct ttm_tt *ttm, > ttm->num_pages = bo->num_pages; > ttm->caching = ttm_cached; > ttm->page_flags = page_flags; > - ttm_tt_set_unpopulated(ttm); > ttm->swap_storage = NULL; > ttm->sg = bo->sg; > ttm->caching = caching; > @@ -334,9 +333,12 @@ int ttm_tt_populate(struct ttm_bo_device *bdev, > ret = bdev->driver->ttm_tt_populate(bdev, ttm, ctx); > else > ret = ttm_pool_populate(ttm, ctx); > - if (!ret) > - ttm_tt_add_mapping(bdev, ttm); > - return ret; > + if (ret) > + return ret; > + > + ttm_tt_add_mapping(bdev, ttm); > + ttm->page_flags |= TTM_PAGE_FLAG_PRIV_POPULATED; > + return 0; > } > EXPORT_SYMBOL(ttm_tt_populate); > > @@ -365,4 +367,5 @@ void ttm_tt_unpopulate(struct ttm_bo_device *bdev, > bdev->driver->ttm_tt_unpopulate(bdev, ttm); > else > ttm_pool_unpopulate(ttm); > + ttm->page_flags &= ~TTM_PAGE_FLAG_PRIV_POPULATED; > } > diff --git a/include/drm/ttm/ttm_tt.h b/include/drm/ttm/ttm_tt.h index > e042dec5e6c1..e3e60c1da754 100644 > --- a/include/drm/ttm/ttm_tt.h > +++ b/include/drm/ttm/ttm_tt.h > @@ -72,16 +72,6 @@ static inline bool ttm_tt_is_populated(struct ttm_tt *tt) > return tt->page_flags & TTM_PAGE_FLAG_PRIV_POPULATED; } > > -static inline void ttm_tt_set_unpopulated(struct ttm_tt *tt) -{ > - tt->page_flags &= ~TTM_PAGE_FLAG_PRIV_POPULATED; > -} > - > -static inline void ttm_tt_set_populated(struct ttm_tt *tt) -{ > - tt->page_flags |= TTM_PAGE_FLAG_PRIV_POPULATED; > -} > - > /** > * struct ttm_dma_tt > * > -- > 2.17.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel