[PATCH] drm/amdgpu: Only clear dumb buffers if ring is enabled

Christian König ckoenig.leichtzumerken at gmail.com
Mon Mar 11 18:40:06 UTC 2019


Am 11.03.19 um 19:16 schrieb Nicholas Kazlauskas:
> The buffers should be cleared when possible but we also don't want
> buffer creation to fail in the rare case where the ring isn't ready
> during the call. This could happen during some suspend/resume sequences.
>
> Cc: Christian König <ckoenig.leichtzumerken at gmail.com>
> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 13 ++++++++++---
>   1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index a58072bbc9b8..9ee8d7a3c6d4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -733,18 +733,25 @@ int amdgpu_mode_dumb_create(struct drm_file *file_priv,
>   	struct amdgpu_device *adev = dev->dev_private;
>   	struct drm_gem_object *gobj;
>   	uint32_t handle;
> +	u64 flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
>   	u32 domain;
>   	int r;
>   
> +	/*
> +	 * The buffer returned from this function should be cleared, but
> +	 * it can only be done if the ring is enabled or we'll fail to
> +	 * create the buffer.
> +	 */
> +	if (adev->mman.buffer_funcs_enabled)
> +		flags |= AMDGPU_GEM_CREATE_VRAM_CLEARED;
> +
>   	args->pitch = amdgpu_align_pitch(adev, args->width,
>   					 DIV_ROUND_UP(args->bpp, 8), 0);
>   	args->size = (u64)args->pitch * args->height;
>   	args->size = ALIGN(args->size, PAGE_SIZE);
>   	domain = amdgpu_bo_get_preferred_pin_domain(adev,
>   				amdgpu_display_supported_domains(adev));
> -	r = amdgpu_gem_object_create(adev, args->size, 0, domain,
> -				     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> -				     AMDGPU_GEM_CREATE_VRAM_CLEARED,
> +	r = amdgpu_gem_object_create(adev, args->size, 0, domain, flags,
>   				     ttm_bo_type_device, NULL, &gobj);
>   	if (r)
>   		return -ENOMEM;



More information about the amd-gfx mailing list