]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Workaround async flip + VT-d corruption on HSW/BDW
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Sat, 20 Feb 2021 10:33:03 +0000 (12:33 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 12 Mar 2021 16:11:11 +0000 (18:11 +0200)
commit4a888e728c2775b356c4d5a1563fa72a88a66f1d
treeaff9e54899702f8590ca979e9a500175cbeee26c
parent33229af49885176d4af25c6c2f153c6d6d393196
drm/i915: Workaround async flip + VT-d corruption on HSW/BDW

On HSW/BDW with VT-d active the first tile row scanned out
after the first async flip of the frame often ends up corrupted.

Whether the corruption happens or not depends on the scanline
on which the async flip happens, but the behaviour seems very
consistent. Ie. the same set of scanlines (which are most scanlines)
always show the corruption. And another set of scanlines (far less
of them) never shows the corruption.

I discovered that disabling the fetch-stride stretching
feature cures the corruption. This is some kind of TLB related
prefetch thing AFAIK. We already disable it on SNB primary
planes due to a documented workaround. The hardware folks
indicated that disabling this should be fine, so let's go
with that.

And while we're here, let's document the relevant bits on all
pre-skl platforms.

Fixes: e91d79d2894f ("drm/i915: Implement async flip for ivb/hsw")
Fixes: 8d8c7474927e ("drm/i915: Implement async flips for bdw")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210220103303.3448-1-ville.syrjala@linux.intel.com
Reviewed-by: Karthik B S <karthik.b.s@intel.com>
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_pm.c