linux/drivers/gpu/drm/i915
Daniel Vetter 4fb066ab9e drm/i915: close PM interrupt masking races in the irq handler
Quoting Chris Wilson's more concise description:

"Ah I think I see the problem. As you point out we only mask the current
interrupt received, so that if we have a task pending (and so IMR != 0) we
actually unmask the pending interrupt and so could receive it again before the
tasklet is finally kicked off by the grumpy scheduler."

We need the hw to issue PM interrupts A, B, A while the scheduler is hating us
and refuses to run the rps work item. On receiving PM interrupt A we hit the
WARN because

dev_priv->pm_iir == PM_A | PM_B

Also add a posting read as suggested by Chris to ensure proper ordering of the
writes to PMIMR and PMIIR. Just in case somebody weakens write ordering.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2011-10-20 14:11:16 -07:00
..
dvo_ch7xxx.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ch7017.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ivch.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_sil164.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_tfp410.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
i915_dma.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
i915_drv.c Merge branch 'fix-pch-refclk' into foo 2011-10-20 14:10:43 -07:00
i915_drv.h drm/i915: Remove "i2c_speed" nonsense from child device table 2011-10-20 14:11:15 -07:00
i915_gem_debug.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
i915_gem_evict.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
i915_gem_execbuffer.c drm/i915: Dumb down the semaphore logic 2011-09-21 14:52:41 -07:00
i915_gem_gtt.c drm/i915: Add an interface to dynamically change the cache level 2011-06-09 21:51:16 -07:00
i915_gem_tiling.c drm/i915: Fix unfenced alignment on pre-G33 hardware 2011-07-18 14:02:06 -07:00
i915_gem.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into drm-next 2011-09-20 09:36:22 +01:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: close PM interrupt masking races in the irq handler 2011-10-20 14:11:16 -07:00
i915_mem.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
i915_reg.h Merge branch 'edp-training-fixes' into drm-intel-next 2011-10-20 14:10:07 -07:00
i915_suspend.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
i915_trace.h Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_acpi.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_bios.c drm/i915: Remove "i2c_speed" nonsense from child device table 2011-10-20 14:11:15 -07:00
intel_bios.h drm/i915: Remove "i2c_speed" nonsense from child device table 2011-10-20 14:11:15 -07:00
intel_crt.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_display.c Merge branch 'fix-pch-refclk' into foo 2011-10-20 14:10:43 -07:00
intel_dp.c Merge branch 'edp-training-fixes' into drm-intel-next 2011-10-20 14:10:07 -07:00
intel_drv.h Merge branch 'drm-intel-fixes' into drm-intel-next 2011-09-28 14:44:38 -07:00
intel_dvo.c drm/i915: cleanup per-pipe reg usage 2011-02-07 21:17:15 +00:00
intel_fb.c drm/i915: restore only the mode of this driver on lastclose (v2) 2011-04-27 17:51:59 +10:00
intel_hdmi.c drm/i915: pass ELD to HDMI/DP audio driver 2011-09-21 14:52:41 -07:00
intel_i2c.c drm/i915: Remove redundant bit shifting from intel_gmbus_set_speed 2011-10-20 14:11:16 -07:00
intel_lvds.c Not all systems expose a firmware or platform mechanism for changing the backlight intensity on i915, so add native driver support. 2011-08-15 12:10:25 -07:00
intel_modes.c drm/i915: pass ELD to HDMI/DP audio driver 2011-09-21 14:52:41 -07:00
intel_opregion.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_overlay.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_panel.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_ringbuffer.c drm/i915: Dumb down the semaphore logic 2011-09-21 14:52:41 -07:00
intel_ringbuffer.h drm/i915: Dumb down the semaphore logic 2011-09-21 14:52:41 -07:00
intel_sdvo_regs.h Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_sdvo.c drm/i915: Remove redundant bit shifting from intel_gmbus_set_speed 2011-10-20 14:11:16 -07:00
intel_tv.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00:00