Message ID | 20200724115611.15375-1-christian.koenig@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/ttm: fix pipelined gutting for evictions v2 | expand |
Am 2020-07-24 um 7:56 a.m. schrieb Christian König: > We can't pipeline that during eviction because the memory needs > to be available immediately. > > v2: fix how we cleanup the BOs resources > > Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> It would be good to get a Tested-by from Alex as well. Thanks, Felix > --- > drivers/gpu/drm/ttm/ttm_bo.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c > index 0768a054a916..469aa93ea317 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo.c > +++ b/drivers/gpu/drm/ttm/ttm_bo.c > @@ -652,8 +652,12 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, > placement.num_busy_placement = 0; > bdev->driver->evict_flags(bo, &placement); > > - if (!placement.num_placement && !placement.num_busy_placement) > - return ttm_bo_pipeline_gutting(bo); > + if (!placement.num_placement && !placement.num_busy_placement) { > + ttm_bo_wait(bo, false, false); > + > + ttm_bo_cleanup_memtype_use(bo); > + return 0; > + } > > evict_mem = bo->mem; > evict_mem.mm_node = NULL;
On 7/24/2020 10:01 AM, Felix Kuehling wrote: > Am 2020-07-24 um 7:56 a.m. schrieb Christian König: >> We can't pipeline that during eviction because the memory needs >> to be available immediately. >> >> v2: fix how we cleanup the BOs resources >> >> Signed-off-by: Christian König <christian.koenig@amd.com> > Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> > > It would be good to get a Tested-by from Alex as well. > > Thanks, > Felix Tested-by: Alex Sierra <alex.sierra@amd.com> Regards, Alex Sierra > >> --- >> drivers/gpu/drm/ttm/ttm_bo.c | 8 ++++++-- >> 1 file changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c >> index 0768a054a916..469aa93ea317 100644 >> --- a/drivers/gpu/drm/ttm/ttm_bo.c >> +++ b/drivers/gpu/drm/ttm/ttm_bo.c >> @@ -652,8 +652,12 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, >> placement.num_busy_placement = 0; >> bdev->driver->evict_flags(bo, &placement); >> >> - if (!placement.num_placement && !placement.num_busy_placement) >> - return ttm_bo_pipeline_gutting(bo); >> + if (!placement.num_placement && !placement.num_busy_placement) { >> + ttm_bo_wait(bo, false, false); >> + >> + ttm_bo_cleanup_memtype_use(bo); >> + return 0; >> + } >> >> evict_mem = bo->mem; >> evict_mem.mm_node = NULL;
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 0768a054a916..469aa93ea317 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -652,8 +652,12 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, placement.num_busy_placement = 0; bdev->driver->evict_flags(bo, &placement); - if (!placement.num_placement && !placement.num_busy_placement) - return ttm_bo_pipeline_gutting(bo); + if (!placement.num_placement && !placement.num_busy_placement) { + ttm_bo_wait(bo, false, false); + + ttm_bo_cleanup_memtype_use(bo); + return 0; + } evict_mem = bo->mem; evict_mem.mm_node = NULL;
We can't pipeline that during eviction because the memory needs to be available immediately. v2: fix how we cleanup the BOs resources Signed-off-by: Christian König <christian.koenig@amd.com> --- drivers/gpu/drm/ttm/ttm_bo.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)