lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 199/329] drm/imx: move arming of the vblank event to atomic_flush
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Lucas Stach <l.stach@pengutronix.de>

    [ Upstream commit 6a055b92de15af987b4027826d43aa103c65a3c4 ]

    Right now the vblank event completion is racing with the atomic update,
    which is especially bad when the PRE is in use, as one of the hardware
    issue workaround might extend the atomic commit for quite some time.

    If the vblank IRQ happens to trigger during that time, we will prematurely
    signal the atomic commit completion to userspace, which causes tearing
    when userspace re-uses a framebuffer we haven't managed to flip away from
    yet.

    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/gpu/drm/imx/ipuv3-crtc.c | 5 +++++
    1 file changed, 5 insertions(+)

    --- a/drivers/gpu/drm/imx/ipuv3-crtc.c
    +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c
    @@ -189,7 +189,11 @@ static void ipu_crtc_atomic_begin(struct
    struct drm_crtc_state *old_crtc_state)
    {
    drm_crtc_vblank_on(crtc);
    +}

    +static void ipu_crtc_atomic_flush(struct drm_crtc *crtc,
    + struct drm_crtc_state *old_crtc_state)
    +{
    spin_lock_irq(&crtc->dev->event_lock);
    if (crtc->state->event) {
    WARN_ON(drm_crtc_vblank_get(crtc));
    @@ -257,6 +261,7 @@ static const struct drm_crtc_helper_func
    .mode_set_nofb = ipu_crtc_mode_set_nofb,
    .atomic_check = ipu_crtc_atomic_check,
    .atomic_begin = ipu_crtc_atomic_begin,
    + .atomic_flush = ipu_crtc_atomic_flush,
    .atomic_disable = ipu_crtc_atomic_disable,
    .enable = ipu_crtc_enable,
    };

    \
     
     \ /
      Last update: 2018-05-28 16:21    [W:4.442 / U:0.392 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site