aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dp.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-06-27 17:52:15 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-07-01 11:14:59 +0200
commitb5ea2d5681522f1b8ef886b5ac039903bf1d39fe (patch)
tree866e987e68aa8c973f02046eb29ad4abf2dd3639 /drivers/gpu/drm/i915/intel_dp.c
parentdrm/i915: fold the no-irq check into intel_hpd_irq_handler (diff)
downloadlinux-dev-b5ea2d5681522f1b8ef886b5ac039903bf1d39fe.tar.xz
linux-dev-b5ea2d5681522f1b8ef886b5ac039903bf1d39fe.zip
drm/i915: fix hpd interrupt register locking
Our interrupt handler (in hardirq context) could race with the timer (in softirq context), hence we need to hold the spinlock around the call to ->hdp_irq_setup in intel_hpd_irq_handler, too. But as an optimization (and more so to clarify things) we don't need to do the irqsave/restore dance in the hardirq context. Note also that on ilk+ the race isn't just against the hotplug reenable timer, but also against the fifo underrun reporting. That one also modifies the SDEIMR register (again protected by the same dev_priv->irq_lock). To lock things down again sprinkle a assert_spin_locked. But exclude the functions touching SDEIMR for now, I want to extract them all into a new helper function (like we do already for pipestate, display interrupts and all the various gt interrupts). v2: Add the missing 't' Egbert spotted in a comment. v3: Actually fix the right misspelled comment (Paulo). Cc: Egbert Eich <eich@suse.de> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
0 files changed, 0 insertions, 0 deletions