[PATCH v6 03/14] drm/msm/dpu: switch RM to use crtc_id rather than enc_id for allocation

Jessica Zhang quic_jesszhan at quicinc.com
Mon Mar 3 18:45:19 UTC 2025



On 2/27/2025 7:07 AM, Dmitry Baryshkov wrote:
> On Fri, Feb 14, 2025 at 04:14:26PM -0800, Jessica Zhang wrote:
>> From: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
>>
>> Up to now the driver has been using encoder to allocate hardware
>> resources. Switch it to use CRTC id in preparation for the next step.
>>
>> Reviewed-by: Abhinav Kumar <quic_abhinavk at quicinc.com>
>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
>> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
>> Signed-off-by: Jessica Zhang <quic_jesszhan at quicinc.com>
>> ---
>> Changes in v6:
>> - Drop duplicate cstate initialization code and unnecessary memset
>> Changes in v5:
>> - Reordered to prevent breaking CI and upon partial application
>>
>> Changes in v4 (due to rebase):
>> - moved *_get_assigned_resources() changes for DSPP and LM from
>>    encoder *_virt_atomic_mode_set() to *_assign_crtc_resources()
>> ---
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c    |  18 +--
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c |  10 +-
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h     |  12 +-
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c      | 189 ++++++++++++++--------------
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h      |   7 +-
>>   5 files changed, 110 insertions(+), 126 deletions(-)
> 
> This commit breaks several tests in CI:
> - sc7180-trogdor-kingoftown:
>    - kms_cursor_crc at cursor-dpms
>    - kms_pipe_crc_basic at disable-crc-after-crtc
> - sc7180-trogdor-lazor-limozeen
>    - kms_cursor_crc at cursor-dpms
>    - kms_pipe_crc_basic at disable-crc-after-crtc

Hey Dmitry,

Thanks for catching this. Looks like this was exposed due to a recent 
IGT uprev that included  dc2d7fb4f978 ("lib/igt_kms: move setting 
DRM_CLIENT_CAP_WRITEBACK_CONNECTORS to kms_writeback").

The issue itself is that when DPMS is toggled, it is possible for RM to 
reserve new HW resources but skip the atomic_enable() due to the checks 
here [1]. This means that the change in HW block reservation won't be 
propagated to encoder if DPMS is set to off.

I've posted a fix for this here [2].

Thanks,

Jessica Zhang

[1] 
https://elixir.bootlin.com/linux/v6.14-rc4/source/drivers/gpu/drm/drm_atomic_helper.c#L1502
[2] https://patchwork.freedesktop.org/series/145735/

> 
> Corresponding pipeline is available at [1]
> 
> As I had to rebase your changes on top of msm-next, corresponding tree
> is available at [2]. It might be possible that the regression is
> introduced by my rebase.
> 
> [1] https://gitlab.freedesktop.org/drm/msm/-/pipelines/1374165
> 
> [2] https://gitlab.freedesktop.org/lumag/msm/-/commits/msm-next-lumag-cwb
> 
> -- 
> With best wishes
> Dmitry



More information about the dri-devel mailing list