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 >