linux/drivers/gpu/drm/i915
Ben Widawsky 828c79087c drm/i915: Disable GGTT PTEs on GEN6+ suspend
Once the machine gets to a certain point in the suspend process, we
expect the GPU to be idle. If it is not, we might corrupt memory.
Empirically (with an early version of this patch) we have seen this is
not the case. We cannot currently explain why the latent GPU writes
occur.

In the technical sense, this patch is a workaround in that we have an
issue we can't explain, and the patch indirectly solves the issue.
However, it's really better than a workaround because we understand why
it works, and it really should be a safe thing to do in all cases.

The noticeable effect other than the debug messages would be an increase
in the suspend time. I have not measure how expensive it actually is.

I think it would be good to spend further time to root cause why we're
seeing these latent writes, but it shouldn't preclude preventing the
fallout.

NOTE: It should be safe (and makes some sense IMO) to also keep the
VALID bit unset on resume when we clear_range(). I've opted not to do
this as properly clearing those bits at some later point would be extra
work.

v2: Fix bugzilla link

Bugzilla: http://bugs.freedesktop.org/show_bug.cgi?id=65496
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59321
Tested-by: Takashi Iwai <tiwai@suse.de>
Tested-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Tested-By: Todd Previte <tprevite@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-10-18 15:44:47 +02:00
..
dvo_ch7xxx.c drm/i915: dvo_ch7xxx: fix vsync polarity setting 2013-07-25 16:10:22 +02:00
dvo_ch7017.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ivch.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ns2501.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_sil164.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_tfp410.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
i915_debugfs.c drm/i915: Report requested frequency alongside current frequency in debugfs 2013-09-03 11:12:28 +02:00
i915_dma.c Revert "i915: Update VGA arbiter support for newer devices" 2013-10-11 15:19:22 +10:00
i915_drv.c drm/i915: Disable GGTT PTEs on GEN6+ suspend 2013-10-18 15:44:47 +02:00
i915_drv.h drm/i915: Disable GGTT PTEs on GEN6+ suspend 2013-10-18 15:44:47 +02:00
i915_gem_context.c drm/i915: mm_list is per VMA 2013-08-08 14:06:58 +02:00
i915_gem_debug.c drm/i915: Fix #endif comment 2013-08-09 10:45:52 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst mapping the dma-buf 2013-09-03 19:17:58 +02:00
i915_gem_evict.c drm/i915/vma: Correct use after free in eviction 2013-08-23 14:52:21 +02:00
i915_gem_execbuffer.c drm/i915: fix up the relocate_entry refactoring 2013-09-03 19:18:01 +02:00
i915_gem_gtt.c drm/i915: Disable GGTT PTEs on GEN6+ suspend 2013-10-18 15:44:47 +02:00
i915_gem_stolen.c drm/i915: Skip stolen region initialisation if none is reserved 2013-09-05 14:49:50 +02:00
i915_gem_tiling.c drm/i915: plumb VM into bind/unbind code 2013-08-08 14:04:20 +02:00
i915_gem.c drm/i915: Fix up usage of SHRINK_STOP 2013-09-26 00:31:51 +02:00
i915_gpu_error.c drm/i915: Use a temporary va_list for two-pass string handling 2013-09-24 09:36:40 +02:00
i915_ioc32.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
i915_irq.c drm/i915: fix wait_for_pending_flips vs gpu hang deadlock 2013-09-09 11:26:03 +02:00
i915_reg.h drm/i915: Disable GGTT PTEs on GEN6+ suspend 2013-10-18 15:44:47 +02:00
i915_suspend.c Linux 3.10 2013-07-18 12:03:29 +02:00
i915_sysfs.c drm/i915: Adjust available RPS information through sysfs for vlv 2013-09-03 11:10:55 +02:00
i915_trace_points.c
i915_trace.h drm/i915: plumb VM into bind/unbind code 2013-08-08 14:04:20 +02:00
i915_ums.c drm/i915: scrap register address storage 2013-06-10 19:54:14 +02:00
intel_acpi.c i915: fix ACPI _DSM warning 2013-08-05 19:04:05 +02:00
intel_bios.c drm/i915: Organize VBT stuff inside drm_i915_private 2013-05-10 21:56:46 +02:00
intel_bios.h drm/i915: set CPT FDI RX polarity bits based on VBT 2013-04-18 09:43:31 +02:00
intel_crt.c drm/i915: Apply the force-detect VGA w/a to Valleyview 2013-09-03 11:10:55 +02:00
intel_ddi.c drm/i915: Track pfit enable state separately from size 2013-09-08 21:59:13 +02:00
intel_display.c Revert "i915: Update VGA arbiter support for newer devices" 2013-10-11 15:19:22 +10:00
intel_dp.c drm/i915: Mask LPSP to get PSR working even with Power Well in use by audio. 2013-10-03 20:07:17 +02:00
intel_drv.h Revert "drm/i915: Delay disabling of VGA memory until vgacon->fbcon handoff is done" 2013-10-11 15:19:10 +10:00
intel_dvo.c drm/i915/dvo: set crtc timings again for panel fixed modes 2013-09-12 00:37:00 +02:00
intel_fb.c drm/i915: Export intel_framebuffer_fini 2013-08-06 20:08:50 +02:00
intel_hdmi.c Merge tag 'drm-intel-next-2013-08-23' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-08-30 09:47:41 +10:00
intel_i2c.c drm/i915: allow package C8+ states on Haswell (disabled) 2013-08-23 14:52:33 +02:00
intel_lvds.c drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode 2013-09-03 19:18:00 +02:00
intel_modes.c drm/i915: Add "Automatic" mode for the "Broadcast RGB" property 2013-01-20 13:09:44 +01:00
intel_opregion.c drm/i915: try not to lose backlight CBLV precision 2013-09-06 09:41:20 +02:00
intel_overlay.c drm/i915: Add VM to pin 2013-08-05 19:04:09 +02:00
intel_panel.c drm/i915: Track pfit enable state separately from size 2013-09-08 21:59:13 +02:00
intel_pm.c drm/i915: disable LVDS clock gating on CPT v2 2013-10-15 09:33:44 +02:00
intel_ringbuffer.c drm/i915: Embed the ring->private within the struct intel_ring_buffer 2013-09-03 19:17:55 +02:00
intel_ringbuffer.h drm/i915: Embed the ring->private within the struct intel_ring_buffer 2013-09-03 19:17:55 +02:00
intel_sdvo_regs.h drm/i915: clear the entire sdvo infoframe buffer 2012-10-24 15:12:48 +02:00
intel_sdvo.c drm/i915/sdvo: Robustify the dtd<->drm_mode conversions 2013-09-12 00:36:59 +02:00
intel_sideband.c drm/i915: change VLV IOSF sideband accessors to not return error code 2013-05-23 23:25:42 +02:00
intel_sprite.c drm/i915: enable trickle feed on Haswell 2013-09-03 19:17:57 +02:00
intel_tv.c drm/i915/tv: clear adjusted_mode.flags 2013-09-24 20:38:59 +02:00
intel_uncore.c drm/i915: sanitize forcewake registers on reset 2013-09-03 11:10:54 +02:00
Makefile drm/i915: Colocate all GT access routines in the same file 2013-07-25 15:21:50 +02:00