* [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() @ 2019-12-03 11:53 Chris Wilson 2019-12-03 11:53 ` [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending Chris Wilson ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Chris Wilson @ 2019-12-03 11:53 UTC (permalink / raw) To: intel-gfx Check the pending request submission is valid: that it at least has a reference for the submission and that the request is on the active list. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/gt/intel_lrc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index fef4b7e823f5..37ab9742abe7 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -1303,6 +1303,9 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, unsigned long flags; bool ok = true; + GEM_BUG_ON(!kref_read(&rq->fence.refcount)); + GEM_BUG_ON(!i915_request_is_active(rq)); + if (ce == rq->hw_context) { GEM_TRACE_ERR("Dup context:%llx in pending[%zd]\n", ce->timeline->fence_context, -- 2.24.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending 2019-12-03 11:53 [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Chris Wilson @ 2019-12-03 11:53 ` Chris Wilson 2019-12-03 15:38 ` Tvrtko Ursulin 2019-12-03 15:04 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Patchwork 2019-12-03 15:28 ` [Intel-gfx] [PATCH 1/2] " Tvrtko Ursulin 2 siblings, 1 reply; 7+ messages in thread From: Chris Wilson @ 2019-12-03 11:53 UTC (permalink / raw) To: intel-gfx Only along the submission path can we guarantee that the locked request is indeed from a foreign engine, and so the nesting of engine/rq is permissible. On the submission tasklet (process_csb()), we may find ourselves competing with the normal nesting of rq/engine, invalidating our nesting. As we only use the spinlock for debug purposes, skip the debug if we cannot acquire the spinlock for safe validation - catching 99% of the bugs is better than causing a hard lockup. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/gt/intel_lrc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index 37ab9742abe7..b411e4ce6771 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -1300,7 +1300,6 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, } for (port = execlists->pending; (rq = *port); port++) { - unsigned long flags; bool ok = true; GEM_BUG_ON(!kref_read(&rq->fence.refcount)); @@ -1315,8 +1314,8 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, ce = rq->hw_context; /* Hold tightly onto the lock to prevent concurrent retires! */ - spin_lock_irqsave_nested(&rq->lock, flags, - SINGLE_DEPTH_NESTING); + if (!spin_trylock(&rq->lock)) + continue; if (i915_request_completed(rq)) goto unlock; @@ -1347,7 +1346,7 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, } unlock: - spin_unlock_irqrestore(&rq->lock, flags); + spin_unlock(&rq->lock); if (!ok) return false; } -- 2.24.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending 2019-12-03 11:53 ` [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending Chris Wilson @ 2019-12-03 15:38 ` Tvrtko Ursulin 2019-12-03 15:40 ` Chris Wilson 0 siblings, 1 reply; 7+ messages in thread From: Tvrtko Ursulin @ 2019-12-03 15:38 UTC (permalink / raw) To: Chris Wilson, intel-gfx On 03/12/2019 11:53, Chris Wilson wrote: > Only along the submission path can we guarantee that the locked request > is indeed from a foreign engine, and so the nesting of engine/rq is > permissible. On the submission tasklet (process_csb()), we may find > ourselves competing with the normal nesting of rq/engine, invalidating > our nesting. As we only use the spinlock for debug purposes, skip the > debug if we cannot acquire the spinlock for safe validation - catching > 99% of the bugs is better than causing a hard lockup. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/gt/intel_lrc.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > index 37ab9742abe7..b411e4ce6771 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -1300,7 +1300,6 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > } > > for (port = execlists->pending; (rq = *port); port++) { > - unsigned long flags; > bool ok = true; > > GEM_BUG_ON(!kref_read(&rq->fence.refcount)); > @@ -1315,8 +1314,8 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > ce = rq->hw_context; > > /* Hold tightly onto the lock to prevent concurrent retires! */ > - spin_lock_irqsave_nested(&rq->lock, flags, > - SINGLE_DEPTH_NESTING); > + if (!spin_trylock(&rq->lock)) > + continue; > > if (i915_request_completed(rq)) > goto unlock; > @@ -1347,7 +1346,7 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > } > > unlock: > - spin_unlock_irqrestore(&rq->lock, flags); > + spin_unlock(&rq->lock); > if (!ok) > return false; > } > With Fixes: and irqsave variant: Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending 2019-12-03 15:38 ` Tvrtko Ursulin @ 2019-12-03 15:40 ` Chris Wilson 0 siblings, 0 replies; 7+ messages in thread From: Chris Wilson @ 2019-12-03 15:40 UTC (permalink / raw) To: Tvrtko Ursulin, intel-gfx Quoting Tvrtko Ursulin (2019-12-03 15:38:20) > > On 03/12/2019 11:53, Chris Wilson wrote: > > Only along the submission path can we guarantee that the locked request > > is indeed from a foreign engine, and so the nesting of engine/rq is > > permissible. On the submission tasklet (process_csb()), we may find > > ourselves competing with the normal nesting of rq/engine, invalidating > > our nesting. As we only use the spinlock for debug purposes, skip the > > debug if we cannot acquire the spinlock for safe validation - catching > > 99% of the bugs is better than causing a hard lockup. > > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > --- > > drivers/gpu/drm/i915/gt/intel_lrc.c | 7 +++---- > > 1 file changed, 3 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > > index 37ab9742abe7..b411e4ce6771 100644 > > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > > @@ -1300,7 +1300,6 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > > } > > > > for (port = execlists->pending; (rq = *port); port++) { > > - unsigned long flags; > > bool ok = true; > > > > GEM_BUG_ON(!kref_read(&rq->fence.refcount)); > > @@ -1315,8 +1314,8 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > > ce = rq->hw_context; > > > > /* Hold tightly onto the lock to prevent concurrent retires! */ > > - spin_lock_irqsave_nested(&rq->lock, flags, > > - SINGLE_DEPTH_NESTING); > > + if (!spin_trylock(&rq->lock)) > > + continue; > > > > if (i915_request_completed(rq)) > > goto unlock; > > @@ -1347,7 +1346,7 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > > } > > > > unlock: > > - spin_unlock_irqrestore(&rq->lock, flags); > > + spin_unlock(&rq->lock); > > if (!ok) > > return false; > > } > > > > With Fixes: and irqsave variant: > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Predictive patching: https://patchwork.freedesktop.org/patch/343495/?series=70375&rev=1 Ta, -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() 2019-12-03 11:53 [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Chris Wilson 2019-12-03 11:53 ` [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending Chris Wilson @ 2019-12-03 15:04 ` Patchwork 2019-12-03 15:28 ` [Intel-gfx] [PATCH 1/2] " Tvrtko Ursulin 2 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2019-12-03 15:04 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() URL : https://patchwork.freedesktop.org/series/70353/ State : failure == Summary == CI Bug Log - changes from CI_DRM_7470 -> Patchwork_15557 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_15557 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_15557, 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_15557/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_15557: ### IGT changes ### #### Possible regressions #### * igt@gem_ctx_exec@basic: - fi-cml-s: [PASS][1] -> [DMESG-WARN][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-cml-s/igt@gem_ctx_exec@basic.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-cml-s/igt@gem_ctx_exec@basic.html - fi-skl-6700k2: [PASS][3] -> [DMESG-WARN][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-6700k2/igt@gem_ctx_exec@basic.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-6700k2/igt@gem_ctx_exec@basic.html - fi-cml-u2: [PASS][5] -> [DMESG-WARN][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-cml-u2/igt@gem_ctx_exec@basic.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-cml-u2/igt@gem_ctx_exec@basic.html - fi-kbl-r: [PASS][7] -> [DMESG-WARN][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-r/igt@gem_ctx_exec@basic.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-r/igt@gem_ctx_exec@basic.html - fi-icl-y: [PASS][9] -> [DMESG-WARN][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-icl-y/igt@gem_ctx_exec@basic.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-icl-y/igt@gem_ctx_exec@basic.html - fi-kbl-guc: [PASS][11] -> [DMESG-WARN][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-guc/igt@gem_ctx_exec@basic.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-guc/igt@gem_ctx_exec@basic.html - fi-skl-guc: [PASS][13] -> [DMESG-WARN][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-guc/igt@gem_ctx_exec@basic.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-guc/igt@gem_ctx_exec@basic.html * igt@gem_ctx_switch@legacy-render: - fi-bdw-5557u: [PASS][15] -> [DMESG-WARN][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bdw-5557u/igt@gem_ctx_switch@legacy-render.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bdw-5557u/igt@gem_ctx_switch@legacy-render.html - fi-kbl-guc: [PASS][17] -> [INCOMPLETE][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-guc/igt@gem_ctx_switch@legacy-render.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-guc/igt@gem_ctx_switch@legacy-render.html - fi-bxt-dsi: [PASS][19] -> [DMESG-WARN][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bxt-dsi/igt@gem_ctx_switch@legacy-render.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bxt-dsi/igt@gem_ctx_switch@legacy-render.html - fi-cfl-guc: [PASS][21] -> [DMESG-WARN][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-cfl-guc/igt@gem_ctx_switch@legacy-render.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-cfl-guc/igt@gem_ctx_switch@legacy-render.html - fi-skl-6770hq: [PASS][23] -> [INCOMPLETE][24] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-6770hq/igt@gem_ctx_switch@legacy-render.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-6770hq/igt@gem_ctx_switch@legacy-render.html - fi-skl-lmem: [PASS][25] -> [DMESG-WARN][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-lmem/igt@gem_ctx_switch@legacy-render.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-lmem/igt@gem_ctx_switch@legacy-render.html * igt@gem_ctx_switch@rcs0: - fi-skl-6600u: [PASS][27] -> [DMESG-WARN][28] [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-6600u/igt@gem_ctx_switch@rcs0.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-6600u/igt@gem_ctx_switch@rcs0.html - fi-kbl-soraka: [PASS][29] -> [DMESG-WARN][30] [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-soraka/igt@gem_ctx_switch@rcs0.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-soraka/igt@gem_ctx_switch@rcs0.html - fi-whl-u: [PASS][31] -> [DMESG-WARN][32] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-whl-u/igt@gem_ctx_switch@rcs0.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-whl-u/igt@gem_ctx_switch@rcs0.html * igt@gem_exec_parallel@basic: - fi-skl-6600u: [PASS][33] -> [INCOMPLETE][34] [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-6600u/igt@gem_exec_parallel@basic.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-6600u/igt@gem_exec_parallel@basic.html - fi-bdw-5557u: [PASS][35] -> [INCOMPLETE][36] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bdw-5557u/igt@gem_exec_parallel@basic.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bdw-5557u/igt@gem_exec_parallel@basic.html - fi-cfl-guc: [PASS][37] -> [INCOMPLETE][38] [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-cfl-guc/igt@gem_exec_parallel@basic.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-cfl-guc/igt@gem_exec_parallel@basic.html * igt@gem_exec_suspend@basic: - fi-kbl-x1275: [PASS][39] -> [INCOMPLETE][40] [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-x1275/igt@gem_exec_suspend@basic.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-x1275/igt@gem_exec_suspend@basic.html * igt@gem_exec_suspend@basic-s0: - fi-skl-6700k2: [PASS][41] -> [INCOMPLETE][42] [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-6700k2/igt@gem_exec_suspend@basic-s0.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-6700k2/igt@gem_exec_suspend@basic-s0.html - fi-kbl-7500u: [PASS][43] -> [INCOMPLETE][44] [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-7500u/igt@gem_exec_suspend@basic-s0.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-7500u/igt@gem_exec_suspend@basic-s0.html * igt@gem_exec_suspend@basic-s3: - fi-whl-u: [PASS][45] -> [INCOMPLETE][46] [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-whl-u/igt@gem_exec_suspend@basic-s3.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-whl-u/igt@gem_exec_suspend@basic-s3.html * igt@gem_sync@basic-all: - fi-skl-guc: [PASS][47] -> [INCOMPLETE][48] [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-guc/igt@gem_sync@basic-all.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-guc/igt@gem_sync@basic-all.html - fi-skl-lmem: [PASS][49] -> [INCOMPLETE][50] [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-skl-lmem/igt@gem_sync@basic-all.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-skl-lmem/igt@gem_sync@basic-all.html * igt@gem_sync@basic-each: - fi-kbl-r: [PASS][51] -> [INCOMPLETE][52] [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-r/igt@gem_sync@basic-each.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-r/igt@gem_sync@basic-each.html - fi-bsw-nick: [PASS][53] -> [INCOMPLETE][54] [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bsw-nick/igt@gem_sync@basic-each.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bsw-nick/igt@gem_sync@basic-each.html * igt@gem_sync@basic-store-all: - fi-bsw-n3050: [PASS][55] -> [INCOMPLETE][56] [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bsw-n3050/igt@gem_sync@basic-store-all.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bsw-n3050/igt@gem_sync@basic-store-all.html * igt@i915_selftest@live_gtt: - fi-kbl-soraka: [PASS][57] -> [INCOMPLETE][58] [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-soraka/igt@i915_selftest@live_gtt.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-soraka/igt@i915_selftest@live_gtt.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@gem_ctx_exec@basic: - {fi-kbl-7560u}: [PASS][59] -> [DMESG-WARN][60] [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-7560u/igt@gem_ctx_exec@basic.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-7560u/igt@gem_ctx_exec@basic.html * igt@gem_ctx_switch@legacy-render: - {fi-tgl-u}: NOTRUN -> [INCOMPLETE][61] [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-tgl-u/igt@gem_ctx_switch@legacy-render.html * igt@gem_exec_suspend@basic-s0: - {fi-kbl-7560u}: [PASS][62] -> [INCOMPLETE][63] [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-kbl-7560u/igt@gem_exec_suspend@basic-s0.html [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-kbl-7560u/igt@gem_exec_suspend@basic-s0.html Known issues ------------ Here are the changes found in Patchwork_15557 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_switch@legacy-render: - fi-glk-dsi: [PASS][64] -> [INCOMPLETE][65] ([i915#58] / [k.org#198133]) [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-glk-dsi/igt@gem_ctx_switch@legacy-render.html [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-glk-dsi/igt@gem_ctx_switch@legacy-render.html - fi-icl-u2: [PASS][66] -> [INCOMPLETE][67] ([i915#140]) [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-icl-u2/igt@gem_ctx_switch@legacy-render.html [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-icl-u2/igt@gem_ctx_switch@legacy-render.html - fi-cml-u2: [PASS][68] -> [INCOMPLETE][69] ([i915#283]) [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-cml-u2/igt@gem_ctx_switch@legacy-render.html [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-cml-u2/igt@gem_ctx_switch@legacy-render.html - fi-cml-s: [PASS][70] -> [INCOMPLETE][71] ([i915#283]) [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-cml-s/igt@gem_ctx_switch@legacy-render.html [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-cml-s/igt@gem_ctx_switch@legacy-render.html * igt@gem_exec_gttfill@basic: - fi-icl-u3: [PASS][72] -> [INCOMPLETE][73] ([i915#140]) [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-icl-u3/igt@gem_exec_gttfill@basic.html [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-icl-u3/igt@gem_exec_gttfill@basic.html * igt@gem_exec_parallel@basic: - fi-icl-dsi: [PASS][74] -> [INCOMPLETE][75] ([i915#140]) [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-icl-dsi/igt@gem_exec_parallel@basic.html [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-icl-dsi/igt@gem_exec_parallel@basic.html - fi-icl-y: [PASS][76] -> [INCOMPLETE][77] ([i915#140]) [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-icl-y/igt@gem_exec_parallel@basic.html [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-icl-y/igt@gem_exec_parallel@basic.html * igt@gem_exec_suspend@basic-s3: - fi-bsw-kefka: [PASS][78] -> [INCOMPLETE][79] ([i915#392]) [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bsw-kefka/igt@gem_exec_suspend@basic-s3.html [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bsw-kefka/igt@gem_exec_suspend@basic-s3.html * igt@gem_exec_suspend@basic-s4-devices: - fi-bxt-dsi: [PASS][80] -> [INCOMPLETE][81] ([fdo#103927]) [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bxt-dsi/igt@gem_exec_suspend@basic-s4-devices.html [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bxt-dsi/igt@gem_exec_suspend@basic-s4-devices.html #### Possible fixes #### * igt@i915_selftest@live_active: - fi-bwr-2160: [INCOMPLETE][82] ([i915#693]) -> [PASS][83] [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7470/fi-bwr-2160/igt@i915_selftest@live_active.html [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/fi-bwr-2160/igt@i915_selftest@live_active.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140 [i915#283]: https://gitlab.freedesktop.org/drm/intel/issues/283 [i915#392]: https://gitlab.freedesktop.org/drm/intel/issues/392 [i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58 [i915#693]: https://gitlab.freedesktop.org/drm/intel/issues/693 [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133 Participating hosts (51 -> 41) ------------------------------ Additional (1): fi-tgl-u Missing (11): fi-hsw-4770r fi-icl-1065g7 fi-ilk-m540 fi-byt-j1900 fi-bsw-cyan fi-cfl-8700k fi-apl-guc fi-ctg-p8600 fi-icl-guc fi-byt-clapper fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_7470 -> Patchwork_15557 CI-20190529: 20190529 CI_DRM_7470: 63c9277035294cff970e9ce06668df0aa940fdb2 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5323: b0f877d06a78b9c38ed246be2537a0453b6c214f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_15557: a473aac792baa0d825fe221f26e589b94bd85e2e @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == a473aac792ba drm/i915/execlists: Skip nested spinlock for validating pending d2939291578c drm/i915/execlists: Add a couple more validity checks to assert_pending() == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15557/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() 2019-12-03 11:53 [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Chris Wilson 2019-12-03 11:53 ` [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending Chris Wilson 2019-12-03 15:04 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Patchwork @ 2019-12-03 15:28 ` Tvrtko Ursulin 2 siblings, 0 replies; 7+ messages in thread From: Tvrtko Ursulin @ 2019-12-03 15:28 UTC (permalink / raw) To: Chris Wilson, intel-gfx On 03/12/2019 11:53, Chris Wilson wrote: > Check the pending request submission is valid: that it at least has a > reference for the submission and that the request is on the active list. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/gt/intel_lrc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > index fef4b7e823f5..37ab9742abe7 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -1303,6 +1303,9 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, > unsigned long flags; > bool ok = true; > > + GEM_BUG_ON(!kref_read(&rq->fence.refcount)); > + GEM_BUG_ON(!i915_request_is_active(rq)); > + > if (ce == rq->hw_context) { > GEM_TRACE_ERR("Dup context:%llx in pending[%zd]\n", > ce->timeline->fence_context, > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() @ 2019-12-03 15:26 Chris Wilson 2019-12-03 16:43 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] " Patchwork 0 siblings, 1 reply; 7+ messages in thread From: Chris Wilson @ 2019-12-03 15:26 UTC (permalink / raw) To: intel-gfx Check the pending request submission is valid: that it at least has a reference for the submission and that the request is on the active list. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/gt/intel_lrc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index fef4b7e823f5..37ab9742abe7 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -1303,6 +1303,9 @@ assert_pending_valid(const struct intel_engine_execlists *execlists, unsigned long flags; bool ok = true; + GEM_BUG_ON(!kref_read(&rq->fence.refcount)); + GEM_BUG_ON(!i915_request_is_active(rq)); + if (ce == rq->hw_context) { GEM_TRACE_ERR("Dup context:%llx in pending[%zd]\n", ce->timeline->fence_context, -- 2.24.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() 2019-12-03 15:26 Chris Wilson @ 2019-12-03 16:43 ` Patchwork 0 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2019-12-03 16:43 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() URL : https://patchwork.freedesktop.org/series/70375/ State : failure == Summary == CI Bug Log - changes from CI_DRM_7471 -> Patchwork_15561 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_15561 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_15561, 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_15561/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_15561: ### IGT changes ### #### Possible regressions #### * igt@i915_selftest@live_evict: - fi-bwr-2160: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-bwr-2160/igt@i915_selftest@live_evict.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-bwr-2160/igt@i915_selftest@live_evict.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@i915_module_load@reload-with-fault-injection: - {fi-kbl-7560u}: [DMESG-WARN][3] ([i915#109] / [i915#92]) -> [INCOMPLETE][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-kbl-7560u/igt@i915_module_load@reload-with-fault-injection.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-kbl-7560u/igt@i915_module_load@reload-with-fault-injection.html Known issues ------------ Here are the changes found in Patchwork_15561 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live_blt: - fi-hsw-4770: [PASS][5] -> [DMESG-FAIL][6] ([i915#563]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-hsw-4770/igt@i915_selftest@live_blt.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-hsw-4770/igt@i915_selftest@live_blt.html * igt@i915_selftest@live_gem_contexts: - fi-hsw-peppy: [PASS][7] -> [DMESG-FAIL][8] ([fdo#111692]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html * igt@i915_selftest@live_gt_timelines: - fi-icl-guc: [PASS][9] -> [INCOMPLETE][10] ([i915#140]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-icl-guc/igt@i915_selftest@live_gt_timelines.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-icl-guc/igt@i915_selftest@live_gt_timelines.html * igt@i915_selftest@live_sanitycheck: - fi-skl-lmem: [PASS][11] -> [DMESG-WARN][12] ([i915#592]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-skl-lmem/igt@i915_selftest@live_sanitycheck.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-skl-lmem/igt@i915_selftest@live_sanitycheck.html * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: [PASS][13] -> [DMESG-WARN][14] ([i915#44]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html #### Possible fixes #### * igt@i915_selftest@live_blt: - fi-apl-guc: [DMESG-WARN][15] -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-apl-guc/igt@i915_selftest@live_blt.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-apl-guc/igt@i915_selftest@live_blt.html - fi-bsw-n3050: [DMESG-FAIL][17] ([i915#563]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-bsw-n3050/igt@i915_selftest@live_blt.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-bsw-n3050/igt@i915_selftest@live_blt.html - fi-bsw-nick: [DMESG-FAIL][19] ([i915#563]) -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-bsw-nick/igt@i915_selftest@live_blt.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-bsw-nick/igt@i915_selftest@live_blt.html * igt@kms_chamelium@hdmi-crc-fast: - fi-icl-u2: [FAIL][21] ([fdo#109635]) -> [PASS][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-icl-u2/igt@kms_chamelium@hdmi-crc-fast.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-icl-u2/igt@kms_chamelium@hdmi-crc-fast.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [FAIL][23] ([fdo#111096] / [i915#323]) -> [PASS][24] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html #### Warnings #### * igt@gem_exec_suspend@basic-s0: - fi-kbl-x1275: [DMESG-WARN][25] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][26] ([i915#62] / [i915#92]) +4 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html * igt@i915_pm_rpm@basic-pci-d3-state: - fi-kbl-x1275: [SKIP][27] ([fdo#109271]) -> [DMESG-WARN][28] ([i915#62] / [i915#92]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-kbl-x1275/igt@i915_pm_rpm@basic-pci-d3-state.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-kbl-x1275/igt@i915_pm_rpm@basic-pci-d3-state.html * igt@i915_selftest@live_blt: - fi-hsw-4770r: [DMESG-FAIL][29] ([i915#683]) -> [DMESG-FAIL][30] ([i915#563]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-hsw-4770r/igt@i915_selftest@live_blt.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-hsw-4770r/igt@i915_selftest@live_blt.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - fi-kbl-x1275: [DMESG-WARN][31] ([i915#62] / [i915#92]) -> [DMESG-WARN][32] ([i915#62] / [i915#92] / [i915#95]) +4 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7471/fi-kbl-x1275/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/fi-kbl-x1275/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635 [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096 [fdo#111692]: https://bugs.freedesktop.org/show_bug.cgi?id=111692 [i915#109]: https://gitlab.freedesktop.org/drm/intel/issues/109 [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140 [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323 [i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44 [i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563 [i915#592]: https://gitlab.freedesktop.org/drm/intel/issues/592 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#683]: https://gitlab.freedesktop.org/drm/intel/issues/683 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (50 -> 46) ------------------------------ Missing (4): fi-byt-clapper fi-ilk-m540 fi-bsw-cyan fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_7471 -> Patchwork_15561 CI-20190529: 20190529 CI_DRM_7471: 7187e860071abd027d6eeaecc0674becc137e939 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5323: b0f877d06a78b9c38ed246be2537a0453b6c214f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_15561: 634ad6de6bd1a5f1464115d9478dce71571a1afb @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 634ad6de6bd1 drm/i915/execlists: Skip nested spinlock for validating pending 97e6c305da34 drm/i915/execlists: Add a couple more validity checks to assert_pending() == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15561/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-12-03 16:43 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-12-03 11:53 [Intel-gfx] [PATCH 1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Chris Wilson 2019-12-03 11:53 ` [Intel-gfx] [PATCH 2/2] drm/i915/execlists: Skip nested spinlock for validating pending Chris Wilson 2019-12-03 15:38 ` Tvrtko Ursulin 2019-12-03 15:40 ` Chris Wilson 2019-12-03 15:04 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/execlists: Add a couple more validity checks to assert_pending() Patchwork 2019-12-03 15:28 ` [Intel-gfx] [PATCH 1/2] " Tvrtko Ursulin 2019-12-03 15:26 Chris Wilson 2019-12-03 16:43 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] " 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.