diff options
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_plane.c')
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_plane.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index ead5c53d4e21..024c2aa0c929 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c | |||
@@ -130,11 +130,12 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane, | |||
130 | plane->state->src_h >> 16, | 130 | plane->state->src_h >> 16, |
131 | plane->state->src_x >> 16, | 131 | plane->state->src_x >> 16, |
132 | plane->state->src_y >> 16); | 132 | plane->state->src_y >> 16); |
133 | virtio_gpu_cmd_resource_flush(vgdev, handle, | 133 | if (handle) |
134 | plane->state->src_x >> 16, | 134 | virtio_gpu_cmd_resource_flush(vgdev, handle, |
135 | plane->state->src_y >> 16, | 135 | plane->state->src_x >> 16, |
136 | plane->state->src_w >> 16, | 136 | plane->state->src_y >> 16, |
137 | plane->state->src_h >> 16); | 137 | plane->state->src_w >> 16, |
138 | plane->state->src_h >> 16); | ||
138 | } | 139 | } |
139 | 140 | ||
140 | static int virtio_gpu_cursor_prepare_fb(struct drm_plane *plane, | 141 | static int virtio_gpu_cursor_prepare_fb(struct drm_plane *plane, |
@@ -168,8 +169,10 @@ static void virtio_gpu_cursor_cleanup_fb(struct drm_plane *plane, | |||
168 | return; | 169 | return; |
169 | 170 | ||
170 | vgfb = to_virtio_gpu_framebuffer(plane->state->fb); | 171 | vgfb = to_virtio_gpu_framebuffer(plane->state->fb); |
171 | if (vgfb->fence) | 172 | if (vgfb->fence) { |
172 | virtio_gpu_fence_cleanup(vgfb->fence); | 173 | dma_fence_put(&vgfb->fence->f); |
174 | vgfb->fence = NULL; | ||
175 | } | ||
173 | } | 176 | } |
174 | 177 | ||
175 | static void virtio_gpu_cursor_plane_update(struct drm_plane *plane, | 178 | static void virtio_gpu_cursor_plane_update(struct drm_plane *plane, |