On Fri, Jan 08, 2021 at 10:43:34AM +0100, Thomas Zimmermann wrote:
> Damage handling in gm12u320 requires a short-term mapping of the source
> BO. Use drm_gem_shmem_vmap_local().
> 
> Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
> ---
>  drivers/gpu/drm/tiny/gm12u320.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index 33f65f4626e5..b0c6e350f2b3 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -265,11 +265,16 @@ static void gm12u320_copy_fb_to_blocks(struct 
> gm12u320_device *gm12u320)
>       y1 = gm12u320->fb_update.rect.y1;
>       y2 = gm12u320->fb_update.rect.y2;
>  
> -     ret = drm_gem_shmem_vmap(fb->obj[0], &map);
> +     ret = dma_resv_lock(fb->obj[0]->resv, NULL);
>       if (ret) {
> -             GM12U320_ERR("failed to vmap fb: %d\n", ret);
> +             GM12U320_ERR("failed to reserve fb: %d\n", ret);
>               goto put_fb;
>       }
> +     ret = drm_gem_shmem_vmap_local(fb->obj[0], &map);
> +     if (ret) {
> +             GM12U320_ERR("failed to vmap fb: %d\n", ret);
> +             goto unlock_resv;
> +     }
>       vaddr = map.vaddr; /* TODO: Use mapping abstraction properly */
>  
>       if (fb->obj[0]->import_attach) {
> @@ -321,8 +326,11 @@ static void gm12u320_copy_fb_to_blocks(struct 
> gm12u320_device *gm12u320)
>               if (ret)
>                       GM12U320_ERR("dma_buf_end_cpu_access err: %d\n", ret);
>       }
> +
> +unlock_resv:
> +     dma_resv_unlock(fb->obj[0]->resv);

Unlock before vunmap.
-Daniel

>  vunmap:
> -     drm_gem_shmem_vunmap(fb->obj[0], &map);
> +     drm_gem_shmem_vunmap_local(fb->obj[0], &map);
>  put_fb:
>       drm_framebuffer_put(fb);
>       gm12u320->fb_update.fb = NULL;
> -- 
> 2.29.2
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to