We have established previously we stop using relocations starting
from gen12 platforms with Tigerlake as an exception. We keep this
statement but we want to enable relocations conditionally for
Alderlake S+P under require_force_probe flag set.
Keeping relocations under require_force_probe flag is interim solution
until IGTs will be rewritten to use softpin.
v2: - remove inline from function definition (Jani)
- fix indentation
v3: change to GRAPHICS_VER() (Zbigniew)
v4: remove RKL from flag as it is already shipped (Rodrigo)
Signed-off-by: Zbigniew Kempczyński <[email protected]>
Cc: Dave Airlie <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: Jason Ekstrand <[email protected]>
Cc: Rodrigo Vivi <[email protected]>
Acked-by: Dave Airlie <[email protected]>
---
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 23 +++++++++++++++----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index a8abc9af5ff4..81064914640f 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -491,16 +491,29 @@ eb_unreserve_vma(struct eb_vma *ev)
ev->flags &= ~__EXEC_OBJECT_RESERVED;
}
+static bool platform_has_relocs_enabled(const struct i915_execbuffer *eb)
+{
+ /*
+ * Relocations are disallowed starting from gen12 with Tigerlake
+ * as an exception. We allow temporarily use relocations for Alderlake
+ * when require_force_probe flag is set.
+ */
+ if (GRAPHICS_VER(eb->i915) < 12 || IS_TIGERLAKE(eb->i915))
+ return true;
+
+ if (INTEL_INFO(eb->i915)->require_force_probe &&
+ (IS_ALDERLAKE_S(eb->i915) || IS_ALDERLAKE_P(eb->i915)))
+ return true;
+
+ return false;
+}
+
static int
eb_validate_vma(struct i915_execbuffer *eb,
struct drm_i915_gem_exec_object2 *entry,
struct i915_vma *vma)
{
- /* Relocations are disallowed for all platforms after TGL-LP. This
- * also covers all platforms with local memory.
- */
- if (entry->relocation_count &&
- GRAPHICS_VER(eb->i915) >= 12 && !IS_TIGERLAKE(eb->i915))
+ if (entry->relocation_count && !platform_has_relocs_enabled(eb))
return -EINVAL;
if (unlikely(entry->flags & eb->invalid_flags))
--
2.26.0
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx