Message ID | 20230802100426.4184892-2-dmitry.baryshkov@linaro.org |
---|---|
State | Accepted |
Commit | d93cf453f51da168f4410ba73656f1e862096973 |
Headers | show |
Series | [v5,1/8] drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done | expand |
On 2023-08-02 13:04:19, 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. > > Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback") > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Marijn Suijten <marijn.suijten@somainline.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); > -- > 2.39.2 >
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@quicinc.com> > Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback") > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@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);
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);
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. Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback") Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)