[PATCH 2/2] drm: clean up internally created framebuffer on CRTC disable
Gurchetan Singh
gurchetansingh at chromium.org
Thu Dec 7 03:01:59 UTC 2017
When a CRTC is disabled and we used an internally created framebuffer,
this patch disables the cursor plane and drops the reference that was
introduced when we called drm_internal_framebuffer_create.
Signed-off-by: Gurchetan Singh <gurchetansingh at chromium.org>
---
drivers/gpu/drm/drm_crtc.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index f0556e654116..d732cca4879f 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -101,12 +101,19 @@ EXPORT_SYMBOL(drm_crtc_from_index);
*/
int drm_crtc_force_disable(struct drm_crtc *crtc)
{
+ struct drm_framebuffer *fb;
struct drm_mode_set set = {
.crtc = crtc,
};
WARN_ON(drm_drv_uses_atomic_modeset(crtc->dev));
+ if (crtc->cursor && crtc->cursor->fb && crtc->cursor->fb->internal) {
+ fb = crtc->cursor->fb;
+ drm_plane_force_disable(crtc->cursor);
+ drm_framebuffer_unreference(fb);
+ }
+
return drm_mode_set_config_internal(&set);
}
EXPORT_SYMBOL(drm_crtc_force_disable);
--
2.13.5
More information about the dri-devel
mailing list