+++ /dev/null
-From 3c1ea6a5f4f55d4e376675dda16945eb5d9bb4de Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
-Date: Fri, 18 Nov 2022 20:52:01 +0200
-Subject: drm/i915: Remove non-existent pipes from bigjoiner pipe mask
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-commit 3c1ea6a5f4f55d4e376675dda16945eb5d9bb4de upstream.
-
-bigjoiner_pipes() doesn't consider that:
-- RKL only has three pipes
-- some pipes may be fused off
-
-This means that intel_atomic_check_bigjoiner() won't reject
-all configurations that would need a non-existent pipe.
-Instead we just keep on rolling witout actually having
-reserved the slave pipe we need.
-
-It's possible that we don't outright explode anywhere due to
-this since eg. for_each_intel_crtc_in_pipe_mask() will only
-walk the crtcs we've registered even though the passed in
-pipe_mask asks for more of them. But clearly the thing won't
-do what is expected of it when the required pipes are not
-present.
-
-Fix the problem by consulting the device info pipe_mask already
-in bigjoiner_pipes().
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20221118185201.10469-1-ville.syrjala@linux.intel.com
-Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
-(cherry picked from commit f1c87a94a1087a26f41007ee83264033007421b5)
-Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/gpu/drm/i915/display/intel_display.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
---- a/drivers/gpu/drm/i915/display/intel_display.c
-+++ b/drivers/gpu/drm/i915/display/intel_display.c
-@@ -3717,12 +3717,16 @@ out:
-
- static u8 bigjoiner_pipes(struct drm_i915_private *i915)
- {
-+ u8 pipes;
-+
- if (DISPLAY_VER(i915) >= 12)
-- return BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D);
-+ pipes = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D);
- else if (DISPLAY_VER(i915) >= 11)
-- return BIT(PIPE_B) | BIT(PIPE_C);
-+ pipes = BIT(PIPE_B) | BIT(PIPE_C);
- else
-- return 0;
-+ pipes = 0;
-+
-+ return pipes & RUNTIME_INFO(i915)->pipe_mask;
- }
-
- static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,