]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: fix race when clearing RPS IIR bits
authorImre Deak <imre.deak@intel.com>
Mon, 23 Mar 2015 17:11:34 +0000 (19:11 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 24 Mar 2015 09:14:41 +0000 (10:14 +0100)
commitd7512f9557f141fbb0207d726f423ab8df3f0978
tree82af5fe3323b963ba939c64e66d17ee8ca66a06d
parent93c68cb1a12a6060a040d8a6fdc214bd30189421
drm/i915: fix race when clearing RPS IIR bits

When disabling RPS interrupts there is a race where we disable RPS
inerrupts while the interrupt handler is running and the handler has
already latched the pending RPS interrupt from the master IIR register.
Afterwards the disabling path clears the PM IIR bits, making the state
of pending interrupts inconsistent from the interrupt handler's point of
view. This triggers the following warning: "The master control interrupt
lied (PM)!".

To fix this make sure that any running interrupt handler (which may
have already latched the master IIR) finishes before clearing the IIR
bits.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87347
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_irq.c