Skip to contentSkip to conversation

FAILED: patch "[PATCH] drm/i915: Fix display problems after resume" failed to apply to 5.19-stable tree

PATCH [email protected] 1 participant 1 message Oct 16, 2022

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 5.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Possible dependencies:

6c482c62a635 ("drm/i915: Fix display problems after resume") 2ef6efa79fec ("drm/i915: Improve on suspend / resume time with VT-d enabled")

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 6c482c62a635aa4f534d2439fbf8afa37452b986 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= <[email protected]>
Date: Wed, 5 Oct 2022 14:11:59 +0200
Subject: [PATCH] drm/i915: Fix display problems after resume
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Commit 39a2bd34c933 ("drm/i915: Use the vma resource as argument for gtt binding / unbinding") introduced a regression that due to the vma resource tracking of the binding state, dpt ptes were not correctly repopulated. Fix this by clearing the vma resource state before repopulating. The state will subsequently be restored by the bind_vma operation.

Fixes 39a2bd34c933 ("drm/i915: Use the vma resource as argument for gtt binding / unbinding")
Cc Matthew Auld <[email protected]>
Cc <[email protected]> # v5.18+
Reported-and-tested-by Kevin Boulain <[email protected]>
(cherry picked from commit bc2472538c0d1cce334ffc9e97df0614cd2b1469)
drivers/gpu/drm/i915/gt/intel_ggtt.c +7 -1
index 30cf5c3369d9..2049a00417af 100644
@@ -1275,10 +1275,16 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm)
 			atomic_read(&vma->flags) & I915_VMA_BIND_MASK;
 
 		GEM_BUG_ON(!was_bound);
-		if (!retained_ptes)
+		if (!retained_ptes) {
+			/*
+			 * Clear the bound flags of the vma resource to allow
+			 * ptes to be repopulated.
+			 */
+			vma->resource->bound_flags = 0;
 			vma->ops->bind_vma(vm, NULL, vma->resource,
 					   obj ? obj->cache_level : 0,
 					   was_bound);
+		}
 		if (obj) { /* only used during resume => exclusive access */
 			write_domain_objs |= fetch_and_zero(&obj->write_domain);
 			obj->read_domains |= I915_GEM_DOMAIN_GTT;