All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] Revert "drm/core: Preserve the fb id on close."
@ 2015-10-02 11:40 Vincent Abriou
  2015-10-02 11:40 ` [PATCH 2/2] Revert "drm/core: Preserve the framebuffer after removing it." Vincent Abriou
  2015-10-02 11:49 ` [PATCH 1/2] Revert "drm/core: Preserve the fb id on close." David Herrmann
  0 siblings, 2 replies; 4+ messages in thread
From: Vincent Abriou @ 2015-10-02 11:40 UTC (permalink / raw)
  To: dri-devel
  Cc: Daniel Vetter, Fabien Dessenne, Benjamin Gaignard, Vincent Abriou

This reverts commit 73f7570bc6c853ca1fad24f9d31815b20e405354.

This patch need to be revert because it breaks middlewares way of working.
As example, modetest and weston, only relies on drmModeRmFB to close
CRTC or planes.
Keeping this patch will induce weird behavior like a plane displayed
with modetest will be visible on weston and vice-versa.

We can overcome this by updating the middleware (successfully tested
with modetest) to force them to disable CRTC and plane using
drmModeSetCrtc or drmModeSetPlane.
But it is a long to way and for short term, it is not acceptable to break
ABI.


Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: David Herrmann <dh.herrmann@gmail.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Vincent Abriou <vincent.abriou@st.com>
---
 drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e600a5f..626b0a5 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -3320,6 +3320,9 @@ int drm_mode_rmfb(struct drm_device *dev,
 	if (!found)
 		goto fail_lookup;
 
+	/* Mark fb as reaped, we still have a ref from fpriv->fbs. */
+	__drm_framebuffer_unregister(dev, fb);
+
 	list_del_init(&fb->filp_head);
 	mutex_unlock(&dev->mode_config.fb_lock);
 	mutex_unlock(&file_priv->fbs_lock);
@@ -3491,6 +3494,7 @@ out_err1:
  */
 void drm_fb_release(struct drm_file *priv)
 {
+	struct drm_device *dev = priv->minor->dev;
 	struct drm_framebuffer *fb, *tfb;
 
 	/*
@@ -3504,9 +3508,15 @@ void drm_fb_release(struct drm_file *priv)
 	 * at it any more.
 	 */
 	list_for_each_entry_safe(fb, tfb, &priv->fbs, filp_head) {
+
+		mutex_lock(&dev->mode_config.fb_lock);
+		/* Mark fb as reaped, we still have a ref from fpriv->fbs. */
+		__drm_framebuffer_unregister(dev, fb);
+		mutex_unlock(&dev->mode_config.fb_lock);
+
 		list_del_init(&fb->filp_head);
 
-		/* This drops the fpriv->fbs reference. */
+		/* This will also drop the fpriv->fbs reference. */
 		drm_framebuffer_unreference(fb);
 	}
 }
-- 
1.9.1

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

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-02 12:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-02 11:40 [PATCH 1/2] Revert "drm/core: Preserve the fb id on close." Vincent Abriou
2015-10-02 11:40 ` [PATCH 2/2] Revert "drm/core: Preserve the framebuffer after removing it." Vincent Abriou
2015-10-02 11:49 ` [PATCH 1/2] Revert "drm/core: Preserve the fb id on close." David Herrmann
2015-10-02 12:35   ` Vincent ABRIOU

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.