This is taken care inside fimd and mixer with the clearing windows in dpms off patch itself.
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 at samsung.com> wrote: > > > 2012/12/6 Prathyush K <prathyush.k at samsung.com> > >> 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 at lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/dri-devel >> > > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20121207/42b711a5/attachment.html>