Patch "drm/msm/dpu: Increment vsync_cnt before waking up userspace" has been added to the 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/msm/dpu: Increment vsync_cnt before waking up userspace

to the 5.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-msm-dpu-increment-vsync_cnt-before-waking-up-use.patch
and it can be found in the queue-5.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit eb277ec2910d2463b9c2e3a5e73761f059f0735b
Author: Stephen Boyd <swboyd@xxxxxxxxxxxx>
Date:   Tue Jun 21 19:38:55 2022 -0700

    drm/msm/dpu: Increment vsync_cnt before waking up userspace
    
    [ Upstream commit c28d76d360f9f7af1f910342bde27939873bc45e ]
    
    The 'vsync_cnt' is used to count the number of frames for a crtc.
    Unfortunately, we increment the count after waking up userspace via
    dpu_crtc_vblank_callback() calling drm_crtc_handle_vblank().
    drm_crtc_handle_vblank() wakes up userspace processes that have called
    drm_wait_vblank_ioctl(), and if that ioctl is expecting the count to
    increase it won't.
    
    Increment the count before calling into the drm APIs so that we don't
    have to worry about ordering the increment with anything else in drm.
    This fixes a software video decode test that fails to see frame counts
    increase on Trogdor boards.
    
    Cc: Mark Yacoub <markyacoub@xxxxxxxxxxxx>
    Cc: Jessica Zhang <quic_jesszhan@xxxxxxxxxxx>
    Fixes: 885455d6bf82 ("drm/msm: Change dpu_crtc_get_vblank_counter to use vsync count.")
    Signed-off-by: Stephen Boyd <swboyd@xxxxxxxxxxxx>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
    Tested-by: Jessica Zhang <quic_jesszhan@xxxxxxxxxxx> # Trogdor (sc7180)
    Patchwork: https://patchwork.freedesktop.org/patch/490531/
    Link: https://lore.kernel.org/r/20220622023855.2970913-1-swboyd@xxxxxxxxxxxx
    Signed-off-by: Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 3940b9c6323b..fffd2ef897a0 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -1187,12 +1187,13 @@ static void dpu_encoder_vblank_callback(struct drm_encoder *drm_enc,
 	DPU_ATRACE_BEGIN("encoder_vblank_callback");
 	dpu_enc = to_dpu_encoder_virt(drm_enc);
 
+	atomic_inc(&phy_enc->vsync_cnt);
+
 	spin_lock_irqsave(&dpu_enc->enc_spinlock, lock_flags);
 	if (dpu_enc->crtc)
 		dpu_crtc_vblank_callback(dpu_enc->crtc);
 	spin_unlock_irqrestore(&dpu_enc->enc_spinlock, lock_flags);
 
-	atomic_inc(&phy_enc->vsync_cnt);
 	DPU_ATRACE_END("encoder_vblank_callback");
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux