[PATCH 5/5] drm/amdgpu: Don't force BOs into visible VRAM for page faults
Michel Dänzer
michel at daenzer.net
Thu Jun 29 02:30:36 UTC 2017
On 28/06/17 11:33 AM, John Brooks wrote:
> There is no need for page faults to force BOs into visible VRAM if it's
> full, and the time it takes to do so is great enough to cause noticeable
> stuttering. Add GTT as a possible placement so that if visible VRAM is
> full, page faults move BOs to GTT instead of evicting other BOs from VRAM.
>
> Signed-off-by: John Brooks <john at fastquake.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 658d7b1..a215d8c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -968,19 +968,21 @@ int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
> /* hurrah the memory is not visible ! */
> atomic64_inc(&adev->num_vram_cpu_page_faults);
> abo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
> - amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM);
> + amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM |
> + AMDGPU_GEM_DOMAIN_GTT);
> +
> + /* Avoid costly evictions; only set GTT as a busy placement */
> + abo->placement.num_busy_placement = 1;
> + abo->placement.busy_placement = &abo->placements[1];
>
> r = ttm_bo_validate(bo, &abo->placement, false, false);
> - if (unlikely(r == -ENOMEM)) {
> - amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT);
> - return ttm_bo_validate(bo, &abo->placement, false, false);
> - } else if (unlikely(r != 0)) {
> + if (unlikely(r != 0))
> return r;
> - }
>
> offset = bo->mem.start << PAGE_SHIFT;
> /* this should never happen */
> - if ((offset + size) > adev->mc.visible_vram_size)
> + if (bo->mem.mem_type == TTM_PL_VRAM &&
> + (offset + size) > adev->mc.visible_vram_size)
> return -EINVAL;
>
> return 0;
>
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the dri-devel
mailing list