summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci
diff options
context:
space:
mode:
authoroga <oga@openbsd.org>2010-08-12 15:07:25 +0000
committeroga <oga@openbsd.org>2010-08-12 15:07:25 +0000
commitc4dc02be1587ea24447de3151ebcd8ff27733ebf (patch)
tree1a3835c6fe4f38470f515ddf6c9f7a0293acddd2 /sys/dev/pci
parentInstead of returning EBUSY when the busy flag is set in the ioctl, sleep (diff)
downloadwireguard-openbsd-c4dc02be1587ea24447de3151ebcd8ff27733ebf.tar.xz
wireguard-openbsd-c4dc02be1587ea24447de3151ebcd8ff27733ebf.zip
Fix a one character typo that broke interrupt handling on ironlake.
we disable the interrupt while we are handling it (this is required according to intel) but instead of writing the version with the master enable bit back to the Interrupt Enable Register, we wrote it to the Interrupt Indication Register, so after the first interrupt we only got lucky due to shared interrupts when we were after anything. s/IIR/IMR/ on that one call and it works. tested by guenther@ and marco@ and myself. Fixes hangs when waiting for the chip which were unstuck by moving the mouse.
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/drm/i915_drv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/pci/drm/i915_drv.c b/sys/dev/pci/drm/i915_drv.c
index 86cc34c6b14..efdbfcdb8e2 100644
--- a/sys/dev/pci/drm/i915_drv.c
+++ b/sys/dev/pci/drm/i915_drv.c
@@ -652,7 +652,7 @@ inteldrm_ironlake_intr(void *arg)
I915_WRITE(DEIIR, de_iir);
done:
- I915_WRITE(DEIIR, de_ier);
+ I915_WRITE(DEIER, de_ier);
(void)I915_READ(DEIER);
return (ret);