linux_dsm_epyc7002/drivers/gpu/drm/i915/gt
Chris Wilson a2f90f4ff3 drm/i915/execlists: Reclaim the hanging virtual request
If we encounter a hang on a virtual engine, as we process the hang the
request may already have been moved back to the virtual engine (we are
processing the hang on the physical engine). We need to reclaim the
request from the virtual engine so that the locking is consistent and
local to the real engine on which we will hold the request for error
state capturing.

v2: Pull the reclamation into execlists_hold() and assert that cannot be
called from outside of the reset (i.e. with the tasklet disabled).
v3: Added selftest
v4: Drop the reference owned by the virtual engine

Fixes: ad18ba7b5e ("drm/i915/execlists: Offline error capture")
Testcase: igt/gem_exec_balancer/hang
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200122140243.495621-2-chris@chris-wilson.co.uk
(cherry picked from commit 989df3a7bd)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2020-02-12 17:03:53 +02:00
..
selftests drm/i915: Serialise i915_active_fence_set() with itself 2019-11-27 17:02:14 +00:00
uc drm/i915/uc: Add sanitize to to intel_uc_ops 2020-01-11 08:34:29 +00:00
debugfs_engines.c drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_engines.h drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt_pm.c drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt_pm.h drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt.c drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt.h drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
gen6_ppgtt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
gen6_ppgtt.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
gen6_renderstate.c
gen7_renderstate.c
gen8_ppgtt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
gen8_ppgtt.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
gen8_renderstate.c
gen9_renderstate.c
intel_breadcrumbs.c drm/i915: Drop GEM context as a direct link from i915_request 2019-12-20 10:52:21 +00:00
intel_context_types.h drm/i915/gt: Always poison the kernel_context image before unparking 2020-01-03 11:26:01 +00:00
intel_context.c drm/i915/gt: Acquire ce->active before ce->pin_count/ce->pin_mutex 2020-02-12 13:24:45 +02:00
intel_context.h drm/i915/gt: Pull context activation into central intel_context_pin() 2020-01-09 13:48:00 +00:00
intel_engine_cs.c drm/i915/gt: Allow temporary suspension of inflight requests 2020-02-12 16:55:58 +02:00
intel_engine_heartbeat.c drm/i915: Merge i915_request.flags with i915_request.fence.flags 2020-01-06 14:38:55 +00:00
intel_engine_heartbeat.h drm/i915/gt: Replace hangcheck by heartbeats 2019-10-23 23:52:10 +01:00
intel_engine_pm.c drm/i915/gt: Always poison the kernel_context image before unparking 2020-01-03 11:26:01 +00:00
intel_engine_pm.h drm/i915: Mark up the calling context for intel_wakeref_put() 2019-11-25 15:29:17 +02:00
intel_engine_pool_types.h
intel_engine_pool.c drm main pull for 5.5-rc1 2019-11-27 17:45:48 -08:00
intel_engine_pool.h
intel_engine_types.h drm/i915/gt: Allow temporary suspension of inflight requests 2020-02-12 16:55:58 +02:00
intel_engine_user.c drm/i915/gt: Ignore incomplete engines after init failure 2019-12-26 19:51:42 +00:00
intel_engine_user.h
intel_engine.h drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
intel_ggtt.c drm/i915/gt: Hold rpm wakeref before taking ggtt->vm.mutex 2020-01-10 20:30:40 +00:00
intel_gpu_commands.h drm/i915/gem: Prepare gen7 cmdparser for async execution 2019-12-12 10:42:57 +00:00
intel_gt_irq.c drm/i915/gt: Remove direct invocation of breadcrumb signaling 2019-12-18 17:11:28 +00:00
intel_gt_irq.h
intel_gt_pm_irq.c
intel_gt_pm_irq.h
intel_gt_pm.c drm/i915/gt: Discard stale context state from across idling 2020-01-03 11:26:01 +00:00
intel_gt_pm.h drm/i915/gt: Apply sanitiization just before resume 2019-12-26 12:37:30 +00:00
intel_gt_requests.c drm/i915/gt: Flush ongoing retires during wait_for_idle 2020-01-03 00:33:07 +00:00
intel_gt_requests.h drm/i915/gt: Schedule request retirement when timeline idles 2019-11-25 16:39:07 +02:00
intel_gt_types.h drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
intel_gt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_gt.h drm/i915/gt: Ignore incomplete engines after init failure 2019-12-26 19:51:42 +00:00
intel_gtt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_gtt.h drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
intel_llc_types.h drm/i915: Extract GT ring management 2019-10-20 20:45:18 +01:00
intel_llc.c drm/i915: Extract GT render power state management 2019-10-26 19:28:59 +01:00
intel_llc.h drm/i915: Extract GT ring management 2019-10-20 20:45:18 +01:00
intel_lrc_reg.h drm/i915/execlists: Verify context register state before execution 2019-11-02 13:39:13 +00:00
intel_lrc.c drm/i915/execlists: Reclaim the hanging virtual request 2020-02-12 17:03:53 +02:00
intel_lrc.h drm/i915/gt: Merge engine init/setup loops 2019-12-22 15:18:05 +00:00
intel_mocs.c drm/i915: prefer 3-letter acronym for tigerlake 2019-12-28 13:38:09 -08:00
intel_mocs.h drm/i915: Do initial mocs configuration directly 2019-10-16 19:35:37 +01:00
intel_ppgtt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_rc6_types.h drm/i915/gt: Only ignore rc6 parking for PCU on byt/bsw 2019-12-12 08:35:48 +00:00
intel_rc6.c drm/i915/gt: Only ignore rc6 parking for PCU on byt/bsw 2019-12-12 08:35:48 +00:00
intel_rc6.h drm/i915/gt: Simplify rc6 w/a application 2019-12-02 21:57:22 +00:00
intel_renderstate.c drm/i915: Lift i915_vma_pin() out of intel_renderstate_emit() 2019-12-03 13:23:00 +00:00
intel_renderstate.h drm/i915: Lift i915_vma_pin() out of intel_renderstate_emit() 2019-12-03 13:23:00 +00:00
intel_reset_types.h
intel_reset.c drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
intel_reset.h
intel_ring_submission.c drm/i915/gt: Pull context activation into central intel_context_pin() 2020-01-09 13:48:00 +00:00
intel_ring_types.h drm/i915/gt: Split intel_ring_submission 2019-10-24 12:14:21 +01:00
intel_ring.c drm/i915/gt: Make intel_ring_unpin() safe for concurrent pint 2019-11-26 09:50:25 +02:00
intel_ring.h drm/i915/gt: Split intel_ring_submission 2019-10-24 12:14:21 +01:00
intel_rps_types.h drm/i915: Extract GT render power state management 2019-10-26 19:28:59 +01:00
intel_rps.c drm/i915: Merge i915_request.flags with i915_request.fence.flags 2020-01-06 14:38:55 +00:00
intel_rps.h drm/i915/rps: Add frequency translation helpers 2019-12-13 22:22:05 +00:00
intel_sseu.c
intel_sseu.h
intel_timeline_types.h drm/i915/gt: Pull GT initialisation under intel_gt_init() 2019-12-22 12:51:32 +00:00
intel_timeline.c drm/i915/gt: Drop a defunct timeline assertion 2020-01-09 08:33:23 +00:00
intel_timeline.h drm/i915/gt: Pull timeline initialise to intel_gt_init_early 2019-11-01 14:47:36 +00:00
intel_workarounds_types.h
intel_workarounds.c drm/i915: prefer 3-letter acronym for broadwell 2019-12-28 13:38:06 -08:00
intel_workarounds.h
mock_engine.c drm/i915/selftests: Add a mock i915_vma to the mock_ring 2020-02-10 14:45:37 +02:00
mock_engine.h
selftest_context.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_engine_cs.c drm/i915/selftests: fix uninitialized variable sum when summing up values 2019-12-10 14:35:24 +00:00
selftest_engine_heartbeat.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_engine_pm.c drm/i915: Mark up the calling context for intel_wakeref_put() 2019-11-25 15:29:17 +02:00
selftest_engine.c
selftest_engine.h
selftest_gt_pm.c drm/i915/gt: Manual rc6 entry upon parking 2019-11-27 12:53:27 +00:00
selftest_hangcheck.c drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
selftest_llc.c drm/i915: Extract GT render power state management 2019-10-26 19:28:59 +01:00
selftest_llc.h drm/i915: Extract GT ring management 2019-10-20 20:45:18 +01:00
selftest_lrc.c drm/i915/execlists: Reclaim the hanging virtual request 2020-02-12 17:03:53 +02:00
selftest_mocs.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_rc6.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_rc6.h drm/i915/gt: Manual rc6 entry upon parking 2019-11-27 12:53:27 +00:00
selftest_reset.c drm/i915/selftests: Flush interrupts before disabling tasklets 2019-10-24 09:18:52 +01:00
selftest_timeline.c drm/i915: Serialise with engine-pm around requests on the kernel_context 2019-11-25 13:17:18 +00:00
selftest_workarounds.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00