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_abhin...@quicinc.com>

Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for 
writeback")
Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@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);

Reply via email to