Loading drivers/gpu/drm/msm/sde/sde_encoder_phys_cmd.c +17 −1 Original line number Diff line number Diff line Loading @@ -1180,9 +1180,25 @@ static int _sde_encoder_phys_cmd_wait_for_ctl_start( else ret = 0; if (sde_encoder_phys_cmd_is_master(phys_enc)) if (sde_encoder_phys_cmd_is_master(phys_enc)) { /* * Signaling the retire fence at ctl start timeout * to allow the next commit and avoid device freeze. * As ctl start timeout can occurs due to no read ptr, * updating pending_rd_ptr_cnt here may not cover all * cases. Hence signaling the retire fence. */ if (atomic_add_unless( &phys_enc->pending_retire_fence_cnt, -1, 0)) phys_enc->parent_ops.handle_frame_done( phys_enc->parent, phys_enc, SDE_ENCODER_FRAME_EVENT_SIGNAL_RETIRE_FENCE); atomic_add_unless( &phys_enc->pending_ctlstart_cnt, -1, 0); atomic_inc_return(&phys_enc->ctlstart_timeout); } } return ret; } Loading Loading
drivers/gpu/drm/msm/sde/sde_encoder_phys_cmd.c +17 −1 Original line number Diff line number Diff line Loading @@ -1180,9 +1180,25 @@ static int _sde_encoder_phys_cmd_wait_for_ctl_start( else ret = 0; if (sde_encoder_phys_cmd_is_master(phys_enc)) if (sde_encoder_phys_cmd_is_master(phys_enc)) { /* * Signaling the retire fence at ctl start timeout * to allow the next commit and avoid device freeze. * As ctl start timeout can occurs due to no read ptr, * updating pending_rd_ptr_cnt here may not cover all * cases. Hence signaling the retire fence. */ if (atomic_add_unless( &phys_enc->pending_retire_fence_cnt, -1, 0)) phys_enc->parent_ops.handle_frame_done( phys_enc->parent, phys_enc, SDE_ENCODER_FRAME_EVENT_SIGNAL_RETIRE_FENCE); atomic_add_unless( &phys_enc->pending_ctlstart_cnt, -1, 0); atomic_inc_return(&phys_enc->ctlstart_timeout); } } return ret; } Loading