1
0
Fork 0
alistair23-linux/drivers/gpu/drm/i915
Chris Wilson f0c8602464 Revert "drm/i915: Don't save/restore hardware status page address register"
This reverts commit a7a75c8f70.

There are two different variations on how Intel hardware addresses the
"Hardware Status Page". One as a location in physical memory and the
other as an offset into the virtual memory of the GPU, used in more
recent chipsets. (The HWS itself is a cacheable region of memory which
the GPU can write to without requiring CPU synchronisation, used for
updating various details of hardware state, such as the position of
the GPU head in the ringbuffer, the last breadcrumb seqno, etc).

These two types of addresses were updated in different locations of code
- one inline with the ringbuffer initialisation, and the other during
device initialisation. (The HWS page is logically associated with
the rings, and there is one HWS page per ring.) During resume, only the
ringbuffers were being re-initialised along with the virtual HWS page,
leaving the older physical address HWS untouched. This then caused a
hang on the older gen3/4 (915GM, 945GM, 965GM) the first time we tried
to synchronise the GPU as the breadcrumbs were never being updated.

Reported-and-tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Reported-by: Jan Niehusmann <jan@gondor.com>
Reported-and-tested-by: Justin P. Mattock <justinmattock@gmail.com>
Reported-and-tested-by: Michael "brot" Groh <brot@minad.de>
Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2011-03-24 07:15:01 +00:00
..
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00: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: report correct render clock frequencies on SNB 2011-03-23 09:17:00 +00:00
i915_dma.c drm/i915: don't store the reg value for HWS_PGA 2011-03-02 09:40:14 +00:00
i915_drv.c Merge remote branch 'intel/drm-intel-next' of ../drm-next into drm-core-next 2011-03-14 14:15:13 +10:00
i915_drv.h Revert "drm/i915: Don't save/restore hardware status page address register" 2011-03-24 07:15:01 +00:00
i915_gem.c drm/i915: Avoid unmapping pages from a NULL address space 2011-03-23 09:17:03 +00: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 drm/i915: Disable pagefaults along execbuffer relocation fast path 2011-03-23 09:17:01 +00:00
i915_gem_gtt.c drm/i915,agp/intel: Do not clear stolen entries 2011-01-24 18:26:25 +00:00
i915_gem_tiling.c Merge branch 'drm-intel-fixes' into drm-intel-next 2011-03-07 12:35:15 +00:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: Replace vblank PM QoS with "Interrupt-Based AGPBUSY#" 2011-03-01 17:33:38 +00:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_reg.h Merge commit '5359533801e3dd3abca5b7d3d985b0b33fd9fe8b' into drm-core-next 2011-03-16 11:34:41 +10:00
i915_suspend.c Revert "drm/i915: Don't save/restore hardware status page address register" 2011-03-24 07:15:01 +00: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 Revert "drm/i915: Disable SSC for outputs other than LVDS or DP" 2011-02-22 15:55:28 +00: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: cleanup per-pipe reg usage 2011-02-07 21:17:15 +00:00
intel_display.c drm/i915: report correct render clock frequencies on SNB 2011-03-23 09:17:00 +00:00
intel_dp.c drm/i915/dp: Correct the order of deletion for ghost eDP devices 2011-03-23 09:16:59 +00:00
intel_drv.h drm/i915: Add support for limited color range of broadcast outputs 2011-02-22 15:56:56 +00:00
intel_dvo.c drm/i915: cleanup per-pipe reg usage 2011-02-07 21:17:15 +00:00
intel_fb.c Revert "drm: Update fbdev fb_fix_screeninfo" 2011-01-14 16:10:28 -08:00
intel_hdmi.c drm/i915: Add support for limited color range of broadcast outputs 2011-02-22 15:56:56 +00:00
intel_i2c.c drm/i915: Enable GMBUS for post-gen2 chipsets 2011-02-01 09:01:13 +00:00
intel_lvds.c Merge branch 'drm-intel-fixes' into drm-intel-next 2011-02-16 09:44:30 +00:00
intel_modes.c drm/i915: Add support for limited color range of broadcast outputs 2011-02-22 15:56:56 +00: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: Restore missing command flush before interrupt on BLT ring 2011-03-23 09:17:01 +00:00
intel_ringbuffer.h Merge branch 'drm-intel-fixes' into drm-intel-next 2011-03-07 12:35:15 +00:00
intel_sdvo.c Merge remote branch 'intel/drm-intel-next' of ../drm-next into drm-core-next 2011-03-14 14:15:13 +10:00
intel_sdvo_regs.h drm/i915/sdvo: Add missing TV filters 2010-08-09 11:24:29 -07:00
intel_tv.c Merge branch 'drm-intel-fixes' into drm-intel-next 2011-02-16 09:44:30 +00:00