aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_request.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-09-10 21:52:54 -0400
committerDave Airlie <airlied@redhat.com>2018-09-10 21:53:12 -0400
commitb1c1566822ab489a945dfdafee651aa29de160c7 (patch)
tree3e8e035ab581dac7ce3b77ce4a7b6ab6f14b29ea /drivers/gpu/drm/i915/i915_request.c
parent1f3eb3461f58a4c48da67af4a8c4deb4d3c97214 (diff)
parenta28957b8f10be714f076fb3981a3b1a0318c48c2 (diff)
Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
Merge tag 'gvt-next-2018-09-04' drm-intel-next-2018-09-06-1: UAPI Changes: - GGTT coherency GETPARAM: GGTT has turned out to be non-coherent for some platforms, which we've failed to communicate to userspace so far. SNA was modified to do extra flushing on non-coherent GGTT access, while Mesa will mitigate by always requiring WC mapping (which is non-coherent anyway). - Neuter Resource Streamer uAPI: There never really were users for the feature, so neuter it while keeping the interface bits for compatibility. This is a long due item from past. Cross-subsystem Changes: - Backmerge of branch drm-next-4.19 for DP_DPCD_REV_14 changes Core Changes: - None Driver Changes: - A load of Icelake (ICL) enabling patches (Paulo, Manasi) - Enabled full PPGTT for IVB,VLV and HSW (Chris) - Bugzilla #107113: Distribute DDB based on display resolutions (Mahesh) - Bugzillas #100023,#107476,#94921: Support limited range DP displays (Jani) - Bugzilla #107503: Increase LSPCON timeout (Fredrik) - Avoid boosting GPU due to an occasional stall in interactive workloads (Chris) - Apply GGTT coherency W/A only for affected systems instead of all (Chris) - Fix for infinite link training loop for faulty USB-C MST hubs (Nathan) - Keep KMS functional on Gen4 and earlier when GPU is wedged (Chris) - Stop holding ppGTT reference from closed VMAs (Chris) - Clear error registers after error capture (Lionel) - Various Icelake fixes (Anusha, Jyoti, Ville, Tvrtko) - Add missing Coffeelake (CFL) PCI IDs (Rodrigo) - Flush execlists tasklet directly from reset-finish (Chris) - Fix LPE audio runtime PM (Chris) - Fix detection of out of range surface positions (GLK/CNL) (Ville) - Remove wait-for-idle for PSR2 (Dhinakaran) - Power down existing display hardware resources when display is disabled (Chris) - Don't allow runtime power management if RC6 doesn't exist (Chris) - Add debugging checks for runtime power management paths (Imre) - Increase symmetry in display power init/fini paths (Imre) - Isolate GVT specific macros from i915_reg.h (Lucas) - Increase symmetry in power management enable/disable paths (Chris) - Increase IP disable timeout to 100 ms to avoid DRM_ERROR (Imre) - Fix memory leak from HDMI HDCP write function (Brian, Rodrigo) - Reject Y/Yf tiling on interlaced modes (Ville) - Use a cached mapping for the physical HWS on older gens (Chris) - Force slow path of writing relocations to buffer if unable to write to userspace (Chris) - Do a full device reset after being wedged (Chris) - Keep forcewake counts over reset (in case of debugfs user) (Imre, Chris) - Avoid false-positive errors from power wells during init (Imre) - Reset engines forcibly in exchange of declaring whole device wedged (Mika) - Reduce context HW ID lifetime in preparation for Icelake (Chris) - Attempt to recover from module load failures (Chris) - Keep select interrupts over a reset to avoid missing/losing them (Chris) - GuC submission backend improvements (Jakub) - Terminate context images with BB_END (Chris, Lionel) - Make GCC evaluate GGTT view struct size assertions again (Ville) - Add selftest to exercise suspend/hibernate code-paths for GEM (Chris) - Use a full emulation of a user ppgtt context in selftests (Chris) - Exercise resetting in the middle of a wait-on-fence in selftests (Chris) - Fix coherency issues on selftests for Baytrail (Chris) - Various other GEM fixes / self-test updates (Chris, Matt) - GuC doorbell self-tests (Daniele) - PSR mode control through debugfs for IGTs (Maarten) - Degrade expected WM latency errors to DRM_DEBUG_KMS (Chris) - Cope with errors better in MST link training (Dhinakaran) - Fix WARN on KBL external displays (Azhar) - Power well code cleanups (Imre) - Fixes to PSR debugging (Dhinakaran) - Make forcewake errors louder for easier catching in CI (WARNs) (Chris) - Fortify tiling code against programmer errors (Chris) - Bunch of fixes for CI exposed corner cases (multiple authors, mostly Chris) Signed-off-by: Dave Airlie <airlied@redhat.com> From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180907105446.GA22860@jlahtine-desk.ger.corp.intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/i915_request.c')
-rw-r--r--drivers/gpu/drm/i915/i915_request.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 5c2c93cbab12..09ed48833b54 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -527,7 +527,7 @@ void __i915_request_submit(struct i915_request *request)
527 527
528 seqno = timeline_get_seqno(&engine->timeline); 528 seqno = timeline_get_seqno(&engine->timeline);
529 GEM_BUG_ON(!seqno); 529 GEM_BUG_ON(!seqno);
530 GEM_BUG_ON(i915_seqno_passed(intel_engine_get_seqno(engine), seqno)); 530 GEM_BUG_ON(intel_engine_signaled(engine, seqno));
531 531
532 /* We may be recursing from the signal callback of another i915 fence */ 532 /* We may be recursing from the signal callback of another i915 fence */
533 spin_lock_nested(&request->lock, SINGLE_DEPTH_NESTING); 533 spin_lock_nested(&request->lock, SINGLE_DEPTH_NESTING);
@@ -579,8 +579,7 @@ void __i915_request_unsubmit(struct i915_request *request)
579 */ 579 */
580 GEM_BUG_ON(!request->global_seqno); 580 GEM_BUG_ON(!request->global_seqno);
581 GEM_BUG_ON(request->global_seqno != engine->timeline.seqno); 581 GEM_BUG_ON(request->global_seqno != engine->timeline.seqno);
582 GEM_BUG_ON(i915_seqno_passed(intel_engine_get_seqno(engine), 582 GEM_BUG_ON(intel_engine_has_completed(engine, request->global_seqno));
583 request->global_seqno));
584 engine->timeline.seqno--; 583 engine->timeline.seqno--;
585 584
586 /* We may be recursing from the signal callback of another i915 fence */ 585 /* We may be recursing from the signal callback of another i915 fence */
@@ -1205,7 +1204,7 @@ static bool __i915_spin_request(const struct i915_request *rq,
1205 * it is a fair assumption that it will not complete within our 1204 * it is a fair assumption that it will not complete within our
1206 * relatively short timeout. 1205 * relatively short timeout.
1207 */ 1206 */
1208 if (!i915_seqno_passed(intel_engine_get_seqno(engine), seqno - 1)) 1207 if (!intel_engine_has_started(engine, seqno))
1209 return false; 1208 return false;
1210 1209
1211 /* 1210 /*
@@ -1222,7 +1221,7 @@ static bool __i915_spin_request(const struct i915_request *rq,
1222 irq = READ_ONCE(engine->breadcrumbs.irq_count); 1221 irq = READ_ONCE(engine->breadcrumbs.irq_count);
1223 timeout_us += local_clock_us(&cpu); 1222 timeout_us += local_clock_us(&cpu);
1224 do { 1223 do {
1225 if (i915_seqno_passed(intel_engine_get_seqno(engine), seqno)) 1224 if (intel_engine_has_completed(engine, seqno))
1226 return seqno == i915_request_global_seqno(rq); 1225 return seqno == i915_request_global_seqno(rq);
1227 1226
1228 /* 1227 /*