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 <zbigniew.kempczyn...@intel.com>
Cc: Dave Airlie <airl...@redhat.com>
Cc: Daniel Vetter <daniel.vet...@intel.com>
Cc: Jason Ekstrand <ja...@jlekstrand.net>
Cc: Rodrigo Vivi <rodrigo.v...@intel.com>
Acked-by: Dave Airlie <airl...@redhat.com>
---
 .../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
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to