Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: stable@vger.kernel.org
Subject: [PATCH 01/11] drm/i915: Make sure all planes in use by the joiner have their crtc included
Date: Mon, 27 Jan 2025 19:21:46 +0200	[thread overview]
Message-ID: <20250127172156.21928-2-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20250127172156.21928-1-ville.syrjala@linux.intel.com>

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Any active plane needs to have its crtc included in the atomic
state. For planes enabled via uapi that is all handler in the core.
But when we use a plane for joiner the uapi code things the plane
is disabled and therefore doesn't have a crtc. So we need to pull
those in by hand. We do it first thing in
intel_joiner_add_affected_crtcs() so that any newly added crtc will
subsequently pull in all of its joined crtcs as well.

The symptoms from failing to do this are:
- duct tape in the form of commit 1d5b09f8daf8 ("drm/i915: Fix NULL
  ptr deref by checking new_crtc_state")
- the plane's hw state will get overwritten by the disabled
  uapi state if it can't find the uapi counterpart plane in
  the atomic state from where it should copy the correct state

Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 7d68d652c1bc..2b31c8f4b7cd 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -6682,12 +6682,30 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct in
 static int intel_joiner_add_affected_crtcs(struct intel_atomic_state *state)
 {
 	struct drm_i915_private *i915 = to_i915(state->base.dev);
+	const struct intel_plane_state *plane_state;
 	struct intel_crtc_state *crtc_state;
+	struct intel_plane *plane;
 	struct intel_crtc *crtc;
 	u8 affected_pipes = 0;
 	u8 modeset_pipes = 0;
 	int i;
 
+	/*
+	 * Any plane which is in use by the joiner needs its crtc.
+	 * Pull those in first as this will not have happened yet
+	 * if the plane remains disabled according to uapi.
+	 */
+	for_each_new_intel_plane_in_state(state, plane, plane_state, i) {
+		crtc = to_intel_crtc(plane_state->hw.crtc);
+		if (!crtc)
+			continue;
+
+		crtc_state = intel_atomic_get_crtc_state(&state->base, crtc);
+		if (IS_ERR(crtc_state))
+			return PTR_ERR(crtc_state);
+	}
+
+	/* Now pull in all joined crtcs */
 	for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
 		affected_pipes |= crtc_state->joiner_pipes;
 		if (intel_crtc_needs_modeset(crtc_state))
-- 
2.45.3


  reply	other threads:[~2025-01-27 17:22 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-27 17:21 [PATCH 00/11] drm/i915: joiner and Y plane fixes and reorganization Ville Syrjala
2025-01-27 17:21 ` Ville Syrjala [this message]
2025-01-27 17:21 ` [PATCH 02/11] Revert "drm/i915: Fix NULL ptr deref by checking new_crtc_state" Ville Syrjala
2025-01-27 17:21 ` [PATCH 03/11] drm/i915: Rework joiner and Y plane dependency handling Ville Syrjala
2025-01-27 17:21 ` [PATCH 04/11] drm/i915: s/planar_slave/is_y_plane/ Ville Syrjala
2025-01-27 17:21 ` [PATCH 05/11] drm/i915: Extract unlink_nv12_plane() Ville Syrjala
2025-01-27 17:21 ` [PATCH 06/11] drm/i915: Remove pointless visible check in unlink_nv12_plane() Ville Syrjala
2025-01-27 17:21 ` [PATCH 07/11] drm/i915: Extract link_nv12_planes() Ville Syrjala
2025-01-27 17:21 ` [PATCH 08/11] drm/i915: Rename the variables in icl_check_nv12_planes() Ville Syrjala
2025-01-27 17:21 ` [PATCH 09/11] drm/i915: Move icl+ nv12 plane register mangling into skl_universal_plane.c Ville Syrjala
2025-01-27 17:21 ` [PATCH 10/11] drm/i915: Relocate intel_atomic_check_planes() Ville Syrjala
2025-01-27 17:21 ` [PATCH 11/11] drm/i915: Pimp the Y plane selection debugs Ville Syrjala
2025-02-12  9:39   ` Maarten Lankhorst
2025-02-12 16:46     ` Ville Syrjälä
2025-01-27 21:59 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: joiner and Y plane fixes and reorganization Patchwork
2025-01-27 21:59 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-01-27 22:14 ` ✓ i915.CI.BAT: success " Patchwork
2025-01-28 11:40 ` ✗ i915.CI.Full: failure " Patchwork
2025-02-08 12:41 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: joiner and Y plane fixes and reorganization (rev2) Patchwork
2025-02-08 12:41 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-02-08 15:12 ` ✗ i915.CI.BAT: failure " Patchwork
2025-02-08 16:12 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: joiner and Y plane fixes and reorganization (rev3) Patchwork
2025-02-08 16:12 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-02-08 18:37 ` ✗ i915.CI.BAT: failure " Patchwork
2025-02-09 18:32 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: joiner and Y plane fixes and reorganization (rev4) Patchwork
2025-02-09 18:32 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-02-09 20:21 ` ✗ i915.CI.BAT: failure " Patchwork
2025-02-09 22:47 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: joiner and Y plane fixes and reorganization (rev5) Patchwork
2025-02-09 22:47 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-02-10  0:44 ` ✓ i915.CI.BAT: success " Patchwork
2025-02-10  2:13 ` ✗ i915.CI.Full: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250127172156.21928-2-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox