* [Intel-gfx] [PATCH] drm/i915/gt: Repeat wait_for_idle for retirement workers
@ 2019-12-21 18:02 Chris Wilson
2019-12-21 19:23 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
0 siblings, 1 reply; 2+ messages in thread
From: Chris Wilson @ 2019-12-21 18:02 UTC (permalink / raw
To: intel-gfx
Since we may retire timelines from secondary workers,
intel_gt_retire_requests() is not always a reliable indicator that all
pending retirements are complete. If we do detect secondary workers are
in progress, recommend intel_gt_wait_for_idle() to repeat the retirement
check.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/gt/intel_engine.h | 2 +-
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 6 +++++-
drivers/gpu/drm/i915/gt/intel_gt_requests.c | 23 +++++++++++++--------
3 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 6fa49d3f7fa7..428ec76b49d0 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -284,7 +284,7 @@ static inline void __intel_engine_reset(struct intel_engine_cs *engine,
bool intel_engines_are_idle(struct intel_gt *gt);
bool intel_engine_is_idle(struct intel_engine_cs *engine);
-void intel_engine_flush_submission(struct intel_engine_cs *engine);
+bool intel_engine_flush_submission(struct intel_engine_cs *engine);
void intel_engines_reset_default_submission(struct intel_gt *gt);
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 127a9880df6d..3964d3198263 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -1057,9 +1057,10 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
return idle;
}
-void intel_engine_flush_submission(struct intel_engine_cs *engine)
+bool intel_engine_flush_submission(struct intel_engine_cs *engine)
{
struct tasklet_struct *t = &engine->execlists.tasklet;
+ bool active = tasklet_is_locked(t);
if (__tasklet_is_scheduled(t)) {
local_bh_disable();
@@ -1070,10 +1071,13 @@ void intel_engine_flush_submission(struct intel_engine_cs *engine)
tasklet_unlock(t);
}
local_bh_enable();
+ active = true;
}
/* Otherwise flush the tasklet if it was running on another cpu */
tasklet_unlock_wait(t);
+
+ return active;
}
/**
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
index 063f863ee21c..b4f04614230e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
@@ -23,15 +23,18 @@ static void retire_requests(struct intel_timeline *tl)
break;
}
-static void flush_submission(struct intel_gt *gt)
+static bool flush_submission(struct intel_gt *gt)
{
struct intel_engine_cs *engine;
enum intel_engine_id id;
+ bool active = false;
for_each_engine(engine, gt, id) {
- intel_engine_flush_submission(engine);
- flush_work(&engine->retire_work);
+ active |= intel_engine_flush_submission(engine);
+ active |= flush_work(&engine->retire_work);
}
+
+ return active;
}
static void engine_retire(struct work_struct *work)
@@ -120,9 +123,10 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)
spin_lock(&timelines->lock);
list_for_each_entry_safe(tl, tn, &timelines->active_list, link) {
- active_count++; /* report busy to caller, try again? */
- if (!mutex_trylock(&tl->mutex))
+ if (!mutex_trylock(&tl->mutex)) {
+ active_count++; /* report busy to caller, try again? */
continue;
+ }
intel_timeline_get(tl);
GEM_BUG_ON(!atomic_read(&tl->active_count));
@@ -147,10 +151,10 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)
/* Resume iteration after dropping lock */
list_safe_reset_next(tl, tn, link);
- if (atomic_dec_and_test(&tl->active_count)) {
+ if (atomic_dec_and_test(&tl->active_count))
list_del(&tl->link);
- active_count--;
- }
+ else
+ active_count += i915_active_fence_isset(&tl->last_request);
mutex_unlock(&tl->mutex);
@@ -165,7 +169,8 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)
list_for_each_entry_safe(tl, tn, &free, link)
__intel_timeline_free(&tl->kref);
- flush_submission(gt);
+ if (flush_submission(gt))
+ active_count++;
return active_count ? timeout : 0;
}
--
2.24.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/gt: Repeat wait_for_idle for retirement workers
2019-12-21 18:02 [Intel-gfx] [PATCH] drm/i915/gt: Repeat wait_for_idle for retirement workers Chris Wilson
@ 2019-12-21 19:23 ` Patchwork
0 siblings, 0 replies; 2+ messages in thread
From: Patchwork @ 2019-12-21 19:23 UTC (permalink / raw
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/gt: Repeat wait_for_idle for retirement workers
URL : https://patchwork.freedesktop.org/series/71252/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_7618 -> Patchwork_15875
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_15875 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_15875, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/index.html
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_15875:
### IGT changes ###
#### Possible regressions ####
* igt@gem_exec_parallel@basic:
- fi-byt-n2820: [PASS][1] -> [TIMEOUT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-byt-n2820/igt@gem_exec_parallel@basic.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-byt-n2820/igt@gem_exec_parallel@basic.html
* igt@runner@aborted:
- fi-byt-n2820: NOTRUN -> [FAIL][3]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-byt-n2820/igt@runner@aborted.html
Known issues
------------
Here are the changes found in Patchwork_15875 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_close_race@basic-threads:
- fi-byt-j1900: [PASS][4] -> [TIMEOUT][5] ([i915#816])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-byt-j1900/igt@gem_close_race@basic-threads.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-byt-j1900/igt@gem_close_race@basic-threads.html
* igt@kms_chamelium@hdmi-crc-fast:
- fi-icl-u2: [PASS][6] -> [FAIL][7] ([fdo#109635])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-icl-u2/igt@kms_chamelium@hdmi-crc-fast.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-icl-u2/igt@kms_chamelium@hdmi-crc-fast.html
#### Possible fixes ####
* igt@i915_selftest@live_blt:
- fi-ivb-3770: [DMESG-FAIL][8] ([i915#725]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-ivb-3770/igt@i915_selftest@live_blt.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-ivb-3770/igt@i915_selftest@live_blt.html
* igt@i915_selftest@live_gem_contexts:
- fi-hsw-4770r: [DMESG-FAIL][10] ([i915#761]) -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-hsw-4770r/igt@i915_selftest@live_gem_contexts.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-hsw-4770r/igt@i915_selftest@live_gem_contexts.html
* igt@i915_selftest@live_gt_mocs:
- fi-kbl-r: [FAIL][12] -> [PASS][13]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-kbl-r/igt@i915_selftest@live_gt_mocs.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-kbl-r/igt@i915_selftest@live_gt_mocs.html
* igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy: [DMESG-WARN][14] ([i915#44]) -> [PASS][15]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
#### Warnings ####
* igt@i915_selftest@live_blt:
- fi-hsw-4770: [DMESG-FAIL][16] ([i915#563]) -> [DMESG-FAIL][17] ([i915#553])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-hsw-4770/igt@i915_selftest@live_blt.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-hsw-4770/igt@i915_selftest@live_blt.html
* igt@kms_flip@basic-flip-vs-dpms:
- fi-kbl-x1275: [DMESG-WARN][18] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][19] ([i915#62] / [i915#92]) +7 similar issues
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-dpms.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_flip@basic-flip-vs-wf_vblank:
- fi-kbl-x1275: [DMESG-WARN][20] ([i915#62] / [i915#92]) -> [DMESG-WARN][21] ([i915#62] / [i915#92] / [i915#95]) +6 similar issues
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7618/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-wf_vblank.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-wf_vblank.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
[fdo#111736]: https://bugs.freedesktop.org/show_bug.cgi?id=111736
[i915#435]: https://gitlab.freedesktop.org/drm/intel/issues/435
[i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44
[i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
[i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
[i915#761]: https://gitlab.freedesktop.org/drm/intel/issues/761
[i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (42 -> 41)
------------------------------
Additional (8): fi-kbl-soraka fi-bdw-5557u fi-elk-e7500 fi-skl-lmem fi-blb-e6850 fi-tgl-y fi-skl-6600u fi-snb-2600
Missing (9): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-bwr-2160 fi-ilk-650 fi-ctg-p8600 fi-gdg-551 fi-byt-clapper fi-bdw-samus
Build changes
-------------
* CI: CI-20190529 -> None
* Linux: CI_DRM_7618 -> Patchwork_15875
CI-20190529: 20190529
CI_DRM_7618: e15ea7eaf8b92d53ed1e2552f71dc626187be773 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5352: 0586d205f651674e575351c2d5a7d0760716c9f1 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_15875: 7aa321c40b68b2a9393c9d5e61fc9682aa447564 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
7aa321c40b68 drm/i915/gt: Repeat wait_for_idle for retirement workers
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15875/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-12-21 19:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-21 18:02 [Intel-gfx] [PATCH] drm/i915/gt: Repeat wait_for_idle for retirement workers Chris Wilson
2019-12-21 19:23 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.