Rob Clark f7eff60ea0 drm: refcnt drm_framebuffer (v4.1)
This simplifies drm fb lifetime, and if the crtc/plane needs to hold
a ref to the fb when disabling a pipe until the next vblank, this
avoids the need to make disabling an overlay synchronous.  This is a
problem that shows up when userspace is using a drm plane to
implement a hw cursor.. making overlay disable synchronous causes
a performance problem when x11 is rapidly enabling/disabling the
hw cursor.  But not making it synchronous opens up a race condition
for crashing if userspace turns around and immediately deletes the
fb.  Refcnt'ing the fb makes it possible to solve this problem.

v1: original
v2: add drm_framebuffer_remove() which is called in all paths where
    fb->funcs->destroy() was directly called before.  This cleans
    up the CRTCs/planes that the fb was attached to.  You should
    only directly use drm_framebuffer_unreference() if you are also
    using drm_framebuffer_reference() to keep a ref to the fb.
v3: add comment explaining the fb refcount
v4: remove duplicate 'list_del(&fb->filp_head)'

[airlied: v4.1: fix local rejection]

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-10-02 22:15:39 +10:00
..
2010-08-10 08:20:20 +10:00
2012-10-02 22:15:39 +10:00
2012-04-27 09:29:35 +01:00
2012-09-24 18:17:12 +02:00
2012-05-31 17:49:26 -07:00
2012-08-24 09:38:40 +10:00
2011-02-07 13:09:42 +10:00
2012-03-10 13:06:04 +00:00
2012-09-26 09:24:36 +02:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2012-07-19 22:51:58 -04:00