]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Don't rmw PIPESTAT enable bits
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 14 Sep 2017 15:17:31 +0000 (18:17 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 25 Sep 2017 13:54:09 +0000 (16:54 +0300)
commit163d767dc54e59f824b9aae6fae9f21451eae249
tree59b29795a209e6b84a0fcf4f3ae411c11e82f849
parent71e5794f8ece6cf6cd4ee9e96bc129232a4ede7a
drm/i915: Don't rmw PIPESTAT enable bits

i830 seems to occasionally forget the PIPESTAT enable bits when
we read the register. These aren't the only registers on i830 that
have problems with RMW, as reading the double buffered plane
registers returns the latched value rather than the last written
value. So something similar is perhaps going on with PIPESTAT.

This corruption results on vblank interrupts occasionally turning off
on their own, which leads to vblank timeouts and generally a stuck
display subsystem.

So let's not RMW the pipestat enable bits, and instead use the cached
copy we have around.

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170914151731.5034-1-ville.syrjala@linux.intel.com
Reviewed-by: Imre Deak <imre.deak@intel.com>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_fifo_underrun.c