[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 = >->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