Quoting Radhakrishna Sripada (2023-11-02 13:06:44-03:00)
>Experiments were conducted with different multipliers to VTD_GUARD macro
>with multiplier of 185 we were observing occasional pipe faults when
>running kms_cursor_legacy --run-subtest single-bo
>
>There could possibly be an underlying issue that is being investigated, for
>now bump the guard pages for MTL.
>
>Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2017
>Cc: Gustavo Sousa <gustavo.so...@intel.com>
>Cc: Chris Wilson <chris.p.wil...@linux.intel.com>
>Signed-off-by: Radhakrishna Sripada <radhakrishna.srip...@intel.com>
>---
> drivers/gpu/drm/i915/gem/i915_gem_domain.c | 3 +++
> 1 file changed, 3 insertions(+)
>
>diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c 
>b/drivers/gpu/drm/i915/gem/i915_gem_domain.c
>index 3770828f2eaf..b65f84c6bb3f 100644
>--- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c
>+++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c
>@@ -456,6 +456,9 @@ i915_gem_object_pin_to_display_plane(struct 
>drm_i915_gem_object *obj,
>         if (intel_scanout_needs_vtd_wa(i915)) {
>                 unsigned int guard = VTD_GUARD;
> 

I remember trying increasing the guard, but with a much smaller multiplier. So
it turns out that using a much higher value did the "trick".

I would add a FIXME comment here to remind us that this is a hack.

With the FIXME in place,

Reviewed-by: Gustavo Sousa <gustavo.so...@intel.com>

>+                if (IS_METEORLAKE(i915))
>+                        guard *= 200;
>+
>                 if (i915_gem_object_is_tiled(obj))
>                         guard = max(guard,
>                                     i915_gem_object_get_tile_row_size(obj));
>-- 
>2.34.1
>

Reply via email to