* [PATCH] gpu/drm/i915: disable interrupt when holding spinlock
@ 2019-08-07 14:54 Wang Xiayang
2019-08-09 9:22 ` Chris Wilson
2019-08-09 12:24 ` ✗ Fi.CI.BAT: failure for " Patchwork
0 siblings, 2 replies; 4+ messages in thread
From: Wang Xiayang @ 2019-08-07 14:54 UTC (permalink / raw)
Cc: intel-gfx, Wang Xiayang
The irq_lock is acquired in multiple functions:
1) i915_request_cancel_breadcrumb
<- ... <- panfrost_gpu_irq_handler
2) intel_engine_breadcrumbs_irq
<- ... <- cherryview_irq_handler
3) i915_request_enable_breadcrumb
4) virtual_xfer_breadcrumbs
The former two functions are reachable from IRQ handlers while
the latter two functions are not, and they call spin_lock()
which do not disable interrupt. Being preempted by an interrupt
acquiring the same lock may lead to deadlock.
Other functions acquire irq_lock by spin_lock_irq/irqsave().
This patch switches spin_lock() to spin_lock_irq in the two
process-context functions.
The issue is identified by a static analyzer based on Coccinelle.
Signed-off-by: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
---
drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 4 ++--
drivers/gpu/drm/i915/gt/intel_lrc.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
index c092bdf5f0bf..e0b46450c2f5 100644
--- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
@@ -301,7 +301,7 @@ bool i915_request_enable_breadcrumb(struct i915_request *rq)
struct intel_context *ce = rq->hw_context;
struct list_head *pos;
- spin_lock(&b->irq_lock);
+ spin_lock_irq(&b->irq_lock);
GEM_BUG_ON(test_bit(I915_FENCE_FLAG_SIGNAL, &rq->fence.flags));
__intel_breadcrumbs_arm_irq(b);
@@ -333,7 +333,7 @@ bool i915_request_enable_breadcrumb(struct i915_request *rq)
GEM_BUG_ON(!check_signal_order(ce, rq));
set_bit(I915_FENCE_FLAG_SIGNAL, &rq->fence.flags);
- spin_unlock(&b->irq_lock);
+ spin_unlock_irq(&b->irq_lock);
}
return !__request_completed(rq);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 82b7ace62d97..42367aeefcce 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -806,13 +806,13 @@ static void virtual_xfer_breadcrumbs(struct virtual_engine *ve,
/* All unattached (rq->engine == old) must already be completed */
- spin_lock(&old->breadcrumbs.irq_lock);
+ spin_lock_irq(&old->breadcrumbs.irq_lock);
if (!list_empty(&ve->context.signal_link)) {
list_move_tail(&ve->context.signal_link,
&engine->breadcrumbs.signalers);
intel_engine_queue_breadcrumbs(engine);
}
- spin_unlock(&old->breadcrumbs.irq_lock);
+ spin_unlock_irq(&old->breadcrumbs.irq_lock);
}
static void execlists_dequeue(struct intel_engine_cs *engine)
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] gpu/drm/i915: disable interrupt when holding spinlock
2019-08-07 14:54 [PATCH] gpu/drm/i915: disable interrupt when holding spinlock Wang Xiayang
@ 2019-08-09 9:22 ` Chris Wilson
2019-08-09 12:42 ` Wang Xiayang
2019-08-09 12:24 ` ✗ Fi.CI.BAT: failure for " Patchwork
1 sibling, 1 reply; 4+ messages in thread
From: Chris Wilson @ 2019-08-09 9:22 UTC (permalink / raw)
Cc: intel-gfx, Wang Xiayang
Quoting Wang Xiayang (2019-08-07 15:54:37)
> The irq_lock is acquired in multiple functions:
>
> 1) i915_request_cancel_breadcrumb
> <- ... <- panfrost_gpu_irq_handler
> 2) intel_engine_breadcrumbs_irq
> <- ... <- cherryview_irq_handler
> 3) i915_request_enable_breadcrumb
> 4) virtual_xfer_breadcrumbs
>
> The former two functions are reachable from IRQ handlers while
> the latter two functions are not, and they call spin_lock()
> which do not disable interrupt. Being preempted by an interrupt
> acquiring the same lock may lead to deadlock.
> Other functions acquire irq_lock by spin_lock_irq/irqsave().
>
> This patch switches spin_lock() to spin_lock_irq in the two
> process-context functions.
>
> The issue is identified by a static analyzer based on Coccinelle.
>
> Signed-off-by: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
> ---
> drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 4 ++--
> drivers/gpu/drm/i915/gt/intel_lrc.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> index c092bdf5f0bf..e0b46450c2f5 100644
> --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> @@ -301,7 +301,7 @@ bool i915_request_enable_breadcrumb(struct i915_request *rq)
> struct intel_context *ce = rq->hw_context;
> struct list_head *pos;
>
> - spin_lock(&b->irq_lock);
> + spin_lock_irq(&b->irq_lock);
> GEM_BUG_ON(test_bit(I915_FENCE_FLAG_SIGNAL, &rq->fence.flags));
>
> __intel_breadcrumbs_arm_irq(b);
> @@ -333,7 +333,7 @@ bool i915_request_enable_breadcrumb(struct i915_request *rq)
> GEM_BUG_ON(!check_signal_order(ce, rq));
>
> set_bit(I915_FENCE_FLAG_SIGNAL, &rq->fence.flags);
> - spin_unlock(&b->irq_lock);
> + spin_unlock_irq(&b->irq_lock);
This is very broken, irqs are disabled by the caller and you can't
unconditionally enable them again here...
> return !__request_completed(rq);
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 82b7ace62d97..42367aeefcce 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -806,13 +806,13 @@ static void virtual_xfer_breadcrumbs(struct virtual_engine *ve,
>
> /* All unattached (rq->engine == old) must already be completed */
>
> - spin_lock(&old->breadcrumbs.irq_lock);
> + spin_lock_irq(&old->breadcrumbs.irq_lock);
> if (!list_empty(&ve->context.signal_link)) {
> list_move_tail(&ve->context.signal_link,
> &engine->breadcrumbs.signalers);
> intel_engine_queue_breadcrumbs(engine);
> }
> - spin_unlock(&old->breadcrumbs.irq_lock);
> + spin_unlock_irq(&old->breadcrumbs.irq_lock);
Or here.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
* ✗ Fi.CI.BAT: failure for gpu/drm/i915: disable interrupt when holding spinlock
2019-08-07 14:54 [PATCH] gpu/drm/i915: disable interrupt when holding spinlock Wang Xiayang
2019-08-09 9:22 ` Chris Wilson
@ 2019-08-09 12:24 ` Patchwork
1 sibling, 0 replies; 4+ messages in thread
From: Patchwork @ 2019-08-09 12:24 UTC (permalink / raw)
To: Wang Xiayang; +Cc: intel-gfx
== Series Details ==
Series: gpu/drm/i915: disable interrupt when holding spinlock
URL : https://patchwork.freedesktop.org/series/64956/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_6667 -> Patchwork_13937
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_13937 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_13937, 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_13937/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_13937:
### IGT changes ###
#### Possible regressions ####
* igt@gem_busy@busy-all:
- fi-icl-u2: [PASS][1] -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-icl-u2/igt@gem_busy@busy-all.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-icl-u2/igt@gem_busy@busy-all.html
- fi-glk-dsi: [PASS][3] -> [DMESG-WARN][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-glk-dsi/igt@gem_busy@busy-all.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-glk-dsi/igt@gem_busy@busy-all.html
- fi-icl-u3: [PASS][5] -> [DMESG-WARN][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-icl-u3/igt@gem_busy@busy-all.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-icl-u3/igt@gem_busy@busy-all.html
- fi-cml-u2: [PASS][7] -> [DMESG-WARN][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cml-u2/igt@gem_busy@busy-all.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cml-u2/igt@gem_busy@busy-all.html
- fi-kbl-r: [PASS][9] -> [DMESG-WARN][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-r/igt@gem_busy@busy-all.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-r/igt@gem_busy@busy-all.html
- fi-kbl-7567u: [PASS][11] -> [DMESG-WARN][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-7567u/igt@gem_busy@busy-all.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-7567u/igt@gem_busy@busy-all.html
- fi-skl-iommu: [PASS][13] -> [DMESG-WARN][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-iommu/igt@gem_busy@busy-all.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-iommu/igt@gem_busy@busy-all.html
- fi-whl-u: [PASS][15] -> [DMESG-WARN][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-whl-u/igt@gem_busy@busy-all.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-whl-u/igt@gem_busy@busy-all.html
- fi-cfl-8109u: [PASS][17] -> [DMESG-WARN][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cfl-8109u/igt@gem_busy@busy-all.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cfl-8109u/igt@gem_busy@busy-all.html
* igt@gem_close_race@basic-process:
- fi-ivb-3770: [PASS][19] -> [DMESG-WARN][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-ivb-3770/igt@gem_close_race@basic-process.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-ivb-3770/igt@gem_close_race@basic-process.html
- fi-bxt-dsi: [PASS][21] -> [DMESG-WARN][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bxt-dsi/igt@gem_close_race@basic-process.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bxt-dsi/igt@gem_close_race@basic-process.html
- fi-kbl-guc: [PASS][23] -> [DMESG-WARN][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-guc/igt@gem_close_race@basic-process.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-guc/igt@gem_close_race@basic-process.html
- fi-snb-2520m: [PASS][25] -> [DMESG-WARN][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-snb-2520m/igt@gem_close_race@basic-process.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-snb-2520m/igt@gem_close_race@basic-process.html
* igt@gem_cpu_reloc@basic:
- fi-skl-guc: [PASS][27] -> [DMESG-WARN][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-guc/igt@gem_cpu_reloc@basic.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-guc/igt@gem_cpu_reloc@basic.html
- fi-cfl-guc: [PASS][29] -> [DMESG-WARN][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cfl-guc/igt@gem_cpu_reloc@basic.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cfl-guc/igt@gem_cpu_reloc@basic.html
- fi-skl-lmem: [PASS][31] -> [DMESG-WARN][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-lmem/igt@gem_cpu_reloc@basic.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-lmem/igt@gem_cpu_reloc@basic.html
- fi-skl-6600u: [PASS][33] -> [DMESG-WARN][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6600u/igt@gem_cpu_reloc@basic.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6600u/igt@gem_cpu_reloc@basic.html
- fi-skl-6770hq: [PASS][35] -> [DMESG-WARN][36]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6770hq/igt@gem_cpu_reloc@basic.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6770hq/igt@gem_cpu_reloc@basic.html
- fi-skl-6700k2: [PASS][37] -> [DMESG-WARN][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6700k2/igt@gem_cpu_reloc@basic.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6700k2/igt@gem_cpu_reloc@basic.html
- fi-cml-u: [PASS][39] -> [DMESG-WARN][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cml-u/igt@gem_cpu_reloc@basic.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cml-u/igt@gem_cpu_reloc@basic.html
- fi-bxt-j4205: [PASS][41] -> [DMESG-WARN][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bxt-j4205/igt@gem_cpu_reloc@basic.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bxt-j4205/igt@gem_cpu_reloc@basic.html
- fi-kbl-8809g: [PASS][43] -> [DMESG-WARN][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-8809g/igt@gem_cpu_reloc@basic.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-8809g/igt@gem_cpu_reloc@basic.html
- fi-kbl-7500u: [PASS][45] -> [DMESG-WARN][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-7500u/igt@gem_cpu_reloc@basic.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-7500u/igt@gem_cpu_reloc@basic.html
- fi-kbl-x1275: [PASS][47] -> [DMESG-WARN][48]
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-x1275/igt@gem_cpu_reloc@basic.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-x1275/igt@gem_cpu_reloc@basic.html
- fi-cfl-8700k: [PASS][49] -> [DMESG-WARN][50]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cfl-8700k/igt@gem_cpu_reloc@basic.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cfl-8700k/igt@gem_cpu_reloc@basic.html
* igt@gem_ctx_exec@basic:
- fi-apl-guc: [PASS][51] -> [DMESG-WARN][52]
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-apl-guc/igt@gem_ctx_exec@basic.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-apl-guc/igt@gem_ctx_exec@basic.html
- fi-skl-gvtdvm: [PASS][53] -> [DMESG-WARN][54]
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-gvtdvm/igt@gem_ctx_exec@basic.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-gvtdvm/igt@gem_ctx_exec@basic.html
* igt@gem_exec_basic@basic-all:
- fi-bsw-n3050: [PASS][55] -> [INCOMPLETE][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bsw-n3050/igt@gem_exec_basic@basic-all.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bsw-n3050/igt@gem_exec_basic@basic-all.html
- fi-skl-6260u: [PASS][57] -> [DMESG-WARN][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6260u/igt@gem_exec_basic@basic-all.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6260u/igt@gem_exec_basic@basic-all.html
* igt@gem_exec_fence@basic-busy-default:
- fi-blb-e6850: [PASS][59] -> [DMESG-WARN][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-blb-e6850/igt@gem_exec_fence@basic-busy-default.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-blb-e6850/igt@gem_exec_fence@basic-busy-default.html
- fi-pnv-d510: [PASS][61] -> [DMESG-WARN][62]
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-pnv-d510/igt@gem_exec_fence@basic-busy-default.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-pnv-d510/igt@gem_exec_fence@basic-busy-default.html
- fi-skl-6600u: [PASS][63] -> [INCOMPLETE][64]
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6600u/igt@gem_exec_fence@basic-busy-default.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6600u/igt@gem_exec_fence@basic-busy-default.html
- fi-bdw-5557u: [PASS][65] -> [INCOMPLETE][66]
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bdw-5557u/igt@gem_exec_fence@basic-busy-default.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bdw-5557u/igt@gem_exec_fence@basic-busy-default.html
- fi-kbl-7500u: [PASS][67] -> [INCOMPLETE][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-7500u/igt@gem_exec_fence@basic-busy-default.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-7500u/igt@gem_exec_fence@basic-busy-default.html
- fi-whl-u: [PASS][69] -> [INCOMPLETE][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-whl-u/igt@gem_exec_fence@basic-busy-default.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-whl-u/igt@gem_exec_fence@basic-busy-default.html
- fi-ilk-650: [PASS][71] -> [DMESG-WARN][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-ilk-650/igt@gem_exec_fence@basic-busy-default.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-ilk-650/igt@gem_exec_fence@basic-busy-default.html
- fi-bdw-gvtdvm: [PASS][73] -> [INCOMPLETE][74]
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bdw-gvtdvm/igt@gem_exec_fence@basic-busy-default.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bdw-gvtdvm/igt@gem_exec_fence@basic-busy-default.html
- fi-kbl-r: [PASS][75] -> [INCOMPLETE][76]
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-r/igt@gem_exec_fence@basic-busy-default.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-r/igt@gem_exec_fence@basic-busy-default.html
- fi-skl-lmem: [PASS][77] -> [INCOMPLETE][78]
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-lmem/igt@gem_exec_fence@basic-busy-default.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-lmem/igt@gem_exec_fence@basic-busy-default.html
- fi-byt-j1900: [PASS][79] -> [DMESG-WARN][80]
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-byt-j1900/igt@gem_exec_fence@basic-busy-default.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-byt-j1900/igt@gem_exec_fence@basic-busy-default.html
- fi-skl-6260u: [PASS][81] -> [INCOMPLETE][82]
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6260u/igt@gem_exec_fence@basic-busy-default.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6260u/igt@gem_exec_fence@basic-busy-default.html
- fi-elk-e7500: [PASS][83] -> [DMESG-WARN][84]
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-elk-e7500/igt@gem_exec_fence@basic-busy-default.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-elk-e7500/igt@gem_exec_fence@basic-busy-default.html
* igt@gem_exec_reloc@basic-cpu-read:
- fi-hsw-peppy: [PASS][85] -> [INCOMPLETE][86]
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-hsw-peppy/igt@gem_exec_reloc@basic-cpu-read.html
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-hsw-peppy/igt@gem_exec_reloc@basic-cpu-read.html
* igt@gem_linear_blits@basic:
- fi-bwr-2160: [PASS][87] -> [INCOMPLETE][88]
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bwr-2160/igt@gem_linear_blits@basic.html
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bwr-2160/igt@gem_linear_blits@basic.html
* igt@gem_ringfill@basic-default-interruptible:
- fi-snb-2520m: [PASS][89] -> [INCOMPLETE][90]
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-snb-2520m/igt@gem_ringfill@basic-default-interruptible.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-snb-2520m/igt@gem_ringfill@basic-default-interruptible.html
- fi-ilk-650: [PASS][91] -> [INCOMPLETE][92]
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-ilk-650/igt@gem_ringfill@basic-default-interruptible.html
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-ilk-650/igt@gem_ringfill@basic-default-interruptible.html
* igt@gem_sync@basic-store-all:
- fi-blb-e6850: [PASS][93] -> [INCOMPLETE][94]
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-blb-e6850/igt@gem_sync@basic-store-all.html
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-blb-e6850/igt@gem_sync@basic-store-all.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@gem_busy@busy-all:
- {fi-icl-guc}: [PASS][95] -> [DMESG-WARN][96]
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-icl-guc/igt@gem_busy@busy-all.html
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-icl-guc/igt@gem_busy@busy-all.html
- {fi-icl-u4}: [PASS][97] -> [DMESG-WARN][98]
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-icl-u4/igt@gem_busy@busy-all.html
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-icl-u4/igt@gem_busy@busy-all.html
- {fi-icl-dsi}: [PASS][99] -> [DMESG-WARN][100]
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-icl-dsi/igt@gem_busy@busy-all.html
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-icl-dsi/igt@gem_busy@busy-all.html
* {igt@gem_ctx_switch@legacy-render}:
- fi-skl-iommu: [PASS][101] -> [INCOMPLETE][102]
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-iommu/igt@gem_ctx_switch@legacy-render.html
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-iommu/igt@gem_ctx_switch@legacy-render.html
- fi-skl-6700k2: [PASS][103] -> [INCOMPLETE][104]
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6700k2/igt@gem_ctx_switch@legacy-render.html
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6700k2/igt@gem_ctx_switch@legacy-render.html
- fi-skl-guc: [PASS][105] -> [INCOMPLETE][106]
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-guc/igt@gem_ctx_switch@legacy-render.html
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-guc/igt@gem_ctx_switch@legacy-render.html
- fi-kbl-guc: [PASS][107] -> [INCOMPLETE][108]
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-guc/igt@gem_ctx_switch@legacy-render.html
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-guc/igt@gem_ctx_switch@legacy-render.html
- fi-cfl-8109u: [PASS][109] -> [INCOMPLETE][110]
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cfl-8109u/igt@gem_ctx_switch@legacy-render.html
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cfl-8109u/igt@gem_ctx_switch@legacy-render.html
- fi-cfl-8700k: [PASS][111] -> [INCOMPLETE][112]
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cfl-8700k/igt@gem_ctx_switch@legacy-render.html
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cfl-8700k/igt@gem_ctx_switch@legacy-render.html
- fi-cfl-guc: [PASS][113] -> [INCOMPLETE][114]
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-cfl-guc/igt@gem_ctx_switch@legacy-render.html
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-cfl-guc/igt@gem_ctx_switch@legacy-render.html
- fi-skl-6770hq: [PASS][115] -> [INCOMPLETE][116]
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-6770hq/igt@gem_ctx_switch@legacy-render.html
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-6770hq/igt@gem_ctx_switch@legacy-render.html
- fi-skl-gvtdvm: [PASS][117] -> [INCOMPLETE][118]
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-skl-gvtdvm/igt@gem_ctx_switch@legacy-render.html
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-skl-gvtdvm/igt@gem_ctx_switch@legacy-render.html
- fi-kbl-7567u: [PASS][119] -> [INCOMPLETE][120]
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-7567u/igt@gem_ctx_switch@legacy-render.html
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-7567u/igt@gem_ctx_switch@legacy-render.html
- fi-kbl-x1275: [PASS][121] -> [INCOMPLETE][122]
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-x1275/igt@gem_ctx_switch@legacy-render.html
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-x1275/igt@gem_ctx_switch@legacy-render.html
- fi-kbl-8809g: [PASS][123] -> [INCOMPLETE][124]
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-kbl-8809g/igt@gem_ctx_switch@legacy-render.html
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-kbl-8809g/igt@gem_ctx_switch@legacy-render.html
* {igt@gem_ctx_switch@rcs0}:
- fi-bsw-kefka: [PASS][125] -> [INCOMPLETE][126]
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-bsw-kefka/igt@gem_ctx_switch@rcs0.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-bsw-kefka/igt@gem_ctx_switch@rcs0.html
- fi-hsw-peppy: [PASS][127] -> [DMESG-WARN][128]
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-hsw-peppy/igt@gem_ctx_switch@rcs0.html
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-hsw-peppy/igt@gem_ctx_switch@rcs0.html
Known issues
------------
Here are the changes found in Patchwork_13937 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_close_race@basic-process:
- fi-hsw-4770: [PASS][129] -> [DMESG-WARN][130] ([fdo#110789])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-hsw-4770/igt@gem_close_race@basic-process.html
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-hsw-4770/igt@gem_close_race@basic-process.html
- fi-snb-2600: [PASS][131] -> [DMESG-WARN][132] ([fdo#110789])
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-snb-2600/igt@gem_close_race@basic-process.html
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/fi-snb-2600/igt@gem_close_race@basic-proces
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13937/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] gpu/drm/i915: disable interrupt when holding spinlock
2019-08-09 9:22 ` Chris Wilson
@ 2019-08-09 12:42 ` Wang Xiayang
0 siblings, 0 replies; 4+ messages in thread
From: Wang Xiayang @ 2019-08-09 12:42 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
----- Chris Wilson <chris@chris-wilson.co.uk> wrote:
> Quoting Wang Xiayang (2019-08-07 15:54:37)
> > The irq_lock is acquired in multiple functions:
> >
> > 1) i915_request_cancel_breadcrumb
> > <- ... <- panfrost_gpu_irq_handler
> > 2) intel_engine_breadcrumbs_irq
> > <- ... <- cherryview_irq_handler
> > 3) i915_request_enable_breadcrumb
> > 4) virtual_xfer_breadcrumbs
> >
> > The former two functions are reachable from IRQ handlers while
> > the latter two functions are not, and they call spin_lock()
> > which do not disable interrupt. Being preempted by an interrupt
> > acquiring the same lock may lead to deadlock.
> > Other functions acquire irq_lock by spin_lock_irq/irqsave().
> >
> > This patch switches spin_lock() to spin_lock_irq in the two
> > process-context functions.
> >
> > The issue is identified by a static analyzer based on Coccinelle.
> >
> > Signed-off-by: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
> > ---
> > drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 4 ++--
> > drivers/gpu/drm/i915/gt/intel_lrc.c | 4 ++--
> > 2 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> > index c092bdf5f0bf..e0b46450c2f5 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> > @@ -301,7 +301,7 @@ bool i915_request_enable_breadcrumb(struct i915_request *rq)
> > struct intel_context *ce = rq->hw_context;
> > struct list_head *pos;
> >
> > - spin_lock(&b->irq_lock);
> > + spin_lock_irq(&b->irq_lock);
> > GEM_BUG_ON(test_bit(I915_FENCE_FLAG_SIGNAL, &rq->fence.flags));
> >
> > __intel_breadcrumbs_arm_irq(b);
> > @@ -333,7 +333,7 @@ bool i915_request_enable_breadcrumb(struct i915_request *rq)
> > GEM_BUG_ON(!check_signal_order(ce, rq));
> >
> > set_bit(I915_FENCE_FLAG_SIGNAL, &rq->fence.flags);
> > - spin_unlock(&b->irq_lock);
> > + spin_unlock_irq(&b->irq_lock);
>
> This is very broken, irqs are disabled by the caller and you can't
> unconditionally enable them again here...
>
> > return !__request_completed(rq);
> > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > index 82b7ace62d97..42367aeefcce 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > @@ -806,13 +806,13 @@ static void virtual_xfer_breadcrumbs(struct virtual_engine *ve,
> >
> > /* All unattached (rq->engine == old) must already be completed */
> >
> > - spin_lock(&old->breadcrumbs.irq_lock);
> > + spin_lock_irq(&old->breadcrumbs.irq_lock);
> > if (!list_empty(&ve->context.signal_link)) {
> > list_move_tail(&ve->context.signal_link,
> > &engine->breadcrumbs.signalers);
> > intel_engine_queue_breadcrumbs(engine);
> > }
> > - spin_unlock(&old->breadcrumbs.irq_lock);
> > + spin_unlock_irq(&old->breadcrumbs.irq_lock);
>
> Or here.
I see. Deeply sorry for the false alarming.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-08-09 12:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-07 14:54 [PATCH] gpu/drm/i915: disable interrupt when holding spinlock Wang Xiayang
2019-08-09 9:22 ` Chris Wilson
2019-08-09 12:42 ` Wang Xiayang
2019-08-09 12:24 ` ✗ 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.