|
@@ -3306,7 +3306,22 @@ 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");
|
|
|
+ DRM_DEBUG_KMS("Plane %d.%d: blocks required = %u/%u, lines required = %u/31\n",
|
|
|
+ to_intel_crtc(cstate->base.crtc)->pipe,
|
|
|
+ skl_wm_plane_id(to_intel_plane(pstate->plane)),
|
|
|
+ res_blocks, ddb_allocation, res_lines);
|
|
|
+
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
*out_blocks = res_blocks;
|