OpenCloudOS-Kernel/drivers/gpu/drm/i915
Michel Thierry 142bc7d99b drm/i915: Modify error handler for per engine hang recovery
This is a preparatory patch which modifies error handler to do per engine
hang recovery. The actual patch which implements this sequence follows
later in the series. The aim is to prepare existing recovery function to
adapt to this new function where applicable (which fails at this point
because core implementation is lacking) and continue recovery using legacy
full gpu reset.

A helper function is also added to query the availability of engine
reset. A subsequent patch will add the capability to query which type
of reset is present (engine -> full -> no-reset) via the get-param
ioctl.

It has been decided that the error events that are used to notify user of
reset will only be sent in case if full chip reset. In case of just
single (or multiple) engine resets, userspace won't be notified by these
events.

Note that this implementation of engine reset is for i915 directly
submitting to the ELSP, where the driver manages the hang detection,
recovery and resubmission. With GuC submission these tasks are shared
between driver and firmware; i915 will still responsible for detecting a
hang, and when it does it will have to request GuC to reset that Engine and
remind the firmware about the outstanding submissions. This will be
added in different patch.

v2: rebase, advertise engine reset availability in platform definition,
add note about GuC submission.
v3: s/*engine_reset*/*reset_engine*/. (Chris)
Handle reset as 2 level resets, by first going to engine only and fall
backing to full/chip reset as needed, i.e. reset_engine will need the
struct_mutex.
v4: Pass the engine mask to i915_reset. (Chris)
v5: Rebase, update selftests.
v6: Rebase, prepare for mutex-less reset engine.
v7: Pass reset_engine mask as a function parameter, and iterate over the
engine mask for reset_engine. (Chris)
v8: Use i915.reset >=2 in has_reset_engine; remove redundant reset
logging; add a reset-engine-in-progress flag to prevent concurrent
resets, and avoid dual purposing of reset-backoff. (Chris)
v9: Support reset of different engines in parallel (Chris)
v10: Handle reset-engine flag locking better (Chris)
v11: Squash in reporting of per-engine-reset availability.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Signed-off-by: Ian Lister <ian.lister@intel.com>
Signed-off-by: Tomas Elf <tomas.elf@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170615201828.23144-4-michel.thierry@intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170620095751.13127-5-chris@chris-wilson.co.uk
2017-06-20 21:00:11 +01:00
..
gvt drm/i915: Allow contexts to be unreferenced locklessly 2017-06-20 17:13:47 +01:00
selftests drm/i915: Wait for concurrent global resets to complete 2017-06-20 20:59:58 +01:00
Kconfig Merge tag 'topic/designware-baytrail-2017-03-02' of git://anongit.freedesktop.org/git/drm-intel into drm-intel-next-queued 2017-03-13 09:26:06 +01:00
Kconfig.debug Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
Makefile drm/i915/perf: add GLK support 2017-06-14 12:31:58 -07:00
dvo.h
dvo_ch7xxx.c drm/i915/dvo: fix debug logging on unknown DID 2017-06-01 15:53:03 +03:00
dvo_ch7017.c drm/i915/lvds: Remove magic from PLL programming 2017-05-10 13:47:55 +03:00
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: Redefine ptr_pack_bits() and friends 2017-05-17 13:38:04 +01:00
i915_debugfs.c drm/i915: Group all the global context information together 2017-06-20 17:13:40 +01:00
i915_drv.c drm/i915: Modify error handler for per engine hang recovery 2017-06-20 21:00:11 +01:00
i915_drv.h drm/i915: Modify error handler for per engine hang recovery 2017-06-20 21:00:11 +01:00
i915_gem.c drm/i915: Look for active requests earlier in the reset path 2017-06-20 21:00:03 +01:00
i915_gem.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_gem_batch_pool.c drm/i915: Reinstate reservation_object zapping for batch_pool objects 2017-06-14 14:06:22 +01:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Store i915_gem_object_is_coherent() as a bit next to cache-dirty 2017-06-16 14:52:27 +01:00
i915_gem_clflush.h drm/i915: Mark up clflushes as belonging to an unordered timeline 2017-05-03 11:08:45 +01:00
i915_gem_context.c drm/i915: Enable rcu-only context lookups 2017-06-20 17:13:54 +01:00
i915_gem_context.h drm/i915: Enable rcu-only context lookups 2017-06-20 17:13:54 +01:00
i915_gem_dmabuf.c drm/i915: Implement dma_buf_ops->kmap 2017-05-03 23:15:02 +01:00
i915_gem_evict.c drm/i915: Eliminate lots of iterations over the execobjects array 2017-06-16 16:54:05 +01:00
i915_gem_execbuffer.c drm/i915: Enable rcu-only context lookups 2017-06-20 17:13:54 +01:00
i915_gem_fence_reg.c drm/i915: Take rpm wakelock for releasing the fence on unbind 2017-03-06 14:38:18 +00:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915/cfl: Introduce Coffee Lake workarounds. 2017-06-16 16:14:29 -07:00
i915_gem_gtt.h drm/i915: First try the previous execbuffer location 2017-06-16 16:54:05 +01:00
i915_gem_internal.c drm/i915: Store i915_gem_object_is_coherent() as a bit next to cache-dirty 2017-06-16 14:52:27 +01:00
i915_gem_object.h drm/i915: Store a direct lookup from object handle to vma 2017-06-16 16:54:04 +01:00
i915_gem_render_state.c scripts/spelling.txt: add "aligment" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
i915_gem_render_state.h
i915_gem_request.c drm/i915: Remove the spin-request during execbuf await_request 2017-06-08 12:33:09 +01:00
i915_gem_request.h Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
i915_gem_shrinker.c drm/i915: Spin for struct_mutex inside shrinker 2017-06-14 10:55:11 +01:00
i915_gem_stolen.c drm/i915: Store i915_gem_object_is_coherent() as a bit next to cache-dirty 2017-06-16 14:52:27 +01:00
i915_gem_tiling.c drm/i915: Fix logical inversion for gen4 quirking 2017-06-01 14:27:44 +01:00
i915_gem_timeline.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_gem_timeline.h drm/i915: Rename intel_timeline.sync_seqno[] to .global_sync[] 2017-05-03 11:08:52 +01:00
i915_gem_userptr.c drm/i915: Wait upon userptr get-user-pages within execbuffer 2017-06-16 16:54:05 +01:00
i915_gpu_error.c drm/i915/execlists: Pack the count into the low bits of the port.request 2017-05-17 13:38:06 +01:00
i915_guc_reg.h
i915_guc_submission.c drm/i915/guc: Fix doorbell id selection 2017-05-31 10:34:03 +03:00
i915_ioc32.c
i915_irq.c drm/i915: Modify error handler for per engine hang recovery 2017-06-20 21:00:11 +01:00
i915_memcpy.c
i915_mm.c
i915_oa_bdw.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_bdw.h drm/i915/perf: Add 'render basic' Gen8+ OA unit configs 2017-06-14 12:31:57 -07:00
i915_oa_bxt.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_bxt.h drm/i915/perf: Add 'render basic' Gen8+ OA unit configs 2017-06-14 12:31:57 -07:00
i915_oa_chv.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_chv.h drm/i915/perf: Add 'render basic' Gen8+ OA unit configs 2017-06-14 12:31:57 -07:00
i915_oa_glk.c drm/i915/perf: add GLK support 2017-06-14 12:31:58 -07:00
i915_oa_glk.h drm/i915/perf: add GLK support 2017-06-14 12:31:58 -07:00
i915_oa_hsw.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_hsw.h drm/i915/perf: rework mux configurations queries 2017-06-14 12:31:57 -07:00
i915_oa_kblgt2.c drm/i915/perf: add KBL support 2017-06-14 12:31:58 -07:00
i915_oa_kblgt2.h drm/i915/perf: add KBL support 2017-06-14 12:31:58 -07:00
i915_oa_kblgt3.c drm/i915/perf: add KBL support 2017-06-14 12:31:58 -07:00
i915_oa_kblgt3.h drm/i915/perf: add KBL support 2017-06-14 12:31:58 -07:00
i915_oa_sklgt2.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_sklgt2.h drm/i915/perf: Add 'render basic' Gen8+ OA unit configs 2017-06-14 12:31:57 -07:00
i915_oa_sklgt3.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_sklgt3.h drm/i915/perf: Add 'render basic' Gen8+ OA unit configs 2017-06-14 12:31:57 -07:00
i915_oa_sklgt4.c drm/i915/perf: Add more OA configs for BDW, CHV, SKL + BXT 2017-06-14 12:31:57 -07:00
i915_oa_sklgt4.h drm/i915/perf: Add 'render basic' Gen8+ OA unit configs 2017-06-14 12:31:57 -07:00
i915_params.c drm/i915: Update i915.reset to handle engine resets 2017-06-20 21:00:07 +01:00
i915_params.h drm/i915: Update i915.reset to handle engine resets 2017-06-20 21:00:07 +01:00
i915_pci.c drm/i915: Modify error handler for per engine hang recovery 2017-06-20 21:00:11 +01:00
i915_perf.c drm/i915: Allow contexts to be unreferenced locklessly 2017-06-20 17:13:47 +01:00
i915_pvinfo.h drm/i915: Fix GVT-g PVINFO version compatibility check 2017-06-12 14:39:24 +03:00
i915_reg.h drm/i915/cnl: Fix RMW on ddi vswing sequence. 2017-06-19 14:06:20 -07:00
i915_selftest.h drm/i915: Use fault-injection to force the shrinker to run in live GTT tests 2017-02-13 20:46:32 +00:00
i915_suspend.c
i915_sw_fence.c drm/i915: Import the kfence selftests for i915_sw_fence 2017-05-17 13:38:02 +01:00
i915_sw_fence.h drm/i915: Remove kref from i915_sw_fence 2017-05-17 13:38:01 +01:00
i915_syncmap.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_syncmap.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_sysfs.c drm/i915: Group all the global context information together 2017-06-20 17:13:40 +01:00
i915_trace.h drm/i915: Add g4x watermark tracepoint 2017-05-10 16:48:32 +03:00
i915_trace_points.c
i915_utils.h drm/i915: Store a direct lookup from object handle to vma 2017-06-16 16:54:04 +01:00
i915_vgpu.c drm/i915: Fix GVT-g PVINFO version compatibility check 2017-06-12 14:39:24 +03:00
i915_vgpu.h
i915_vma.c drm/i915: Stash a pointer to the obj's resv in the vma 2017-06-16 16:54:05 +01:00
i915_vma.h drm/i915: Stash a pointer to the obj's resv in the vma 2017-06-16 16:54:05 +01:00
intel_acpi.c
intel_atomic.c drm/i915/cnl: Fix Cannonlake scaler mode programing. 2017-06-12 09:45:55 -07:00
intel_atomic_plane.c Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
intel_audio.c drm/i915: Reorganize intel_lpe_audio_notify() arguments 2017-05-03 16:20:48 +03:00
intel_bios.c drm/i915/vbt: split out defaults that are set when there is no VBT 2017-03-14 10:49:13 +02:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Skip adding the request to the signal tree is complete 2017-06-08 12:33:08 +01:00
intel_cdclk.c drm/i915/cnl: Allow dynamic cdclk changes on CNL 2017-06-12 09:41:33 -07:00
intel_color.c drm/i915/glk: Improve rounding caused by pre-CSC gamma tables 2017-03-14 16:07:00 +02:00
intel_crt.c drm/i915: Convert intel_crt connector properties to atomic. 2017-04-12 10:53:22 +02:00
intel_csr.c drm/i915: Use HAS_CSR instead of gen number on DMC load. 2017-06-12 09:45:30 -07:00
intel_ddi.c drm/i915/cnl: Fix RMW on ddi vswing sequence. 2017-06-19 14:06:20 -07:00
intel_device_info.c drm/i915/cfl: Introduce Coffee Lake platform definition. 2017-06-08 09:55:08 -07:00
intel_display.c drm/i915: Remove pipe A quirk remnants 2017-06-15 15:38:27 +03:00
intel_dp.c drm/i915: Make intel_digital_port_connected() work for any port 2017-06-19 22:11:21 +03:00
intel_dp_aux_backlight.c drm/i915: Don't enable backlight at setup time. 2017-06-15 16:11:08 +03:00
intel_dp_link_training.c drm/i915: Implement Link Rate fallback on Link training failure 2017-04-13 21:57:37 +03:00
intel_dp_mst.c Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
intel_dpio_phy.c
intel_dpll_mgr.c drm/i915/cnl: make function cnl_ddi_dp_set_dpll_hw_state static 2017-06-15 15:53:56 +03:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h drm/i915: Add i830 "pipes power well" 2017-06-15 15:35:38 +03:00
intel_dsi.c drm/i915/glk: Add cold boot sequence for GLK DSI 2017-06-15 23:03:57 +03:00
intel_dsi.h drm/i915/dsi: arrange intel_dsi.h according to relevant files 2017-03-07 15:18:43 +02:00
intel_dsi_dcs_backlight.c drm/i915: Pass atomic state to backlight enable/disable/set callbacks. 2017-06-12 16:06:28 +02:00
intel_dsi_pll.c drm/i915/glk: Validate only DSI PORT A PLL divider 2017-02-28 11:54:52 +02:00
intel_dsi_vbt.c drm/i915/glk: Calculate high/low switch count for GLK 2017-05-15 18:29:46 +03:00
intel_dvo.c drm/i915: Convert intel DVO connector to atomic 2017-04-12 10:53:29 +02:00
intel_engine_cs.c drm/i915: Simplify intel_engines_init 2017-06-20 12:42:12 +01:00
intel_fbc.c drm/i915: Fix 90/270 rotated coordinates for FBC 2017-06-06 19:31:28 +03:00
intel_fbdev.c drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
intel_fifo_underrun.c drm/i915/cnl: Enable fifo underrun for Cannonlake. 2017-06-12 09:46:08 -07:00
intel_frontbuffer.c drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
intel_frontbuffer.h drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
intel_guc_ct.c drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fwif.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_loader.c drm/i915/guc: Load GuC on Coffee Lake 2017-06-09 11:56:53 -07:00
intel_guc_log.c drm/i915: Treat WC a separate cache domain 2017-04-12 12:35:17 +01:00
intel_gvt.c drm/i915/gvt: Return -EIO if host GuC submission is enabled when loading GVT-g 2017-05-30 16:00:07 +03:00
intel_gvt.h drm/i915/gvt: Add gvt options sanitize function 2017-05-30 15:59:47 +03:00
intel_hangcheck.c drm/i915: Avoid format string expansion from engine names 2017-04-19 15:49:27 +03:00
intel_hdmi.c drm/i915/cnp: add CNP gmbus support 2017-06-02 13:59:32 -07:00
intel_hotplug.c drm/atomic: Acquire connection_mutex lock in drm_helper_probe_single_connector_modes, v4. 2017-04-06 21:29:23 +02:00
intel_huc.c drm/i915/huc: Load HuC on Coffee Lake 2017-06-09 11:57:16 -07:00
intel_i2c.c drm/i915/cnp: add CNP gmbus support 2017-06-02 13:59:32 -07:00
intel_lpe_audio.c drm/i915: Fix runtime PM for LPE audio 2017-05-15 14:44:11 +03:00
intel_lrc.c drm/i915: Group all the global context information together 2017-06-20 17:13:40 +01:00
intel_lrc.h drm/i915: Sanitize engine context sizes 2017-04-28 12:11:59 +03:00
intel_lspcon.c drm/i915/lspcon: Fix resume time initialization due to unasserted HPD 2017-02-16 11:59:10 +02:00
intel_lvds.c drm/i915: Pass crtc_state and connector state to backlight enable/disable functions 2017-06-12 16:05:45 +02:00
intel_mocs.c drm/i915/cnl: Cannonlake has same MOCS table than Skylake. 2017-06-07 07:29:51 -07:00
intel_mocs.h
intel_modes.c
intel_opregion.c drm/i915: Pass connector state to intel_panel_set_backlight_acpi 2017-06-12 16:06:10 +02:00
intel_overlay.c drm/i915: Remove pipe A quirk remnants 2017-06-15 15:38:27 +03:00
intel_panel.c drm/i915: Pass atomic state to backlight enable/disable/set callbacks. 2017-06-12 16:06:28 +02:00
intel_pipe_crc.c drm/i915: use memdup_user_nul 2017-05-08 09:28:39 +02:00
intel_pm.c Revert "drm/i915/skl: New ddb allocation algorithm" 2017-06-15 14:01:14 -07:00
intel_psr.c drm/i915/psr: disable psr2 for resolution greater than 32X20 2017-05-30 10:11:41 -07: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: Do not re-calculate num_rings locally 2017-06-20 12:42:13 +01:00
intel_ringbuffer.h drm/i915: Look for active requests earlier in the reset path 2017-06-20 21:00:03 +01:00
intel_runtime_pm.c drm/i915: Add i830 "pipes power well" 2017-06-15 15:35:38 +03:00
intel_sdvo.c drm/i915: Actually attach the tv_format property to the SDVO connector 2017-06-16 15:46:57 +03:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: Distinguish between timeout and error in sideband transactions 2017-02-27 17:22:19 +00:00
intel_sprite.c drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail 2017-06-06 17:58:42 +03:00
intel_tv.c drm/i915: Convert intel_tv connector properties to atomic, v5. 2017-04-12 10:53:22 +02:00
intel_uc.c drm/i915/guc: Clear enable_guc_loading in case of init failure 2017-06-08 12:21:19 +03:00
intel_uc.h drm/i915/guc: capture GuC logs if FW fails to load 2017-05-26 13:59:56 +01:00
intel_uncore.c drm/i915: Modify error handler for per engine hang recovery 2017-06-20 21:00:11 +01:00
intel_uncore.h drm/i915: Keep the forcewake timer alive for 1ms past the most recent use 2017-05-26 15:58:21 +01:00
intel_vbt_defs.h