On 1/12/2026 3:48 PM, Dmitry Baryshkov wrote:
On Mon, Jan 12, 2026 at 03:25:05PM +0800, Xilin Wu wrote:
On 1/12/2026 11:11 AM, Dmitry Baryshkov wrote:
From: Jessica Zhang <[email protected]>

LM block doesn't have a hardware buffer (unlike PINGPONG and DSC
encoders). As such, don't use ephemeral max_mixer_width and
MAX_HDISPLAY_SPLIT to validate requested modes. Instead use PP and DSC
buffer widths.

While on the DPU 8.x+ supports a max linewidth of 8960 for PINGPONG_0,
there is some additional logic that needs to be added to the resource
manager to specifically try and reserve PINGPONG_0 for modes that are
greater than 5k.

Signed-off-by: Jessica Zhang <[email protected]>
Tested-by: Xilin Wu <[email protected]> # qcs6490-radxa-dragon-q6a
[DB: reworked to drop catalog changes, updated commit message]
Signed-off-by: Dmitry Baryshkov <[email protected]>

Sorry for the late reply, my colleagues are still testing the new series on
qcs6490.

However, this completely breaks 4K 120Hz display on SC8280XP CRD, which was
previously functional (albeit with the clock check bypassed [1]). The
display now shows a solid blue screen. Kernel logs indicate that only one
layer mixer is being used, instead of the two that were used previously.

Could you please post debugfs/dri/0/state and debugfs/dri/0/debug/core_perf/*?


Sure, this is when the display is working:

$ cat /sys/kernel/debug/dri/ae01000.display-controller/state
plane[36]: plane-0
        crtc=crtc-0
        fb=89
                allocated by = kwin_wayland
                refcount=2
                format=AR30 little-endian (0x30335241)
                modifier=0x500000000000001
                size=3840x2160
                layers:
                        size[0]=3840x2160
                        pitch[0]=15360
                        offset[0]=0
                        obj[0]:
                                name=0
                                refcount=5
                                start=00105bee
                                size=33554432
                                imported=no
        crtc-pos=3840x2160+0+0
        src-pos=3840.000000x2160.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=1
        sspp[0]=sspp_8
        multirect_mode[0]=parallel
        multirect_index[0]=rect_0
        src[0]=1920x2160+0+0
        dst[0]=1920x2160+0+0
        sspp[1]=sspp_8
        multirect_mode[1]=parallel
        multirect_index[1]=rect_1
        src[1]=1920x2160+1920+0
        dst[1]=1920x2160+1920+0
plane[42]: plane-1
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[48]: plane-2
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[54]: plane-3
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[60]: plane-4
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[66]: plane-5
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[72]: plane-6
        crtc=crtc-0
        fb=93
                allocated by = kwin_wayland
                refcount=2
                format=AB24 little-endian (0x34324241)
                modifier=0x500000000000001
                size=512x512
                layers:
                        size[0]=512x512
                        pitch[0]=2048
                        offset[0]=0
                        obj[0]:
                                name=0
                                refcount=5
                                start=0010f8ca
                                size=1310720
                                imported=no
        crtc-pos=512x512+1913+1073
        src-pos=512.000000x512.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=1
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=2
        sspp[0]=sspp_9
        multirect_mode[0]=none
        multirect_index[0]=solo
        src[0]=512x512+0+0
        dst[0]=512x512+1913+1073
plane[78]: plane-7
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
crtc[84]: crtc-0
        enable=1
        active=1
        self_refresh_active=0
        planes_changed=1
        mode_changed=0
        active_changed=0
        connectors_changed=0
        color_mgmt_changed=0
        plane_mask=41
        connector_mask=1
        encoder_mask=1
mode: "3840x2160": 120 1188000 3840 4016 4104 4400 2160 2168 2178 2250 0x40 0x5
        lm[0]=0
        ctl[0]=0
        lm[1]=1
        ctl[1]=0
connector[34]: DP-1
        crtc=crtc-0
        self_refresh_aware=0
        interlace_allowed=0
        ycbcr_420_allowed=1
        max_requested_bpc=0
        colorspace=Default
resource mapping:
        pingpong=84 84 # # # # - - - - - - -
        mixer=84 84 # # # # - -
        ctl=84 # # # # #
        dspp=# # # #
        dsc=# # # # # # - -
        cdm=#
        sspp=# # # # - - - - 84 84 # # - - - -
        cwb=- - - -


And this is when this series is applied:

$ cat /sys/kernel/debug/dri/ae01000.display-controller/state
plane[36]: plane-0
        crtc=crtc-0
        fb=89
                allocated by = kwin_wayland
                refcount=2
                format=AR30 little-endian (0x30335241)
                modifier=0x500000000000001
                size=3840x2160
                layers:
                        size[0]=3840x2160
                        pitch[0]=15360
                        offset[0]=0
                        obj[0]:
                                name=0
                                refcount=5
                                start=00105bee
                                size=33554432
                                imported=no
        crtc-pos=3840x2160+0+0
        src-pos=3840.000000x2160.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=1
        sspp[0]=sspp_8
        multirect_mode[0]=parallel
        multirect_index[0]=rect_0
        src[0]=1920x2160+0+0
        dst[0]=1920x2160+0+0
        sspp[1]=sspp_8
        multirect_mode[1]=parallel
        multirect_index[1]=rect_1
        src[1]=1920x2160+1920+0
        dst[1]=1920x2160+1920+0
plane[42]: plane-1
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[48]: plane-2
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[54]: plane-3
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[60]: plane-4
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[66]: plane-5
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
plane[72]: plane-6
        crtc=crtc-0
        fb=92
                allocated by = kwin_wayland
                refcount=2
                format=AR24 little-endian (0x34325241)
                modifier=0x500000000000001
                size=512x512
                layers:
                        size[0]=512x512
                        pitch[0]=2048
                        offset[0]=0
                        obj[0]:
                                name=0
                                refcount=5
                                start=0011cf86
                                size=1310720
                                imported=no
        crtc-pos=512x512+3833+2107
        src-pos=512.000000x512.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=1
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=2
        sspp[0]=sspp_9
        multirect_mode[0]=none
        multirect_index[0]=solo
        src[0]=7x53+0+0
        dst[0]=7x53+3833+2107
plane[78]: plane-7
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
        color_mgmt_changed=0
        stage=0
crtc[84]: crtc-0
        enable=1
        active=1
        self_refresh_active=0
        planes_changed=1
        mode_changed=0
        active_changed=0
        connectors_changed=0
        color_mgmt_changed=0
        plane_mask=41
        connector_mask=1
        encoder_mask=1
mode: "3840x2160": 120 1188000 3840 4016 4104 4400 2160 2168 2178 2250 0x40 0x5
        lm[0]=0
        ctl[0]=0
connector[34]: DP-1
        crtc=crtc-0
        self_refresh_aware=0
        interlace_allowed=0
        ycbcr_420_allowed=1
        max_requested_bpc=0
        colorspace=Default
resource mapping:
        pingpong=84 # # # # # - - - - - - -
        mixer=84 # # # # # - -
        ctl=84 # # # # #
        dspp=# # # #
        dsc=# # # # # # - -
        cdm=#
        sspp=# # # # - - - - 84 84 # # - - - -
        cwb=- - - -


The values from core_perf are exactly the same:

$ cat /sys/kernel/debug/dri/ae01000.display-controller/debug/core_perf/*
600000000
0
0
0
0
13600000
18200000
600000000
2500000
800000
0
mode 0



[1] 
https://lore.kernel.org/all/[email protected]/

--
Best regards,
Xilin Wu <[email protected]>



--
Best regards,
Xilin Wu <[email protected]>

Reply via email to