All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.