linux/drivers/gpu/drm/i915
Chris Wilson d98c52cf4f drm/i915: Tighten reset_counter for reset status
In the reset_counter, we use two bits to track a GPU hang and reset. The
low bit is a "reset-in-progress" flag that we set to signal when we need
to break waiters in order for the recovery task to grab the mutex. As
soon as the recovery task has the mutex, we can clear that flag (which
we do by incrementing the reset_counter thereby incrementing the gobal
reset epoch). By clearing that flag when the recovery task holds the
struct_mutex, we can forgo a second flag that simply tells GEM to ignore
the "reset-in-progress" flag.

The second flag we store in the reset_counter is whether the
reset failed and we consider the GPU terminally wedged. Whilst this flag
is set, all access to the GPU (at least through GEM rather than direct mmio
access) is verboten.

PS: Fun is in store, as in the future we want to move from a global
reset epoch to a per-engine reset engine with request recovery.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1460565315-7748-6-git-send-email-chris@chris-wilson.co.uk
2016-04-14 10:45:40 +01:00
..
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: Bump command parser version for new whitelisted registers 2016-03-21 10:03:26 +01:00
i915_debugfs.c drm/i915: Tighten reset_counter for reset status 2016-04-14 10:45:40 +01:00
i915_dma.c Revert "drm/i915: Fix races on fbdev" 2016-04-01 15:03:55 +03:00
i915_drv.c drm/i915: Tighten reset_counter for reset status 2016-04-14 10:45:40 +01:00
i915_drv.h drm/i915: Tighten reset_counter for reset status 2016-04-14 10:45:40 +01:00
i915_gem.c drm/i915: Tighten reset_counter for reset status 2016-04-14 10:45:40 +01:00
i915_gem.h drm/i915: Add GEM debugging Kconfig option 2016-04-14 10:45:40 +01:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Use new i915_gem_object_pin_map for LRC 2016-04-13 10:47:54 +01:00
i915_gem_debug.c drm/i915: replace for_each_engine() 2016-03-24 14:34:11 +00:00
i915_gem_dmabuf.c Linux 4.6-rc3 2016-04-11 19:25:13 +02:00
i915_gem_evict.c
i915_gem_execbuffer.c drm,i915: Introduce drm_malloc_gfp() 2016-04-11 17:13:10 +01:00
i915_gem_fence.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2016-03-17 21:38:27 -07:00
i915_gem_gtt.c drm/i915: Store and use edram capabilities 2016-04-14 12:27:37 +03:00
i915_gem_gtt.h drm/i915: Refer to GGTT {,VM} consistently 2016-03-31 17:55:43 +03:00
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_shrinker.c drm/i915/shrinker: Restrict vmap purge to objects with vmaps 2016-04-11 17:12:16 +01:00
i915_gem_stolen.c drm/i915: Refer to GGTT {,VM} consistently 2016-03-31 17:55:43 +03:00
i915_gem_tiling.c
i915_gem_userptr.c drm/i915/userptr: Store i915 backpointer for i915_mm_struct 2016-04-11 20:39:16 +01:00
i915_gpu_error.c drm/i915: Separate out the seqno-barrier from engine->get_seqno 2016-04-09 12:09:05 +01:00
i915_guc_reg.h drm/i915/guc: always reset GuC before loading firmware 2016-04-05 13:29:24 +01:00
i915_guc_submission.c drm/i915: replace for_each_engine() 2016-03-24 14:34:11 +00:00
i915_ioc32.c
i915_irq.c drm/i915: Tighten reset_counter for reset status 2016-04-14 10:45:40 +01:00
i915_params.c drm/i915: Add fault injection support 2016-03-17 15:22:09 +02:00
i915_params.h drm/i915: Add fault injection support 2016-03-17 15:22:09 +02:00
i915_reg.h drm/i915: Calculate edram size 2016-04-14 12:27:37 +03:00
i915_suspend.c
i915_sysfs.c
i915_trace.h drm/i915: Separate out the seqno-barrier from engine->get_seqno 2016-04-09 12:09:05 +01:00
i915_trace_points.c
i915_vgpu.c drm/i915: Refer to GGTT {,VM} consistently 2016-03-31 17:55:43 +03:00
i915_vgpu.h
intel_acpi.c
intel_atomic.c
intel_atomic_plane.c
intel_audio.c drm/i915: Do not use {HAS_*, IS_*, INTEL_INFO}(dev_priv->dev) 2016-04-07 14:50:26 +03:00
intel_bios.c drm/i915: Get panel_type from OpRegion panel details 2016-04-12 13:23:43 +03:00
intel_bios.h drm/i915: hide away VBT private data in a separate header 2016-03-17 11:58:57 +02:00
intel_color.c drm/i915: Do not check crtc_state->active in intel_color_load_luts. 2016-03-31 12:46:07 +02:00
intel_crt.c
intel_csr.c
intel_ddi.c drm/i915/ddi: Silence compiler warning for unknown output type 2016-04-04 08:25:52 +01:00
intel_display.c drm/i915: Simplify checking of GPU reset_counter in display pageflips 2016-04-14 10:45:40 +01:00
intel_dp.c drm/i915: Replace ILK eDP underrun suppression with something better 2016-04-12 19:02:21 +03:00
intel_dp_link_training.c
intel_dp_mst.c drm/i915: Fix race condition in intel_dp_destroy_mst_connector() 2016-03-17 09:12:28 +01:00
intel_dpll_mgr.c drm/i915/bxt: Reversed polarity of PORT_PLL_REF_SEL bit 2016-04-11 13:02:23 +03:00
intel_dpll_mgr.h drm/i915: Use a crtc mask instead of a refcount for dpll functions, v2. 2016-03-17 09:27:28 +01:00
intel_drv.h drm/i915: Use GPLL ref clock to calculate GPU freqs on VLV/CHV 2016-04-05 21:17:39 +03:00
intel_dsi.c drm/i915: Power down the DSI PLL before reconfiguring it 2016-04-12 21:11:51 +03:00
intel_dsi.h drm/i915: Sharing the pixel_format_from_vbt to whole i915 2016-04-07 16:46:06 +03:00
intel_dsi_panel_vbt.c drm/i915: Sharing the pixel_format_from_vbt to whole i915 2016-04-07 16:46:06 +03:00
intel_dsi_pll.c drm/i915: Fix CHV DSI PLL refclk during state readout 2016-04-12 21:12:02 +03:00
intel_dvo.c
intel_fbc.c drm/i915: Refer to GGTT {,VM} consistently 2016-03-31 17:55:43 +03:00
intel_fbdev.c Revert "drm/i915: Fix races on fbdev" 2016-04-01 15:03:55 +03:00
intel_fifo_underrun.c drm/i915: Do not use {HAS_*, IS_*, INTEL_INFO}(dev_priv->dev) 2016-04-07 14:50:26 +03:00
intel_frontbuffer.c
intel_guc.h drm/i915: Disentangle i915_drv.h includes 2016-04-14 10:45:40 +01:00
intel_guc_fwif.h
intel_guc_loader.c drm/i915/guc: always reset GuC before loading firmware 2016-04-05 13:29:24 +01:00
intel_hdmi.c drm/i915: Do not use {HAS_*, IS_*, INTEL_INFO}(dev_priv->dev) 2016-04-07 14:50:26 +03:00
intel_hotplug.c
intel_i2c.c drm/i915: Make GMBUS timeout message DRM_DEBUG_KMS 2016-04-12 13:23:17 +03:00
intel_lrc.c drm/i915: Hide the atomic_read(reset_counter) behind a helper 2016-04-14 10:45:40 +01:00
intel_lrc.h drm/i915: Disentangle i915_drv.h includes 2016-04-14 10:45:40 +01:00
intel_lvds.c drm/i915: fix deadlock on lid open 2016-03-30 12:17:13 +02:00
intel_mocs.c drm/i915: introduce for_each_engine_id() 2016-03-24 14:34:06 +00:00
intel_mocs.h
intel_modes.c
intel_opregion.c drm/i915/opregion: remove unnecessary ifdefs on CONFIG_ACPI 2016-04-13 15:54:29 +03:00
intel_overlay.c drm/i915: Refer to GGTT {,VM} consistently 2016-03-31 17:55:43 +03:00
intel_panel.c drm/i915/panel: setup pwm backlight based on connector type 2016-03-16 18:28:50 +02:00
intel_pm.c drm/i915: Move vlv_init_display_clock_gating() to the display power well 2016-04-12 19:09:07 +03:00
intel_psr.c drm/i915: Do not use {HAS_*, IS_*, INTEL_INFO}(dev_priv->dev) 2016-04-07 14:50:26 +03:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Hide the atomic_read(reset_counter) behind a helper 2016-04-14 10:45:40 +01:00
intel_ringbuffer.h drm/i915: Only grab correct forcewake for the engine with execlists 2016-04-12 15:35:22 +01:00
intel_runtime_pm.c drm/i915: Move vlv_init_display_clock_gating() to the display power well 2016-04-12 19:09:07 +03:00
intel_sdvo.c drm/i915: move sdvo mappings to vbt data 2016-03-29 15:12:30 +03:00
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c drm/i915: Fix plane init failure paths 2016-04-01 23:24:21 +03:00
intel_tv.c drm/i915: move VBT based TV presence check to intel_bios.c 2016-03-16 18:28:07 +02:00
intel_uncore.c drm/i915: Calculate edram size 2016-04-14 12:27:37 +03:00
intel_vbt_defs.h drm/i915: Update VBT fields for child devices 2016-04-06 14:10:15 +03:00
Kconfig
Kconfig.debug drm/i915: Add GEM debugging Kconfig option 2016-04-14 10:45:40 +01:00
Makefile drm/i915: Force clean compilation with -Werror 2016-04-14 10:45:40 +01:00