linux/drivers/gpu/drm/i915
Ben Widawsky 25732821cb drm/i915: forcewake fix after reset
The failure is as follows:

1. Userspace gets forcewake lock, lock count >=1
2. GPU hang/reset occurs (forcewake bit is reset)
3. count is now incorrect

The failure can only occur when using the forcewake userspace lock.

This has the unfortunate consequence of messing up the driver as well as
userspace, unless userspace closes the debugfs file, the kernel will
never end up waking the GT since the refcount will be > 1.

The solution is to try to recover the correct forcewake state based on
the refcount. There is a period of time where userspace reads/writes may
occur after the reset, before the GT has been forcewaked. The interface
was never designed to be a perfect solution for userspace reads/writes,
and the kernel portion is fixed by this patch.

Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
2011-06-28 09:44:55 -07:00
..
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
dvo_ch7xxx.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_ch7017.c drm/i915/dvo: Report LVDS attached to ch701x as connected 2010-12-30 13:50:43 +00:00
dvo_ivch.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_sil164.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_tfp410.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
i915_debugfs.c drm/i915: Only print out the actual number of fences for i915_error_state 2011-06-04 10:40:52 -07:00
i915_dma.c drm/i915: interrupt & vblank support for Ivy Bridge 2011-05-13 17:09:52 -07:00
i915_drv.c drm/i915: forcewake fix after reset 2011-06-28 09:44:55 -07:00
i915_drv.h drm/i915: split page flip queueing into per-chipset functions 2011-06-26 19:11:16 -07:00
i915_gem.c Revert "drm/i915: Kill GTT mappings when moving from GTT domain" 2011-06-21 11:11:02 -07:00
i915_gem_debug.c drm/i915: Refine tracepoints 2011-02-07 14:59:18 +00:00
i915_gem_evict.c drm/i915: Refine tracepoints 2011-02-07 14:59:18 +00:00
i915_gem_execbuffer.c Revert "drm/i915: Kill GTT mappings when moving from GTT domain" 2011-06-21 11:11:02 -07:00
i915_gem_gtt.c drm/i915: Rename agp_type to cache_level 2011-05-10 13:56:43 -07:00
i915_gem_tiling.c drm/i915: add swizzle/tiling support for Ivy Bridge 2011-05-13 17:05:43 -07:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: Apply HWSTAM workaround for BSD ring on SandyBridge 2011-06-21 10:57:23 -07:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_reg.h drm/i915: Apply HWSTAM workaround for BSD ring on SandyBridge 2011-06-21 10:57:23 -07:00
i915_suspend.c drm/i915: save/resume forcewake lock fixes 2011-06-22 10:28:33 -07:00
i915_trace.h drm/i915: Refine tracepoints 2011-02-07 14:59:18 +00:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
intel_acpi.c drm/i915: i915 cannot provide switcher services. 2010-12-08 15:40:44 +10:00
intel_bios.c drm: Verify debug message arguments 2011-04-28 14:53:21 +10:00
intel_bios.h Revert "drm/i915: Disable SSC for outputs other than LVDS or DP" 2011-02-22 15:55:28 +00:00
intel_crt.c drm/i915/crt: Explicitly return false if connected to a digital monitor 2011-06-04 10:41:06 -07:00
intel_display.c drm/i915: add Ivy Bridge page flip support 2011-06-26 19:11:22 -07:00
intel_dp.c drm/i915: Share the common force-audio property between connectors 2011-06-04 10:41:25 -07:00
intel_drv.h drm/i915: Share the common force-audio property between connectors 2011-06-04 10:41:25 -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: Share the common force-audio property between connectors 2011-06-04 10:41:25 -07:00
intel_i2c.c Revert "drm/i915: Enable GMBUS for post-gen2 chipsets" 2011-06-17 09:22:01 +10:00
intel_lvds.c drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007 2011-06-04 10:48:45 -07:00
intel_modes.c drm/i915: Share the common force-audio property between connectors 2011-06-04 10:41:25 -07:00
intel_opregion.c drm/i915: Use a symbolic constant for OpRegion lid state 2011-02-24 18:13:42 +00:00
intel_overlay.c drm/i915: Use a device flag for non-interruptible phases 2011-02-22 15:56:25 +00:00
intel_panel.c Merge commit '5359533801e3dd3abca5b7d3d985b0b33fd9fe8b' into drm-core-next 2011-03-16 11:34:41 +10:00
intel_ringbuffer.c drm/i915: clean up unused ring_get_irq/ring_put_irq functions 2011-05-16 12:54:16 -07:00
intel_ringbuffer.h drm/i915: proper use of forcewake 2011-05-10 13:56:45 -07:00
intel_sdvo.c drm/i915: Share the common force-audio property between connectors 2011-06-04 10:41:25 -07:00
intel_sdvo_regs.h Fix common misspellings 2011-03-31 11:26:23 -03:00
intel_tv.c drm/i915: Don't store temporary load-detect variables in the generic encoder 2011-05-10 13:19:15 -07:00
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00:00