All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Limit C-states when waiting for the active request
@ 2018-07-30 11:29 Chris Wilson
  2018-07-30 11:31 ` Chris Wilson
                   ` (9 more replies)
  0 siblings, 10 replies; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 11:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

If we are waiting for the currently executing request, we have a good
idea that it will be completed in the very near future and so want to
cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.

Testcase: igt/gem_sync/store-default
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
---
 drivers/gpu/drm/i915/i915_request.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 694269e5b761..dd99eba5ae7c 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1258,6 +1258,19 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
 	return true;
 }
 
+struct pm_qos {
+	struct pm_qos_request req;
+	struct work_struct work;
+};
+
+static void pm_qos_del(struct work_struct *work)
+{
+	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), work);
+
+	pm_qos_remove_request(&pm_qos->req);
+	kfree(pm_qos);
+}
+
 /**
  * i915_request_wait - wait until execution of request has finished
  * @rq: the request to wait upon
@@ -1286,6 +1299,7 @@ long i915_request_wait(struct i915_request *rq,
 	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
 	DEFINE_WAIT_FUNC(reset, default_wake_function);
 	DEFINE_WAIT_FUNC(exec, default_wake_function);
+	struct pm_qos *pm_qos = NULL;
 	struct intel_wait wait;
 
 	might_sleep();
@@ -1387,6 +1401,18 @@ long i915_request_wait(struct i915_request *rq,
 			break;
 		}
 
+		if (!pm_qos &&
+		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
+				      wait.seqno - 1)) {
+			pm_qos = kzalloc(sizeof(*pm_qos), GFP_KERNEL);
+			if (pm_qos) {
+				pm_qos_add_request(&pm_qos->req,
+						   PM_QOS_CPU_DMA_LATENCY,
+						   50);
+				INIT_WORK(&pm_qos->work, pm_qos_del);
+			}
+		}
+
 		timeout = schedule_timeout(timeout);
 
 		if (intel_wait_complete(&wait) &&
@@ -1443,6 +1469,8 @@ long i915_request_wait(struct i915_request *rq,
 	if (flags & I915_WAIT_LOCKED)
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&rq->execute, &exec);
+	if (pm_qos)
+		schedule_work(&pm_qos->work);
 	trace_i915_request_wait_end(rq);
 
 	return timeout;
-- 
2.18.0

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

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

* [PATCH] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
@ 2018-07-30 11:31 ` Chris Wilson
  2018-07-30 12:05 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev2) Patchwork
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 11:31 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

If we are waiting for the currently executing request, we have a good
idea that it will be completed in the very near future and so want to
cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.

Testcase: igt/gem_sync/store-default
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
---
 drivers/gpu/drm/i915/i915_request.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 5c2c93cbab12..a4de1f0e88f1 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1258,6 +1258,19 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
 	return true;
 }
 
+struct pm_qos {
+	struct pm_qos_request req;
+	struct work_struct work;
+};
+
+static void pm_qos_del(struct work_struct *work)
+{
+	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), work);
+
+	pm_qos_remove_request(&pm_qos->req);
+	kfree(pm_qos);
+}
+
 /**
  * i915_request_wait - wait until execution of request has finished
  * @rq: the request to wait upon
@@ -1286,6 +1299,7 @@ long i915_request_wait(struct i915_request *rq,
 	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
 	DEFINE_WAIT_FUNC(reset, default_wake_function);
 	DEFINE_WAIT_FUNC(exec, default_wake_function);
+	struct pm_qos *pm_qos = NULL;
 	struct intel_wait wait;
 
 	might_sleep();
@@ -1363,6 +1377,18 @@ long i915_request_wait(struct i915_request *rq,
 			break;
 		}
 
+		if (!pm_qos &&
+		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
+				      wait.seqno - 1)) {
+			pm_qos = kzalloc(sizeof(*pm_qos), GFP_KERNEL);
+			if (pm_qos) {
+				pm_qos_add_request(&pm_qos->req,
+						   PM_QOS_CPU_DMA_LATENCY,
+						   50);
+				INIT_WORK(&pm_qos->work, pm_qos_del);
+			}
+		}
+
 		timeout = io_schedule_timeout(timeout);
 
 		if (intel_wait_complete(&wait) &&
@@ -1412,6 +1438,8 @@ long i915_request_wait(struct i915_request *rq,
 	if (flags & I915_WAIT_LOCKED)
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&rq->execute, &exec);
+	if (pm_qos)
+		schedule_work(&pm_qos->work);
 	trace_i915_request_wait_end(rq);
 
 	return timeout;
-- 
2.18.0

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

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

* ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev2)
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
  2018-07-30 11:31 ` Chris Wilson
@ 2018-07-30 12:05 ` Patchwork
  2018-07-30 12:14 ` [PATCH v2] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-07-30 12:05 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Limit C-states when waiting for the active request (rev2)
URL   : https://patchwork.freedesktop.org/series/47420/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4592 -> Patchwork_9805 =

== Summary - FAILURE ==

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

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47420/revisions/2/mbox/

== Possible new issues ==

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

  === IGT changes ===

    ==== Possible regressions ====

    igt@gem_busy@basic-busy-default:
      fi-snb-2600:        PASS -> DMESG-WARN

    igt@gem_cpu_reloc@basic:
      fi-hsw-4770r:       PASS -> DMESG-WARN
      fi-ivb-3770:        PASS -> DMESG-WARN

    igt@gem_cs_tlb@basic-default:
      fi-whl-u:           PASS -> DMESG-WARN
      {fi-skl-caroline}:  PASS -> DMESG-WARN
      fi-skl-6770hq:      PASS -> DMESG-WARN
      fi-bdw-5557u:       PASS -> DMESG-WARN
      fi-kbl-7560u:       PASS -> DMESG-WARN
      fi-cnl-psr:         PASS -> DMESG-WARN
      fi-kbl-r:           PASS -> DMESG-WARN
      fi-kbl-x1275:       PASS -> DMESG-WARN
      {fi-bsw-kefka}:     PASS -> DMESG-WARN
      fi-snb-2520m:       PASS -> DMESG-WARN
      fi-bdw-gvtdvm:      PASS -> DMESG-WARN
      fi-bxt-j4205:       PASS -> DMESG-WARN
      fi-skl-6700hq:      PASS -> DMESG-WARN
      fi-cfl-s3:          PASS -> DMESG-WARN
      {fi-cfl-8109u}:     PASS -> DMESG-WARN
      fi-kbl-7500u:       PASS -> DMESG-WARN
      fi-cfl-8700k:       PASS -> DMESG-WARN
      {fi-bdw-samus}:     PASS -> DMESG-WARN
      fi-glk-dsi:         PASS -> DMESG-WARN
      fi-kbl-7567u:       PASS -> DMESG-WARN
      fi-skl-6600u:       PASS -> DMESG-WARN
      fi-bsw-n3050:       PASS -> DMESG-WARN
      fi-skl-gvtdvm:      PASS -> DMESG-WARN
      fi-glk-j4005:       PASS -> DMESG-WARN
      {fi-skl-iommu}:     PASS -> DMESG-WARN
      fi-skl-6260u:       PASS -> DMESG-WARN
      fi-bxt-dsi:         PASS -> DMESG-WARN
      fi-skl-6700k2:      PASS -> DMESG-WARN

    igt@gem_ctx_exec@basic:
      fi-hsw-4770:        PASS -> DMESG-WARN

    igt@gem_ctx_switch@basic-default:
      fi-ivb-3520m:       PASS -> DMESG-WARN

    igt@gem_ctx_switch@basic-default-heavy:
      fi-byt-n2820:       PASS -> DMESG-WARN
      fi-byt-j1900:       PASS -> DMESG-WARN

    igt@gem_exec_reloc@basic-cpu-active:
      fi-gdg-551:         PASS -> DMESG-WARN
      fi-bwr-2160:        PASS -> DMESG-WARN

    igt@gem_render_tiled_blits@basic:
      fi-elk-e7500:       PASS -> DMESG-WARN
      fi-ilk-650:         PASS -> DMESG-WARN
      fi-blb-e6850:       PASS -> DMESG-WARN

    
== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_hangcheck:
      fi-kbl-7560u:       PASS -> DMESG-FAIL (fdo#106560, fdo#106947)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-skl-guc:         PASS -> FAIL (fdo#103191)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      fi-bxt-dsi:         PASS -> INCOMPLETE (fdo#103927)

    
    ==== Possible fixes ====

    igt@drv_selftest@live_workarounds:
      fi-cnl-psr:         DMESG-FAIL (fdo#107292) -> PASS

    {igt@kms_psr@primary_mmap_gtt}:
      fi-cnl-psr:         DMESG-WARN (fdo#107372) -> PASS

    
    ==== Warnings ====

    {igt@kms_psr@primary_page_flip}:
      fi-cnl-psr:         DMESG-WARN (fdo#107372) -> DMESG-FAIL (fdo#107372)

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

  fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#106947 https://bugs.freedesktop.org/show_bug.cgi?id=106947
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372


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

  Missing    (9): fi-ilk-m540 fi-hsw-4200u fi-hsw-peppy fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-pnv-d510 fi-icl-u fi-byt-clapper 


== Build changes ==

    * Linux: CI_DRM_4592 -> Patchwork_9805

  CI_DRM_4592: ed4b6c987889caf5a4041cf78eacdede85964577 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4580: f1c868dae24056ebc27e4f3c197724ce9b956a8a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9805: 977c48c6d84b75960216e1cc7f98be74dd068eeb @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

977c48c6d84b drm/i915: Limit C-states when waiting for the active request

== Logs ==

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

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

* [PATCH v2] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
  2018-07-30 11:31 ` Chris Wilson
  2018-07-30 12:05 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev2) Patchwork
@ 2018-07-30 12:14 ` Chris Wilson
  2018-07-30 12:25   ` Chris Wilson
  2018-07-30 12:39 ` [PATCH v3] " Chris Wilson
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 12:14 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

If we are waiting for the currently executing request, we have a good
idea that it will be completed in the very near future and so want to
cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.

v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.

Testcase: igt/gem_sync/store-default
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
---
 drivers/gpu/drm/i915/i915_request.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 5c2c93cbab12..de907150664e 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1258,6 +1258,19 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
 	return true;
 }
 
+struct pm_qos {
+	struct pm_qos_request req;
+	struct work_struct work;
+};
+
+static void pm_qos_del(struct work_struct *work)
+{
+	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), work);
+
+	pm_qos_remove_request(&pm_qos->req);
+	kfree(pm_qos);
+}
+
 /**
  * i915_request_wait - wait until execution of request has finished
  * @rq: the request to wait upon
@@ -1286,6 +1299,7 @@ long i915_request_wait(struct i915_request *rq,
 	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
 	DEFINE_WAIT_FUNC(reset, default_wake_function);
 	DEFINE_WAIT_FUNC(exec, default_wake_function);
+	struct pm_qos *pm_qos = NULL;
 	struct intel_wait wait;
 
 	might_sleep();
@@ -1363,6 +1377,19 @@ long i915_request_wait(struct i915_request *rq,
 			break;
 		}
 
+		if (!pm_qos &&
+		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
+				      wait.seqno - 1)) {
+			pm_qos = kzalloc(sizeof(*pm_qos),
+					 GFP_NOWAIT | __GFP_NOWARN);
+			if (pm_qos) {
+				pm_qos_add_request(&pm_qos->req,
+						   PM_QOS_CPU_DMA_LATENCY,
+						   50);
+				INIT_WORK(&pm_qos->work, pm_qos_del);
+			}
+		}
+
 		timeout = io_schedule_timeout(timeout);
 
 		if (intel_wait_complete(&wait) &&
@@ -1412,6 +1439,8 @@ long i915_request_wait(struct i915_request *rq,
 	if (flags & I915_WAIT_LOCKED)
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&rq->execute, &exec);
+	if (pm_qos)
+		schedule_work(&pm_qos->work);
 	trace_i915_request_wait_end(rq);
 
 	return timeout;
-- 
2.18.0

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

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

* Re: [PATCH v2] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 12:14 ` [PATCH v2] drm/i915: Limit C-states when waiting for the active request Chris Wilson
@ 2018-07-30 12:25   ` Chris Wilson
  2018-07-30 12:27     ` Chris Wilson
  0 siblings, 1 reply; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 12:25 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

Quoting Chris Wilson (2018-07-30 13:14:09)
> If we are waiting for the currently executing request, we have a good
> idea that it will be completed in the very near future and so want to
> cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.
> 
> v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.
> 
> Testcase: igt/gem_sync/store-default
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Eero Tamminen <eero.t.tamminen@intel.com>
> Cc: Francisco Jerez <currojerez@riseup.net>
> ---
>  drivers/gpu/drm/i915/i915_request.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
> index 5c2c93cbab12..de907150664e 100644
> --- a/drivers/gpu/drm/i915/i915_request.c
> +++ b/drivers/gpu/drm/i915/i915_request.c
> @@ -1258,6 +1258,19 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
>         return true;
>  }
>  
> +struct pm_qos {
> +       struct pm_qos_request req;
> +       struct work_struct work;
> +};
> +
> +static void pm_qos_del(struct work_struct *work)
> +{
> +       struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), work);
> +
> +       pm_qos_remove_request(&pm_qos->req);
> +       kfree(pm_qos);
> +}
> +
>  /**
>   * i915_request_wait - wait until execution of request has finished
>   * @rq: the request to wait upon
> @@ -1286,6 +1299,7 @@ long i915_request_wait(struct i915_request *rq,
>         wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
>         DEFINE_WAIT_FUNC(reset, default_wake_function);
>         DEFINE_WAIT_FUNC(exec, default_wake_function);
> +       struct pm_qos *pm_qos = NULL;
>         struct intel_wait wait;
>  
>         might_sleep();
> @@ -1363,6 +1377,19 @@ long i915_request_wait(struct i915_request *rq,
>                         break;
>                 }
>  
> +               if (!pm_qos &&
> +                   i915_seqno_passed(intel_engine_get_seqno(rq->engine),
> +                                     wait.seqno - 1)) {
> +                       pm_qos = kzalloc(sizeof(*pm_qos),
> +                                        GFP_NOWAIT | __GFP_NOWARN);
> +                       if (pm_qos) {
> +                               pm_qos_add_request(&pm_qos->req,
> +                                                  PM_QOS_CPU_DMA_LATENCY,
> +                                                  50);

Ho hum, it should also then complain about the blocking notifier
here. Let's see how observant it is...
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v2] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 12:25   ` Chris Wilson
@ 2018-07-30 12:27     ` Chris Wilson
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 12:27 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

Quoting Chris Wilson (2018-07-30 13:25:03)
> Quoting Chris Wilson (2018-07-30 13:14:09)
> > +               if (!pm_qos &&
> > +                   i915_seqno_passed(intel_engine_get_seqno(rq->engine),
> > +                                     wait.seqno - 1)) {
> > +                       pm_qos = kzalloc(sizeof(*pm_qos),
> > +                                        GFP_NOWAIT | __GFP_NOWARN);
> > +                       if (pm_qos) {
> > +                               pm_qos_add_request(&pm_qos->req,
> > +                                                  PM_QOS_CPU_DMA_LATENCY,
> > +                                                  50);
> 
> Ho hum, it should also then complain about the blocking notifier
> here. Let's see how observant it is...

Though that was kind of the intention as we could afford to lose a bit
of time before sleeping, so I don't think the blocking notifier itself
is a big deal... It would be a bit of a nuisance to avoid, the easiest
might be to reuse the work.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH v3] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (2 preceding siblings ...)
  2018-07-30 12:14 ` [PATCH v2] drm/i915: Limit C-states when waiting for the active request Chris Wilson
@ 2018-07-30 12:39 ` Chris Wilson
  2018-07-30 13:07   ` Mika Kuoppala
  2018-07-30 13:39 ` [PATCH v4] " Chris Wilson
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 12:39 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

If we are waiting for the currently executing request, we have a good
idea that it will be completed in the very near future and so want to
cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.

v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.
v3: Avoid the blocking notifier as well for TASK_INTERRUPTIBLE

Testcase: igt/gem_sync/store-default
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
---
 drivers/gpu/drm/i915/i915_request.c | 38 +++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 5c2c93cbab12..7c7746ef0d1b 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1258,6 +1258,28 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
 	return true;
 }
 
+struct pm_qos {
+	struct pm_qos_request req;
+	struct work_struct add, del;
+};
+
+static void pm_qos_add(struct work_struct *work)
+{
+	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), add);
+
+	pm_qos_add_request(&pm_qos->req, PM_QOS_CPU_DMA_LATENCY, 50);
+}
+
+static void pm_qos_del(struct work_struct *work)
+{
+	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), del);
+
+	if (!cancel_work_sync(&pm_qos->add))
+		pm_qos_remove_request(&pm_qos->req);
+
+	kfree(pm_qos);
+}
+
 /**
  * i915_request_wait - wait until execution of request has finished
  * @rq: the request to wait upon
@@ -1286,6 +1308,7 @@ long i915_request_wait(struct i915_request *rq,
 	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
 	DEFINE_WAIT_FUNC(reset, default_wake_function);
 	DEFINE_WAIT_FUNC(exec, default_wake_function);
+	struct pm_qos *pm_qos = NULL;
 	struct intel_wait wait;
 
 	might_sleep();
@@ -1363,6 +1386,19 @@ long i915_request_wait(struct i915_request *rq,
 			break;
 		}
 
+		if (!pm_qos &&
+		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
+				      wait.seqno - 1)) {
+			pm_qos = kzalloc(sizeof(*pm_qos),
+					 GFP_NOWAIT | __GFP_NOWARN);
+			if (pm_qos) {
+				INIT_WORK(&pm_qos->add, pm_qos_add);
+				INIT_WORK(&pm_qos->del, pm_qos_del);
+				schedule_work_on(smp_processor_id(),
+						 &pm_qos->add);
+			}
+		}
+
 		timeout = io_schedule_timeout(timeout);
 
 		if (intel_wait_complete(&wait) &&
@@ -1412,6 +1448,8 @@ long i915_request_wait(struct i915_request *rq,
 	if (flags & I915_WAIT_LOCKED)
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&rq->execute, &exec);
+	if (pm_qos)
+		schedule_work(&pm_qos->del);
 	trace_i915_request_wait_end(rq);
 
 	return timeout;
-- 
2.18.0

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

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

* Re: [PATCH v3] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 12:39 ` [PATCH v3] " Chris Wilson
@ 2018-07-30 13:07   ` Mika Kuoppala
  2018-07-30 13:27     ` Chris Wilson
  0 siblings, 1 reply; 15+ messages in thread
From: Mika Kuoppala @ 2018-07-30 13:07 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx; +Cc: Eero Tamminen

Chris Wilson <chris@chris-wilson.co.uk> writes:

> If we are waiting for the currently executing request, we have a good
> idea that it will be completed in the very near future and so want to
> cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.
>
> v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.
> v3: Avoid the blocking notifier as well for TASK_INTERRUPTIBLE
>
> Testcase: igt/gem_sync/store-default
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Eero Tamminen <eero.t.tamminen@intel.com>
> Cc: Francisco Jerez <currojerez@riseup.net>
> ---
>  drivers/gpu/drm/i915/i915_request.c | 38 +++++++++++++++++++++++++++++
>  1 file changed, 38 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
> index 5c2c93cbab12..7c7746ef0d1b 100644
> --- a/drivers/gpu/drm/i915/i915_request.c
> +++ b/drivers/gpu/drm/i915/i915_request.c
> @@ -1258,6 +1258,28 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
>  	return true;
>  }
>  
> +struct pm_qos {
> +	struct pm_qos_request req;
> +	struct work_struct add, del;
> +};
> +
> +static void pm_qos_add(struct work_struct *work)
> +{
> +	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), add);
> +
> +	pm_qos_add_request(&pm_qos->req, PM_QOS_CPU_DMA_LATENCY, 50);
> +}
> +
> +static void pm_qos_del(struct work_struct *work)
> +{
> +	struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), del);
> +
> +	if (!cancel_work_sync(&pm_qos->add))
> +		pm_qos_remove_request(&pm_qos->req);
> +
> +	kfree(pm_qos);
> +}
> +
>  /**
>   * i915_request_wait - wait until execution of request has finished
>   * @rq: the request to wait upon
> @@ -1286,6 +1308,7 @@ long i915_request_wait(struct i915_request *rq,
>  	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
>  	DEFINE_WAIT_FUNC(reset, default_wake_function);
>  	DEFINE_WAIT_FUNC(exec, default_wake_function);
> +	struct pm_qos *pm_qos = NULL;
>  	struct intel_wait wait;
>  
>  	might_sleep();
> @@ -1363,6 +1386,19 @@ long i915_request_wait(struct i915_request *rq,
>  			break;
>  		}
>  
> +		if (!pm_qos &&
> +		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
> +				      wait.seqno - 1)) {
> +			pm_qos = kzalloc(sizeof(*pm_qos),
> +					 GFP_NOWAIT | __GFP_NOWARN);
> +			if (pm_qos) {
> +				INIT_WORK(&pm_qos->add, pm_qos_add);
> +				INIT_WORK(&pm_qos->del, pm_qos_del);
> +				schedule_work_on(smp_processor_id(),
> +						 &pm_qos->add);
> +			}

My immediate thoughts are on why this and not preallocate pm_qos
on init/fini and just add/remove requests on suitable spots?

-Mika


> +		}
> +
>  		timeout = io_schedule_timeout(timeout);
>  
>  		if (intel_wait_complete(&wait) &&
> @@ -1412,6 +1448,8 @@ long i915_request_wait(struct i915_request *rq,
>  	if (flags & I915_WAIT_LOCKED)
>  		remove_wait_queue(errq, &reset);
>  	remove_wait_queue(&rq->execute, &exec);
> +	if (pm_qos)
> +		schedule_work(&pm_qos->del);
>  	trace_i915_request_wait_end(rq);
>  
>  	return timeout;
> -- 
> 2.18.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v3] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 13:07   ` Mika Kuoppala
@ 2018-07-30 13:27     ` Chris Wilson
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 13:27 UTC (permalink / raw)
  To: Mika Kuoppala, intel-gfx; +Cc: Eero Tamminen

Quoting Mika Kuoppala (2018-07-30 14:07:07)
> Chris Wilson <chris@chris-wilson.co.uk> writes:
> 
> > If we are waiting for the currently executing request, we have a good
> > idea that it will be completed in the very near future and so want to
> > cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.
> >
> > v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.
> > v3: Avoid the blocking notifier as well for TASK_INTERRUPTIBLE
> >
> > Testcase: igt/gem_sync/store-default
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > Cc: Eero Tamminen <eero.t.tamminen@intel.com>
> > Cc: Francisco Jerez <currojerez@riseup.net>
> > ---
> >  drivers/gpu/drm/i915/i915_request.c | 38 +++++++++++++++++++++++++++++
> >  1 file changed, 38 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
> > index 5c2c93cbab12..7c7746ef0d1b 100644
> > --- a/drivers/gpu/drm/i915/i915_request.c
> > +++ b/drivers/gpu/drm/i915/i915_request.c
> > @@ -1258,6 +1258,28 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
> >       return true;
> >  }
> >  
> > +struct pm_qos {
> > +     struct pm_qos_request req;
> > +     struct work_struct add, del;
> > +};
> > +
> > +static void pm_qos_add(struct work_struct *work)
> > +{
> > +     struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), add);
> > +
> > +     pm_qos_add_request(&pm_qos->req, PM_QOS_CPU_DMA_LATENCY, 50);
> > +}
> > +
> > +static void pm_qos_del(struct work_struct *work)
> > +{
> > +     struct pm_qos *pm_qos = container_of(work, typeof(*pm_qos), del);
> > +
> > +     if (!cancel_work_sync(&pm_qos->add))
> > +             pm_qos_remove_request(&pm_qos->req);
> > +
> > +     kfree(pm_qos);
> > +}
> > +
> >  /**
> >   * i915_request_wait - wait until execution of request has finished
> >   * @rq: the request to wait upon
> > @@ -1286,6 +1308,7 @@ long i915_request_wait(struct i915_request *rq,
> >       wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
> >       DEFINE_WAIT_FUNC(reset, default_wake_function);
> >       DEFINE_WAIT_FUNC(exec, default_wake_function);
> > +     struct pm_qos *pm_qos = NULL;
> >       struct intel_wait wait;
> >  
> >       might_sleep();
> > @@ -1363,6 +1386,19 @@ long i915_request_wait(struct i915_request *rq,
> >                       break;
> >               }
> >  
> > +             if (!pm_qos &&
> > +                 i915_seqno_passed(intel_engine_get_seqno(rq->engine),
> > +                                   wait.seqno - 1)) {
> > +                     pm_qos = kzalloc(sizeof(*pm_qos),
> > +                                      GFP_NOWAIT | __GFP_NOWARN);
> > +                     if (pm_qos) {
> > +                             INIT_WORK(&pm_qos->add, pm_qos_add);
> > +                             INIT_WORK(&pm_qos->del, pm_qos_del);
> > +                             schedule_work_on(smp_processor_id(),
> > +                                              &pm_qos->add);
> > +                     }
> 
> My immediate thoughts are on why this and not preallocate pm_qos
> on init/fini and just add/remove requests on suitable spots?

For simplicity, we want multiple requests. Now we could go the global
route, to save on the kmalloc/kfree; I wasn't sure if that was worth it.
The principle cost is on the kmalloc from the per-cpu slab, which we
only need before sleeping after having already checked with a short spin
that the request isn't likely to complete immediately. We would still
need to use workers to avoid the blocking notifier, especially in client
wakeup.

The way it is structured should mean that only one waiter at a time on
each engine will need to allocate, so shouldn't be frequent enough to
worry about (certainly gem_sync --run store-default isn't too alarming,
that's the test case that goes from 900us to 170us on bxt, and is
hitting the kmalloc on every iteration, and has no more latency than if
we purely busy-waited.)

The only critical factor then is readability. Is it terrible? Maybe a
small pm_qos = pm_qos_create(). And a better name than pm_qos so that we
associate it with the wait: struct wait_dma_qos?
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH v4] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (3 preceding siblings ...)
  2018-07-30 12:39 ` [PATCH v3] " Chris Wilson
@ 2018-07-30 13:39 ` Chris Wilson
  2018-07-30 13:51 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev4) Patchwork
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 13:39 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

If we are waiting for the currently executing request, we have a good
idea that it will be completed in the very near future and so want to
cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.

v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.
v3: Avoid the blocking notifier as well for TASK_INTERRUPTIBLE
v4: Beautification?

Testcase: igt/gem_sync/store-default
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_request.c | 52 +++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 5c2c93cbab12..0e47facaad70 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1258,6 +1258,51 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
 	return true;
 }
 
+struct wait_dma_qos {
+	struct pm_qos_request req;
+	struct work_struct add, del;
+};
+
+static void __wait_dma_qos_add(struct work_struct *work)
+{
+	struct wait_dma_qos *qos = container_of(work, typeof(*qos), add);
+
+	pm_qos_add_request(&qos->req, PM_QOS_CPU_DMA_LATENCY, 50);
+}
+
+static void __wait_dma_qos_del(struct work_struct *work)
+{
+	struct wait_dma_qos *qos = container_of(work, typeof(*qos), del);
+
+	if (!cancel_work_sync(&qos->add))
+		pm_qos_remove_request(&qos->req);
+
+	kfree(qos);
+}
+
+static struct wait_dma_qos *wait_dma_qos_add(void)
+{
+	struct wait_dma_qos *qos;
+
+	/* Called under TASK_INTERRUPTIBLE, so not allowed to sleep/block. */
+	qos = kzalloc(sizeof(*qos), GFP_NOWAIT | __GFP_NOWARN);
+	if (!qos)
+		return NULL;
+
+	INIT_WORK(&qos->add, __wait_dma_qos_add);
+	INIT_WORK(&qos->del, __wait_dma_qos_del);
+	schedule_work_on(smp_processor_id(), &qos->add);
+
+	return qos;
+}
+
+static void wait_dma_qos_del(struct wait_dma_qos *qos)
+{
+	/* Defer to worker so not incur extra latency for our woken client. */
+	if (qos)
+		schedule_work(&qos->del);
+}
+
 /**
  * i915_request_wait - wait until execution of request has finished
  * @rq: the request to wait upon
@@ -1286,6 +1331,7 @@ long i915_request_wait(struct i915_request *rq,
 	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
 	DEFINE_WAIT_FUNC(reset, default_wake_function);
 	DEFINE_WAIT_FUNC(exec, default_wake_function);
+	struct wait_dma_qos *qos = NULL;
 	struct intel_wait wait;
 
 	might_sleep();
@@ -1363,6 +1409,11 @@ long i915_request_wait(struct i915_request *rq,
 			break;
 		}
 
+		if (!qos &&
+		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
+				      wait.seqno - 1))
+			qos = wait_dma_qos_add();
+
 		timeout = io_schedule_timeout(timeout);
 
 		if (intel_wait_complete(&wait) &&
@@ -1412,6 +1463,7 @@ long i915_request_wait(struct i915_request *rq,
 	if (flags & I915_WAIT_LOCKED)
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&rq->execute, &exec);
+	wait_dma_qos_del(qos);
 	trace_i915_request_wait_end(rq);
 
 	return timeout;
-- 
2.18.0

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

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

* ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev4)
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (4 preceding siblings ...)
  2018-07-30 13:39 ` [PATCH v4] " Chris Wilson
@ 2018-07-30 13:51 ` Patchwork
  2018-07-30 13:55 ` [PATCH v5] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-07-30 13:51 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Limit C-states when waiting for the active request (rev4)
URL   : https://patchwork.freedesktop.org/series/47420/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4594 -> Patchwork_9808 =

== Summary - FAILURE ==

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

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47420/revisions/4/mbox/

== Possible new issues ==

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

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload:
      fi-skl-guc:         PASS -> DMESG-WARN +51

    igt@drv_selftest@live_coherency:
      fi-cnl-psr:         PASS -> DMESG-WARN +53
      fi-bdw-5557u:       PASS -> DMESG-WARN +37

    igt@drv_selftest@live_evict:
      fi-kbl-guc:         PASS -> DMESG-WARN +65

    igt@drv_selftest@live_hangcheck:
      fi-snb-2520m:       PASS -> DMESG-WARN +47
      {fi-bdw-samus}:     PASS -> DMESG-WARN +36
      {fi-kbl-8809g}:     NOTRUN -> DMESG-WARN +51
      fi-skl-gvtdvm:      PASS -> DMESG-WARN
      fi-bdw-gvtdvm:      PASS -> DMESG-WARN

    igt@drv_selftest@live_hugepages:
      fi-cfl-s3:          PASS -> DMESG-WARN +52

    igt@drv_selftest@live_requests:
      fi-whl-u:           PASS -> DMESG-WARN +51

    igt@drv_selftest@live_workarounds:
      fi-kbl-r:           PASS -> DMESG-WARN +51

    igt@drv_selftest@mock_requests:
      fi-bwr-2160:        PASS -> DMESG-WARN +8

    igt@gem_ctx_exec@basic:
      fi-bxt-j4205:       PASS -> DMESG-WARN +60
      fi-skl-6700hq:      PASS -> DMESG-WARN +49

    igt@gem_exec_create@basic:
      {fi-bsw-kefka}:     PASS -> DMESG-WARN +44

    igt@gem_exec_fence@basic-await-default:
      fi-skl-6700k2:      PASS -> DMESG-WARN +53

    igt@gem_exec_flush@basic-batch-kernel-default-wb:
      fi-kbl-7567u:       PASS -> DMESG-WARN +59
      fi-kbl-x1275:       PASS -> DMESG-WARN +54

    igt@gem_exec_flush@basic-uc-prw-default:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN +50

    igt@gem_exec_flush@basic-uc-ro-default:
      fi-cfl-guc:         PASS -> DMESG-WARN +59

    igt@gem_exec_flush@basic-uc-rw-default:
      fi-hsw-4770:        PASS -> DMESG-WARN +40

    igt@gem_exec_flush@basic-wb-pro-default:
      fi-skl-6600u:       PASS -> DMESG-WARN +49
      fi-skl-6770hq:      PASS -> DMESG-WARN +42

    igt@gem_exec_flush@basic-wb-ro-default:
      {fi-skl-caroline}:  PASS -> DMESG-WARN +33

    igt@gem_exec_flush@basic-wb-set-default:
      fi-snb-2600:        PASS -> DMESG-WARN +45

    igt@gem_exec_reloc@basic-cpu-gtt-active:
      fi-bsw-n3050:       PASS -> DMESG-WARN +38
      fi-ivb-3770:        PASS -> DMESG-WARN +34

    igt@gem_exec_reloc@basic-cpu-read:
      {fi-skl-iommu}:     PASS -> DMESG-WARN +47
      fi-cfl-8700k:       PASS -> DMESG-WARN +54

    igt@gem_exec_reloc@basic-cpu-read-noreloc:
      fi-glk-dsi:         PASS -> DMESG-WARN +52

    igt@gem_exec_reloc@basic-gtt-noreloc:
      fi-glk-j4005:       PASS -> DMESG-WARN +60

    igt@gem_linear_blits@basic:
      fi-hsw-4770r:       PASS -> DMESG-WARN +34
      fi-gdg-551:         PASS -> DMESG-WARN +6

    igt@gem_render_linear_blits@basic:
      fi-hsw-peppy:       PASS -> DMESG-WARN +35
      fi-byt-n2820:       PASS -> DMESG-WARN +33

    igt@gem_render_tiled_blits@basic:
      fi-ivb-3520m:       PASS -> DMESG-WARN +21
      fi-elk-e7500:       PASS -> DMESG-WARN +6
      fi-ilk-650:         PASS -> DMESG-WARN +9
      fi-pnv-d510:        PASS -> DMESG-WARN +7

    igt@gem_sync@basic-many-each:
      fi-bxt-dsi:         PASS -> DMESG-WARN +60

    igt@gem_sync@basic-store-all:
      fi-kbl-7500u:       PASS -> DMESG-WARN +55

    igt@gem_sync@basic-store-each:
      fi-blb-e6850:       PASS -> DMESG-WARN +5
      fi-skl-6260u:       PASS -> DMESG-WARN +47

    igt@prime_vgem@basic-fence-wait-default:
      {fi-cfl-8109u}:     PASS -> DMESG-WARN +52

    
== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@debugfs_test@read_all_entries:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107396)

    igt@drv_module_reload@basic-reload-inject:
      fi-hsw-4770r:       PASS -> DMESG-WARN (fdo#107425)

    igt@drv_selftest@live_coherency:
      fi-skl-6770hq:      PASS -> DMESG-WARN (fdo#107175) +3
      fi-skl-6260u:       PASS -> DMESG-WARN (fdo#107175) +3

    igt@drv_selftest@live_hangcheck:
      {fi-icl-u}:         NOTRUN -> INCOMPLETE (fdo#107399)
      fi-kbl-7567u:       PASS -> DMESG-FAIL (fdo#106560, fdo#106947)

    igt@drv_selftest@live_hugepages:
      fi-skl-6600u:       PASS -> DMESG-WARN (fdo#107175) +4
      fi-skl-6700k2:      PASS -> DMESG-WARN (fdo#107175) +4

    igt@drv_selftest@live_objects:
      {fi-icl-u}:         NOTRUN -> DMESG-FAIL (fdo#107398)

    igt@drv_selftest@live_requests:
      fi-skl-6700hq:      PASS -> DMESG-WARN (fdo#107175) +4
      {fi-skl-iommu}:     PASS -> DMESG-WARN (fdo#107175) +3
      fi-skl-guc:         PASS -> DMESG-WARN (fdo#107175) +8

    igt@drv_selftest@live_workarounds:
      {fi-cfl-8109u}:     PASS -> DMESG-FAIL (fdo#107292)

    igt@gem_exec_suspend@basic-s4-devices:
      fi-kbl-guc:         PASS -> DMESG-WARN (fdo#107139)

    igt@gem_workarounds@basic-read:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107338)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107382) +4

    {igt@kms_psr@primary_page_flip}:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107383) +3

    
    ==== Possible fixes ====

    igt@drv_selftest@live_coherency:
      fi-gdg-551:         DMESG-FAIL (fdo#107164) -> PASS

    igt@kms_chamelium@hdmi-edid-read:
      fi-kbl-7500u:       FAIL (fdo#103841) -> SKIP

    igt@kms_chamelium@hdmi-hpd-fast:
      fi-kbl-7500u:       FAIL (fdo#103841, fdo#102672) -> SKIP

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

  fdo#102672 https://bugs.freedesktop.org/show_bug.cgi?id=102672
  fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#106947 https://bugs.freedesktop.org/show_bug.cgi?id=106947
  fdo#107139 https://bugs.freedesktop.org/show_bug.cgi?id=107139
  fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164
  fdo#107175 https://bugs.freedesktop.org/show_bug.cgi?id=107175
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107338 https://bugs.freedesktop.org/show_bug.cgi?id=107338
  fdo#107382 https://bugs.freedesktop.org/show_bug.cgi?id=107382
  fdo#107383 https://bugs.freedesktop.org/show_bug.cgi?id=107383
  fdo#107396 https://bugs.freedesktop.org/show_bug.cgi?id=107396
  fdo#107398 https://bugs.freedesktop.org/show_bug.cgi?id=107398
  fdo#107399 https://bugs.freedesktop.org/show_bug.cgi?id=107399
  fdo#107425 https://bugs.freedesktop.org/show_bug.cgi?id=107425


== Participating hosts (51 -> 45) ==

  Additional (2): fi-icl-u fi-kbl-8809g 
  Missing    (8): fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper 


== Build changes ==

    * Linux: CI_DRM_4594 -> Patchwork_9808

  CI_DRM_4594: bebee8b5e1691b4b0a356a9b6443f9793e7f15d9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4581: f1c868dae24056ebc27e4f3c197724ce9b956a8a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9808: 253c03d6968553feccbef93c8850609bac2fe343 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

253c03d69685 drm/i915: Limit C-states when waiting for the active request

== Logs ==

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

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

* [PATCH v5] drm/i915: Limit C-states when waiting for the active request
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (5 preceding siblings ...)
  2018-07-30 13:51 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev4) Patchwork
@ 2018-07-30 13:55 ` Chris Wilson
  2018-07-30 14:19 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev5) Patchwork
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Chris Wilson @ 2018-07-30 13:55 UTC (permalink / raw)
  To: intel-gfx; +Cc: Eero Tamminen

If we are waiting for the currently executing request, we have a good
idea that it will be completed in the very near future and so want to
cap the CPU_DMA_LATENCY to ensure that we wake up the client quickly.

v2: Not allowed to block in kmalloc after setting TASK_INTERRUPTIBLE.
v3: Avoid the blocking notifier as well for TASK_INTERRUPTIBLE
v4: Beautification?
v5: And ignore the preemptibility of queue_work before schedule.

Testcase: igt/gem_sync/store-default
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_request.c | 52 +++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 5c2c93cbab12..f3ff8dbe363d 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1258,6 +1258,51 @@ static bool __i915_wait_request_check_and_reset(struct i915_request *request)
 	return true;
 }
 
+struct wait_dma_qos {
+	struct pm_qos_request req;
+	struct work_struct add, del;
+};
+
+static void __wait_dma_qos_add(struct work_struct *work)
+{
+	struct wait_dma_qos *qos = container_of(work, typeof(*qos), add);
+
+	pm_qos_add_request(&qos->req, PM_QOS_CPU_DMA_LATENCY, 50);
+}
+
+static void __wait_dma_qos_del(struct work_struct *work)
+{
+	struct wait_dma_qos *qos = container_of(work, typeof(*qos), del);
+
+	if (!cancel_work_sync(&qos->add))
+		pm_qos_remove_request(&qos->req);
+
+	kfree(qos);
+}
+
+static struct wait_dma_qos *wait_dma_qos_add(void)
+{
+	struct wait_dma_qos *qos;
+
+	/* Called under TASK_INTERRUPTIBLE, so not allowed to sleep/block. */
+	qos = kzalloc(sizeof(*qos), GFP_NOWAIT | __GFP_NOWARN);
+	if (!qos)
+		return NULL;
+
+	INIT_WORK(&qos->add, __wait_dma_qos_add);
+	INIT_WORK(&qos->del, __wait_dma_qos_del);
+	schedule_work_on(raw_smp_processor_id(), &qos->add);
+
+	return qos;
+}
+
+static void wait_dma_qos_del(struct wait_dma_qos *qos)
+{
+	/* Defer to worker so not incur extra latency for our woken client. */
+	if (qos)
+		schedule_work(&qos->del);
+}
+
 /**
  * i915_request_wait - wait until execution of request has finished
  * @rq: the request to wait upon
@@ -1286,6 +1331,7 @@ long i915_request_wait(struct i915_request *rq,
 	wait_queue_head_t *errq = &rq->i915->gpu_error.wait_queue;
 	DEFINE_WAIT_FUNC(reset, default_wake_function);
 	DEFINE_WAIT_FUNC(exec, default_wake_function);
+	struct wait_dma_qos *qos = NULL;
 	struct intel_wait wait;
 
 	might_sleep();
@@ -1363,6 +1409,11 @@ long i915_request_wait(struct i915_request *rq,
 			break;
 		}
 
+		if (!qos &&
+		    i915_seqno_passed(intel_engine_get_seqno(rq->engine),
+				      wait.seqno - 1))
+			qos = wait_dma_qos_add();
+
 		timeout = io_schedule_timeout(timeout);
 
 		if (intel_wait_complete(&wait) &&
@@ -1412,6 +1463,7 @@ long i915_request_wait(struct i915_request *rq,
 	if (flags & I915_WAIT_LOCKED)
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&rq->execute, &exec);
+	wait_dma_qos_del(qos);
 	trace_i915_request_wait_end(rq);
 
 	return timeout;
-- 
2.18.0

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

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

* ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev5)
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (6 preceding siblings ...)
  2018-07-30 13:55 ` [PATCH v5] drm/i915: Limit C-states when waiting for the active request Chris Wilson
@ 2018-07-30 14:19 ` Patchwork
  2018-07-30 14:44 ` ✓ Fi.CI.BAT: success for drm/i915: Limit C-states when waiting for the active request (rev6) Patchwork
  2018-07-30 15:42 ` ✓ Fi.CI.IGT: " Patchwork
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-07-30 14:19 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Limit C-states when waiting for the active request (rev5)
URL   : https://patchwork.freedesktop.org/series/47420/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4594 -> Patchwork_9809 =

== Summary - FAILURE ==

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

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47420/revisions/5/mbox/

== Possible new issues ==

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

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload:
      fi-skl-guc:         PASS -> DMESG-WARN +57

    igt@drv_selftest@live_coherency:
      fi-cnl-psr:         PASS -> DMESG-WARN +48
      fi-bdw-5557u:       PASS -> DMESG-WARN +35

    igt@drv_selftest@live_evict:
      fi-kbl-guc:         PASS -> DMESG-WARN +64

    igt@drv_selftest@live_hangcheck:
      {fi-bdw-samus}:     PASS -> DMESG-WARN +36
      fi-skl-gvtdvm:      PASS -> DMESG-WARN
      fi-bdw-gvtdvm:      PASS -> DMESG-WARN

    igt@drv_selftest@live_hugepages:
      fi-glk-dsi:         PASS -> DMESG-WARN +48
      fi-cfl-s3:          PASS -> DMESG-WARN +50
      {fi-cfl-8109u}:     PASS -> DMESG-WARN +52

    igt@drv_selftest@live_requests:
      fi-whl-u:           PASS -> DMESG-WARN +49

    igt@drv_selftest@live_workarounds:
      fi-kbl-r:           PASS -> DMESG-WARN +49

    igt@drv_selftest@mock_requests:
      fi-bwr-2160:        PASS -> DMESG-WARN +7

    igt@gem_ctx_exec@basic:
      fi-bxt-j4205:       PASS -> DMESG-WARN +58
      fi-skl-6700hq:      PASS -> DMESG-WARN +48

    igt@gem_ctx_switch@basic-default-heavy:
      fi-glk-j4005:       PASS -> DMESG-WARN +56

    igt@gem_exec_basic@gtt-default:
      fi-byt-n2820:       PASS -> DMESG-WARN +38

    igt@gem_exec_basic@readonly-render:
      {fi-kbl-8809g}:     NOTRUN -> DMESG-WARN +59

    igt@gem_exec_fence@basic-await-default:
      fi-skl-6700k2:      PASS -> DMESG-WARN +47

    igt@gem_exec_flush@basic-batch-kernel-default-wb:
      fi-kbl-7567u:       PASS -> DMESG-WARN +63

    igt@gem_exec_flush@basic-uc-prw-default:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN +53

    igt@gem_exec_flush@basic-uc-ro-default:
      fi-cfl-guc:         PASS -> DMESG-WARN +64

    igt@gem_exec_flush@basic-uc-rw-default:
      fi-hsw-4770:        PASS -> DMESG-WARN +40
      fi-byt-j1900:       PASS -> DMESG-WARN +35

    igt@gem_exec_flush@basic-wb-pro-default:
      fi-skl-6600u:       PASS -> DMESG-WARN +54
      fi-skl-6770hq:      PASS -> DMESG-WARN +46

    igt@gem_exec_flush@basic-wb-ro-default:
      {fi-skl-caroline}:  PASS -> DMESG-WARN +33

    igt@gem_exec_flush@basic-wb-set-default:
      fi-snb-2600:        PASS -> DMESG-WARN +45

    igt@gem_exec_gttfill@basic:
      fi-kbl-x1275:       PASS -> DMESG-WARN +54

    igt@gem_exec_reloc@basic-cpu-active:
      {fi-bsw-kefka}:     PASS -> DMESG-WARN +43

    igt@gem_exec_reloc@basic-cpu-gtt-active:
      fi-bsw-n3050:       PASS -> DMESG-WARN +38

    igt@gem_exec_reloc@basic-cpu-read:
      {fi-skl-iommu}:     PASS -> DMESG-WARN +45
      fi-cfl-8700k:       PASS -> DMESG-WARN +54
      fi-snb-2520m:       PASS -> DMESG-WARN +44

    igt@gem_linear_blits@basic:
      fi-hsw-4770r:       PASS -> DMESG-WARN +37
      fi-gdg-551:         PASS -> DMESG-WARN +6

    igt@gem_render_linear_blits@basic:
      fi-hsw-peppy:       PASS -> DMESG-WARN +32

    igt@gem_render_tiled_blits@basic:
      fi-ivb-3520m:       PASS -> DMESG-WARN +23
      fi-elk-e7500:       PASS -> DMESG-WARN +7
      fi-ilk-650:         PASS -> DMESG-WARN +8
      fi-pnv-d510:        PASS -> DMESG-WARN +7

    igt@gem_sync@basic-all:
      fi-ivb-3770:        PASS -> DMESG-WARN +31

    igt@gem_sync@basic-many-each:
      fi-kbl-7560u:       PASS -> DMESG-WARN +52
      fi-bxt-dsi:         PASS -> DMESG-WARN +50

    igt@gem_sync@basic-store-all:
      fi-kbl-7500u:       PASS -> DMESG-WARN +57

    igt@gem_sync@basic-store-each:
      fi-blb-e6850:       PASS -> DMESG-WARN +6
      fi-skl-6260u:       PASS -> DMESG-WARN +43

    
== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@debugfs_test@read_all_entries:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107396)

    igt@drv_selftest@live_coherency:
      fi-skl-6770hq:      PASS -> DMESG-WARN (fdo#107175) +4
      fi-skl-6260u:       PASS -> DMESG-WARN (fdo#107175) +3

    igt@drv_selftest@live_hangcheck:
      {fi-icl-u}:         NOTRUN -> INCOMPLETE (fdo#107399)

    igt@drv_selftest@live_hugepages:
      fi-skl-6600u:       PASS -> DMESG-WARN (fdo#107175) +3
      fi-skl-6700k2:      PASS -> DMESG-WARN (fdo#107175) +3

    igt@drv_selftest@live_objects:
      {fi-icl-u}:         NOTRUN -> DMESG-FAIL (fdo#107398)

    igt@drv_selftest@live_requests:
      fi-skl-6700hq:      PASS -> DMESG-WARN (fdo#107175) +4
      {fi-skl-iommu}:     PASS -> DMESG-WARN (fdo#107175) +4
      fi-skl-guc:         PASS -> DMESG-WARN (fdo#107175) +8

    igt@drv_selftest@live_workarounds:
      fi-cnl-psr:         PASS -> DMESG-FAIL (fdo#107292)

    igt@gem_exec_suspend@basic-s4-devices:
      fi-kbl-7567u:       PASS -> DMESG-WARN (fdo#107139)
      fi-kbl-guc:         PASS -> DMESG-WARN (fdo#107139)
      fi-kbl-7560u:       PASS -> DMESG-WARN (fdo#107139)

    igt@gem_workarounds@basic-read:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107338)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-snb-2520m:       PASS -> INCOMPLETE (fdo#103713)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      fi-bxt-dsi:         PASS -> INCOMPLETE (fdo#103927)
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107382) +4

    {igt@kms_psr@primary_mmap_gtt}:
      fi-cnl-psr:         PASS -> DMESG-WARN (fdo#107372)

    {igt@kms_psr@primary_page_flip}:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107383) +3

    
    ==== Possible fixes ====

    igt@drv_selftest@live_coherency:
      fi-gdg-551:         DMESG-FAIL (fdo#107164) -> PASS

    igt@kms_chamelium@hdmi-edid-read:
      fi-kbl-7500u:       FAIL (fdo#103841) -> SKIP

    igt@kms_chamelium@hdmi-hpd-fast:
      fi-kbl-7500u:       FAIL (fdo#102672, fdo#103841) -> SKIP

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

  fdo#102672 https://bugs.freedesktop.org/show_bug.cgi?id=102672
  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#107139 https://bugs.freedesktop.org/show_bug.cgi?id=107139
  fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164
  fdo#107175 https://bugs.freedesktop.org/show_bug.cgi?id=107175
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107338 https://bugs.freedesktop.org/show_bug.cgi?id=107338
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372
  fdo#107382 https://bugs.freedesktop.org/show_bug.cgi?id=107382
  fdo#107383 https://bugs.freedesktop.org/show_bug.cgi?id=107383
  fdo#107396 https://bugs.freedesktop.org/show_bug.cgi?id=107396
  fdo#107398 https://bugs.freedesktop.org/show_bug.cgi?id=107398
  fdo#107399 https://bugs.freedesktop.org/show_bug.cgi?id=107399


== Participating hosts (51 -> 47) ==

  Additional (2): fi-icl-u fi-kbl-8809g 
  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper 


== Build changes ==

    * Linux: CI_DRM_4594 -> Patchwork_9809

  CI_DRM_4594: bebee8b5e1691b4b0a356a9b6443f9793e7f15d9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4581: f1c868dae24056ebc27e4f3c197724ce9b956a8a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9809: 5c886b0bbf62ffa82d5ffec47c63f72deb501ff7 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

5c886b0bbf62 drm/i915: Limit C-states when waiting for the active request

== Logs ==

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

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

* ✓ Fi.CI.BAT: success for drm/i915: Limit C-states when waiting for the active request (rev6)
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (7 preceding siblings ...)
  2018-07-30 14:19 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev5) Patchwork
@ 2018-07-30 14:44 ` Patchwork
  2018-07-30 15:42 ` ✓ Fi.CI.IGT: " Patchwork
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-07-30 14:44 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Limit C-states when waiting for the active request (rev6)
URL   : https://patchwork.freedesktop.org/series/47420/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4594 -> Patchwork_9810 =

== Summary - SUCCESS ==

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47420/revisions/6/mbox/

== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@debugfs_test@read_all_entries:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107396)

    igt@drv_selftest@live_hangcheck:
      {fi-icl-u}:         NOTRUN -> INCOMPLETE (fdo#107399)

    igt@drv_selftest@live_objects:
      {fi-icl-u}:         NOTRUN -> DMESG-FAIL (fdo#107398)

    igt@drv_selftest@live_workarounds:
      fi-cnl-psr:         PASS -> DMESG-FAIL (fdo#107292)

    igt@gem_workarounds@basic-read:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107338)

    igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
      fi-skl-guc:         PASS -> FAIL (fdo#103191)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107382) +4

    {igt@kms_psr@primary_mmap_gtt}:
      fi-cnl-psr:         PASS -> DMESG-WARN (fdo#107372)

    {igt@kms_psr@primary_page_flip}:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107383) +3

    
    ==== Possible fixes ====

    igt@drv_selftest@live_coherency:
      fi-gdg-551:         DMESG-FAIL (fdo#107164) -> PASS

    igt@kms_chamelium@hdmi-edid-read:
      fi-kbl-7500u:       FAIL (fdo#103841) -> SKIP

    igt@kms_chamelium@hdmi-hpd-fast:
      fi-kbl-7500u:       FAIL (fdo#103841, fdo#102672) -> SKIP

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

  fdo#102672 https://bugs.freedesktop.org/show_bug.cgi?id=102672
  fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
  fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
  fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107338 https://bugs.freedesktop.org/show_bug.cgi?id=107338
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372
  fdo#107382 https://bugs.freedesktop.org/show_bug.cgi?id=107382
  fdo#107383 https://bugs.freedesktop.org/show_bug.cgi?id=107383
  fdo#107396 https://bugs.freedesktop.org/show_bug.cgi?id=107396
  fdo#107398 https://bugs.freedesktop.org/show_bug.cgi?id=107398
  fdo#107399 https://bugs.freedesktop.org/show_bug.cgi?id=107399


== Participating hosts (51 -> 47) ==

  Additional (2): fi-icl-u fi-kbl-8809g 
  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper 


== Build changes ==

    * Linux: CI_DRM_4594 -> Patchwork_9810

  CI_DRM_4594: bebee8b5e1691b4b0a356a9b6443f9793e7f15d9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4581: f1c868dae24056ebc27e4f3c197724ce9b956a8a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9810: 8dcc8345d926af6aac913a1dbac18010c8891b9a @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

8dcc8345d926 drm/i915: Limit C-states when waiting for the active request

== Logs ==

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

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

* ✓ Fi.CI.IGT: success for drm/i915: Limit C-states when waiting for the active request (rev6)
  2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
                   ` (8 preceding siblings ...)
  2018-07-30 14:44 ` ✓ Fi.CI.BAT: success for drm/i915: Limit C-states when waiting for the active request (rev6) Patchwork
@ 2018-07-30 15:42 ` Patchwork
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-07-30 15:42 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Limit C-states when waiting for the active request (rev6)
URL   : https://patchwork.freedesktop.org/series/47420/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4594_full -> Patchwork_9810_full =

== Summary - SUCCESS ==

  No regressions found.

  

== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@kms_rotation_crc@sprite-rotation-180:
      shard-hsw:          PASS -> FAIL (fdo#103925)

    igt@perf@gen8-unprivileged-single-ctx-counters:
      shard-kbl:          PASS -> INCOMPLETE (fdo#103665)

    
    ==== Possible fixes ====

    igt@drv_selftest@live_hangcheck:
      shard-kbl:          DMESG-FAIL (fdo#106560, fdo#106947) -> PASS

    igt@kms_flip@dpms-vs-vblank-race:
      shard-glk:          FAIL (fdo#103060) -> PASS

    igt@kms_universal_plane@cursor-fb-leak-pipe-b:
      shard-apl:          FAIL (fdo#107241) -> PASS

    
  fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
  fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
  fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#106947 https://bugs.freedesktop.org/show_bug.cgi?id=106947
  fdo#107241 https://bugs.freedesktop.org/show_bug.cgi?id=107241


== Participating hosts (5 -> 5) ==

  No changes in participating hosts


== Build changes ==

    * Linux: CI_DRM_4594 -> Patchwork_9810

  CI_DRM_4594: bebee8b5e1691b4b0a356a9b6443f9793e7f15d9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4581: f1c868dae24056ebc27e4f3c197724ce9b956a8a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9810: 8dcc8345d926af6aac913a1dbac18010c8891b9a @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

end of thread, other threads:[~2018-07-30 15:42 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-30 11:29 [PATCH] drm/i915: Limit C-states when waiting for the active request Chris Wilson
2018-07-30 11:31 ` Chris Wilson
2018-07-30 12:05 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev2) Patchwork
2018-07-30 12:14 ` [PATCH v2] drm/i915: Limit C-states when waiting for the active request Chris Wilson
2018-07-30 12:25   ` Chris Wilson
2018-07-30 12:27     ` Chris Wilson
2018-07-30 12:39 ` [PATCH v3] " Chris Wilson
2018-07-30 13:07   ` Mika Kuoppala
2018-07-30 13:27     ` Chris Wilson
2018-07-30 13:39 ` [PATCH v4] " Chris Wilson
2018-07-30 13:51 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev4) Patchwork
2018-07-30 13:55 ` [PATCH v5] drm/i915: Limit C-states when waiting for the active request Chris Wilson
2018-07-30 14:19 ` ✗ Fi.CI.BAT: failure for drm/i915: Limit C-states when waiting for the active request (rev5) Patchwork
2018-07-30 14:44 ` ✓ Fi.CI.BAT: success for drm/i915: Limit C-states when waiting for the active request (rev6) Patchwork
2018-07-30 15:42 ` ✓ Fi.CI.IGT: " 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.