FAILED: patch "[PATCH] drm/i915/gt: Do not restore invalid RS state" failed to apply to 5.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.4-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]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 103309977589fe6be0f4314de4925737cdfc146f Mon Sep 17 00:00:00 2001
From: Chris Wilson <[email protected]>
Date: Sun, 29 Dec 2019 18:31:50 +0000
Subject: [PATCH] drm/i915/gt: Do not restore invalid RS state
Only restore valid resource streamer state from the context image, i.e. avoid restoring if we know the image is invalid.
Signed-off-by Chris Wilson <[email protected]>
Reviewed-by Matthew Auld <[email protected]>
(cherry picked from commit ecfcd2da335816516dc27434a65899a77886d80a)
Signed-off-by Joonas Lahtinen <[email protected]>
drivers/gpu/drm/i915/gt/intel_ring_submission.c +11 -20
@@ -1413,14 +1413,6 @@ static inline int mi_set_context(struct i915_request *rq, u32 flags)int len;u32 *cs; - flags |=MI_MM_SPACE_GTT ; -if (IS_HASWELL (i915)) -/* These flags are for resource streamer on HSW+ */ - flags |=HSW_MI_RS_SAVE_STATE_EN |HSW_MI_RS_RESTORE_STATE_EN ; -else -/* We need to save the extended state for powersaving modes */ - flags |=MI_SAVE_EXT_STATE_EN |MI_RESTORE_EXT_STATE_EN ; - len =4 ;if (IS_GEN (i915,7 )) len +=2 + (num_engines ?4 * num_engines +6 :0 );
@@ -1589,22 +1581,21 @@ static int switch_context(struct i915_request *rq) }if (ce->state) { -u32 hw_flags; +u32 flags;GEM_BUG_ON (rq->engine->id !=RCS0 ); -/* -* The kernel context(s) is treated as pure scratch and is not -* expected to retain any state (as we sacrifice it during -* suspend and on resume it may be corrupted). This is ok, -* as nothing actually executes using the kernel context; it -* is purely used for flushing user contexts. -*/ - hw_flags =0 ; -if (i915_gem_context_is_kernel (rq->gem_context)) - hw_flags =MI_RESTORE_INHIBIT ; +/* For resource streamer on HSW+ and power context elsewhere */ +BUILD_BUG_ON (HSW_MI_RS_SAVE_STATE_EN !=MI_SAVE_EXT_STATE_EN ); +BUILD_BUG_ON (HSW_MI_RS_RESTORE_STATE_EN !=MI_RESTORE_EXT_STATE_EN ); + + flags =MI_SAVE_EXT_STATE_EN |MI_MM_SPACE_GTT ; +if (!i915_gem_context_is_kernel (rq->gem_context)) + flags |=MI_RESTORE_EXT_STATE_EN ; +else + flags |=MI_RESTORE_INHIBIT ; - ret =mi_set_context (rq, hw_flags); + ret =mi_set_context (rq, flags);if (ret)return ret; }