]> git.proxmox.com Git - mirror_ubuntu-bionic-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)
commit6b12ca569bb2f864892c41dbbb0f88f3f9952bf3
tree59b29795a209e6b84a0fcf4f3ae411c11e82f849
parentdff457d74e7eaf8c5280967467597ebfc3e2e44a
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