linux/drivers/gpu/drm/i915/gt
Chris Wilson 4b9bb9728c drm/i915: Only recover active engines
If we issue a reset to a currently idle engine, leave it idle
afterwards. This is useful to excise a linkage between reset and the
shrinker. When waking the engine, we need to pin the default context
image which we use for overwriting a guilty context -- if the engine is
idle we do not need this pinned image! However, this pinning means that
waking the engine acquires the FS_RECLAIM, and so may trigger the
shrinker. The shrinker itself may need to wait upon the GPU to unbind
and object and so may require services of reset; ergo we should avoid
the engine wake up path.

The danger in skipping the recovery for idle engines is that we leave the
engine with no context defined, which may interfere with the operation of
the power context on some older platforms. In practice, we should only
be resetting an active GPU but it something to look out for on Ironlake
(if memory serves).

Fixes: 79ffac8599 ("drm/i915: Invert the GEM wakeref hierarchy")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190626154549.10066-2-chris@chris-wilson.co.uk
(cherry picked from commit 18398904ca)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2019-08-01 13:22:00 +03:00
..
intel_breadcrumbs.c
intel_context_types.h
intel_context.c drm/i915: Keep rings pinned while the context is active 2019-07-29 14:57:50 +03:00
intel_context.h
intel_engine_cs.c drm/i915: Fix GEN8_MCR_SELECTOR programming 2019-07-29 15:49:55 +03:00
intel_engine_pm.c drm/i915: Lift intel_engines_resume() to callers 2019-08-01 13:21:38 +03:00
intel_engine_pm.h drm/i915: Add a wakeref getter for iff the wakeref is already active 2019-08-01 13:21:52 +03:00
intel_engine_types.h drm/i915: Keep rings pinned while the context is active 2019-07-29 14:57:50 +03:00
intel_engine.h
intel_gpu_commands.h
intel_gt_pm.c drm/i915: Lift intel_engines_resume() to callers 2019-08-01 13:21:38 +03:00
intel_gt_pm.h drm/i915: Lift intel_engines_resume() to callers 2019-08-01 13:21:38 +03:00
intel_hangcheck.c
intel_lrc_reg.h
intel_lrc.c drm/i915: Keep rings pinned while the context is active 2019-07-29 14:57:50 +03:00
intel_lrc.h
intel_mocs.c
intel_mocs.h
intel_reset.c drm/i915: Only recover active engines 2019-08-01 13:22:00 +03:00
intel_reset.h
intel_ringbuffer.c drm/i915: Keep rings pinned while the context is active 2019-07-29 14:57:50 +03:00
intel_sseu.c
intel_sseu.h
intel_workarounds_types.h
intel_workarounds.c drm/i915/icl: whitelist PS_(DEPTH|INVOCATION)_COUNT 2019-07-29 15:28:21 +03:00
intel_workarounds.h
Makefile
Makefile.header-test
mock_engine.c drm/i915: Keep rings pinned while the context is active 2019-07-29 14:57:50 +03:00
mock_engine.h
selftest_engine_cs.c
selftest_hangcheck.c drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
selftest_lrc.c drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
selftest_reset.c drm/i915: Only recover active engines 2019-08-01 13:22:00 +03:00
selftest_workarounds.c drm/i915: fix whitelist selftests with readonly registers 2019-07-29 15:28:21 +03:00