[PATCH] drm/vram-helper: Fix use of top-down placement

Christian König christian.koenig at amd.com
Mon Sep 21 14:39:08 UTC 2020


Am 21.09.20 um 16:25 schrieb Thomas Zimmermann:
> Commit 7053e0eab473 ("drm/vram-helper: stop using TTM placement flags")
> cleared the BO placement flags if top-down placement had been selected.
> Hence, BOs that were supposed to go into VRAM are now placed in a default
> location in system memory.
>
> Trying to scanout the incorrectly pinned BO results in displayed garbage
> and an error message.
>
> [  146.108127] ------------[ cut here ]------------
> [  146.1V08180] WARNING: CPU: 0 PID: 152 at drivers/gpu/drm/drm_gem_vram_helper.c:284 drm_gem_vram_offset+0x59/0x60 [drm_vram_helper]
> ...
> [  146.108591]  ast_cursor_page_flip+0x3e/0x150 [ast]
> [  146.108622]  ast_cursor_plane_helper_atomic_update+0x8a/0xc0 [ast]
> [  146.108654]  drm_atomic_helper_commit_planes+0x197/0x4c0
> [  146.108699]  drm_atomic_helper_commit_tail_rpm+0x59/0xa0
> [  146.108718]  commit_tail+0x103/0x1c0
> ...
> [  146.109302] ---[ end trace d901a1ba1d949036 ]---
>
> Fix the bug by keeping the placement flags. The top-down placement flag
> is stored in a separate variable.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Fixes: 7053e0eab473 ("drm/vram-helper: stop using TTM placement flags")
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Dave Airlie <airlied at redhat.com>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Maxime Ripard <mripard at kernel.org>
> Cc: Thomas Zimmermann <tzimmermann at suse.de>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Cc: dri-devel at lists.freedesktop.org

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

It's always the stupid typos, thanks for narrowing this down.

And please keep an eye open I have quite a number of more patches in the 
pipeline.

Thanks,
Christian.

> ---
>   drivers/gpu/drm/drm_gem_vram_helper.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c
> index 50cad0e4a92e..375c79e23ca5 100644
> --- a/drivers/gpu/drm/drm_gem_vram_helper.c
> +++ b/drivers/gpu/drm/drm_gem_vram_helper.c
> @@ -140,7 +140,7 @@ static void drm_gem_vram_placement(struct drm_gem_vram_object *gbo,
>   	unsigned int c = 0;
>   
>   	if (pl_flag & DRM_GEM_VRAM_PL_FLAG_TOPDOWN)
> -		pl_flag = TTM_PL_FLAG_TOPDOWN;
> +		invariant_flags = TTM_PL_FLAG_TOPDOWN;
>   
>   	gbo->placement.placement = gbo->placements;
>   	gbo->placement.busy_placement = gbo->placements;



More information about the dri-devel mailing list