[Freedreno] [PATCH v5 1/8] drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done
Abhinav Kumar
quic_abhinavk at quicinc.com
Mon Aug 7 17:28:32 UTC 2023
On 8/2/2023 3:04 AM, Dmitry Baryshkov wrote:
> Since commit 1e7ac595fa46 ("drm/msm/dpu: pass irq to
> dpu_encoder_helper_wait_for_irq()") the
> dpu_encoder_phys_wb_wait_for_commit_done expects the IRQ index rather
> than the IRQ index in phys_enc->intr table, however writeback got the
> older invocation in place. This was unnoticed for several releases, but
> now it's time to fix it.
>
The reason it went unnoticed is because the IRQ index is used within
dpu_encoder_helper_wait_for_irq() only for cases when the interrupt did
not fire (in other words not the *working* or common cases). Its used
only for the trace in dpu_encoder_helper_wait_event_timeout(). So this
was not really breaking writeback as such because the encoder kickoff /
wait mechanism largely relies on the kickoff_cnt increment/decrement.
Nonetheless, the patch LGTM and works fine, hence
Reviewed-by: Abhinav Kumar <quic_abhinavk at quicinc.com>
> Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
> index a466ff70a4d6..78037a697633 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
> @@ -446,7 +446,8 @@ static int dpu_encoder_phys_wb_wait_for_commit_done(
> wait_info.atomic_cnt = &phys_enc->pending_kickoff_cnt;
> wait_info.timeout_ms = KICKOFF_TIMEOUT_MS;
>
> - ret = dpu_encoder_helper_wait_for_irq(phys_enc, INTR_IDX_WB_DONE,
> + ret = dpu_encoder_helper_wait_for_irq(phys_enc,
> + phys_enc->irq[INTR_IDX_WB_DONE],
> dpu_encoder_phys_wb_done_irq, &wait_info);
> if (ret == -ETIMEDOUT)
> _dpu_encoder_phys_wb_handle_wbdone_timeout(phys_enc);
More information about the Freedreno
mailing list