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]>