* [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits
@ 2023-02-09 15:43 Tvrtko Ursulin
2023-02-09 15:43 ` [Intel-gfx] [RFC 1/3] dma-fence: Track explicit waiters Tvrtko Ursulin
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Tvrtko Ursulin @ 2023-02-09 15:43 UTC (permalink / raw)
To: Intel-gfx, dri-devel
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
In i915 we have this concept of "wait boosting" where we give a priority boost
for instance to fences which are actively waited upon from userspace. This has
it's pros and cons and can certainly be discussed at lenght. However fact is
some workloads really like it.
Problem is that with the arrival of drm syncobj and a new userspace waiting
entry point it added, the waitboost mechanism was bypassed. Hence I cooked up
this mini series really (really) quickly to see if some discussion can be had.
It adds a concept of "wait count" to dma fence, which is incremented for every
explicit dma_fence_enable_sw_signaling and dma_fence_add_wait_callback (like
dma_fence_add_callback but from explicit/userspace wait paths).
Individual drivers can then inspect this via dma_fence_wait_count() and decide
to wait boost the waits on such fences.
Again, quickly put together and smoke tested only - no guarantees whatsoever and
I will rely on interested parties to test and report if it even works or how
well.
Tvrtko Ursulin (3):
dma-fence: Track explicit waiters
drm/syncobj: Mark syncobj waits as external waiters
drm/i915: Waitboost external waits
drivers/dma-buf/dma-fence.c | 102 ++++++++++++++++++++--------
drivers/gpu/drm/drm_syncobj.c | 6 +-
drivers/gpu/drm/i915/i915_request.c | 13 +++-
include/linux/dma-fence.h | 14 ++++
4 files changed, 101 insertions(+), 34 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [Intel-gfx] [RFC 1/3] dma-fence: Track explicit waiters 2023-02-09 15:43 [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits Tvrtko Ursulin @ 2023-02-09 15:43 ` Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 2/3] drm/syncobj: Mark syncobj waits as external waiters Tvrtko Ursulin ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Tvrtko Ursulin @ 2023-02-09 15:43 UTC (permalink / raw) To: Intel-gfx, dri-devel From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Track how many callers are explicity waiting on a fence to signal and allow querying that via new dma_fence_wait_count() API. This provides infrastructure on top of which generic "waitboost" concepts can be implemented by individual drivers. Wait-boosting is any reactive activity, such as raising the GPU clocks, which happens while there are active external waiters. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- drivers/dma-buf/dma-fence.c | 102 ++++++++++++++++++++++++++---------- include/linux/dma-fence.h | 14 +++++ 2 files changed, 88 insertions(+), 28 deletions(-) diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c index 0de0482cd36e..d463c06ebd6d 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c @@ -344,6 +344,24 @@ void __dma_fence_might_wait(void) } #endif +static void incr_wait_count(struct dma_fence *fence, struct dma_fence_cb *cb) +{ + lockdep_assert_held(fence->lock); + + __set_bit(DMA_FENCE_CB_FLAG_WAITCOUNT_BIT, &cb->flags); + fence->waitcount++; + WARN_ON_ONCE(!fence->waitcount); +} + +static void decr_wait_count(struct dma_fence *fence, struct dma_fence_cb *cb) +{ + lockdep_assert_held(fence->lock); + + if (__test_and_clear_bit(DMA_FENCE_CB_FLAG_WAITCOUNT_BIT, &cb->flags)) { + WARN_ON_ONCE(!fence->waitcount); + fence->waitcount--; + } +} /** * dma_fence_signal_timestamp_locked - signal completion of a fence @@ -384,6 +402,7 @@ int dma_fence_signal_timestamp_locked(struct dma_fence *fence, list_for_each_entry_safe(cur, tmp, &cb_list, node) { INIT_LIST_HEAD(&cur->node); + decr_wait_count(fence, cur); cur->func(fence, cur); } @@ -612,35 +631,15 @@ void dma_fence_enable_sw_signaling(struct dma_fence *fence) unsigned long flags; spin_lock_irqsave(fence->lock, flags); + fence->waitcount++; + WARN_ON_ONCE(!fence->waitcount); __dma_fence_enable_signaling(fence); spin_unlock_irqrestore(fence->lock, flags); } EXPORT_SYMBOL(dma_fence_enable_sw_signaling); -/** - * dma_fence_add_callback - add a callback to be called when the fence - * is signaled - * @fence: the fence to wait on - * @cb: the callback to register - * @func: the function to call - * - * Add a software callback to the fence. The caller should keep a reference to - * the fence. - * - * @cb will be initialized by dma_fence_add_callback(), no initialization - * by the caller is required. Any number of callbacks can be registered - * to a fence, but a callback can only be registered to one fence at a time. - * - * If fence is already signaled, this function will return -ENOENT (and - * *not* call the callback). - * - * Note that the callback can be called from an atomic context or irq context. - * - * Returns 0 in case of success, -ENOENT if the fence is already signaled - * and -EINVAL in case of error. - */ -int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, - dma_fence_func_t func) +static int add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, + dma_fence_func_t func, bool wait) { unsigned long flags; int ret = 0; @@ -655,10 +654,15 @@ int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, spin_lock_irqsave(fence->lock, flags); + if (wait) + incr_wait_count(fence, cb); + if (__dma_fence_enable_signaling(fence)) { cb->func = func; list_add_tail(&cb->node, &fence->cb_list); } else { + if (wait) + decr_wait_count(fence, cb); INIT_LIST_HEAD(&cb->node); ret = -ENOENT; } @@ -667,8 +671,44 @@ int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, return ret; } + +/** + * dma_fence_add_callback - add a callback to be called when the fence + * is signaled + * @fence: the fence to wait on + * @cb: the callback to register + * @func: the function to call + * + * Add a software callback to the fence. The caller should keep a reference to + * the fence. + * + * @cb will be initialized by dma_fence_add_callback(), no initialization + * by the caller is required. Any number of callbacks can be registered + * to a fence, but a callback can only be registered to one fence at a time. + * + * If fence is already signaled, this function will return -ENOENT (and + * *not* call the callback). + * + * Note that the callback can be called from an atomic context or irq context. + * + * Returns 0 in case of success, -ENOENT if the fence is already signaled + * and -EINVAL in case of error. + */ +int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, + dma_fence_func_t func) +{ + return add_callback(fence, cb, func, false); +} EXPORT_SYMBOL(dma_fence_add_callback); +int dma_fence_add_wait_callback(struct dma_fence *fence, + struct dma_fence_cb *cb, + dma_fence_func_t func) +{ + return add_callback(fence, cb, func, true); +} +EXPORT_SYMBOL(dma_fence_add_wait_callback); + /** * dma_fence_get_status - returns the status upon completion * @fence: the dma_fence to query @@ -721,8 +761,10 @@ dma_fence_remove_callback(struct dma_fence *fence, struct dma_fence_cb *cb) spin_lock_irqsave(fence->lock, flags); ret = !list_empty(&cb->node); - if (ret) + if (ret) { + decr_wait_count(fence, cb); list_del_init(&cb->node); + } spin_unlock_irqrestore(fence->lock, flags); @@ -780,6 +822,7 @@ dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout) cb.base.func = dma_fence_default_wait_cb; cb.task = current; + incr_wait_count(fence, &cb.base); list_add(&cb.base.node, &fence->cb_list); while (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) && ret > 0) { @@ -796,8 +839,10 @@ dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout) ret = -ERESTARTSYS; } - if (!list_empty(&cb.base.node)) + if (!list_empty(&cb.base.node)) { + decr_wait_count(fence, &cb.base); list_del(&cb.base.node); + } __set_current_state(TASK_RUNNING); out: @@ -875,8 +920,8 @@ dma_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count, struct dma_fence *fence = fences[i]; cb[i].task = current; - if (dma_fence_add_callback(fence, &cb[i].base, - dma_fence_default_wait_cb)) { + if (dma_fence_add_wait_callback(fence, &cb[i].base, + dma_fence_default_wait_cb)) { /* This fence is already signaled */ if (idx) *idx = i; @@ -957,6 +1002,7 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops, fence->context = context; fence->seqno = seqno; fence->flags = 0UL; + fence->waitcount = 0; fence->error = 0; trace_dma_fence_init(fence); diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index 775cdc0b4f24..d0ed923e4545 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -92,6 +92,7 @@ struct dma_fence { u64 seqno; unsigned long flags; struct kref refcount; + unsigned int waitcount; int error; }; @@ -116,6 +117,11 @@ typedef void (*dma_fence_func_t)(struct dma_fence *fence, struct dma_fence_cb { struct list_head node; dma_fence_func_t func; + unsigned long flags; +}; + +enum dma_fence_cb_flag_bits { + DMA_FENCE_CB_FLAG_WAITCOUNT_BIT, }; /** @@ -377,6 +383,9 @@ signed long dma_fence_default_wait(struct dma_fence *fence, int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, dma_fence_func_t func); +int dma_fence_add_wait_callback(struct dma_fence *fence, + struct dma_fence_cb *cb, + dma_fence_func_t func); bool dma_fence_remove_callback(struct dma_fence *fence, struct dma_fence_cb *cb); void dma_fence_enable_sw_signaling(struct dma_fence *fence); @@ -528,6 +537,11 @@ static inline int dma_fence_get_status_locked(struct dma_fence *fence) int dma_fence_get_status(struct dma_fence *fence); +static inline unsigned int dma_fence_wait_count(struct dma_fence *fence) +{ + return fence->waitcount; +} + /** * dma_fence_set_error - flag an error condition on the fence * @fence: the dma_fence -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Intel-gfx] [RFC 2/3] drm/syncobj: Mark syncobj waits as external waiters 2023-02-09 15:43 [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 1/3] dma-fence: Track explicit waiters Tvrtko Ursulin @ 2023-02-09 15:43 ` Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 3/3] drm/i915: Waitboost external waits Tvrtko Ursulin ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Tvrtko Ursulin @ 2023-02-09 15:43 UTC (permalink / raw) To: Intel-gfx, dri-devel From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Use the previously added dma-fence tracking of explicit waiters. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- drivers/gpu/drm/drm_syncobj.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 0c2be8360525..776b90774a64 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1065,9 +1065,9 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, if ((flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE) || dma_fence_is_signaled(fence) || (!entries[i].fence_cb.func && - dma_fence_add_callback(fence, - &entries[i].fence_cb, - syncobj_wait_fence_func))) { + dma_fence_add_wait_callback(fence, + &entries[i].fence_cb, + syncobj_wait_fence_func))) { /* The fence has been signaled */ if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL) { signaled_count++; -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Intel-gfx] [RFC 3/3] drm/i915: Waitboost external waits 2023-02-09 15:43 [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 1/3] dma-fence: Track explicit waiters Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 2/3] drm/syncobj: Mark syncobj waits as external waiters Tvrtko Ursulin @ 2023-02-09 15:43 ` Tvrtko Ursulin 2023-02-09 16:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Waitboost drm syncobj waits Patchwork 2023-02-09 16:39 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork 4 siblings, 0 replies; 6+ messages in thread From: Tvrtko Ursulin @ 2023-02-09 15:43 UTC (permalink / raw) To: Intel-gfx, dri-devel From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Userspace waits coming via the drm_syncobj route have so far been bypassing the waitboost mechanism. Use the previously added dma-fence wait tracking API and apply the same waitboosting logic which applies to other entry points. This should fix the perfomance regressions experience by clvk and similar userspace which relies on drm_syncobj. At the same time, but for documentation purposes only, use the new dma-fence API from i915_request_wait too. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- drivers/gpu/drm/i915/i915_request.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index 7503dcb9043b..e24fac5c1567 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c @@ -94,7 +94,12 @@ static bool i915_fence_signaled(struct dma_fence *fence) static bool i915_fence_enable_signaling(struct dma_fence *fence) { - return i915_request_enable_breadcrumb(to_request(fence)); + struct i915_request *rq = to_request(fence); + + if (dma_fence_wait_count(&rq->fence) && !i915_request_started(rq)) + intel_rps_boost(rq); + + return i915_request_enable_breadcrumb(rq); } static signed long i915_fence_wait(struct dma_fence *fence, @@ -2037,11 +2042,13 @@ long i915_request_wait_timeout(struct i915_request *rq, * but at a cost of spending more power processing the workload * (bad for battery). */ - if (flags & I915_WAIT_PRIORITY && !i915_request_started(rq)) + if (((flags & I915_WAIT_PRIORITY) || dma_fence_wait_count(&rq->fence)) + && !i915_request_started(rq)) intel_rps_boost(rq); wait.tsk = current; - if (dma_fence_add_callback(&rq->fence, &wait.cb, request_wait_wake)) + if (dma_fence_add_wait_callback(&rq->fence, &wait.cb, + request_wait_wake)) goto out; /* -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Waitboost drm syncobj waits 2023-02-09 15:43 [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits Tvrtko Ursulin ` (2 preceding siblings ...) 2023-02-09 15:43 ` [Intel-gfx] [RFC 3/3] drm/i915: Waitboost external waits Tvrtko Ursulin @ 2023-02-09 16:18 ` Patchwork 2023-02-09 16:39 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork 4 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2023-02-09 16:18 UTC (permalink / raw) To: Tvrtko Ursulin; +Cc: intel-gfx == Series Details == Series: Waitboost drm syncobj waits URL : https://patchwork.freedesktop.org/series/113846/ State : warning == Summary == Error: dim sparse failed Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for Waitboost drm syncobj waits 2023-02-09 15:43 [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits Tvrtko Ursulin ` (3 preceding siblings ...) 2023-02-09 16:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Waitboost drm syncobj waits Patchwork @ 2023-02-09 16:39 ` Patchwork 4 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2023-02-09 16:39 UTC (permalink / raw) To: Tvrtko Ursulin; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 11980 bytes --] == Series Details == Series: Waitboost drm syncobj waits URL : https://patchwork.freedesktop.org/series/113846/ State : failure == Summary == CI Bug Log - changes from CI_DRM_12721 -> Patchwork_113846v1 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_113846v1 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_113846v1, 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_113846v1/index.html Participating hosts (37 -> 37) ------------------------------ Additional (2): bat-atsm-1 bat-dg1-6 Missing (2): fi-kbl-soraka fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_113846v1: ### CI changes ### #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * boot: - {bat-kbl-2}: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-kbl-2/boot.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-kbl-2/boot.html ### IGT changes ### #### Possible regressions #### * igt@i915_module_load@load: - fi-ilk-650: [PASS][3] -> [ABORT][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-ilk-650/igt@i915_module_load@load.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-ilk-650/igt@i915_module_load@load.html - fi-blb-e6850: [PASS][5] -> [ABORT][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-blb-e6850/igt@i915_module_load@load.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-blb-e6850/igt@i915_module_load@load.html - fi-bsw-n3050: [PASS][7] -> [ABORT][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-bsw-n3050/igt@i915_module_load@load.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-bsw-n3050/igt@i915_module_load@load.html - fi-rkl-11600: [PASS][9] -> [ABORT][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-rkl-11600/igt@i915_module_load@load.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-rkl-11600/igt@i915_module_load@load.html - fi-skl-6600u: [PASS][11] -> [ABORT][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-skl-6600u/igt@i915_module_load@load.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-skl-6600u/igt@i915_module_load@load.html - fi-apl-guc: [PASS][13] -> [ABORT][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-apl-guc/igt@i915_module_load@load.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-apl-guc/igt@i915_module_load@load.html - bat-dg1-5: [PASS][15] -> [ABORT][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-dg1-5/igt@i915_module_load@load.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-dg1-5/igt@i915_module_load@load.html - fi-pnv-d510: [PASS][17] -> [ABORT][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-pnv-d510/igt@i915_module_load@load.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-pnv-d510/igt@i915_module_load@load.html - fi-glk-j4005: [PASS][19] -> [ABORT][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-glk-j4005/igt@i915_module_load@load.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-glk-j4005/igt@i915_module_load@load.html - fi-skl-guc: [PASS][21] -> [ABORT][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-skl-guc/igt@i915_module_load@load.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-skl-guc/igt@i915_module_load@load.html - bat-dg1-6: NOTRUN -> [ABORT][23] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-dg1-6/igt@i915_module_load@load.html - fi-kbl-7567u: [PASS][24] -> [ABORT][25] [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-kbl-7567u/igt@i915_module_load@load.html [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-kbl-7567u/igt@i915_module_load@load.html - fi-cfl-8700k: [PASS][26] -> [ABORT][27] [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-cfl-8700k/igt@i915_module_load@load.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-cfl-8700k/igt@i915_module_load@load.html - fi-elk-e7500: [PASS][28] -> [ABORT][29] [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-elk-e7500/igt@i915_module_load@load.html [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-elk-e7500/igt@i915_module_load@load.html - fi-bsw-nick: [PASS][30] -> [ABORT][31] [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-bsw-nick/igt@i915_module_load@load.html [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-bsw-nick/igt@i915_module_load@load.html - fi-cfl-guc: [PASS][32] -> [ABORT][33] [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-cfl-guc/igt@i915_module_load@load.html [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-cfl-guc/igt@i915_module_load@load.html - fi-kbl-x1275: [PASS][34] -> [ABORT][35] [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-kbl-x1275/igt@i915_module_load@load.html [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-kbl-x1275/igt@i915_module_load@load.html - fi-hsw-4770: [PASS][36] -> [ABORT][37] [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-hsw-4770/igt@i915_module_load@load.html [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-hsw-4770/igt@i915_module_load@load.html - fi-cfl-8109u: [PASS][38] -> [ABORT][39] [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-cfl-8109u/igt@i915_module_load@load.html [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-cfl-8109u/igt@i915_module_load@load.html - fi-ivb-3770: [PASS][40] -> [ABORT][41] [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-ivb-3770/igt@i915_module_load@load.html [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-ivb-3770/igt@i915_module_load@load.html - fi-kbl-guc: [PASS][42] -> [ABORT][43] [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/fi-kbl-guc/igt@i915_module_load@load.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/fi-kbl-guc/igt@i915_module_load@load.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@core_auth@basic-auth: - {bat-rpls-2}: [PASS][44] -> [ABORT][45] [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-rpls-2/igt@core_auth@basic-auth.html [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-rpls-2/igt@core_auth@basic-auth.html * igt@i915_module_load@load: - {bat-jsl-1}: [PASS][46] -> [ABORT][47] [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-jsl-1/igt@i915_module_load@load.html [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-jsl-1/igt@i915_module_load@load.html - {bat-rpls-1}: [PASS][48] -> [ABORT][49] [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-rpls-1/igt@i915_module_load@load.html [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-rpls-1/igt@i915_module_load@load.html - {bat-adlp-6}: [PASS][50] -> [ABORT][51] [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-adlp-6/igt@i915_module_load@load.html [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-adlp-6/igt@i915_module_load@load.html - {bat-adls-5}: [PASS][52] -> [ABORT][53] [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-adls-5/igt@i915_module_load@load.html [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-adls-5/igt@i915_module_load@load.html - {bat-dg1-7}: [PASS][54] -> [ABORT][55] [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-dg1-7/igt@i915_module_load@load.html [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-dg1-7/igt@i915_module_load@load.html - {bat-jsl-3}: [PASS][56] -> [ABORT][57] [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-jsl-3/igt@i915_module_load@load.html [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-jsl-3/igt@i915_module_load@load.html - {bat-adlp-9}: [PASS][58] -> [ABORT][59] [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-adlp-9/igt@i915_module_load@load.html [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-adlp-9/igt@i915_module_load@load.html - {bat-dg2-11}: [PASS][60] -> [ABORT][61] [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-dg2-11/igt@i915_module_load@load.html [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-dg2-11/igt@i915_module_load@load.html - {bat-adln-1}: [PASS][62] -> [ABORT][63] [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-adln-1/igt@i915_module_load@load.html [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-adln-1/igt@i915_module_load@load.html - {bat-adlm-1}: [PASS][64] -> [ABORT][65] [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-adlm-1/igt@i915_module_load@load.html [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-adlm-1/igt@i915_module_load@load.html - {bat-rplp-1}: [PASS][66] -> [ABORT][67] [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-rplp-1/igt@i915_module_load@load.html [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-rplp-1/igt@i915_module_load@load.html - {bat-atsm-1}: NOTRUN -> [ABORT][68] [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-atsm-1/igt@i915_module_load@load.html - {bat-dg2-9}: [PASS][69] -> [ABORT][70] [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-dg2-9/igt@i915_module_load@load.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-dg2-9/igt@i915_module_load@load.html - {bat-dg2-8}: [PASS][71] -> [ABORT][72] [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12721/bat-dg2-8/igt@i915_module_load@load.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/bat-dg2-8/igt@i915_module_load@load.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). Build changes ------------- * Linux: CI_DRM_12721 -> Patchwork_113846v1 CI-20190529: 20190529 CI_DRM_12721: e1f9df7a92c1e3da1009afa74dc1d08ef95c3d7c @ git://anongit.freedesktop.org/gfx-ci/linux IGT_7155: 75c508d4e19c65683d4060cb3a772df600aaf23e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_113846v1: e1f9df7a92c1e3da1009afa74dc1d08ef95c3d7c @ git://anongit.freedesktop.org/gfx-ci/linux ### Linux commits e9af776738e5 drm/i915: Waitboost external waits b09ea7b88835 drm/syncobj: Mark syncobj waits as external waiters fe94251ffb8b dma-fence: Track explicit waiters == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113846v1/index.html [-- Attachment #2: Type: text/html, Size: 13197 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-02-09 16:39 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-02-09 15:43 [Intel-gfx] [RFC 0/3] Waitboost drm syncobj waits Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 1/3] dma-fence: Track explicit waiters Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 2/3] drm/syncobj: Mark syncobj waits as external waiters Tvrtko Ursulin 2023-02-09 15:43 ` [Intel-gfx] [RFC 3/3] drm/i915: Waitboost external waits Tvrtko Ursulin 2023-02-09 16:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Waitboost drm syncobj waits Patchwork 2023-02-09 16:39 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox