All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
@ 2019-10-03 18:56 Chris Wilson
  2019-10-03 18:58 ` Chris Wilson
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-03 18:56 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/gt/intel_engine_types.h |  3 ++
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 10 +++---
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 34 ++++++++++++++++++++
 4 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..53265add81ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,8 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..76ad58268f61 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -209,12 +209,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (IS_TIGERLAKE(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..08c144708af7 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1944,6 +1944,8 @@ static void process_csb(struct intel_engine_cs *engine)
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
 				   execlists_num_ports(execlists));
+
+			intel_engine_queue_breadcrumbs(engine);
 		}
 	} while (head != tail);
 
@@ -1987,6 +1989,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3414,9 +3437,16 @@ gen12_emit_fini_breadcrumb_rcs(struct i915_request *request, u32 *cs)
 	return gen12_emit_fini_breadcrumb_footer(request, cs);
 }
 
+static void tgl_unpark(struct intel_engine_cs *engine)
+{
+	clear_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+	irq_poll_sched(&engine->irq_poll);
+}
+
 static void execlists_park(struct intel_engine_cs *engine)
 {
 	del_timer(&engine->execlists.timer);
+	set_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
 }
 
 void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
@@ -3432,6 +3462,8 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 	engine->park = execlists_park;
 	engine->unpark = NULL;
+	if (IS_TIGERLAKE(engine->i915))
+		engine->unpark = tgl_unpark;
 
 	engine->flags |= I915_ENGINE_SUPPORTS_STATS;
 	if (!intel_vgpu_active(engine->i915)) {
@@ -3446,6 +3478,7 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3565,7 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
@ 2019-10-03 18:58 ` Chris Wilson
  2019-10-03 22:06 ` ✓ Fi.CI.BAT: success for " Patchwork
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-03 18:58 UTC (permalink / raw)
  To: intel-gfx

Quoting Chris Wilson (2019-10-03 19:56:13)
> Why sleep when you can busywait for an interrupt? Throw out the old irq
> handlers, and use irq_poll instead.
> 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> ---
Fwiw, enabling rps is still a death sentence with this.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
  2019-10-03 18:58 ` Chris Wilson
@ 2019-10-03 22:06 ` Patchwork
  2019-10-03 22:10 ` [PATCH] " Chris Wilson
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-03 22:06 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated
URL   : https://patchwork.freedesktop.org/series/67558/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7000 -> Patchwork_14657
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/index.html

Known issues
------------

  Here are the changes found in Patchwork_14657 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_mmap_gtt@basic-write-gtt:
    - fi-icl-u3:          [PASS][1] -> [DMESG-WARN][2] ([fdo#107724])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-u3/igt@gem_mmap_gtt@basic-write-gtt.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-icl-u3/igt@gem_mmap_gtt@basic-write-gtt.html

  * igt@i915_module_load@reload:
    - fi-blb-e6850:       [PASS][3] -> [INCOMPLETE][4] ([fdo#107718])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-blb-e6850/igt@i915_module_load@reload.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-blb-e6850/igt@i915_module_load@reload.html
    - fi-icl-u3:          [PASS][5] -> [DMESG-WARN][6] ([fdo#107724] / [fdo#111214])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-u3/igt@i915_module_load@reload.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-icl-u3/igt@i915_module_load@reload.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-hsw-peppy:       [PASS][7] -> [DMESG-WARN][8] ([fdo#102614])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html

  
#### Possible fixes ####

  * igt@gem_ctx_create@basic-files:
    - {fi-icl-dsi}:       [INCOMPLETE][9] ([fdo#107713] / [fdo#109100]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-dsi/igt@gem_ctx_create@basic-files.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-icl-dsi/igt@gem_ctx_create@basic-files.html

  * igt@i915_selftest@live_execlists:
    - {fi-icl-guc}:       [INCOMPLETE][11] ([fdo#107713]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-guc/igt@i915_selftest@live_execlists.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-icl-guc/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-icl-u2:          [FAIL][13] ([fdo#109483]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html

  * igt@prime_self_import@basic-with_fd_dup:
    - fi-icl-u3:          [DMESG-WARN][15] ([fdo#107724]) -> [PASS][16] +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-u3/igt@prime_self_import@basic-with_fd_dup.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-icl-u3/igt@prime_self_import@basic-with_fd_dup.html

  
#### Warnings ####

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [FAIL][17] ([fdo#111045] / [fdo#111096]) -> [FAIL][18] ([fdo#111407])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
  [fdo#109483]: https://bugs.freedesktop.org/show_bug.cgi?id=109483
  [fdo#111045]: https://bugs.freedesktop.org/show_bug.cgi?id=111045
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111214]: https://bugs.freedesktop.org/show_bug.cgi?id=111214
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407


Participating hosts (52 -> 43)
------------------------------

  Missing    (9): fi-icl-u4 fi-tgl-u fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7000 -> Patchwork_14657

  CI-20190529: 20190529
  CI_DRM_7000: a6af6b11a94cbffff1c70dbab04ef1e13d79e4ae @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5211: 1601e1571eb0f29a06b64494040b3ea7859a650f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14657: eb3c478d448574dea771384fa27002808b9d372b @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

eb3c478d4485 TGL HAX drm/i915/tgl: Interrupts are overrated

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14657/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
  2019-10-03 18:58 ` Chris Wilson
  2019-10-03 22:06 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2019-10-03 22:10 ` Chris Wilson
  2019-10-03 23:25 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev2) Patchwork
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-03 22:10 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/Kconfig.debug           |  5 +++
 drivers/gpu/drm/i915/gt/intel_engine_types.h |  3 ++
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 10 +++---
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 35 ++++++++++++++++++++
 drivers/gpu/drm/i915/i915_irq.c              |  7 +++-
 drivers/gpu/drm/i915/i915_pci.c              |  1 -
 7 files changed, 56 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 4a800faa275c..4d23a84ac2c4 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -44,6 +44,7 @@ config DRM_I915_DEBUG
 	select DRM_I915_SELFTEST
 	select DRM_I915_DEBUG_RUNTIME_PM
 	select DRM_I915_DEBUG_MMIO
+	select TIGERLAKE_DEBUG_IRQ
         default n
         help
           Choose this option to turn on extra driver debugging that may affect
@@ -220,3 +221,7 @@ config DRM_I915_DEBUG_RUNTIME_PM
 	  driver loading, suspend and resume operations.
 
 	  If in doubt, say "N"
+
+config TIGERLAKE_DEBUG_IRQ
+	bool "[TGL] Reduce IRQ functionality for stability"
+	default n
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..53265add81ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,8 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..110cd8e1c05f 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -209,12 +209,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..ffa99ba9eaec 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1944,6 +1944,8 @@ static void process_csb(struct intel_engine_cs *engine)
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
 				   execlists_num_ports(execlists));
+
+			intel_engine_queue_breadcrumbs(engine);
 		}
 	} while (head != tail);
 
@@ -1987,6 +1989,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3414,9 +3437,16 @@ gen12_emit_fini_breadcrumb_rcs(struct i915_request *request, u32 *cs)
 	return gen12_emit_fini_breadcrumb_footer(request, cs);
 }
 
+static void tgl_unpark(struct intel_engine_cs *engine)
+{
+	clear_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+	irq_poll_sched(&engine->irq_poll);
+}
+
 static void execlists_park(struct intel_engine_cs *engine)
 {
 	del_timer(&engine->execlists.timer);
+	set_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
 }
 
 void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
@@ -3432,6 +3462,9 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 	engine->park = execlists_park;
 	engine->unpark = NULL;
+	if (IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) &&
+	    IS_TIGERLAKE(engine->i915))
+		engine->unpark = tgl_unpark;
 
 	engine->flags |= I915_ENGINE_SUPPORTS_STATS;
 	if (!intel_vgpu_active(engine->i915)) {
@@ -3446,6 +3479,7 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3566,7 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index bc83f094065a..35d260d3e6d7 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -360,6 +360,9 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 	if (READ_ONCE(rps->interrupts_enabled))
 		return;
 
+	if (!dev_priv->pm_rps_events)
+		return;
+
 	spin_lock_irq(&gt->irq_lock);
 	WARN_ON_ONCE(rps->pm_iir);
 
@@ -4314,7 +4317,9 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
 		dev_priv->gt.pm_guc_events = GUC_INTR_GUC2HOST << 16;
 
 	/* Let's track the enabled rps events */
-	if (IS_VALLEYVIEW(dev_priv))
+	if (IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(dev_priv))
+		dev_priv->pm_rps_events = 0;
+	else if (IS_VALLEYVIEW(dev_priv))
 		/* WaGsvRC0ResidencyMethod:vlv */
 		dev_priv->pm_rps_events = GEN6_PM_RP_UP_EI_EXPIRED;
 	else
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 1cbf3998b361..86be10cc6a70 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -806,7 +806,6 @@ static const struct intel_device_info intel_tigerlake_12_info = {
 	.display.has_modular_fia = 1,
 	.engine_mask =
 		BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
-	.has_rps = false, /* XXX disabled for debugging */
 };
 
 #undef GEN
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev2)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (2 preceding siblings ...)
  2019-10-03 22:10 ` [PATCH] " Chris Wilson
@ 2019-10-03 23:25 ` Patchwork
  2019-10-04  7:02 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-03 23:25 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev2)
URL   : https://patchwork.freedesktop.org/series/67558/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7000 -> Patchwork_14660
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/index.html

Known issues
------------

  Here are the changes found in Patchwork_14660 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_close_race@basic-process:
    - fi-icl-u3:          [PASS][1] -> [DMESG-WARN][2] ([fdo#107724]) +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-u3/igt@gem_close_race@basic-process.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/fi-icl-u3/igt@gem_close_race@basic-process.html

  
#### Possible fixes ####

  * igt@gem_ctx_create@basic-files:
    - {fi-tgl-u}:         [INCOMPLETE][3] ([fdo#111735]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-tgl-u/igt@gem_ctx_create@basic-files.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/fi-tgl-u/igt@gem_ctx_create@basic-files.html
    - {fi-icl-dsi}:       [INCOMPLETE][5] ([fdo#107713] / [fdo#109100]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-dsi/igt@gem_ctx_create@basic-files.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/fi-icl-dsi/igt@gem_ctx_create@basic-files.html

  * igt@i915_selftest@live_execlists:
    - {fi-icl-guc}:       [INCOMPLETE][7] ([fdo#107713]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-guc/igt@i915_selftest@live_execlists.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/fi-icl-guc/igt@i915_selftest@live_execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [FAIL][9] ([fdo#111045] / [fdo#111096]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  * igt@prime_self_import@basic-with_fd_dup:
    - fi-icl-u3:          [DMESG-WARN][11] ([fdo#107724]) -> [PASS][12] +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7000/fi-icl-u3/igt@prime_self_import@basic-with_fd_dup.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/fi-icl-u3/igt@prime_self_import@basic-with_fd_dup.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
  [fdo#111045]: https://bugs.freedesktop.org/show_bug.cgi?id=111045
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111735]: https://bugs.freedesktop.org/show_bug.cgi?id=111735


Participating hosts (52 -> 45)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7000 -> Patchwork_14660

  CI-20190529: 20190529
  CI_DRM_7000: a6af6b11a94cbffff1c70dbab04ef1e13d79e4ae @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5211: 1601e1571eb0f29a06b64494040b3ea7859a650f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14660: f7cb0f2c6b9e3c87c2c434992bfd94e10f18b228 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

f7cb0f2c6b9e TGL HAX drm/i915/tgl: Interrupts are overrated

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14660/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (3 preceding siblings ...)
  2019-10-03 23:25 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev2) Patchwork
@ 2019-10-04  7:02 ` Chris Wilson
  2019-10-04  7:03 ` Chris Wilson
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-04  7:02 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/Kconfig.debug           |  5 +++
 drivers/gpu/drm/i915/gt/intel_engine_types.h |  3 ++
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 10 +++---
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 34 ++++++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.h              |  3 ++
 drivers/gpu/drm/i915/i915_irq.c              | 14 ++++++--
 drivers/gpu/drm/i915/i915_pci.c              |  1 -
 8 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 4a800faa275c..4d23a84ac2c4 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -44,6 +44,7 @@ config DRM_I915_DEBUG
 	select DRM_I915_SELFTEST
 	select DRM_I915_DEBUG_RUNTIME_PM
 	select DRM_I915_DEBUG_MMIO
+	select TIGERLAKE_DEBUG_IRQ
         default n
         help
           Choose this option to turn on extra driver debugging that may affect
@@ -220,3 +221,7 @@ config DRM_I915_DEBUG_RUNTIME_PM
 	  driver loading, suspend and resume operations.
 
 	  If in doubt, say "N"
+
+config TIGERLAKE_DEBUG_IRQ
+	bool "[TGL] Reduce IRQ functionality for stability"
+	default n
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..53265add81ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,8 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..91ba60cd991e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -209,12 +209,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (TIGERLAKE_NO_IRQ(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..900b473e280d 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1944,6 +1944,8 @@ static void process_csb(struct intel_engine_cs *engine)
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
 				   execlists_num_ports(execlists));
+
+			intel_engine_queue_breadcrumbs(engine);
 		}
 	} while (head != tail);
 
@@ -1987,6 +1989,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3414,9 +3437,16 @@ gen12_emit_fini_breadcrumb_rcs(struct i915_request *request, u32 *cs)
 	return gen12_emit_fini_breadcrumb_footer(request, cs);
 }
 
+static void tgl_unpark(struct intel_engine_cs *engine)
+{
+	clear_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+	irq_poll_sched(&engine->irq_poll);
+}
+
 static void execlists_park(struct intel_engine_cs *engine)
 {
 	del_timer(&engine->execlists.timer);
+	set_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
 }
 
 void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
@@ -3432,6 +3462,8 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 	engine->park = execlists_park;
 	engine->unpark = NULL;
+	if (TIGERLAKE_NO_IRQ(engine->i915))
+		engine->unpark = tgl_unpark;
 
 	engine->flags |= I915_ENGINE_SUPPORTS_STATS;
 	if (!intel_vgpu_active(engine->i915)) {
@@ -3446,6 +3478,7 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3565,7 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 337d8306416a..c505d9e38e98 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2069,6 +2069,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
 #define IS_GEN9_LP(dev_priv)	(IS_GEN(dev_priv, 9) && IS_LP(dev_priv))
 #define IS_GEN9_BC(dev_priv)	(IS_GEN(dev_priv, 9) && !IS_LP(dev_priv))
 
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)
+
 #define HAS_ENGINE(dev_priv, id) (INTEL_INFO(dev_priv)->engine_mask & BIT(id))
 
 #define ENGINE_INSTANCES_MASK(dev_priv, first, count) ({		\
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index bc83f094065a..05060f829981 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -360,6 +360,9 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 	if (READ_ONCE(rps->interrupts_enabled))
 		return;
 
+	if (!dev_priv->pm_rps_events)
+		return;
+
 	spin_lock_irq(&gt->irq_lock);
 	WARN_ON_ONCE(rps->pm_iir);
 
@@ -376,7 +379,12 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 
 u32 gen6_sanitize_rps_pm_mask(const struct drm_i915_private *i915, u32 mask)
 {
-	return mask & ~i915->gt_pm.rps.pm_intrmsk_mbz;
+	const struct intel_rps *rps = &i915->gt_pm.rps;
+
+	if (!rps->interrupts_enabled)
+		return ~0u;
+
+	return mask & ~rps->pm_intrmsk_mbz;
 }
 
 void gen6_disable_rps_interrupts(struct drm_i915_private *dev_priv)
@@ -4314,7 +4322,9 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
 		dev_priv->gt.pm_guc_events = GUC_INTR_GUC2HOST << 16;
 
 	/* Let's track the enabled rps events */
-	if (IS_VALLEYVIEW(dev_priv))
+	if (TIGERLAKE_NO_IRQ(dev_priv))
+		dev_priv->pm_rps_events = 0;
+	else if (IS_VALLEYVIEW(dev_priv))
 		/* WaGsvRC0ResidencyMethod:vlv */
 		dev_priv->pm_rps_events = GEN6_PM_RP_UP_EI_EXPIRED;
 	else
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 1cbf3998b361..86be10cc6a70 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -806,7 +806,6 @@ static const struct intel_device_info intel_tigerlake_12_info = {
 	.display.has_modular_fia = 1,
 	.engine_mask =
 		BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
-	.has_rps = false, /* XXX disabled for debugging */
 };
 
 #undef GEN
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (4 preceding siblings ...)
  2019-10-04  7:02 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
@ 2019-10-04  7:03 ` Chris Wilson
  2019-10-04  7:08 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4) Patchwork
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-04  7:03 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/Kconfig.debug           |  5 +++
 drivers/gpu/drm/i915/gt/intel_engine_types.h |  3 ++
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 13 +++++---
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 34 ++++++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.h              |  3 ++
 drivers/gpu/drm/i915/i915_irq.c              | 14 ++++++--
 drivers/gpu/drm/i915/i915_pci.c              |  1 -
 8 files changed, 67 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 4a800faa275c..4d23a84ac2c4 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -44,6 +44,7 @@ config DRM_I915_DEBUG
 	select DRM_I915_SELFTEST
 	select DRM_I915_DEBUG_RUNTIME_PM
 	select DRM_I915_DEBUG_MMIO
+	select TIGERLAKE_DEBUG_IRQ
         default n
         help
           Choose this option to turn on extra driver debugging that may affect
@@ -220,3 +221,7 @@ config DRM_I915_DEBUG_RUNTIME_PM
 	  driver loading, suspend and resume operations.
 
 	  If in doubt, say "N"
+
+config TIGERLAKE_DEBUG_IRQ
+	bool "[TGL] Reduce IRQ functionality for stability"
+	default n
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..53265add81ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,8 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..7d4c2f18576e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -45,6 +45,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
 
 	lockdep_assert_held(&gt->irq_lock);
 
+	if (WARN_ON(TIGERLAKE_NO_IRQ(gt->i915)))
+		return 0;
+
 	raw_reg_write(regs, GEN11_IIR_REG_SELECTOR(bank), BIT(bit));
 
 	/*
@@ -209,12 +212,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (TIGERLAKE_NO_IRQ(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..900b473e280d 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1944,6 +1944,8 @@ static void process_csb(struct intel_engine_cs *engine)
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
 				   execlists_num_ports(execlists));
+
+			intel_engine_queue_breadcrumbs(engine);
 		}
 	} while (head != tail);
 
@@ -1987,6 +1989,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3414,9 +3437,16 @@ gen12_emit_fini_breadcrumb_rcs(struct i915_request *request, u32 *cs)
 	return gen12_emit_fini_breadcrumb_footer(request, cs);
 }
 
+static void tgl_unpark(struct intel_engine_cs *engine)
+{
+	clear_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+	irq_poll_sched(&engine->irq_poll);
+}
+
 static void execlists_park(struct intel_engine_cs *engine)
 {
 	del_timer(&engine->execlists.timer);
+	set_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
 }
 
 void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
@@ -3432,6 +3462,8 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 	engine->park = execlists_park;
 	engine->unpark = NULL;
+	if (TIGERLAKE_NO_IRQ(engine->i915))
+		engine->unpark = tgl_unpark;
 
 	engine->flags |= I915_ENGINE_SUPPORTS_STATS;
 	if (!intel_vgpu_active(engine->i915)) {
@@ -3446,6 +3478,7 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3565,7 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 337d8306416a..c505d9e38e98 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2069,6 +2069,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
 #define IS_GEN9_LP(dev_priv)	(IS_GEN(dev_priv, 9) && IS_LP(dev_priv))
 #define IS_GEN9_BC(dev_priv)	(IS_GEN(dev_priv, 9) && !IS_LP(dev_priv))
 
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)
+
 #define HAS_ENGINE(dev_priv, id) (INTEL_INFO(dev_priv)->engine_mask & BIT(id))
 
 #define ENGINE_INSTANCES_MASK(dev_priv, first, count) ({		\
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index bc83f094065a..05060f829981 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -360,6 +360,9 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 	if (READ_ONCE(rps->interrupts_enabled))
 		return;
 
+	if (!dev_priv->pm_rps_events)
+		return;
+
 	spin_lock_irq(&gt->irq_lock);
 	WARN_ON_ONCE(rps->pm_iir);
 
@@ -376,7 +379,12 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 
 u32 gen6_sanitize_rps_pm_mask(const struct drm_i915_private *i915, u32 mask)
 {
-	return mask & ~i915->gt_pm.rps.pm_intrmsk_mbz;
+	const struct intel_rps *rps = &i915->gt_pm.rps;
+
+	if (!rps->interrupts_enabled)
+		return ~0u;
+
+	return mask & ~rps->pm_intrmsk_mbz;
 }
 
 void gen6_disable_rps_interrupts(struct drm_i915_private *dev_priv)
@@ -4314,7 +4322,9 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
 		dev_priv->gt.pm_guc_events = GUC_INTR_GUC2HOST << 16;
 
 	/* Let's track the enabled rps events */
-	if (IS_VALLEYVIEW(dev_priv))
+	if (TIGERLAKE_NO_IRQ(dev_priv))
+		dev_priv->pm_rps_events = 0;
+	else if (IS_VALLEYVIEW(dev_priv))
 		/* WaGsvRC0ResidencyMethod:vlv */
 		dev_priv->pm_rps_events = GEN6_PM_RP_UP_EI_EXPIRED;
 	else
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 1cbf3998b361..86be10cc6a70 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -806,7 +806,6 @@ static const struct intel_device_info intel_tigerlake_12_info = {
 	.display.has_modular_fia = 1,
 	.engine_mask =
 		BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
-	.has_rps = false, /* XXX disabled for debugging */
 };
 
 #undef GEN
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (5 preceding siblings ...)
  2019-10-04  7:03 ` Chris Wilson
@ 2019-10-04  7:08 ` Patchwork
  2019-10-04  7:36 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04  7:08 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev4)
URL   : https://patchwork.freedesktop.org/series/67558/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
9b1dcf587b4b TGL HAX drm/i915/tgl: Interrupts are overrated
-:190: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#190: FILE: drivers/gpu/drm/i915/i915_drv.h:2072:
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)

total: 1 errors, 0 warnings, 0 checks, 184 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (6 preceding siblings ...)
  2019-10-04  7:08 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4) Patchwork
@ 2019-10-04  7:36 ` Chris Wilson
  2019-10-04  7:47 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4) Patchwork
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-04  7:36 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/Kconfig.debug           |  5 +++
 drivers/gpu/drm/i915/gt/intel_engine_types.h |  3 ++
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 13 ++++--
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 42 ++++++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.h              |  3 ++
 drivers/gpu/drm/i915/i915_irq.c              | 14 ++++++-
 drivers/gpu/drm/i915/i915_pci.c              |  1 -
 include/linux/irq_poll.h                     | 15 ++++++-
 lib/irq_poll.c                               | 13 +++---
 10 files changed, 95 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 4a800faa275c..4d23a84ac2c4 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -44,6 +44,7 @@ config DRM_I915_DEBUG
 	select DRM_I915_SELFTEST
 	select DRM_I915_DEBUG_RUNTIME_PM
 	select DRM_I915_DEBUG_MMIO
+	select TIGERLAKE_DEBUG_IRQ
         default n
         help
           Choose this option to turn on extra driver debugging that may affect
@@ -220,3 +221,7 @@ config DRM_I915_DEBUG_RUNTIME_PM
 	  driver loading, suspend and resume operations.
 
 	  If in doubt, say "N"
+
+config TIGERLAKE_DEBUG_IRQ
+	bool "[TGL] Reduce IRQ functionality for stability"
+	default n
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..53265add81ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,8 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..7d4c2f18576e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -45,6 +45,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
 
 	lockdep_assert_held(&gt->irq_lock);
 
+	if (WARN_ON(TIGERLAKE_NO_IRQ(gt->i915)))
+		return 0;
+
 	raw_reg_write(regs, GEN11_IIR_REG_SELECTOR(bank), BIT(bit));
 
 	/*
@@ -209,12 +212,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (TIGERLAKE_NO_IRQ(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..de4c494d775e 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -989,6 +989,9 @@ __execlists_schedule_in(struct i915_request *rq)
 	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_IN);
 	intel_engine_context_in(engine);
 
+	if (TIGERLAKE_NO_IRQ(engine->i915))
+		irq_poll_activate(&engine->irq_poll);
+
 	return engine;
 }
 
@@ -1028,6 +1031,9 @@ __execlists_schedule_out(struct i915_request *rq,
 {
 	struct intel_context * const ce = rq->hw_context;
 
+	if (TIGERLAKE_NO_IRQ(engine->i915))
+		irq_poll_deactivate(&engine->irq_poll);
+
 	intel_engine_context_out(engine);
 	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
 	intel_gt_pm_put(engine->gt);
@@ -1196,6 +1202,8 @@ static void execlists_submit_ports(struct intel_engine_cs *engine)
 	/* we need to manually load the submit queue */
 	if (execlists->ctrl_reg)
 		writel(EL_CTRL_LOAD, execlists->ctrl_reg);
+
+	irq_poll_sched(&engine->irq_poll);
 }
 
 static bool ctx_single_port_submission(const struct intel_context *ce)
@@ -1838,6 +1846,11 @@ gen8_csb_parse(const struct intel_engine_execlists *execlists, const u32 *csb)
 	return *csb & (GEN8_CTX_STATUS_IDLE_ACTIVE | GEN8_CTX_STATUS_PREEMPTED);
 }
 
+static inline bool has_breadcrumbs(struct i915_request *rq)
+{
+	return !list_empty(&rq->hw_context->signals);
+}
+
 static void process_csb(struct intel_engine_cs *engine)
 {
 	struct intel_engine_execlists * const execlists = &engine->execlists;
@@ -1940,6 +1953,10 @@ static void process_csb(struct intel_engine_cs *engine)
 			 */
 			GEM_BUG_ON(!i915_request_completed(*execlists->active) &&
 				   !reset_in_progress(execlists));
+
+			if (has_breadcrumbs(*execlists->active))
+				intel_engine_queue_breadcrumbs(engine);
+
 			execlists_schedule_out(*execlists->active++);
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
@@ -1987,6 +2004,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3446,6 +3484,7 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3571,9 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
+	irq_poll_disable(&engine->irq_poll);
+
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 337d8306416a..c505d9e38e98 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2069,6 +2069,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
 #define IS_GEN9_LP(dev_priv)	(IS_GEN(dev_priv, 9) && IS_LP(dev_priv))
 #define IS_GEN9_BC(dev_priv)	(IS_GEN(dev_priv, 9) && !IS_LP(dev_priv))
 
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)
+
 #define HAS_ENGINE(dev_priv, id) (INTEL_INFO(dev_priv)->engine_mask & BIT(id))
 
 #define ENGINE_INSTANCES_MASK(dev_priv, first, count) ({		\
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index bc83f094065a..05060f829981 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -360,6 +360,9 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 	if (READ_ONCE(rps->interrupts_enabled))
 		return;
 
+	if (!dev_priv->pm_rps_events)
+		return;
+
 	spin_lock_irq(&gt->irq_lock);
 	WARN_ON_ONCE(rps->pm_iir);
 
@@ -376,7 +379,12 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 
 u32 gen6_sanitize_rps_pm_mask(const struct drm_i915_private *i915, u32 mask)
 {
-	return mask & ~i915->gt_pm.rps.pm_intrmsk_mbz;
+	const struct intel_rps *rps = &i915->gt_pm.rps;
+
+	if (!rps->interrupts_enabled)
+		return ~0u;
+
+	return mask & ~rps->pm_intrmsk_mbz;
 }
 
 void gen6_disable_rps_interrupts(struct drm_i915_private *dev_priv)
@@ -4314,7 +4322,9 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
 		dev_priv->gt.pm_guc_events = GUC_INTR_GUC2HOST << 16;
 
 	/* Let's track the enabled rps events */
-	if (IS_VALLEYVIEW(dev_priv))
+	if (TIGERLAKE_NO_IRQ(dev_priv))
+		dev_priv->pm_rps_events = 0;
+	else if (IS_VALLEYVIEW(dev_priv))
 		/* WaGsvRC0ResidencyMethod:vlv */
 		dev_priv->pm_rps_events = GEN6_PM_RP_UP_EI_EXPIRED;
 	else
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 1cbf3998b361..86be10cc6a70 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -806,7 +806,6 @@ static const struct intel_device_info intel_tigerlake_12_info = {
 	.display.has_modular_fia = 1,
 	.engine_mask =
 		BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
-	.has_rps = false, /* XXX disabled for debugging */
 };
 
 #undef GEN
diff --git a/include/linux/irq_poll.h b/include/linux/irq_poll.h
index 16aaeccb65cb..d66d0e0e9379 100644
--- a/include/linux/irq_poll.h
+++ b/include/linux/irq_poll.h
@@ -2,19 +2,22 @@
 #ifndef IRQ_POLL_H
 #define IRQ_POLL_H
 
+#include <linux/atomic.h>
+#include <linux/list.h>
+
 struct irq_poll;
 typedef int (irq_poll_fn)(struct irq_poll *, int);
 
 struct irq_poll {
 	struct list_head list;
 	unsigned long state;
+	atomic_t count;
 	int weight;
 	irq_poll_fn *poll;
 };
 
 enum {
 	IRQ_POLL_F_SCHED	= 0,
-	IRQ_POLL_F_DISABLE	= 1,
 };
 
 extern void irq_poll_sched(struct irq_poll *);
@@ -23,4 +26,14 @@ extern void irq_poll_complete(struct irq_poll *);
 extern void irq_poll_enable(struct irq_poll *);
 extern void irq_poll_disable(struct irq_poll *);
 
+static inline void irq_poll_activate(struct irq_poll *iop)
+{
+	atomic_inc(&iop->count);
+}
+
+static inline void irq_poll_deactivate(struct irq_poll *iop)
+{
+	atomic_dec(&iop->count);
+}
+
 #endif
diff --git a/lib/irq_poll.c b/lib/irq_poll.c
index 2f17b488d58e..59408fa75fa6 100644
--- a/lib/irq_poll.c
+++ b/lib/irq_poll.c
@@ -28,8 +28,9 @@ void irq_poll_sched(struct irq_poll *iop)
 {
 	unsigned long flags;
 
-	if (test_bit(IRQ_POLL_F_DISABLE, &iop->state))
+	if (!atomic_read(&iop->count))
 		return;
+
 	if (test_and_set_bit(IRQ_POLL_F_SCHED, &iop->state))
 		return;
 
@@ -122,7 +123,7 @@ static void __latent_entropy irq_poll_softirq(struct softirq_action *h)
 		 * move the instance around on the list at-will.
 		 */
 		if (work >= weight) {
-			if (test_bit(IRQ_POLL_F_DISABLE, &iop->state))
+			if (!atomic_read(&iop->count))
 				__irq_poll_complete(iop);
 			else
 				list_move_tail(&iop->list, list);
@@ -144,10 +145,9 @@ static void __latent_entropy irq_poll_softirq(struct softirq_action *h)
  **/
 void irq_poll_disable(struct irq_poll *iop)
 {
-	set_bit(IRQ_POLL_F_DISABLE, &iop->state);
+	atomic_set_release(&iop->count, 0);
 	while (test_and_set_bit(IRQ_POLL_F_SCHED, &iop->state))
 		msleep(1);
-	clear_bit(IRQ_POLL_F_DISABLE, &iop->state);
 }
 EXPORT_SYMBOL(irq_poll_disable);
 
@@ -161,9 +161,7 @@ EXPORT_SYMBOL(irq_poll_disable);
  **/
 void irq_poll_enable(struct irq_poll *iop)
 {
-	BUG_ON(!test_bit(IRQ_POLL_F_SCHED, &iop->state));
-	smp_mb__before_atomic();
-	clear_bit_unlock(IRQ_POLL_F_SCHED, &iop->state);
+	irq_poll_activate(iop);
 }
 EXPORT_SYMBOL(irq_poll_enable);
 
@@ -182,6 +180,7 @@ void irq_poll_init(struct irq_poll *iop, int weight, irq_poll_fn *poll_fn)
 	INIT_LIST_HEAD(&iop->list);
 	iop->weight = weight;
 	iop->poll = poll_fn;
+	atomic_set(&iop->count, 1);
 }
 EXPORT_SYMBOL(irq_poll_init);
 
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (7 preceding siblings ...)
  2019-10-04  7:36 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
@ 2019-10-04  7:47 ` Patchwork
  2019-10-04  8:02 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5) Patchwork
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04  7:47 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev4)
URL   : https://patchwork.freedesktop.org/series/67558/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7001 -> Patchwork_14661
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14661/index.html

Known issues
------------

  Here are the changes found in Patchwork_14661 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_reloc@basic-cpu-noreloc:
    - fi-icl-u3:          [PASS][1] -> [DMESG-WARN][2] ([fdo#107724]) +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-icl-u3/igt@gem_exec_reloc@basic-cpu-noreloc.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14661/fi-icl-u3/igt@gem_exec_reloc@basic-cpu-noreloc.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - fi-blb-e6850:       [PASS][3] -> [INCOMPLETE][4] ([fdo#107718])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-blb-e6850/igt@gem_exec_suspend@basic-s4-devices.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14661/fi-blb-e6850/igt@gem_exec_suspend@basic-s4-devices.html

  
#### Possible fixes ####

  * igt@gem_exec_reloc@basic-cpu-read-noreloc:
    - fi-icl-u3:          [DMESG-WARN][5] ([fdo#107724]) -> [PASS][6] +3 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-icl-u3/igt@gem_exec_reloc@basic-cpu-read-noreloc.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14661/fi-icl-u3/igt@gem_exec_reloc@basic-cpu-read-noreloc.html

  
#### Warnings ####

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [FAIL][7] ([fdo#111407]) -> [FAIL][8] ([fdo#111045] / [fdo#111096])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14661/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#111045]: https://bugs.freedesktop.org/show_bug.cgi?id=111045
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#111880]: https://bugs.freedesktop.org/show_bug.cgi?id=111880


Participating hosts (52 -> 43)
------------------------------

  Missing    (9): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-8809g fi-icl-y fi-icl-guc fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7001 -> Patchwork_14661

  CI-20190529: 20190529
  CI_DRM_7001: eab49a79cbfa8c01b934c40797ed628fda5d514b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5211: 1601e1571eb0f29a06b64494040b3ea7859a650f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14661: 9b1dcf587b4b28a2ff396230dde16c7a1b6860e5 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

9b1dcf587b4b TGL HAX drm/i915/tgl: Interrupts are overrated

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14661/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (8 preceding siblings ...)
  2019-10-04  7:47 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4) Patchwork
@ 2019-10-04  8:02 ` Patchwork
  2019-10-04  8:17 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04  8:02 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev5)
URL   : https://patchwork.freedesktop.org/series/67558/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
25e18100cd25 TGL HAX drm/i915/tgl: Interrupts are overrated
-:209: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#209: FILE: drivers/gpu/drm/i915/i915_drv.h:2072:
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)

total: 1 errors, 0 warnings, 0 checks, 284 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (9 preceding siblings ...)
  2019-10-04  8:02 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5) Patchwork
@ 2019-10-04  8:17 ` Chris Wilson
  2019-10-04  9:03 ` Chris Wilson
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-04  8:17 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/Kconfig.debug           |  5 +++
 drivers/gpu/drm/i915/gt/intel_engine_types.h | 15 ++++++-
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 13 ++++--
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 47 ++++++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.h              |  3 ++
 drivers/gpu/drm/i915/i915_irq.c              | 14 +++++-
 drivers/gpu/drm/i915/i915_pci.c              |  1 -
 8 files changed, 90 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 4a800faa275c..4d23a84ac2c4 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -44,6 +44,7 @@ config DRM_I915_DEBUG
 	select DRM_I915_SELFTEST
 	select DRM_I915_DEBUG_RUNTIME_PM
 	select DRM_I915_DEBUG_MMIO
+	select TIGERLAKE_DEBUG_IRQ
         default n
         help
           Choose this option to turn on extra driver debugging that may affect
@@ -220,3 +221,7 @@ config DRM_I915_DEBUG_RUNTIME_PM
 	  driver loading, suspend and resume operations.
 
 	  If in doubt, say "N"
+
+config TIGERLAKE_DEBUG_IRQ
+	bool "[TGL] Reduce IRQ functionality for stability"
+	default n
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..d3c36e57b888 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,9 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+	atomic_t irq_count;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
@@ -480,8 +484,9 @@ struct intel_engine_cs {
 #define I915_ENGINE_HAS_PREEMPTION   BIT(2)
 #define I915_ENGINE_HAS_SEMAPHORES   BIT(3)
 #define I915_ENGINE_NEEDS_BREADCRUMB_TASKLET BIT(4)
-#define I915_ENGINE_IS_VIRTUAL       BIT(5)
-#define I915_ENGINE_HAS_RELATIVE_MMIO BIT(6)
+#define I915_ENGINE_NEEDS_IRQ_POLL   BIT(5)
+#define I915_ENGINE_IS_VIRTUAL       BIT(6)
+#define I915_ENGINE_HAS_RELATIVE_MMIO BIT(7)
 	unsigned int flags;
 
 	/*
@@ -571,6 +576,12 @@ intel_engine_needs_breadcrumb_tasklet(const struct intel_engine_cs *engine)
 	return engine->flags & I915_ENGINE_NEEDS_BREADCRUMB_TASKLET;
 }
 
+static inline bool
+intel_engine_needs_irq_poll(const struct intel_engine_cs *engine)
+{
+	return engine->flags & I915_ENGINE_NEEDS_IRQ_POLL;
+}
+
 static inline bool
 intel_engine_is_virtual(const struct intel_engine_cs *engine)
 {
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..7d4c2f18576e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -45,6 +45,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
 
 	lockdep_assert_held(&gt->irq_lock);
 
+	if (WARN_ON(TIGERLAKE_NO_IRQ(gt->i915)))
+		return 0;
+
 	raw_reg_write(regs, GEN11_IIR_REG_SELECTOR(bank), BIT(bit));
 
 	/*
@@ -209,12 +212,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (TIGERLAKE_NO_IRQ(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..1a785e876a32 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -989,6 +989,9 @@ __execlists_schedule_in(struct i915_request *rq)
 	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_IN);
 	intel_engine_context_in(engine);
 
+	if (intel_engine_needs_irq_poll(engine))
+		atomic_inc(&engine->irq_count);
+
 	return engine;
 }
 
@@ -1028,6 +1031,10 @@ __execlists_schedule_out(struct i915_request *rq,
 {
 	struct intel_context * const ce = rq->hw_context;
 
+	if (intel_engine_needs_irq_poll(engine) &&
+	    atomic_dec_and_test(&engine->irq_count))
+		set_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+
 	intel_engine_context_out(engine);
 	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
 	intel_gt_pm_put(engine->gt);
@@ -1196,6 +1203,11 @@ static void execlists_submit_ports(struct intel_engine_cs *engine)
 	/* we need to manually load the submit queue */
 	if (execlists->ctrl_reg)
 		writel(EL_CTRL_LOAD, execlists->ctrl_reg);
+
+	if (atomic_read(&engine->irq_count)) {
+		clear_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+		irq_poll_sched(&engine->irq_poll);
+	}
 }
 
 static bool ctx_single_port_submission(const struct intel_context *ce)
@@ -1838,6 +1850,11 @@ gen8_csb_parse(const struct intel_engine_execlists *execlists, const u32 *csb)
 	return *csb & (GEN8_CTX_STATUS_IDLE_ACTIVE | GEN8_CTX_STATUS_PREEMPTED);
 }
 
+static inline bool has_breadcrumbs(struct i915_request *rq)
+{
+	return !list_empty(&rq->hw_context->signals);
+}
+
 static void process_csb(struct intel_engine_cs *engine)
 {
 	struct intel_engine_execlists * const execlists = &engine->execlists;
@@ -1940,6 +1957,10 @@ static void process_csb(struct intel_engine_cs *engine)
 			 */
 			GEM_BUG_ON(!i915_request_completed(*execlists->active) &&
 				   !reset_in_progress(execlists));
+
+			if (has_breadcrumbs(*execlists->active))
+				intel_engine_queue_breadcrumbs(engine);
+
 			execlists_schedule_out(*execlists->active++);
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
@@ -1987,6 +2008,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3442,10 +3484,14 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 	if (engine->class != COPY_ENGINE_CLASS && INTEL_GEN(engine->i915) >= 12)
 		engine->flags |= I915_ENGINE_HAS_RELATIVE_MMIO;
+
+	if (TIGERLAKE_NO_IRQ(engine->i915))
+		engine->flags |= I915_ENGINE_NEEDS_IRQ_POLL;
 }
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3578,7 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 337d8306416a..c505d9e38e98 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2069,6 +2069,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
 #define IS_GEN9_LP(dev_priv)	(IS_GEN(dev_priv, 9) && IS_LP(dev_priv))
 #define IS_GEN9_BC(dev_priv)	(IS_GEN(dev_priv, 9) && !IS_LP(dev_priv))
 
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)
+
 #define HAS_ENGINE(dev_priv, id) (INTEL_INFO(dev_priv)->engine_mask & BIT(id))
 
 #define ENGINE_INSTANCES_MASK(dev_priv, first, count) ({		\
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index bc83f094065a..05060f829981 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -360,6 +360,9 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 	if (READ_ONCE(rps->interrupts_enabled))
 		return;
 
+	if (!dev_priv->pm_rps_events)
+		return;
+
 	spin_lock_irq(&gt->irq_lock);
 	WARN_ON_ONCE(rps->pm_iir);
 
@@ -376,7 +379,12 @@ void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 
 u32 gen6_sanitize_rps_pm_mask(const struct drm_i915_private *i915, u32 mask)
 {
-	return mask & ~i915->gt_pm.rps.pm_intrmsk_mbz;
+	const struct intel_rps *rps = &i915->gt_pm.rps;
+
+	if (!rps->interrupts_enabled)
+		return ~0u;
+
+	return mask & ~rps->pm_intrmsk_mbz;
 }
 
 void gen6_disable_rps_interrupts(struct drm_i915_private *dev_priv)
@@ -4314,7 +4322,9 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
 		dev_priv->gt.pm_guc_events = GUC_INTR_GUC2HOST << 16;
 
 	/* Let's track the enabled rps events */
-	if (IS_VALLEYVIEW(dev_priv))
+	if (TIGERLAKE_NO_IRQ(dev_priv))
+		dev_priv->pm_rps_events = 0;
+	else if (IS_VALLEYVIEW(dev_priv))
 		/* WaGsvRC0ResidencyMethod:vlv */
 		dev_priv->pm_rps_events = GEN6_PM_RP_UP_EI_EXPIRED;
 	else
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 1cbf3998b361..86be10cc6a70 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -806,7 +806,6 @@ static const struct intel_device_info intel_tigerlake_12_info = {
 	.display.has_modular_fia = 1,
 	.engine_mask =
 		BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
-	.has_rps = false, /* XXX disabled for debugging */
 };
 
 #undef GEN
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (10 preceding siblings ...)
  2019-10-04  8:17 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
@ 2019-10-04  9:03 ` Chris Wilson
  2019-10-04  9:57 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7) Patchwork
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-04  9:03 UTC (permalink / raw)
  To: intel-gfx

Why sleep when you can busywait for an interrupt? Throw out the old irq
handlers, and use irq_poll instead.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111880
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig                 |  1 +
 drivers/gpu/drm/i915/Kconfig.debug           |  5 +++
 drivers/gpu/drm/i915/gt/intel_engine_types.h | 15 ++++++-
 drivers/gpu/drm/i915/gt/intel_gt_irq.c       | 13 ++++--
 drivers/gpu/drm/i915/gt/intel_lrc.c          | 47 ++++++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.h              |  3 ++
 6 files changed, 78 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 0d21402945ab..bf2b27b6ebf2 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -13,6 +13,7 @@ config DRM_I915
 	select DRM_PANEL
 	select DRM_MIPI_DSI
 	select RELAY
+	select IRQ_POLL
 	select IRQ_WORK
 	# i915 depends on ACPI_VIDEO when ACPI is enabled
 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 4a800faa275c..4d23a84ac2c4 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -44,6 +44,7 @@ config DRM_I915_DEBUG
 	select DRM_I915_SELFTEST
 	select DRM_I915_DEBUG_RUNTIME_PM
 	select DRM_I915_DEBUG_MMIO
+	select TIGERLAKE_DEBUG_IRQ
         default n
         help
           Choose this option to turn on extra driver debugging that may affect
@@ -220,3 +221,7 @@ config DRM_I915_DEBUG_RUNTIME_PM
 	  driver loading, suspend and resume operations.
 
 	  If in doubt, say "N"
+
+config TIGERLAKE_DEBUG_IRQ
+	bool "[TGL] Reduce IRQ functionality for stability"
+	default n
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 943f0663837e..d3c36e57b888 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -8,6 +8,7 @@
 #define __INTEL_ENGINE_TYPES__
 
 #include <linux/hashtable.h>
+#include <linux/irq_poll.h>
 #include <linux/irq_work.h>
 #include <linux/kref.h>
 #include <linux/list.h>
@@ -330,6 +331,9 @@ struct intel_engine_cs {
 	struct drm_i915_gem_object *default_state;
 	void *pinned_default_state;
 
+	struct irq_poll irq_poll;
+	atomic_t irq_count;
+
 	struct {
 		struct intel_ring *ring;
 		struct intel_timeline *timeline;
@@ -480,8 +484,9 @@ struct intel_engine_cs {
 #define I915_ENGINE_HAS_PREEMPTION   BIT(2)
 #define I915_ENGINE_HAS_SEMAPHORES   BIT(3)
 #define I915_ENGINE_NEEDS_BREADCRUMB_TASKLET BIT(4)
-#define I915_ENGINE_IS_VIRTUAL       BIT(5)
-#define I915_ENGINE_HAS_RELATIVE_MMIO BIT(6)
+#define I915_ENGINE_NEEDS_IRQ_POLL   BIT(5)
+#define I915_ENGINE_IS_VIRTUAL       BIT(6)
+#define I915_ENGINE_HAS_RELATIVE_MMIO BIT(7)
 	unsigned int flags;
 
 	/*
@@ -571,6 +576,12 @@ intel_engine_needs_breadcrumb_tasklet(const struct intel_engine_cs *engine)
 	return engine->flags & I915_ENGINE_NEEDS_BREADCRUMB_TASKLET;
 }
 
+static inline bool
+intel_engine_needs_irq_poll(const struct intel_engine_cs *engine)
+{
+	return engine->flags & I915_ENGINE_NEEDS_IRQ_POLL;
+}
+
 static inline bool
 intel_engine_is_virtual(const struct intel_engine_cs *engine)
 {
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index 34a4fb624bf7..7d4c2f18576e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -45,6 +45,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
 
 	lockdep_assert_held(&gt->irq_lock);
 
+	if (WARN_ON(TIGERLAKE_NO_IRQ(gt->i915)))
+		return 0;
+
 	raw_reg_write(regs, GEN11_IIR_REG_SELECTOR(bank), BIT(bit));
 
 	/*
@@ -209,12 +212,14 @@ void gen11_gt_irq_reset(struct intel_gt *gt)
 
 void gen11_gt_irq_postinstall(struct intel_gt *gt)
 {
-	const u32 irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
 	struct intel_uncore *uncore = gt->uncore;
-	const u32 dmask = irqs << 16 | irqs;
-	const u32 smask = irqs << 16;
+	u32 irqs, dmask, smask;
 
-	BUILD_BUG_ON(irqs & 0xffff0000);
+	irqs = GT_RENDER_USER_INTERRUPT | GT_CONTEXT_SWITCH_INTERRUPT;
+	if (TIGERLAKE_NO_IRQ(gt->i915))
+		irqs = 0; /* XXX lalalala */
+	smask = irqs << 16;
+	dmask = smask | irqs;
 
 	/* Enable RCS, BCS, VCS and VECS class interrupts. */
 	intel_uncore_write(uncore, GEN11_RENDER_COPY_INTR_ENABLE, dmask);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 431d3b8c3371..1a785e876a32 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -989,6 +989,9 @@ __execlists_schedule_in(struct i915_request *rq)
 	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_IN);
 	intel_engine_context_in(engine);
 
+	if (intel_engine_needs_irq_poll(engine))
+		atomic_inc(&engine->irq_count);
+
 	return engine;
 }
 
@@ -1028,6 +1031,10 @@ __execlists_schedule_out(struct i915_request *rq,
 {
 	struct intel_context * const ce = rq->hw_context;
 
+	if (intel_engine_needs_irq_poll(engine) &&
+	    atomic_dec_and_test(&engine->irq_count))
+		set_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+
 	intel_engine_context_out(engine);
 	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
 	intel_gt_pm_put(engine->gt);
@@ -1196,6 +1203,11 @@ static void execlists_submit_ports(struct intel_engine_cs *engine)
 	/* we need to manually load the submit queue */
 	if (execlists->ctrl_reg)
 		writel(EL_CTRL_LOAD, execlists->ctrl_reg);
+
+	if (atomic_read(&engine->irq_count)) {
+		clear_bit(IRQ_POLL_F_DISABLE, &engine->irq_poll.state);
+		irq_poll_sched(&engine->irq_poll);
+	}
 }
 
 static bool ctx_single_port_submission(const struct intel_context *ce)
@@ -1838,6 +1850,11 @@ gen8_csb_parse(const struct intel_engine_execlists *execlists, const u32 *csb)
 	return *csb & (GEN8_CTX_STATUS_IDLE_ACTIVE | GEN8_CTX_STATUS_PREEMPTED);
 }
 
+static inline bool has_breadcrumbs(struct i915_request *rq)
+{
+	return !list_empty(&rq->hw_context->signals);
+}
+
 static void process_csb(struct intel_engine_cs *engine)
 {
 	struct intel_engine_execlists * const execlists = &engine->execlists;
@@ -1940,6 +1957,10 @@ static void process_csb(struct intel_engine_cs *engine)
 			 */
 			GEM_BUG_ON(!i915_request_completed(*execlists->active) &&
 				   !reset_in_progress(execlists));
+
+			if (has_breadcrumbs(*execlists->active))
+				intel_engine_queue_breadcrumbs(engine);
+
 			execlists_schedule_out(*execlists->active++);
 
 			GEM_BUG_ON(execlists->active - execlists->inflight >
@@ -1987,6 +2008,27 @@ static void execlists_submission_tasklet(unsigned long data)
 	}
 }
 
+static int iop_handler(struct irq_poll *iop, int budget)
+{
+	struct intel_engine_cs *engine =
+		container_of(iop, typeof(*engine), irq_poll);
+	struct intel_engine_execlists *execlists = &engine->execlists;
+	struct tasklet_struct *t = &execlists->tasklet;
+
+	if (execlists->csb_head == READ_ONCE(*execlists->csb_write))
+		return 0;
+
+	if (!tasklet_trylock(t))
+		return 0;
+
+	/* Must wait for any GPU reset in progress. */
+	if (__tasklet_is_enabled(t))
+		t->func(t->data);
+
+	tasklet_unlock(t);
+	return 0;
+}
+
 static void execlists_submission_timer(struct timer_list *timer)
 {
 	struct intel_engine_cs *engine =
@@ -3442,10 +3484,14 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 
 	if (engine->class != COPY_ENGINE_CLASS && INTEL_GEN(engine->i915) >= 12)
 		engine->flags |= I915_ENGINE_HAS_RELATIVE_MMIO;
+
+	if (TIGERLAKE_NO_IRQ(engine->i915))
+		engine->flags |= I915_ENGINE_NEEDS_IRQ_POLL;
 }
 
 static void execlists_destroy(struct intel_engine_cs *engine)
 {
+	irq_poll_disable(&engine->irq_poll);
 	intel_engine_cleanup_common(engine);
 	lrc_destroy_wa_ctx(engine);
 	kfree(engine);
@@ -3532,6 +3578,7 @@ static void rcs_submission_override(struct intel_engine_cs *engine)
 
 int intel_execlists_submission_setup(struct intel_engine_cs *engine)
 {
+	irq_poll_init(&engine->irq_poll, -1, iop_handler);
 	tasklet_init(&engine->execlists.tasklet,
 		     execlists_submission_tasklet, (unsigned long)engine);
 	timer_setup(&engine->execlists.timer, execlists_submission_timer, 0);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 337d8306416a..c505d9e38e98 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2069,6 +2069,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
 #define IS_GEN9_LP(dev_priv)	(IS_GEN(dev_priv, 9) && IS_LP(dev_priv))
 #define IS_GEN9_BC(dev_priv)	(IS_GEN(dev_priv, 9) && !IS_LP(dev_priv))
 
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)
+
 #define HAS_ENGINE(dev_priv, id) (INTEL_INFO(dev_priv)->engine_mask & BIT(id))
 
 #define ENGINE_INSTANCES_MASK(dev_priv, first, count) ({		\
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (11 preceding siblings ...)
  2019-10-04  9:03 ` Chris Wilson
@ 2019-10-04  9:57 ` Patchwork
  2019-10-04 10:18 ` ✗ Fi.CI.BAT: failure for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5) Patchwork
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04  9:57 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev7)
URL   : https://patchwork.freedesktop.org/series/67558/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
cbf4264ef04e TGL HAX drm/i915/tgl: Interrupts are overrated
-:244: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#244: FILE: drivers/gpu/drm/i915/i915_drv.h:2072:
+#define TIGERLAKE_NO_IRQ(i915) \
+	IS_ENABLED(CONFIG_TIGERLAKE_DEBUG_IRQ) && IS_TIGERLAKE(i915)

total: 1 errors, 0 warnings, 0 checks, 195 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* ✗ Fi.CI.BAT: failure for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (12 preceding siblings ...)
  2019-10-04  9:57 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7) Patchwork
@ 2019-10-04 10:18 ` Patchwork
  2019-10-04 11:27 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7) Patchwork
  2019-10-04 16:08 ` ✗ Fi.CI.IGT: failure " Patchwork
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04 10:18 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev5)
URL   : https://patchwork.freedesktop.org/series/67558/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7001 -> Patchwork_14662
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_14662 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_14662, 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_14662/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_14662:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload:
    - fi-kbl-r:           [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-r/igt@i915_module_load@reload.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-r/igt@i915_module_load@reload.html
    - fi-whl-u:           [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-whl-u/igt@i915_module_load@reload.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-whl-u/igt@i915_module_load@reload.html
    - fi-skl-iommu:       [PASS][5] -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-skl-iommu/igt@i915_module_load@reload.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-skl-iommu/igt@i915_module_load@reload.html
    - fi-skl-6700k2:      [PASS][7] -> [INCOMPLETE][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-skl-6700k2/igt@i915_module_load@reload.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-skl-6700k2/igt@i915_module_load@reload.html
    - fi-bsw-kefka:       [PASS][9] -> [INCOMPLETE][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-bsw-kefka/igt@i915_module_load@reload.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-bsw-kefka/igt@i915_module_load@reload.html
    - fi-bdw-5557u:       [PASS][11] -> [INCOMPLETE][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-bdw-5557u/igt@i915_module_load@reload.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-bdw-5557u/igt@i915_module_load@reload.html
    - fi-skl-guc:         [PASS][13] -> [INCOMPLETE][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-skl-guc/igt@i915_module_load@reload.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-skl-guc/igt@i915_module_load@reload.html
    - fi-kbl-guc:         [PASS][15] -> [INCOMPLETE][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-guc/igt@i915_module_load@reload.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-guc/igt@i915_module_load@reload.html
    - fi-cfl-8109u:       [PASS][17] -> [INCOMPLETE][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-cfl-8109u/igt@i915_module_load@reload.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-cfl-8109u/igt@i915_module_load@reload.html
    - fi-bdw-gvtdvm:      [PASS][19] -> [INCOMPLETE][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-bdw-gvtdvm/igt@i915_module_load@reload.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-bdw-gvtdvm/igt@i915_module_load@reload.html
    - fi-kbl-7500u:       [PASS][21] -> [INCOMPLETE][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-7500u/igt@i915_module_load@reload.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-7500u/igt@i915_module_load@reload.html
    - fi-cfl-8700k:       [PASS][23] -> [INCOMPLETE][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-cfl-8700k/igt@i915_module_load@reload.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-cfl-8700k/igt@i915_module_load@reload.html
    - fi-cfl-guc:         [PASS][25] -> [INCOMPLETE][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-cfl-guc/igt@i915_module_load@reload.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-cfl-guc/igt@i915_module_load@reload.html
    - fi-bsw-n3050:       [PASS][27] -> [INCOMPLETE][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-bsw-n3050/igt@i915_module_load@reload.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-bsw-n3050/igt@i915_module_load@reload.html
    - fi-skl-lmem:        [PASS][29] -> [INCOMPLETE][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-skl-lmem/igt@i915_module_load@reload.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-skl-lmem/igt@i915_module_load@reload.html
    - fi-skl-6260u:       [PASS][31] -> [INCOMPLETE][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-skl-6260u/igt@i915_module_load@reload.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-skl-6260u/igt@i915_module_load@reload.html
    - fi-kbl-x1275:       [PASS][33] -> [INCOMPLETE][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-x1275/igt@i915_module_load@reload.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-x1275/igt@i915_module_load@reload.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_exec_fence@basic-wait-default:
    - {fi-tgl-u}:         [PASS][35] -> [SKIP][36] +86 similar issues
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-tgl-u/igt@gem_exec_fence@basic-wait-default.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-tgl-u/igt@gem_exec_fence@basic-wait-default.html

  * igt@gem_exec_parse@basic-allowed:
    - {fi-tgl-u}:         [SKIP][37] ([fdo#109289]) -> [SKIP][38] +1 similar issue
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-tgl-u/igt@gem_exec_parse@basic-allowed.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-tgl-u/igt@gem_exec_parse@basic-allowed.html

  * igt@gem_exec_suspend@basic-s3:
    - {fi-cml-s}:         [PASS][39] -> [DMESG-WARN][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-cml-s/igt@gem_exec_suspend@basic-s3.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-cml-s/igt@gem_exec_suspend@basic-s3.html

  * igt@i915_module_load@reload:
    - {fi-tgl-u}:         [PASS][41] -> [INCOMPLETE][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-tgl-u/igt@i915_module_load@reload.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-tgl-u/igt@i915_module_load@reload.html
    - {fi-kbl-soraka}:    [PASS][43] -> [INCOMPLETE][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-soraka/igt@i915_module_load@reload.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-soraka/igt@i915_module_load@reload.html

  * igt@runner@aborted:
    - {fi-cml-s}:         NOTRUN -> [FAIL][45]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-cml-s/igt@runner@aborted.html

  
Known issues
------------

  Here are the changes found in Patchwork_14662 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s3:
    - fi-apl-guc:         [PASS][46] -> [DMESG-WARN][47] ([fdo#108566])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-apl-guc/igt@gem_exec_suspend@basic-s3.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-apl-guc/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_mmap_gtt@basic-small-bo-tiledy:
    - fi-icl-u3:          [PASS][48] -> [DMESG-WARN][49] ([fdo#107724]) +2 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-icl-u3/igt@gem_mmap_gtt@basic-small-bo-tiledy.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-icl-u3/igt@gem_mmap_gtt@basic-small-bo-tiledy.html

  * igt@i915_module_load@reload:
    - fi-kbl-8809g:       [PASS][50] -> [INCOMPLETE][51] ([fdo#103665])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-8809g/igt@i915_module_load@reload.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-8809g/igt@i915_module_load@reload.html
    - fi-apl-guc:         [PASS][52] -> [INCOMPLETE][53] ([fdo#103927])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-apl-guc/igt@i915_module_load@reload.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-apl-guc/igt@i915_module_load@reload.html
    - fi-skl-6600u:       [PASS][54] -> [INCOMPLETE][55] ([fdo#104108])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-skl-6600u/igt@i915_module_load@reload.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-skl-6600u/igt@i915_module_load@reload.html
    - fi-glk-dsi:         [PASS][56] -> [INCOMPLETE][57] ([fdo#103359] / [k.org#198133])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-glk-dsi/igt@i915_module_load@reload.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-glk-dsi/igt@i915_module_load@reload.html
    - fi-cml-u2:          [PASS][58] -> [INCOMPLETE][59] ([fdo#110566])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-cml-u2/igt@i915_module_load@reload.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-cml-u2/igt@i915_module_load@reload.html
    - fi-bxt-dsi:         [PASS][60] -> [INCOMPLETE][61] ([fdo#103927])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-bxt-dsi/igt@i915_module_load@reload.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-bxt-dsi/igt@i915_module_load@reload.html
    - fi-icl-u3:          [PASS][62] -> [INCOMPLETE][63] ([fdo#107713])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-icl-u3/igt@i915_module_load@reload.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-icl-u3/igt@i915_module_load@reload.html

  
#### Possible fixes ####

  * igt@gem_exec_reloc@basic-cpu-read-noreloc:
    - fi-icl-u3:          [DMESG-WARN][64] ([fdo#107724]) -> [PASS][65] +3 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-icl-u3/igt@gem_exec_reloc@basic-cpu-read-noreloc.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-icl-u3/igt@gem_exec_reloc@basic-cpu-read-noreloc.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [FAIL][66] ([fdo#111407]) -> [PASS][67]
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Warnings ####

  * igt@i915_module_load@reload:
    - fi-icl-u2:          [DMESG-WARN][68] ([fdo#110595] / [fdo#111214]) -> [INCOMPLETE][69] ([fdo#107713])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7001/fi-icl-u2/igt@i915_module_load@reload.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/fi-icl-u2/igt@i915_module_load@reload.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#110566]: https://bugs.freedesktop.org/show_bug.cgi?id=110566
  [fdo#110595]: https://bugs.freedesktop.org/show_bug.cgi?id=110595
  [fdo#111214]: https://bugs.freedesktop.org/show_bug.cgi?id=111214
  [fdo#111381]: https://bugs.freedesktop.org/show_bug.cgi?id=111381
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#111714]: https://bugs.freedesktop.org/show_bug.cgi?id=111714
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (52 -> 44)
------------------------------

  Missing    (8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-icl-y fi-icl-dsi fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7001 -> Patchwork_14662

  CI-20190529: 20190529
  CI_DRM_7001: eab49a79cbfa8c01b934c40797ed628fda5d514b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5211: 1601e1571eb0f29a06b64494040b3ea7859a650f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14662: 25e18100cd25d6f743b1fc75fc5862a44206cd44 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

25e18100cd25 TGL HAX drm/i915/tgl: Interrupts are overrated

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14662/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (13 preceding siblings ...)
  2019-10-04 10:18 ` ✗ Fi.CI.BAT: failure for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5) Patchwork
@ 2019-10-04 11:27 ` Patchwork
  2019-10-04 16:08 ` ✗ Fi.CI.IGT: failure " Patchwork
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04 11:27 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev7)
URL   : https://patchwork.freedesktop.org/series/67558/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7003 -> Patchwork_14664
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/index.html

Known issues
------------

  Here are the changes found in Patchwork_14664 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_busy@busy-all:
    - fi-icl-u3:          [PASS][1] -> [DMESG-WARN][2] ([fdo#107724]) +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/fi-icl-u3/igt@gem_busy@busy-all.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/fi-icl-u3/igt@gem_busy@busy-all.html

  
#### Possible fixes ####

  * igt@gem_ctx_switch@rcs0:
    - fi-icl-u2:          [INCOMPLETE][3] ([fdo#107713]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/fi-icl-u2/igt@gem_ctx_switch@rcs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/fi-icl-u2/igt@gem_ctx_switch@rcs0.html

  * igt@gem_exec_suspend@basic-s3:
    - fi-blb-e6850:       [INCOMPLETE][5] ([fdo#107718]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/fi-blb-e6850/igt@gem_exec_suspend@basic-s3.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/fi-blb-e6850/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_mmap_gtt@basic-copy:
    - fi-icl-u3:          [DMESG-WARN][7] ([fdo#107724]) -> [PASS][8] +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/fi-icl-u3/igt@gem_mmap_gtt@basic-copy.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/fi-icl-u3/igt@gem_mmap_gtt@basic-copy.html

  * igt@gem_sync@basic-all:
    - {fi-tgl-u}:         [INCOMPLETE][9] ([fdo#111880]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/fi-tgl-u/igt@gem_sync@basic-all.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/fi-tgl-u/igt@gem_sync@basic-all.html

  * igt@i915_module_load@reload:
    - fi-icl-u3:          [DMESG-WARN][11] ([fdo#107724] / [fdo#111214]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/fi-icl-u3/igt@i915_module_load@reload.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/fi-icl-u3/igt@i915_module_load@reload.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#109644]: https://bugs.freedesktop.org/show_bug.cgi?id=109644
  [fdo#110464]: https://bugs.freedesktop.org/show_bug.cgi?id=110464
  [fdo#111214]: https://bugs.freedesktop.org/show_bug.cgi?id=111214
  [fdo#111880]: https://bugs.freedesktop.org/show_bug.cgi?id=111880


Participating hosts (52 -> 45)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7003 -> Patchwork_14664

  CI-20190529: 20190529
  CI_DRM_7003: d76b206244f3c13898e65433720bb524c85fb832 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5211: 1601e1571eb0f29a06b64494040b3ea7859a650f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14664: cbf4264ef04e65143d167eef34d9149b30a7789c @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

cbf4264ef04e TGL HAX drm/i915/tgl: Interrupts are overrated

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

* ✗ Fi.CI.IGT: failure for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7)
  2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
                   ` (14 preceding siblings ...)
  2019-10-04 11:27 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7) Patchwork
@ 2019-10-04 16:08 ` Patchwork
  15 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-04 16:08 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: TGL HAX drm/i915/tgl: Interrupts are overrated (rev7)
URL   : https://patchwork.freedesktop.org/series/67558/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7003_full -> Patchwork_14664_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_14664_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_14664_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_14664_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_mmap_gtt@hang:
    - shard-kbl:          [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-kbl1/igt@gem_mmap_gtt@hang.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-kbl7/igt@gem_mmap_gtt@hang.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - shard-iclb:         [PASS][3] -> [DMESG-WARN][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb3/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb4/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  
Known issues
------------

  Here are the changes found in Patchwork_14664_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
    - shard-iclb:         [PASS][5] -> [SKIP][6] ([fdo#110841])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb5/igt@gem_ctx_shared@exec-single-timeline-bsd.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb1/igt@gem_ctx_shared@exec-single-timeline-bsd.html

  * igt@gem_exec_balancer@smoke:
    - shard-iclb:         [PASS][7] -> [SKIP][8] ([fdo#110854])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb2/igt@gem_exec_balancer@smoke.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb6/igt@gem_exec_balancer@smoke.html

  * igt@gem_exec_schedule@preempt-bsd:
    - shard-iclb:         [PASS][9] -> [SKIP][10] ([fdo#111325]) +7 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb5/igt@gem_exec_schedule@preempt-bsd.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb1/igt@gem_exec_schedule@preempt-bsd.html

  * igt@gem_exec_schedule@preempt-queue-bsd1:
    - shard-iclb:         [PASS][11] -> [SKIP][12] ([fdo#109276]) +19 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb1/igt@gem_exec_schedule@preempt-queue-bsd1.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb6/igt@gem_exec_schedule@preempt-queue-bsd1.html

  * igt@gem_softpin@noreloc-s3:
    - shard-skl:          [PASS][13] -> [INCOMPLETE][14] ([fdo#104108])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl6/igt@gem_softpin@noreloc-s3.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl10/igt@gem_softpin@noreloc-s3.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy:
    - shard-apl:          [PASS][15] -> [DMESG-WARN][16] ([fdo#109385] / [fdo#111870])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-apl6/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-apl6/igt@gem_userptr_blits@map-fixed-invalidate-busy.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup:
    - shard-skl:          [PASS][17] -> [DMESG-WARN][18] ([fdo#111870]) +1 similar issue
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl3/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl3/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
    - shard-iclb:         [PASS][19] -> [DMESG-WARN][20] ([fdo#111870])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb1/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
    - shard-apl:          [PASS][21] -> [DMESG-WARN][22] ([fdo#108566])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-apl8/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-apl8/igt@kms_cursor_crc@pipe-c-cursor-suspend.html

  * igt@kms_flip_tiling@flip-to-x-tiled:
    - shard-iclb:         [PASS][23] -> [FAIL][24] ([fdo#108134])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb4/igt@kms_flip_tiling@flip-to-x-tiled.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb8/igt@kms_flip_tiling@flip-to-x-tiled.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt:
    - shard-iclb:         [PASS][25] -> [FAIL][26] ([fdo#103167]) +6 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
    - shard-skl:          [PASS][27] -> [FAIL][28] ([fdo#108145])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl2/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl7/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html

  * igt@kms_plane_lowres@pipe-a-tiling-y:
    - shard-iclb:         [PASS][29] -> [FAIL][30] ([fdo#103166])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb5/igt@kms_plane_lowres@pipe-a-tiling-y.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-y.html

  * igt@kms_psr@psr2_cursor_mmap_cpu:
    - shard-iclb:         [PASS][31] -> [SKIP][32] ([fdo#109441])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb3/igt@kms_psr@psr2_cursor_mmap_cpu.html

  * igt@kms_setmode@basic:
    - shard-glk:          [PASS][33] -> [FAIL][34] ([fdo#99912])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-glk3/igt@kms_setmode@basic.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-glk5/igt@kms_setmode@basic.html

  * igt@kms_universal_plane@universal-plane-gen9-features-pipe-c:
    - shard-iclb:         [PASS][35] -> [INCOMPLETE][36] ([fdo#107713])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb5/igt@kms_universal_plane@universal-plane-gen9-features-pipe-c.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb1/igt@kms_universal_plane@universal-plane-gen9-features-pipe-c.html

  
#### Possible fixes ####

  * igt@gem_create@create-clear:
    - shard-hsw:          [INCOMPLETE][37] ([fdo#103540] / [fdo#110401]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-hsw5/igt@gem_create@create-clear.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-hsw7/igt@gem_create@create-clear.html

  * igt@gem_exec_schedule@preempt-queue-bsd2:
    - shard-iclb:         [SKIP][39] ([fdo#109276]) -> [PASS][40] +18 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb8/igt@gem_exec_schedule@preempt-queue-bsd2.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb2/igt@gem_exec_schedule@preempt-queue-bsd2.html

  * igt@gem_exec_schedule@promotion-bsd:
    - shard-iclb:         [SKIP][41] ([fdo#111325]) -> [PASS][42] +3 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb4/igt@gem_exec_schedule@promotion-bsd.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb3/igt@gem_exec_schedule@promotion-bsd.html

  * igt@gem_mmap_gtt@hang:
    - shard-iclb:         [DMESG-WARN][43] -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb3/igt@gem_mmap_gtt@hang.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb4/igt@gem_mmap_gtt@hang.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-display:
    - {shard-tglb}:       [INCOMPLETE][45] ([fdo#111714]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-tglb8/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-tglb8/igt@gem_partial_pwrite_pread@writes-after-reads-display.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-iclb:         [INCOMPLETE][47] ([fdo#107713]) -> [PASS][48] +1 similar issue
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb7/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb7/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - {shard-tglb}:       [DMESG-WARN][49] ([fdo#111870]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-tglb3/igt@gem_userptr_blits@dmabuf-unsync.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-tglb7/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy-gup:
    - shard-kbl:          [DMESG-WARN][51] ([fdo#111870]) -> [PASS][52] +3 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-kbl7/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-kbl7/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
    - shard-skl:          [DMESG-WARN][53] ([fdo#111870]) -> [PASS][54] +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl5/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl1/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
    - shard-glk:          [DMESG-WARN][55] ([fdo#111870]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-glk2/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-glk9/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html

  * igt@gem_userptr_blits@sync-unmap-after-close:
    - shard-hsw:          [DMESG-WARN][57] ([fdo#111870]) -> [PASS][58] +1 similar issue
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-hsw2/igt@gem_userptr_blits@sync-unmap-after-close.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-hsw8/igt@gem_userptr_blits@sync-unmap-after-close.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - {shard-tglb}:       [INCOMPLETE][59] ([fdo#111832]) -> [PASS][60] +2 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-tglb5/igt@i915_suspend@fence-restore-tiled2untiled.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-tglb6/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-0:
    - shard-skl:          [INCOMPLETE][61] -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl1/igt@kms_big_fb@y-tiled-32bpp-rotate-0.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl2/igt@kms_big_fb@y-tiled-32bpp-rotate-0.html

  * igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding:
    - shard-apl:          [INCOMPLETE][63] ([fdo#103927]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-apl2/igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-apl6/igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding.html

  * igt@kms_cursor_crc@pipe-b-cursor-64x64-sliding:
    - shard-kbl:          [INCOMPLETE][65] ([fdo#103665]) -> [PASS][66] +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-kbl7/igt@kms_cursor_crc@pipe-b-cursor-64x64-sliding.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-kbl6/igt@kms_cursor_crc@pipe-b-cursor-64x64-sliding.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-hsw:          [INCOMPLETE][67] ([fdo#103540]) -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-hsw6/igt@kms_flip@flip-vs-suspend-interruptible.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-hsw2/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
    - {shard-tglb}:       [FAIL][69] ([fdo#103167]) -> [PASS][70] +13 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-tglb4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-tglb1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite:
    - shard-iclb:         [FAIL][71] ([fdo#103167]) -> [PASS][72] +4 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-render:
    - shard-skl:          [FAIL][73] ([fdo#103167]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl1/igt@kms_frontbuffer_tracking@psr-rgb565-draw-render.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl6/igt@kms_frontbuffer_tracking@psr-rgb565-draw-render.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
    - shard-skl:          [FAIL][75] ([fdo#108145]) -> [PASS][76]
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-skl1/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-skl6/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html

  * igt@kms_plane_lowres@pipe-a-tiling-x:
    - shard-iclb:         [FAIL][77] ([fdo#103166]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-x.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb2/igt@kms_plane_lowres@pipe-a-tiling-x.html

  * igt@kms_psr@psr2_cursor_render:
    - shard-iclb:         [SKIP][79] ([fdo#109441]) -> [PASS][80] +4 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb1/igt@kms_psr@psr2_cursor_render.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb2/igt@kms_psr@psr2_cursor_render.html

  * igt@kms_vblank@pipe-a-ts-continuation-dpms-suspend:
    - {shard-tglb}:       [INCOMPLETE][81] ([fdo#111832] / [fdo#111850]) -> [PASS][82]
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-tglb8/igt@kms_vblank@pipe-a-ts-continuation-dpms-suspend.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-tglb6/igt@kms_vblank@pipe-a-ts-continuation-dpms-suspend.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
    - shard-apl:          [DMESG-WARN][83] ([fdo#108566]) -> [PASS][84]
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-apl8/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-apl8/igt@kms_vblank@pipe-c-ts-continuation-suspend.html

  * igt@tools_test@tools_test:
    - shard-hsw:          [SKIP][85] ([fdo#109271]) -> [PASS][86]
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-hsw7/igt@tools_test@tools_test.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-hsw5/igt@tools_test@tools_test.html

  
#### Warnings ####

  * igt@gem_ctx_isolation@vcs1-nonpriv:
    - shard-iclb:         [FAIL][87] ([fdo#111329]) -> [SKIP][88] ([fdo#109276])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb4/igt@gem_ctx_isolation@vcs1-nonpriv.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb8/igt@gem_ctx_isolation@vcs1-nonpriv.html

  * igt@gem_mocs_settings@mocs-reset-bsd2:
    - shard-iclb:         [FAIL][89] ([fdo#111330]) -> [SKIP][90] ([fdo#109276])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb1/igt@gem_mocs_settings@mocs-reset-bsd2.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb6/igt@gem_mocs_settings@mocs-reset-bsd2.html

  * igt@gem_mocs_settings@mocs-settings-bsd2:
    - shard-iclb:         [SKIP][91] ([fdo#109276]) -> [FAIL][92] ([fdo#111330]) +2 similar issues
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-iclb3/igt@gem_mocs_settings@mocs-settings-bsd2.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-iclb4/igt@gem_mocs_settings@mocs-settings-bsd2.html

  * igt@gem_softpin@noreloc-s3:
    - shard-apl:          [INCOMPLETE][93] ([fdo#103927]) -> [DMESG-WARN][94] ([fdo#108566])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-apl7/igt@gem_softpin@noreloc-s3.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-apl8/igt@gem_softpin@noreloc-s3.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-hsw:          [DMESG-WARN][95] ([fdo#110789] / [fdo#111870]) -> [DMESG-WARN][96] ([fdo#111870])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7003/shard-hsw1/igt@gem_userptr_blits@dmabuf-unsync.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/shard-hsw5/igt@gem_userptr_blits@dmabuf-unsync.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#108134]: https://bugs.freedesktop.org/show_bug.cgi?id=108134
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109385]: https://bugs.freedesktop.org/show_bug.cgi?id=109385
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110401]: https://bugs.freedesktop.org/show_bug.cgi?id=110401
  [fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789
  [fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841
  [fdo#110854]: https://bugs.freedesktop.org/show_bug.cgi?id=110854
  [fdo#111325]: https://bugs.freedesktop.org/show_bug.cgi?id=111325
  [fdo#111329]: https://bugs.free

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14664/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2019-10-04 16:08 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-03 18:56 [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
2019-10-03 18:58 ` Chris Wilson
2019-10-03 22:06 ` ✓ Fi.CI.BAT: success for " Patchwork
2019-10-03 22:10 ` [PATCH] " Chris Wilson
2019-10-03 23:25 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev2) Patchwork
2019-10-04  7:02 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
2019-10-04  7:03 ` Chris Wilson
2019-10-04  7:08 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4) Patchwork
2019-10-04  7:36 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
2019-10-04  7:47 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev4) Patchwork
2019-10-04  8:02 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5) Patchwork
2019-10-04  8:17 ` [PATCH] TGL HAX drm/i915/tgl: Interrupts are overrated Chris Wilson
2019-10-04  9:03 ` Chris Wilson
2019-10-04  9:57 ` ✗ Fi.CI.CHECKPATCH: warning for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7) Patchwork
2019-10-04 10:18 ` ✗ Fi.CI.BAT: failure for TGL HAX drm/i915/tgl: Interrupts are overrated (rev5) Patchwork
2019-10-04 11:27 ` ✓ Fi.CI.BAT: success for TGL HAX drm/i915/tgl: Interrupts are overrated (rev7) Patchwork
2019-10-04 16:08 ` ✗ Fi.CI.IGT: failure " 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.