I've added a check inside win_disable function (for both fimd/mixer) where we set the 'resume' flag to zero and return.
So the "drm/exynos: do not disable crtc if already off" patch is not required.
Regards,
Prathyush
On Fri, Dec 7, 2012 at 9:43 AM, Inki Dae <inki.dae@xxxxxxxxxxx> wrote:
2012/12/6 Prathyush K <prathyush.k@xxxxxxxxxxx>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.
And "drm/exynos: do not disable crtc if already off"? otherwise isn't there any problem without this patch?
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(-)
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel