[PATCH] drm/i915: Remove reserved stolen range ristriction from gen12.5

Nirmoy Das nirmoy.das at intel.com
Thu Feb 29 16:37:20 UTC 2024


HW spec lifted the requirement for 1st stolen page from
gem12.5 so adjust stolen code.

Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 11 ++++++++---
 drivers/gpu/drm/i915/gt/selftest_reset.c   | 11 +++++++----
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index ad6dd7f3259b..621fd54de6bc 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -47,7 +47,8 @@ int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
 		return -ENODEV;
 
 	/* WaSkipStolenMemoryFirstPage:bdw+ */
-	if (GRAPHICS_VER(i915) >= 8 && start < 4096)
+	if (GRAPHICS_VER(i915) >= 8 && GRAPHICS_VER_FULL(i915) < IP_VER(12, 50)
+	    && start < 4096)
 		start = 4096;
 
 	mutex_lock(&i915->mm.stolen_lock);
@@ -63,10 +64,14 @@ int i915_gem_stolen_insert_node(struct drm_i915_private *i915,
 				struct drm_mm_node *node, u64 size,
 				unsigned alignment)
 {
+	u64 start = I915_GEM_STOLEN_BIAS;
+
+	if (GRAPHICS_VER_FULL(i915) >= IP_VER(12, 50))
+		start = 0;
+
 	return i915_gem_stolen_insert_node_in_range(i915, node,
 						    size, alignment,
-						    I915_GEM_STOLEN_BIAS,
-						    U64_MAX);
+						    start, U64_MAX);
 }
 
 void i915_gem_stolen_remove_node(struct drm_i915_private *i915,
diff --git a/drivers/gpu/drm/i915/gt/selftest_reset.c b/drivers/gpu/drm/i915/gt/selftest_reset.c
index f40de408cd3a..0cab8f86c19a 100644
--- a/drivers/gpu/drm/i915/gt/selftest_reset.c
+++ b/drivers/gpu/drm/i915/gt/selftest_reset.c
@@ -21,7 +21,7 @@ __igt_reset_stolen(struct intel_gt *gt,
 {
 	struct i915_ggtt *ggtt = gt->ggtt;
 	const struct resource *dsm = &gt->i915->dsm.stolen;
-	resource_size_t num_pages, page;
+	resource_size_t num_pages, page, reserved = 0;
 	struct intel_engine_cs *engine;
 	intel_wakeref_t wakeref;
 	enum intel_engine_id id;
@@ -48,6 +48,9 @@ __igt_reset_stolen(struct intel_gt *gt,
 		goto err_crc;
 	}
 
+	if (GRAPHICS_VER_FULL(gt->i915) < IP_VER(12, 50))
+		reserved = I915_GEM_STOLEN_BIAS;
+
 	igt_global_reset_lock(gt);
 	wakeref = intel_runtime_pm_get(gt->uncore->rpm);
 
@@ -163,9 +166,9 @@ __igt_reset_stolen(struct intel_gt *gt,
 		pr_info("%s reset clobbered %ld pages of stolen, last clobber at page %ld\n",
 			msg, count, max);
 	}
-	if (max >= I915_GEM_STOLEN_BIAS >> PAGE_SHIFT) {
-		pr_err("%s reset clobbered unreserved area [above %x] of stolen; may cause severe faults\n",
-		       msg, I915_GEM_STOLEN_BIAS);
+	if (max >= reserved >> PAGE_SHIFT) {
+		pr_err("%s reset clobbered unreserved area [above %llx] of stolen; may cause severe faults\n",
+		       msg, reserved);
 		err = -EINVAL;
 	}
 
-- 
2.42.0



More information about the Intel-gfx-trybot mailing list