DP-MST connector fails to enable 4k@60Hz mode when "max bpc" is set to 16
- Set "max bpc" to 16
- Set mode to 4k@60Hz on a DP-MST connector
- amdgpu refuses to enable the mode
The "max bpc" KMS property is supposed to set a maximum for the bpc, it's not supposed to cause bandwidth failures.
Expected behavior: amdgpu should automatically fallback to a lower bpc.
There is logic for this in create_validate_stream_for_sink()
, however the failure happens later in drm_dp_mst_atomic_check()
.
Sway issue: https://github.com/swaywm/sway/issues/7367
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:update_stream_scaling_settings [amdgpu]] Destination Rectangle x:0 y:0 width:3840 height:2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:create_validate_stream_for_sink [amdgpu]] Mode 3840x2160 (clk 594000) failed DC validation with error 13 (Bandwidth validation failure (BW and Watermark))
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:update_stream_scaling_settings [amdgpu]] Destination Rectangle x:0 y:0 width:3840 height:2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:create_validate_stream_for_sink [amdgpu]] Mode 3840x2160 (clk 594000) failed DC validation with error 13 (Bandwidth validation failure (BW and Watermark))
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:update_stream_scaling_settings [amdgpu]] Destination Rectangle x:0 y:0 width:3840 height:2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:create_validate_stream_for_sink [amdgpu]] Mode 3840x2160 (clk 594000) failed DC validation with error 13 (Bandwidth validation failure (BW and Watermark))
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:update_stream_scaling_settings [amdgpu]] Destination Rectangle x:0 y:0 width:3840 height:2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:create_validate_stream_for_sink [amdgpu]] Mode 3840x2160 (clk 594000) failed DC validation with error 13 (Bandwidth validation failure (BW and Watermark))
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:update_stream_scaling_settings [amdgpu]] Destination Rectangle x:0 y:0 width:3840 height:2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_atomic_get_private_obj_state [drm]] Added new private object 00000000c9a75a23 state 000000008f29c471 to 00000000b1b07b91
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:dm_update_crtc_state [amdgpu]] Enabling DRM crtc: 60
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:update_stream_scaling_settings [amdgpu]] Destination Rectangle x:0 y:0 width:3840 height:2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:dm_update_plane_state [amdgpu]] Enabling DRM plane: 55 on DRM crtc 60
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_dp_mst_atomic_check [drm_display_helper]] [MST PORT:0000000036cc6aaf] requires 54 time slots
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_dp_mst_atomic_check [drm_display_helper]] [MST PORT:0000000036cc6aaf] assigned VCPI #1
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_dp_mst_atomic_check [drm_display_helper]] [MST MGR:00000000093da25d] mst state 000000009c7dd6e9 TU pbn_div=60 avail=9 used=54
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_dp_mst_atomic_check_mstb_bw_limit [drm_display_helper]] [MSTB:000000009f6b1279] Checking bandwidth limits
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_dp_mst_atomic_check_mstb_bw_limit [drm_display_helper]] [MSTB:000000009f6b1279] [MST PORT:00000000363cd8cb] Checking bandwidth limits on [MSTB:00000000dfdc8223]
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_dp_mst_atomic_check_mstb_bw_limit [drm_display_helper]] [MSTB:00000000dfdc8223] [MST PORT:0000000036cc6aaf] required PBN of 3188 exceeds port limit of 2160
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:amdgpu_dm_atomic_check [amdgpu]] drm_dp_mst_atomic_check() failed
Jan 21 14:01:51 eater.snewbury.org.uk kernel: [drm:amdgpu_dm_atomic_check [amdgpu]] Atomic check failed with err: -28
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_atomic_check_only [drm]] atomic driver check for 00000000b1b07b91 failed: -28
Jan 21 14:01:51 eater.snewbury.org.uk kernel: amdgpu 0000:03:00.0: [drm:drm_atomic_state_default_clear [drm]] Clearing atomic state 00000000b1b07b91