summaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorThierry Reding <thierry.reding@avionic-design.de>2013-02-13 16:08:33 +0100
committerThierry Reding <thierry.reding@avionic-design.de>2013-02-22 08:21:07 +0100
commit8cf1e9811471f2910fa38dc1b28e1789080ba961 (patch)
tree45b779f761fba928171b9d8a9c1928398737a5d5 /drivers/gpu
parentc976cb37a95a8dcaf23d04d6487fbacc33d3c913 (diff)
downloadop-kernel-dev-8cf1e9811471f2910fa38dc1b28e1789080ba961.zip
op-kernel-dev-8cf1e9811471f2910fa38dc1b28e1789080ba961.tar.gz
drm: Add consistency check for page-flipping
Driver implementations of the drm_crtc's .page_flip() function are required to update the crtc->fb field on success to reflect that the new framebuffer is now in use. This is important to keep reference counting on the framebuffers balanced. While at it, document this requirement to keep others from falling into the same trap. Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/drm_crtc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 781aef5..3bdf2a6 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -3792,6 +3792,13 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
/* Keep the old fb, don't unref it. */
old_fb = NULL;
} else {
+ /*
+ * Warn if the driver hasn't properly updated the crtc->fb
+ * field to reflect that the new framebuffer is now used.
+ * Failing to do so will screw with the reference counting
+ * on framebuffers.
+ */
+ WARN_ON(crtc->fb != fb);
/* Unref only the old framebuffer. */
fb = NULL;
}
OpenPOWER on IntegriCloud