On 2015년 06월 17일 23:33, Gustavo Padovan wrote: > Hi Inki, > > 2015-06-17 Inki Dae <inki.dae@xxxxxxxxxxx>: > >> Hi Gustavo, >> >> On 2015년 06월 17일 05:35, Gustavo Padovan wrote: >>> HI Inki, >>> >>> 2015-06-15 Inki Dae <inki.dae@xxxxxxxxxxx>: >>> >>>> Hi Gustavo, >>>> >>>> On 2015년 06월 02일 00:04, Gustavo Padovan wrote: >>>>> From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> >>>>> >>>>> Hi, >>>>> >>>>> Here goes the full support for atomic modesetting on exynos. I've >>>>> split the patches in the various phases of atomic support. >>>>> >>>>> v2: fixes comments by Joonyoung >>>>> - remove unused var in patch 09 >>>>> - use ->disable instead of outdated ->dpms in hdmi code >>>>> - remove WARN_ON from crtc enable/disable >>>>> >>>>> v3: fixes comment by Joonyoung >>>>> - move the removal of drm_helper_disable_unused_functions() to >>>>> separated patch >>>>> >>>>> v4: add patches that remove unnecessary calls to disable_plane() >>>>> >>>>> v5: fixes NULL CRTC crash on planes updates (reported by Inki and Tobias) >>>>> >>>>> v6: rebase on latest exynos_drm_next >>>>> >>>>> v7: fix comments by Joonyoung >>>>> - fix two checkpatch errors >>>>> - remove extra crtc->commit() call >>>>> - check for null fb on exynos_check_plane() >>>>> >>>>> v8: fix comments by Joonyoung >>>>> - fix merge error >>>>> - move drm_crtc_vblank_get to the commit that introduces atomic pageflip >>>>> - remove .prepare() in the apropiated patch >>>>> - add a new patch to move exynos_drm_crtc_disable() >>>>> >>>>> v9: * fix comments by Joonyoung >>>>> - also remove encoder .prepare() >>>>> - do not shift exynos_update_plane() parameters >>>>> - remove unused .mode_set() and .mode_set_base() >>>>> * add specific exynos .atomic_commit() >>>>> * add split of exynos_crtc->ops->dpms() into enable() and disable() >>>>> * add other atomic clean ups >>>>> >>>>> v10: * fix comments by Joonyoung >>>>> - add more comments on exynos_atomic_commit() >>>>> - make exynos_crtc's .enable and .disable void >>>> >>>> I found out one issue that refresh rate gets low with display extension >>>> mode test. >>>> >>>> I tested it with two crtc drivers - vidi and fimd on Trats2 board. Here >>>> is how to test it, >>>> >>>> #echo 1 > /sys/devices/platform/exynos-drm-vidi/connection >>>> # modetest -M exynos -v -s 31@29:720x1280 -s 23@21:640x480 >>>> setting mode 720x1280-60Hz@XR24 on connectors 31, crtc 29 >>>> setting mode 640x480-75Hz@XR24 on connectors 23, crtc 21 >>>> freq: 20.00Hz >>>> freq: 20.00Hz >>>> >>>> As you can see, refresh rate is 20. >>>> >>>> Below is the result without atomic patch series, >>>> # modetest -M exynos -v -s 31@29:720x1280 -s 23@21:640x480 >>>> setting mode 720x1280-60Hz@XR24 on connectors 31, crtc 29 >>>> setting mode 640x480-75Hz@XR24 on connectors 23, crtc 21 >>>> freq: 60.18Hz >>>> freq: 49.09Hz >>>> >>>> I can see 60Hz for FIMD and 49Hz for vidi. >>> >>> I gave this a try and figured out that this might be a vidi specific >>> problem. If I try VIDI and FIMD I get the same results as you but with >>> Mixer and FIMD(the setup I actually use to test) everything works fine. >> >> Hm... Did Mixer and FIMD combination really work correctly with >> extension mode? > > Yes. > > collabora@singularity:~$ modetest -M exynos -s 31:1920x1080 -v -s > 25:1366x768 > setting mode 1920x1080-60Hz@XR24 on connectors 31, crtc 29 > setting mode 1366x768-60Hz@XR24 on connectors 25, crtc 23 > freq: 55.82Hz > freq: 55.38Hz > freq: 55.30Hz > freq: 55.38Hz > freq: 55.30Hz > freq: 55.38Hz > freq: 55.30Hz > freq: 55.38Hz > freq: 55.30Hz > freq: 55.38Hz > >> >>> So somehow my patches caused a regression on vidi that I'm still >>> ivestigating. >> >> I think this issue is because page flip operations are performed in >> atomic: if I see correctly, when page flip is requested by modetest, the >> call flow is as follows, >> >> drm_atomic_helper_page_flip >> drm_atomic_async_commit >> exynos_atomic_commit >> ... >> drm_atomic_helper_wait_for_vblanks >> ... >> >> However, the function, drm_atomic_helper_wait_for_vblanks called by >> exynos_atomic_commit, waits for the vblank completion of each crtc >> driver . See wait_event_timeout function call in >> drm_atomic_helper_wait_for_vblanks function. >> >> This means that a page flip request of a crtc driver cannot be performed >> until the vblank completion of another crtc driver. I think you should >> have implemented exynos_atomic_commit function asynchronously, not >> synchronously like you did. So it seems that this function should be >> re-implemented. > > I have a patch for it already. I'll resend a v2 of my last series. Can you post it now? Thanks, Inki Dae > >> >> If my analysis is correct and you cannot post the change set within this >> week, I'm not sure whether the atomic patch series should go to >> mainline. Anyway, I will decide it and have a pull-request at the end of >> this week at least. > > We have about 3 months to fix this, until v4.2 is out, not one week. And > it is working for FIMD and Mixer. > > Gustavo > -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html