drm/msm/mdp4: page_flip cleanups/fixes
authorRob Clark <robdclark@gmail.com>
Tue, 29 Oct 2013 16:05:20 +0000 (12:05 -0400)
committerRob Clark <robdclark@gmail.com>
Fri, 1 Nov 2013 16:39:45 +0000 (12:39 -0400)
commit2a2b8fa628a5069db1cc984d21a3048ffd485346
treebe51f04a9f18b69288277bd2b47faf57c85cffab
parent505886d50633385f57e8e2b14fbb636cecb50297
drm/msm/mdp4: page_flip cleanups/fixes

There were a few potential problems with the original page_flip/vblank
code in mdp4_crtc.

1) We need vblank irq for a couple things, both completing flips and
   updating cursor.  We need to keep track of what work is pending so
   that (for example) a cursor update while we are still waiting for
   pageflip_cb (ie. pageflip requested from userspace, but still
   waiting for rendering to complete) would not prematurely trigger
   event to userspace.

2) A preclose -> pageflip-cancel should not cancel a pageflip that
   was requested on a different file (ie. non-master closing should
   not cancel a pending pageflip).

With these fixes, we no longer have problems w/ cursor not updating and
with occasional hangs with userspace waiting for a pageflip that had
been cancelled (launching XBMC from gnome-shell overview mode was a good
way to trigger this, but now works reliably).

Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/mdp4/mdp4_crtc.c
drivers/gpu/drm/msm/mdp4/mdp4_kms.c
drivers/gpu/drm/msm/mdp4/mdp4_kms.h