Suggested-by: Thomas Zimmermann <tzimmerm...@suse.de>
Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
---
 drivers/gpu/drm/qxl/qxl_display.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/qxl/qxl_display.c 
b/drivers/gpu/drm/qxl/qxl_display.c
index 60331e31861a..d25fd3acc891 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -802,12 +802,14 @@ static int qxl_plane_prepare_fb(struct drm_plane *plane,
                }
                if (user_bo->shadow != qdev->dumb_shadow_bo) {
                        if (user_bo->shadow) {
+                               qxl_bo_unpin(user_bo->shadow);
                                drm_gem_object_put
                                        (&user_bo->shadow->tbo.base);
                                user_bo->shadow = NULL;
                        }
                        drm_gem_object_get(&qdev->dumb_shadow_bo->tbo.base);
                        user_bo->shadow = qdev->dumb_shadow_bo;
+                       qxl_bo_pin(user_bo->shadow);
                }
        }
 
@@ -833,6 +835,7 @@ static void qxl_plane_cleanup_fb(struct drm_plane *plane,
        qxl_bo_unpin(user_bo);
 
        if (old_state->fb != plane->state->fb && user_bo->shadow) {
+               qxl_bo_unpin(user_bo->shadow);
                drm_gem_object_put(&user_bo->shadow->tbo.base);
                user_bo->shadow = NULL;
        }
@@ -1230,6 +1233,7 @@ int qxl_modeset_init(struct qxl_device *qdev)
 void qxl_modeset_fini(struct qxl_device *qdev)
 {
        if (qdev->dumb_shadow_bo) {
+               qxl_bo_unpin(qdev->dumb_shadow_bo);
                drm_gem_object_put(&qdev->dumb_shadow_bo->tbo.base);
                qdev->dumb_shadow_bo = NULL;
        }
-- 
2.29.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to