[PATCH v2 0/7] drm/exynos: modify wait_for_vblank and clear windows in dpms off

Prathyush K prathyush.k at samsung.com
Thu Dec 6 06:45:59 PST 2012


This patchset fixes the various issues which result in getting a PAGE FAULT
while using fimd and hdmi in exynos drm.

Changelog v2:
Seperated patches into drm framework and fimd/mixer patches.
Not using patch drm/exynos: do not disable crtc if already off
Added two new patches for clearing windows during dpms off

Patch 1: make wait_for_vblank a manager op
Patch 2: move hdmi's wait_for_vblank to manager_ops
Patch 3: move fimd wait_for_vblank to manager_ops
Currently, we do not call wait for vblank if encoder is in DPMS_OFF
state inside exynos_drm_encoder_complete_scanout function. This is
because wait for vblank is treated as an overlay op. This can be
modified to a manager_op thus removing the above check for DPMS_OFF.
This ensures that the hardware overlay actually gets disabled while
removing the current framebuffer.

Patch 4: modify wait_for_vblank of mixer
Patch 5: modify wait_for_vblank of fimd
This modifies the wait_for_vblank functions to use wait queues
thus ensuring that the current task goes to sleep without taking
up CPU while waiting. Also, if crtc is off, then it returns
without waiting.

Patch 6: clear windows in mixer dpms off
Patch 7: clear windows in fimd dpms off
When a crtc is turned off, we disable the clocks which will stop
the dma. Now if we remove the current framebuffer, we cannot
disable the overlay but the current framebuffer will still be freed.
When fimd/mixer resumes, the dma will continue from where it left off
and will throw a PAGE FAULT since the memory was freed.
This can be fixed by disabling the windows before disabling the clocks.
We should also keep track of which windows were active. This is done by setting
the resume flag in the window properties.
Now if a current fb is removed when the crtc is off, win_disable
will set the 'resume' flag of that window to zero and return.
So when fimd/mixer resumes, that window will not be resumed.

Prathyush K (7):
  drm/exynos: make wait_for_vblank a manager op
  drm/exynos: move hdmi's wait_for_vblank to manager_ops
  drm/exynos: move fimd wait_for_vblank to manager_ops
  drm/exynos: modify wait_for_vblank of mixer
  drm/exynos: modify wait_for_vblank of fimd
  drm/exynos: clear windows in mixer dpms off
  drm/exynos: clear windows in fimd dpms off

 drivers/gpu/drm/exynos/exynos_drm_drv.h     |    6 +-
 drivers/gpu/drm/exynos/exynos_drm_encoder.c |   15 +--
 drivers/gpu/drm/exynos/exynos_drm_fimd.c    |   81 ++++++++--
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c    |   22 ++--
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h    |    2 +-
 drivers/gpu/drm/exynos/exynos_mixer.c       |  240 +++++++++++++++++----------
 6 files changed, 239 insertions(+), 127 deletions(-)



More information about the dri-devel mailing list