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 Rocketlake and Alderlake under require_force_probe flag set.
Keeping relocations under require_force_probe flag is interim solution until IGTs will be rewritten to use softpin.
Signed-off-by: Zbigniew Kempczyński zbigniew.kempczynski@intel.com Cc: Dave Airlie airlied@redhat.com Cc: Daniel Vetter daniel.vetter@intel.com Cc: Jason Ekstrand jason@jlekstrand.net --- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 +++++++++++++++---- 1 file changed, 21 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 297143511f99..c0562dd14837 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -491,16 +491,32 @@ eb_unreserve_vma(struct eb_vma *ev) ev->flags &= ~__EXEC_OBJECT_RESERVED; }
+static inline 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 Rocketlake + * and Alderlake when require_force_probe flag is set. + */ + + if (INTEL_GEN(eb->i915) < 12 || IS_TIGERLAKE(eb->i915)) + return true; + + if (INTEL_INFO(eb->i915)->require_force_probe && + (IS_ROCKETLAKE(eb->i915) || 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 && - INTEL_GEN(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))
On Tue, 01 Jun 2021, Zbigniew Kempczyński zbigniew.kempczynski@intel.com wrote:
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 Rocketlake and Alderlake under require_force_probe flag set.
Keeping relocations under require_force_probe flag is interim solution until IGTs will be rewritten to use softpin.
Signed-off-by: Zbigniew Kempczyński zbigniew.kempczynski@intel.com Cc: Dave Airlie airlied@redhat.com Cc: Daniel Vetter daniel.vetter@intel.com Cc: Jason Ekstrand jason@jlekstrand.net
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 +++++++++++++++---- 1 file changed, 21 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 297143511f99..c0562dd14837 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -491,16 +491,32 @@ eb_unreserve_vma(struct eb_vma *ev) ev->flags &= ~__EXEC_OBJECT_RESERVED; }
+static inline bool
Please don't use the inline keyword in .c files. Let the compiler do its job.
BR, Jani.
+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 Rocketlake
* and Alderlake when require_force_probe flag is set.
*/
- if (INTEL_GEN(eb->i915) < 12 || IS_TIGERLAKE(eb->i915))
return true;
- if (INTEL_INFO(eb->i915)->require_force_probe &&
(IS_ROCKETLAKE(eb->i915) || 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 &&
INTEL_GEN(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))
dri-devel@lists.freedesktop.org