linux-stable/drivers/gpu/drm/i915
Chris Wilson bafb2f7d47 drm/i915/execlists: Reset RING registers upon resume
There is a disparity in the context image saved to disk and our own
bookkeeping - that is we presume the RING_HEAD and RING_TAIL match our
stored ce->ring->tail value. However, as we emit WA_TAIL_DWORDS into the
ring but may not tell the GPU about them, the GPU may be lagging behind
our bookkeeping. Upon hibernation we do not save stolen pages, presuming
that their contents are volatile. This means that although we start
writing into the ring at tail, the GPU starts executing from its HEAD
and there may be some garbage in between and so the GPU promptly hangs
upon resume.

Testcase: igt/gem_exec_suspend/basic-S4
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96526
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160921135108.29574-3-chris@chris-wilson.co.uk
2016-09-21 16:57:48 +01:00
..
gvt
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: use NULL for NULL pointers 2016-09-16 10:35:43 +03:00
i915_debugfs.c drm/i915: Try to print INSTDONE bits for all slice/subslice 2016-09-21 15:33:29 +03:00
i915_drv.c drm/i915: Only shrink the unbound objects during freeze 2016-09-21 16:57:06 +01:00
i915_drv.h drm/i915: Only shrink the unbound objects during freeze 2016-09-21 16:57:06 +01:00
i915_gem.c drm/i915: Only shrink the unbound objects during freeze 2016-09-21 16:57:06 +01:00
i915_gem.h
i915_gem_batch_pool.c drm/i915: Double check the active status on the batch pool 2016-08-04 20:19:50 +01:00
i915_gem_batch_pool.h drm/i915: Double check the active status on the batch pool 2016-08-04 20:19:50 +01:00
i915_gem_context.c drm/i915: Update reset path to fix incomplete requests 2016-09-09 14:23:05 +01:00
i915_gem_dmabuf.c drm/i915: Support for creating write combined type vmaps 2016-08-12 13:06:36 +01:00
i915_gem_dmabuf.h
i915_gem_evict.c drm/i915: Mark up all locked waiters 2016-09-09 14:23:03 +01:00
i915_gem_execbuffer.c drm/i915: Serialise execbuf operation after a dma-buf reservation object 2016-09-09 14:23:08 +01:00
i915_gem_fence.c drm/i915: Flush delayed fence releases after reset 2016-08-19 16:59:22 +01:00
i915_gem_gtt.c drm/i915: remove writeq ifdeffery 2016-09-12 11:33:56 +03:00
i915_gem_gtt.h drm/i915: Embed the scratch page struct into each VM 2016-08-22 12:19:52 +01:00
i915_gem_render_state.c drm/i915: Use VMA for render state page tracking 2016-08-15 11:01:11 +01:00
i915_gem_render_state.h drm/i915: Use VMA for render state page tracking 2016-08-15 11:01:11 +01:00
i915_gem_request.c drm/i915: Nonblocking request submission 2016-09-09 14:23:08 +01:00
i915_gem_request.h drm/i915: Nonblocking request submission 2016-09-09 14:23:08 +01:00
i915_gem_shrinker.c drm/i915: Mark up all locked waiters 2016-09-09 14:23:03 +01:00
i915_gem_stolen.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
i915_gem_tiling.c drm/i915: Move fence tracking from object to vma 2016-08-18 22:36:50 +01:00
i915_gem_userptr.c drm/i915: Expand bool interruptible to pass flags to i915_wait_request() 2016-09-09 14:23:03 +01:00
i915_gpu_error.c drm/i915: Try to print INSTDONE bits for all slice/subslice 2016-09-21 15:33:29 +03:00
i915_guc_reg.h drm/i915/guc: general tidying up (loader) 2016-09-15 10:56:02 +01:00
i915_guc_submission.c drm/i915/guc: general tidying up (submission) 2016-09-15 10:56:07 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Restore current RPS state after reset 2016-09-21 16:52:39 +01:00
i915_memcpy.c drm/i915: Mark the static key for movntqda as static 2016-08-17 12:36:07 +01:00
i915_mm.c drm/i915: Use remap_io_mapping() to prefault all PTE in a single pass 2016-08-19 17:13:36 +01:00
i915_params.c drm/i915: Add a way to test the modeset done during gpu reset, v3. 2016-08-05 23:28:28 +03:00
i915_params.h drm/i915: Add a way to test the modeset done during gpu reset, v3. 2016-08-05 23:28:28 +03:00
i915_pci.c drm/i915: Add ddb size field to device info structure 2016-09-15 13:57:36 +03:00
i915_pvinfo.h
i915_reg.h drm/i915: Try to print INSTDONE bits for all slice/subslice 2016-09-21 15:33:29 +03:00
i915_suspend.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
i915_sw_fence.c drm/i915: Add a sw fence for collecting up dma fences 2016-09-09 14:22:55 +01:00
i915_sw_fence.h drm/i915: Add a sw fence for collecting up dma fences 2016-09-09 14:22:55 +01:00
i915_sysfs.c drm/i915: Drop mutex around clearing error state 2016-09-02 08:32:55 +01:00
i915_trace.h drm/i915: Remove surplus drm_device parameter to i915_gem_evict_something() 2016-08-04 20:19:50 +01:00
i915_trace_points.c
i915_vgpu.c drm/i915: enable vGPU detection for all 2016-09-06 16:39:36 +03:00
i915_vgpu.h
intel_acpi.c
intel_atomic.c
intel_atomic_plane.c drm/i915: Use drm_plane_helper_check_state() 2016-08-08 14:19:56 -04:00
intel_audio.c drm/i915: Eliminate redundant local variable definition 2016-08-24 08:49:49 -07:00
intel_bios.c drm/i915/bios: log about presence of DSI sequences we do not run 2016-09-19 18:38:02 +03:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Drive request submission through fence callbacks 2016-09-09 14:23:05 +01:00
intel_color.c drm/i915: Use more atomic state in intel_color.c 2016-08-23 11:58:56 +02:00
intel_crt.c drm/i915: Cleanup crt disable sequence on hsw+ 2016-08-24 09:49:10 +02:00
intel_csr.c drm/i915: Fix botched merge that downgrades CSR versions. 2016-08-22 12:54:50 +02:00
intel_ddi.c drm/i915: Add support for Kabylake to function obtaining shared PLL 2016-09-12 22:06:08 -07:00
intel_device_info.c drm/i915: sseu: Add debug printf for slice/subslice masks 2016-09-02 18:17:52 +03:00
intel_display.c drm/i915: Queue page flip work via a low latency, unbound workqueue 2016-09-21 16:40:57 +03:00
intel_dp.c drm/i915: make intel_dp_compute_bpp static 2016-09-16 10:34:56 +03:00
intel_dp_aux_backlight.c
intel_dp_link_training.c drm/i915: Make DP link training channel equalization DP 1.2 Spec compliant 2016-09-09 14:53:18 -07:00
intel_dp_mst.c drm/i915: Remove ddi_pll_sel from intel_crtc_state 2016-09-07 13:55:33 -07:00
intel_dpio_phy.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dpll_mgr.c drm/i915: do not use 'false' as a NULL pointer 2016-09-16 10:35:16 +03:00
intel_dpll_mgr.h drm/i915/dp: Add a standalone function to obtain shared dpll for HSW/BDW/SKL/BXT 2016-09-09 14:53:18 -07:00
intel_drv.h drm/i915/backlight: setup and cache pwm alternate increment value 2016-09-20 11:49:49 +03:00
intel_dsi.c drm/i915: Convert intel_dsi to use atomic state 2016-08-23 11:21:39 +02:00
intel_dsi.h
intel_dsi_dcs_backlight.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dsi_panel_vbt.c drm/i915/dsi: double check element parsing against size if present 2016-09-19 18:38:11 +03:00
intel_dsi_pll.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dvo.c drm/i915/dvo: Remove dangling call to drm_encoder_cleanup() 2016-08-24 14:54:01 +03:00
intel_engine_cs.c drm/i915: Update reset path to fix incomplete requests 2016-09-09 14:23:05 +01:00
intel_fbc.c Revert "drm/i915/fbc: Allow on unfenced surfaces, for recent gen" 2016-08-24 19:32:35 +01:00
intel_fbdev.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
intel_fifo_underrun.c drm/i915: Convert dev_priv->dev backpointers to dev_priv->drm 2016-07-05 11:58:45 +01:00
intel_frontbuffer.c drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_frontbuffer.h drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_guc.h drm/i915/guc: general tidying up (submission) 2016-09-15 10:56:07 +01:00
intel_guc_fwif.h
intel_guc_loader.c drm/i915/guc: general tidying up (loader) 2016-09-15 10:56:02 +01:00
intel_gvt.c
intel_gvt.h
intel_hdmi.c Revert "drm/i915: Check live status before reading edid" 2016-09-07 14:53:31 +03:00
intel_hotplug.c drm/i915: Mark i915_hpd_poll_init_work as static 2016-08-17 12:36:15 +01:00
intel_i2c.c drm/i915: Take forcewake once for the entire GMBUS transaction 2016-08-22 18:42:44 +01:00
intel_lrc.c drm/i915/execlists: Reset RING registers upon resume 2016-09-21 16:57:48 +01:00
intel_lrc.h drm/i915: Update reset path to fix incomplete requests 2016-09-09 14:23:05 +01:00
intel_lvds.c drm/i915: Convert intel_lvds to use atomic state 2016-08-23 11:29:45 +02:00
intel_mocs.c drm/i915: Rename struct intel_ringbuffer to struct intel_ring 2016-08-02 22:58:16 +01:00
intel_mocs.h drm/i915: rename 'ring' where it refers to an engine or engine_id 2016-07-21 09:59:41 +01:00
intel_modes.c drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
intel_opregion.c drm/i915: Ignore OpRegion panel type except on select machines 2016-09-14 10:35:00 +03:00
intel_overlay.c drm/i915: Embed the io-mapping struct inside drm_i915_private 2016-08-19 17:13:35 +01:00
intel_panel.c drm/i915/backlight: setup backlight pwm alternate increment on backlight enable 2016-09-20 12:01:38 +03:00
intel_pm.c drm/i915: Add ddb size field to device info structure 2016-09-15 13:57:36 +03:00
intel_psr.c Revert "drm/i915/psr: Make idle_frames sensible again" 2016-09-13 11:57:53 +03:00
intel_renderstate.h drm/i915: Remove duplicate golden render state init from execlists 2016-08-02 22:58:30 +01:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Update reset path to fix incomplete requests 2016-09-09 14:23:05 +01:00
intel_ringbuffer.h drm/i915: Try to print INSTDONE bits for all slice/subslice 2016-09-21 15:33:29 +03:00
intel_runtime_pm.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
intel_sdvo.c drm/i915: Convert intel_sdvo to use atomic state 2016-08-23 11:21:51 +02:00
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c drm/i915/skl: Don't try to update plane watermarks if they haven't changed 2016-09-07 12:29:17 +02:00
intel_tv.c drm/i915: Make encoder->compute_config take the connector state 2016-08-23 11:07:23 +02:00
intel_uncore.c drm/i915: Remove 64b mmio write vfuncs 2016-09-06 17:51:01 +01:00
intel_vbt_defs.h
Kconfig
Kconfig.debug drm/i915: Select DRM_VGEM for igt 2016-07-10 13:22:39 +01:00
Makefile drm/i915: Add a sw fence for collecting up dma fences 2016-09-09 14:22:55 +01:00