[PATCH 4/9] drm/amdgpu: Don't force BOs into visible VRAM if they can go to GTT instead

Christian König deathsimple at vodafone.de
Sat Jun 24 18:09:56 UTC 2017


Am 23.06.2017 um 19:39 schrieb John Brooks:
> amdgpu_ttm_placement_init() callers that are using both VRAM and GTT as
> domains usually don't want visible VRAM as a busy placement.
>
> Signed-off-by: John Brooks <john at fastquake.com>

NAK to this as well. Some callers of amdgpu_ttm_placement_init() have 
hard placement limitations that BOs *MUST* be in VRAM (VM page tables 
and old UVD hardware).

So changing that here will just break those under memory pressure.

Regards,
Christian.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 751bc05..0ff555a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -138,7 +138,15 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev,
>   		if (flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)
>   			places[c].flags |= TTM_PL_FLAG_CONTIGUOUS;
>   
> -		busy_places[bc++] = places[c++];
> +		/* Don't set limited visible VRAM as a busy placement if we can
> +		 * use GTT instead
> +		 */
> +		if (!((flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) &&
> +		      adev->mc.visible_vram_size < adev->mc.real_vram_size &&
> +		      (domain & AMDGPU_GEM_DOMAIN_GTT)))
> +			busy_places[bc++] = places[c];
> +
> +		c++;
>   	}
>   
>   	if (domain & AMDGPU_GEM_DOMAIN_GTT) {




More information about the amd-gfx mailing list