[Intel-gfx] [PATCH v2 15/16] drm/i915/gen9: Reject display updates that exceed wm limitations
Lyude Paul
cpaul at redhat.com
Thu Apr 21 21:49:52 UTC 2016
On a T560, this ends up rejecting valid watermark configurations so the internal
display doesn't switch from fbcon to X properly:
[ 5.767383] [drm:intelfb_create] re-using BIOS fb
[ 5.767444] [drm] Initialized i915 1.6.0 20160411 for 0000:00:02.0 on minor 0
[ 5.767449] [drm:intelfb_create] allocated 1920x1080 fb: 0x00000000, bo ffff88021374c000
[ 5.767760] fbcon: inteldrmfb (fb0) is primary device
[ 5.768147] [drm:connected_sink_compute_bpp] [CONNECTOR:37:eDP-1] checking for sink bpp constrains
[ 5.768150] [drm:connected_sink_compute_bpp] clamping display bpp (was 36) to EDID reported max of 18
[ 5.768159] [drm:skl_update_scaler_crtc] Updating scaler for [CRTC:26] scaler_user index 0.31
[ 5.768162] [drm:skl_update_scaler] scaler_user index 0.31: Staged freeing scaler id 0 scaler_users = 0x0
[ 5.768166] [drm:intel_dp_compute_config] DP link computation with max lane count 2 max bw 270000 pixel clock 142900KHz
[ 5.768172] [drm:intel_dp_compute_config] DP link bw 0a rate select 00 lane count 2 clock 270000 bpp 18
[ 5.768174] [drm:intel_dp_compute_config] DP link bw required 257220 available 432000
[ 5.768180] [drm:intel_modeset_pipe_config] hw max bpp: 36, pipe bpp: 18, dithering: 1
[ 5.768193] [drm:intel_dump_pipe_config] [CRTC:26][modeset] config ffff8800d5c11000 for pipe A
[ 5.768200] [drm:intel_dump_pipe_config] cpu_transcoder: EDP
[ 5.768202] [drm:intel_dump_pipe_config] pipe bpp: 18, dithering: 1
[ 5.768206] [drm:intel_dump_pipe_config] fdi/pch: 0, lanes: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
[ 5.768211] [drm:intel_dump_pipe_config] dp: 1, lanes: 2, gmch_m: 4994717, gmch_n: 8388608, link_m: 277484, link_n: 524288, tu: 64
[ 5.768215] [drm:intel_dump_pipe_config] dp: 1, lanes: 2, gmch_m2: 0, gmch_n2: 0, link_m2: 0, link_n2: 0, tu2: 0
[ 5.768217] [drm:intel_dump_pipe_config] audio: 0, infoframes: 0
[ 5.768219] [drm:intel_dump_pipe_config] requested mode:
[ 5.768226] [drm:drm_mode_debug_printmodeline] Modeline 0:"1920x1080" 60 142900 1920 1968 2000 2082 1080 1082 1087 1144 0x48 0xa
[ 5.768228] [drm:intel_dump_pipe_config] adjusted mode:
[ 5.768234] [drm:drm_mode_debug_printmodeline] Modeline 0:"1920x1080" 60 142900 1920 1968 2000 2082 1080 1082 1087 1144 0x48 0xa
[ 5.768239] [drm:intel_dump_crtc_timings] crtc timings: 142900 1920 1968 2000 2082 1080 1082 1087 1144, type: 0x48 flags: 0xa
[ 5.768241] [drm:intel_dump_pipe_config] port clock: 270000
[ 5.768244] [drm:intel_dump_pipe_config] pipe src size: 1920x1080
[ 5.768247] [drm:intel_dump_pipe_config] num_scalers: 2, scaler_users: 0x0, scaler_id: -1
[ 5.768251] [drm:intel_dump_pipe_config] gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
[ 5.768254] [drm:intel_dump_pipe_config] pch pfit: pos: 0x00000000, size: 0x00000000, disabled
[ 5.768256] [drm:intel_dump_pipe_config] ips: 0
[ 5.768258] [drm:intel_dump_pipe_config] double wide: 0
[ 5.768263] [drm:intel_dump_pipe_config] ddi_pll_sel: 1; dpll_hw_state: ctrl1: 0x13, cfgcr1: 0x0, cfgcr2: 0x0
[ 5.768266] [drm:intel_dump_pipe_config] planes on this crtc
[ 5.768277] [drm:intel_dump_pipe_config] STANDARD PLANE:23 plane: 0.0 idx: 0 enabled
[ 5.768284] [drm:intel_dump_pipe_config] FB:58, fb = 1920x1080 format = 0x34325258
[ 5.768285] [drm:intel_dump_pipe_config] scaler:-1 src (0, 0) 1920x1080 dst (0, 0) 1920x1080
[ 5.768290] [drm:intel_dump_pipe_config] CURSOR PLANE:25 plane: 0.1 idx: 1 disabled, scaler_id = -1
[ 5.768295] [drm:intel_dump_pipe_config] STANDARD PLANE:27 plane: 0.1 idx: 2 disabled, scaler_id = -1
[ 5.768309] [drm:skl_update_scaler_plane] Updating scaler for [PLANE:23] scaler_user index 0.0
[ 5.768319] [drm:intel_find_shared_dpll] CRTC:26 allocated DPLL 0
[ 5.768323] [drm:intel_reference_shared_dpll] using DPLL 0 for pipe A
[ 5.768327] [drm:skl_update_scaler_crtc] Updating scaler for [CRTC:26] scaler_user index 0.31
[ 5.768339] [drm:skl_compute_plane_wm] Requested display configuration exceeds system watermark limitations
[ 5.768359] [drm:drm_fb_helper_hotplug_event]
[ 5.768363] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:37:eDP-1]
[ 5.768367] [drm:intel_dp_detect] [CONNECTOR:37:eDP-1]
[ 5.768786] [drm:intel_dp_probe_oui] Sink OUI: 0022b9
[ 5.769177] [drm:intel_dp_probe_oui] Branch OUI: 444615
[ 5.769604] [drm:drm_edid_to_eld] ELD: no CEA Extension found
[ 5.769611] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:37:eDP-1] probed modes :
[ 5.769618] [drm:drm_mode_debug_printmodeline] Modeline 38:"1920x1080" 60 142900 1920 1968 2000 2082 1080 1082 1087 1144 0x48 0xa
[ 5.769621] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:45:DP-1]
[ 5.769624] [drm:intel_dp_detect] [CONNECTOR:45:DP-1]
[ 5.769628] [drm:intel_power_well_enable] enabling power well 2
[ 5.769633] [drm:skl_set_power_well] Enabling power well 2
[ 5.769659] [drm:intel_power_well_disable] disabling power well 2
[ 5.769672] [drm:skl_set_power_well] Disabling power well 2
On Tue, 2016-04-19 at 19:26 -0700, Matt Roper wrote:
> If we can't find any valid level 0 watermark values for the requested
> atomic transaction, reject the configuration before we try to start
> programming the hardware.
>
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> Reviewed-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_pm.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 59d4574..96ffd54 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3309,7 +3309,17 @@ static int skl_compute_plane_wm(const struct
> drm_i915_private *dev_priv,
>
> if (res_blocks >= ddb_allocation || res_lines > 31) {
> *enabled = false;
> - return 0;
> +
> + /*
> + * If there are no valid level 0 watermarks, then we can't
> + * support this display configuration.
> + */
> + if (level) {
> + return 0;
> + } else {
> + DRM_DEBUG_KMS("Requested display configuration
> exceeds system watermark limitations\n");
> + return -EINVAL;
> + }
> }
>
> *out_blocks = res_blocks;
More information about the Intel-gfx
mailing list