Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/gt: Schedule request retirement when submission idles
@ 2019-11-18 14:45 Chris Wilson
  2019-11-18 14:45 ` [Intel-gfx] " Chris Wilson
                   ` (5 more replies)
  0 siblings, 6 replies; 16+ messages in thread
From: Chris Wilson @ 2019-11-18 14:45 UTC (permalink / raw)
  To: intel-gfx

The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
corruption WA") is that it disables RC6 while Skylake (and friends) is
active, and we do not consider the GPU idle until all outstanding
requests have been retired and the engine switched over to the kernel
context. If userspace is idle, this task falls onto our background idle
worker, which only runs roughly once a second, meaning that userspace has
to have been idle for a couple of seconds before we enable RC6 again.
Naturally, this causes us to consume considerably more energy than
before as powersaving is effectively disabled while a display server
(here's looking at you Xorg) is running.

As execlists will get a completion event as the last context is
completed and the GPU goes idle, we can use our submission tasklet to
notice when the GPU is idle and kick the retire worker. Thus during
light workloads, we will do much more work to idle the GPU faster...
Hopefully with commensurate power saving!

References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
 drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
index fde546424c63..94b8758a45d9 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
@@ -7,7 +7,9 @@
 #ifndef INTEL_GT_REQUESTS_H
 #define INTEL_GT_REQUESTS_H
 
-struct intel_gt;
+#include <linux/workqueue.h>
+
+#include "intel_gt_types.h"
 
 long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
 static inline void intel_gt_retire_requests(struct intel_gt *gt)
@@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
 	intel_gt_retire_requests_timeout(gt, 0);
 }
 
+static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
+{
+	mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
+}
+
 int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
 
 void intel_gt_init_requests(struct intel_gt *gt);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 33ce258d484f..4da2e04c0a89 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -142,6 +142,7 @@
 #include "intel_engine_pm.h"
 #include "intel_gt.h"
 #include "intel_gt_pm.h"
+#include "intel_gt_requests.h"
 #include "intel_lrc_reg.h"
 #include "intel_mocs.h"
 #include "intel_reset.h"
@@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
 		if (timeout && preempt_timeout(engine))
 			preempt_reset(engine);
 	}
+
+	/*
+	 * If the GPU is currently idle, retire the outstanding completed
+	 * requests. This will allow us to enter soft-rc6 as soon as possible,
+	 * albeit at the cost of running the retire worker much more frequently
+	 * (over the entire GT not just this engine) and emitting more idle
+	 * barriers (i.e. kernel context switches) which may some extra latency.
+	 */
+	if (!execlists_execlists(&engine->execlists))
+		intel_gt_schedule_retire_requests(engine->gt);
 }
 
 static void __execlists_kick(struct intel_engine_execlists *execlists)
-- 
2.24.0

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

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

* [Intel-gfx] [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
@ 2019-11-18 14:45 ` Chris Wilson
  2019-11-18 14:46 ` Chris Wilson
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 16+ messages in thread
From: Chris Wilson @ 2019-11-18 14:45 UTC (permalink / raw)
  To: intel-gfx

The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
corruption WA") is that it disables RC6 while Skylake (and friends) is
active, and we do not consider the GPU idle until all outstanding
requests have been retired and the engine switched over to the kernel
context. If userspace is idle, this task falls onto our background idle
worker, which only runs roughly once a second, meaning that userspace has
to have been idle for a couple of seconds before we enable RC6 again.
Naturally, this causes us to consume considerably more energy than
before as powersaving is effectively disabled while a display server
(here's looking at you Xorg) is running.

As execlists will get a completion event as the last context is
completed and the GPU goes idle, we can use our submission tasklet to
notice when the GPU is idle and kick the retire worker. Thus during
light workloads, we will do much more work to idle the GPU faster...
Hopefully with commensurate power saving!

References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
 drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
index fde546424c63..94b8758a45d9 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
@@ -7,7 +7,9 @@
 #ifndef INTEL_GT_REQUESTS_H
 #define INTEL_GT_REQUESTS_H
 
-struct intel_gt;
+#include <linux/workqueue.h>
+
+#include "intel_gt_types.h"
 
 long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
 static inline void intel_gt_retire_requests(struct intel_gt *gt)
@@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
 	intel_gt_retire_requests_timeout(gt, 0);
 }
 
+static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
+{
+	mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
+}
+
 int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
 
 void intel_gt_init_requests(struct intel_gt *gt);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 33ce258d484f..4da2e04c0a89 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -142,6 +142,7 @@
 #include "intel_engine_pm.h"
 #include "intel_gt.h"
 #include "intel_gt_pm.h"
+#include "intel_gt_requests.h"
 #include "intel_lrc_reg.h"
 #include "intel_mocs.h"
 #include "intel_reset.h"
@@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
 		if (timeout && preempt_timeout(engine))
 			preempt_reset(engine);
 	}
+
+	/*
+	 * If the GPU is currently idle, retire the outstanding completed
+	 * requests. This will allow us to enter soft-rc6 as soon as possible,
+	 * albeit at the cost of running the retire worker much more frequently
+	 * (over the entire GT not just this engine) and emitting more idle
+	 * barriers (i.e. kernel context switches) which may some extra latency.
+	 */
+	if (!execlists_execlists(&engine->execlists))
+		intel_gt_schedule_retire_requests(engine->gt);
 }
 
 static void __execlists_kick(struct intel_engine_execlists *execlists)
-- 
2.24.0

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

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

* [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
  2019-11-18 14:45 ` [Intel-gfx] " Chris Wilson
@ 2019-11-18 14:46 ` Chris Wilson
  2019-11-18 14:46   ` [Intel-gfx] " Chris Wilson
  2019-11-18 15:12   ` Tvrtko Ursulin
  2019-11-18 16:16 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Schedule request retirement when submission idles (rev2) Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 2 replies; 16+ messages in thread
From: Chris Wilson @ 2019-11-18 14:46 UTC (permalink / raw)
  To: intel-gfx

The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
corruption WA") is that it disables RC6 while Skylake (and friends) is
active, and we do not consider the GPU idle until all outstanding
requests have been retired and the engine switched over to the kernel
context. If userspace is idle, this task falls onto our background idle
worker, which only runs roughly once a second, meaning that userspace has
to have been idle for a couple of seconds before we enable RC6 again.
Naturally, this causes us to consume considerably more energy than
before as powersaving is effectively disabled while a display server
(here's looking at you Xorg) is running.

As execlists will get a completion event as the last context is
completed and the GPU goes idle, we can use our submission tasklet to
notice when the GPU is idle and kick the retire worker. Thus during
light workloads, we will do much more work to idle the GPU faster...
Hopefully with commensurate power saving!

References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
 drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
index fde546424c63..94b8758a45d9 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
@@ -7,7 +7,9 @@
 #ifndef INTEL_GT_REQUESTS_H
 #define INTEL_GT_REQUESTS_H
 
-struct intel_gt;
+#include <linux/workqueue.h>
+
+#include "intel_gt_types.h"
 
 long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
 static inline void intel_gt_retire_requests(struct intel_gt *gt)
@@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
 	intel_gt_retire_requests_timeout(gt, 0);
 }
 
+static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
+{
+	mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
+}
+
 int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
 
 void intel_gt_init_requests(struct intel_gt *gt);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 33ce258d484f..4485fe3e5066 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -142,6 +142,7 @@
 #include "intel_engine_pm.h"
 #include "intel_gt.h"
 #include "intel_gt_pm.h"
+#include "intel_gt_requests.h"
 #include "intel_lrc_reg.h"
 #include "intel_mocs.h"
 #include "intel_reset.h"
@@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
 		if (timeout && preempt_timeout(engine))
 			preempt_reset(engine);
 	}
+
+	/*
+	 * If the GPU is currently idle, retire the outstanding completed
+	 * requests. This will allow us to enter soft-rc6 as soon as possible,
+	 * albeit at the cost of running the retire worker much more frequently
+	 * (over the entire GT not just this engine) and emitting more idle
+	 * barriers (i.e. kernel context switches) which may some extra latency.
+	 */
+	if (!execlists_active(&engine->execlists))
+		intel_gt_schedule_retire_requests(engine->gt);
 }
 
 static void __execlists_kick(struct intel_engine_execlists *execlists)
-- 
2.24.0

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

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

* [Intel-gfx] [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 14:46 ` Chris Wilson
@ 2019-11-18 14:46   ` Chris Wilson
  2019-11-18 15:12   ` Tvrtko Ursulin
  1 sibling, 0 replies; 16+ messages in thread
From: Chris Wilson @ 2019-11-18 14:46 UTC (permalink / raw)
  To: intel-gfx

The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
corruption WA") is that it disables RC6 while Skylake (and friends) is
active, and we do not consider the GPU idle until all outstanding
requests have been retired and the engine switched over to the kernel
context. If userspace is idle, this task falls onto our background idle
worker, which only runs roughly once a second, meaning that userspace has
to have been idle for a couple of seconds before we enable RC6 again.
Naturally, this causes us to consume considerably more energy than
before as powersaving is effectively disabled while a display server
(here's looking at you Xorg) is running.

As execlists will get a completion event as the last context is
completed and the GPU goes idle, we can use our submission tasklet to
notice when the GPU is idle and kick the retire worker. Thus during
light workloads, we will do much more work to idle the GPU faster...
Hopefully with commensurate power saving!

References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
 drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
index fde546424c63..94b8758a45d9 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
@@ -7,7 +7,9 @@
 #ifndef INTEL_GT_REQUESTS_H
 #define INTEL_GT_REQUESTS_H
 
-struct intel_gt;
+#include <linux/workqueue.h>
+
+#include "intel_gt_types.h"
 
 long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
 static inline void intel_gt_retire_requests(struct intel_gt *gt)
@@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
 	intel_gt_retire_requests_timeout(gt, 0);
 }
 
+static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
+{
+	mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
+}
+
 int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
 
 void intel_gt_init_requests(struct intel_gt *gt);
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 33ce258d484f..4485fe3e5066 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -142,6 +142,7 @@
 #include "intel_engine_pm.h"
 #include "intel_gt.h"
 #include "intel_gt_pm.h"
+#include "intel_gt_requests.h"
 #include "intel_lrc_reg.h"
 #include "intel_mocs.h"
 #include "intel_reset.h"
@@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
 		if (timeout && preempt_timeout(engine))
 			preempt_reset(engine);
 	}
+
+	/*
+	 * If the GPU is currently idle, retire the outstanding completed
+	 * requests. This will allow us to enter soft-rc6 as soon as possible,
+	 * albeit at the cost of running the retire worker much more frequently
+	 * (over the entire GT not just this engine) and emitting more idle
+	 * barriers (i.e. kernel context switches) which may some extra latency.
+	 */
+	if (!execlists_active(&engine->execlists))
+		intel_gt_schedule_retire_requests(engine->gt);
 }
 
 static void __execlists_kick(struct intel_engine_execlists *execlists)
-- 
2.24.0

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

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

* Re: [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 14:46 ` Chris Wilson
  2019-11-18 14:46   ` [Intel-gfx] " Chris Wilson
@ 2019-11-18 15:12   ` Tvrtko Ursulin
  2019-11-18 15:12     ` [Intel-gfx] " Tvrtko Ursulin
  2019-11-18 15:18     ` Chris Wilson
  1 sibling, 2 replies; 16+ messages in thread
From: Tvrtko Ursulin @ 2019-11-18 15:12 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx


On 18/11/2019 14:46, Chris Wilson wrote:
> The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
> corruption WA") is that it disables RC6 while Skylake (and friends) is
> active, and we do not consider the GPU idle until all outstanding
> requests have been retired and the engine switched over to the kernel
> context. If userspace is idle, this task falls onto our background idle
> worker, which only runs roughly once a second, meaning that userspace has
> to have been idle for a couple of seconds before we enable RC6 again.
> Naturally, this causes us to consume considerably more energy than
> before as powersaving is effectively disabled while a display server
> (here's looking at you Xorg) is running.
> 
> As execlists will get a completion event as the last context is
> completed and the GPU goes idle, we can use our submission tasklet to
> notice when the GPU is idle and kick the retire worker. Thus during
> light workloads, we will do much more work to idle the GPU faster...
> Hopefully with commensurate power saving!
> 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
> References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
>   drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
>   2 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> index fde546424c63..94b8758a45d9 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> @@ -7,7 +7,9 @@
>   #ifndef INTEL_GT_REQUESTS_H
>   #define INTEL_GT_REQUESTS_H
>   
> -struct intel_gt;
> +#include <linux/workqueue.h>
> +
> +#include "intel_gt_types.h"
>   
>   long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
>   static inline void intel_gt_retire_requests(struct intel_gt *gt)
> @@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
>   	intel_gt_retire_requests_timeout(gt, 0);
>   }
>   
> +static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
> +{
> +	mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
> +}
> +
>   int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
>   
>   void intel_gt_init_requests(struct intel_gt *gt);
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 33ce258d484f..4485fe3e5066 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -142,6 +142,7 @@
>   #include "intel_engine_pm.h"
>   #include "intel_gt.h"
>   #include "intel_gt_pm.h"
> +#include "intel_gt_requests.h"
>   #include "intel_lrc_reg.h"
>   #include "intel_mocs.h"
>   #include "intel_reset.h"
> @@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
>   		if (timeout && preempt_timeout(engine))
>   			preempt_reset(engine);
>   	}
> +
> +	/*
> +	 * If the GPU is currently idle, retire the outstanding completed
> +	 * requests. This will allow us to enter soft-rc6 as soon as possible,
> +	 * albeit at the cost of running the retire worker much more frequently
> +	 * (over the entire GT not just this engine) and emitting more idle
> +	 * barriers (i.e. kernel context switches) which may some extra 

May add, or something like that.

latency.
> +	 */
> +	if (!execlists_active(&engine->execlists))
> +		intel_gt_schedule_retire_requests(engine->gt);

Looking at "drm/i915/gen8+: Add RC6 CTX corruption WA" it seems it 
should be possible to only do this if tha RC6 WA is active. So why not 
limit the impact?

Regards,

Tvrtko

>   }
>   
>   static void __execlists_kick(struct intel_engine_execlists *execlists)
> 

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

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

* Re: [Intel-gfx] [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 15:12   ` Tvrtko Ursulin
@ 2019-11-18 15:12     ` Tvrtko Ursulin
  2019-11-18 15:18     ` Chris Wilson
  1 sibling, 0 replies; 16+ messages in thread
From: Tvrtko Ursulin @ 2019-11-18 15:12 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx


On 18/11/2019 14:46, Chris Wilson wrote:
> The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
> corruption WA") is that it disables RC6 while Skylake (and friends) is
> active, and we do not consider the GPU idle until all outstanding
> requests have been retired and the engine switched over to the kernel
> context. If userspace is idle, this task falls onto our background idle
> worker, which only runs roughly once a second, meaning that userspace has
> to have been idle for a couple of seconds before we enable RC6 again.
> Naturally, this causes us to consume considerably more energy than
> before as powersaving is effectively disabled while a display server
> (here's looking at you Xorg) is running.
> 
> As execlists will get a completion event as the last context is
> completed and the GPU goes idle, we can use our submission tasklet to
> notice when the GPU is idle and kick the retire worker. Thus during
> light workloads, we will do much more work to idle the GPU faster...
> Hopefully with commensurate power saving!
> 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
> References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
>   drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
>   2 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> index fde546424c63..94b8758a45d9 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> @@ -7,7 +7,9 @@
>   #ifndef INTEL_GT_REQUESTS_H
>   #define INTEL_GT_REQUESTS_H
>   
> -struct intel_gt;
> +#include <linux/workqueue.h>
> +
> +#include "intel_gt_types.h"
>   
>   long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
>   static inline void intel_gt_retire_requests(struct intel_gt *gt)
> @@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
>   	intel_gt_retire_requests_timeout(gt, 0);
>   }
>   
> +static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
> +{
> +	mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
> +}
> +
>   int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
>   
>   void intel_gt_init_requests(struct intel_gt *gt);
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 33ce258d484f..4485fe3e5066 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -142,6 +142,7 @@
>   #include "intel_engine_pm.h"
>   #include "intel_gt.h"
>   #include "intel_gt_pm.h"
> +#include "intel_gt_requests.h"
>   #include "intel_lrc_reg.h"
>   #include "intel_mocs.h"
>   #include "intel_reset.h"
> @@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
>   		if (timeout && preempt_timeout(engine))
>   			preempt_reset(engine);
>   	}
> +
> +	/*
> +	 * If the GPU is currently idle, retire the outstanding completed
> +	 * requests. This will allow us to enter soft-rc6 as soon as possible,
> +	 * albeit at the cost of running the retire worker much more frequently
> +	 * (over the entire GT not just this engine) and emitting more idle
> +	 * barriers (i.e. kernel context switches) which may some extra 

May add, or something like that.

latency.
> +	 */
> +	if (!execlists_active(&engine->execlists))
> +		intel_gt_schedule_retire_requests(engine->gt);

Looking at "drm/i915/gen8+: Add RC6 CTX corruption WA" it seems it 
should be possible to only do this if tha RC6 WA is active. So why not 
limit the impact?

Regards,

Tvrtko

>   }
>   
>   static void __execlists_kick(struct intel_engine_execlists *execlists)
> 

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

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

* Re: [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 15:12   ` Tvrtko Ursulin
  2019-11-18 15:12     ` [Intel-gfx] " Tvrtko Ursulin
@ 2019-11-18 15:18     ` Chris Wilson
  2019-11-18 15:18       ` [Intel-gfx] " Chris Wilson
  1 sibling, 1 reply; 16+ messages in thread
From: Chris Wilson @ 2019-11-18 15:18 UTC (permalink / raw)
  To: Tvrtko Ursulin, intel-gfx

Quoting Tvrtko Ursulin (2019-11-18 15:12:17)
> 
> On 18/11/2019 14:46, Chris Wilson wrote:
> > The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
> > corruption WA") is that it disables RC6 while Skylake (and friends) is
> > active, and we do not consider the GPU idle until all outstanding
> > requests have been retired and the engine switched over to the kernel
> > context. If userspace is idle, this task falls onto our background idle
> > worker, which only runs roughly once a second, meaning that userspace has
> > to have been idle for a couple of seconds before we enable RC6 again.
> > Naturally, this causes us to consume considerably more energy than
> > before as powersaving is effectively disabled while a display server
> > (here's looking at you Xorg) is running.
> > 
> > As execlists will get a completion event as the last context is
> > completed and the GPU goes idle, we can use our submission tasklet to
> > notice when the GPU is idle and kick the retire worker. Thus during
> > light workloads, we will do much more work to idle the GPU faster...
> > Hopefully with commensurate power saving!
> > 
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
> > References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> > ---
> >   drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
> >   drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
> >   2 files changed, 19 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> > index fde546424c63..94b8758a45d9 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> > @@ -7,7 +7,9 @@
> >   #ifndef INTEL_GT_REQUESTS_H
> >   #define INTEL_GT_REQUESTS_H
> >   
> > -struct intel_gt;
> > +#include <linux/workqueue.h>
> > +
> > +#include "intel_gt_types.h"
> >   
> >   long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
> >   static inline void intel_gt_retire_requests(struct intel_gt *gt)
> > @@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
> >       intel_gt_retire_requests_timeout(gt, 0);
> >   }
> >   
> > +static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
> > +{
> > +     mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
> > +}
> > +
> >   int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
> >   
> >   void intel_gt_init_requests(struct intel_gt *gt);
> > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > index 33ce258d484f..4485fe3e5066 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > @@ -142,6 +142,7 @@
> >   #include "intel_engine_pm.h"
> >   #include "intel_gt.h"
> >   #include "intel_gt_pm.h"
> > +#include "intel_gt_requests.h"
> >   #include "intel_lrc_reg.h"
> >   #include "intel_mocs.h"
> >   #include "intel_reset.h"
> > @@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
> >               if (timeout && preempt_timeout(engine))
> >                       preempt_reset(engine);
> >       }
> > +
> > +     /*
> > +      * If the GPU is currently idle, retire the outstanding completed
> > +      * requests. This will allow us to enter soft-rc6 as soon as possible,
> > +      * albeit at the cost of running the retire worker much more frequently
> > +      * (over the entire GT not just this engine) and emitting more idle
> > +      * barriers (i.e. kernel context switches) which may some extra 
> 
> May add, or something like that.
> 
> latency.
> > +      */
> > +     if (!execlists_active(&engine->execlists))
> > +             intel_gt_schedule_retire_requests(engine->gt);
> 
> Looking at "drm/i915/gen8+: Add RC6 CTX corruption WA" it seems it 
> should be possible to only do this if tha RC6 WA is active. So why not 
> limit the impact?

My starting pov is: If the impact is intolerable for one, it is
intolerable for all.

At the moment, is is reasonably consistently triggering

 __i915_request_add_to_timeline:1167 GEM_BUG_ON(timeline->seqno != rq->fence.seqno)

which is a bit of a wtf. Once we get past the pebkac, we can then start
to see if this is noticeable on interesting workloads. Speaking of which
we should ping Dmitry to see if he's noticed a regression in gen9 power
figures.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [Intel-gfx] [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 15:18     ` Chris Wilson
@ 2019-11-18 15:18       ` Chris Wilson
  0 siblings, 0 replies; 16+ messages in thread
From: Chris Wilson @ 2019-11-18 15:18 UTC (permalink / raw)
  To: Tvrtko Ursulin, intel-gfx

Quoting Tvrtko Ursulin (2019-11-18 15:12:17)
> 
> On 18/11/2019 14:46, Chris Wilson wrote:
> > The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX
> > corruption WA") is that it disables RC6 while Skylake (and friends) is
> > active, and we do not consider the GPU idle until all outstanding
> > requests have been retired and the engine switched over to the kernel
> > context. If userspace is idle, this task falls onto our background idle
> > worker, which only runs roughly once a second, meaning that userspace has
> > to have been idle for a couple of seconds before we enable RC6 again.
> > Naturally, this causes us to consume considerably more energy than
> > before as powersaving is effectively disabled while a display server
> > (here's looking at you Xorg) is running.
> > 
> > As execlists will get a completion event as the last context is
> > completed and the GPU goes idle, we can use our submission tasklet to
> > notice when the GPU is idle and kick the retire worker. Thus during
> > light workloads, we will do much more work to idle the GPU faster...
> > Hopefully with commensurate power saving!
> > 
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=112315
> > References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> > ---
> >   drivers/gpu/drm/i915/gt/intel_gt_requests.h |  9 ++++++++-
> >   drivers/gpu/drm/i915/gt/intel_lrc.c         | 11 +++++++++++
> >   2 files changed, 19 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.h b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> > index fde546424c63..94b8758a45d9 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.h
> > @@ -7,7 +7,9 @@
> >   #ifndef INTEL_GT_REQUESTS_H
> >   #define INTEL_GT_REQUESTS_H
> >   
> > -struct intel_gt;
> > +#include <linux/workqueue.h>
> > +
> > +#include "intel_gt_types.h"
> >   
> >   long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout);
> >   static inline void intel_gt_retire_requests(struct intel_gt *gt)
> > @@ -15,6 +17,11 @@ static inline void intel_gt_retire_requests(struct intel_gt *gt)
> >       intel_gt_retire_requests_timeout(gt, 0);
> >   }
> >   
> > +static inline void intel_gt_schedule_retire_requests(struct intel_gt *gt)
> > +{
> > +     mod_delayed_work(system_wq, &gt->requests.retire_work, 0);
> > +}
> > +
> >   int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
> >   
> >   void intel_gt_init_requests(struct intel_gt *gt);
> > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > index 33ce258d484f..4485fe3e5066 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > @@ -142,6 +142,7 @@
> >   #include "intel_engine_pm.h"
> >   #include "intel_gt.h"
> >   #include "intel_gt_pm.h"
> > +#include "intel_gt_requests.h"
> >   #include "intel_lrc_reg.h"
> >   #include "intel_mocs.h"
> >   #include "intel_reset.h"
> > @@ -2278,6 +2279,16 @@ static void execlists_submission_tasklet(unsigned long data)
> >               if (timeout && preempt_timeout(engine))
> >                       preempt_reset(engine);
> >       }
> > +
> > +     /*
> > +      * If the GPU is currently idle, retire the outstanding completed
> > +      * requests. This will allow us to enter soft-rc6 as soon as possible,
> > +      * albeit at the cost of running the retire worker much more frequently
> > +      * (over the entire GT not just this engine) and emitting more idle
> > +      * barriers (i.e. kernel context switches) which may some extra 
> 
> May add, or something like that.
> 
> latency.
> > +      */
> > +     if (!execlists_active(&engine->execlists))
> > +             intel_gt_schedule_retire_requests(engine->gt);
> 
> Looking at "drm/i915/gen8+: Add RC6 CTX corruption WA" it seems it 
> should be possible to only do this if tha RC6 WA is active. So why not 
> limit the impact?

My starting pov is: If the impact is intolerable for one, it is
intolerable for all.

At the moment, is is reasonably consistently triggering

 __i915_request_add_to_timeline:1167 GEM_BUG_ON(timeline->seqno != rq->fence.seqno)

which is a bit of a wtf. Once we get past the pebkac, we can then start
to see if this is noticeable on interesting workloads. Speaking of which
we should ping Dmitry to see if he's noticed a regression in gen9 power
figures.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Schedule request retirement when submission idles (rev2)
  2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
  2019-11-18 14:45 ` [Intel-gfx] " Chris Wilson
  2019-11-18 14:46 ` Chris Wilson
@ 2019-11-18 16:16 ` Patchwork
  2019-11-18 16:16   ` [Intel-gfx] " Patchwork
  2019-11-18 16:42 ` ✗ Fi.CI.BAT: failure " Patchwork
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 16+ messages in thread
From: Patchwork @ 2019-11-18 16:16 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/gt: Schedule request retirement when submission idles (rev2)
URL   : https://patchwork.freedesktop.org/series/69628/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
a864196824b7 drm/i915/gt: Schedule request retirement when submission idles
-:25: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")'
#25: 
References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")

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

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

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

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Schedule request retirement when submission idles (rev2)
  2019-11-18 16:16 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Schedule request retirement when submission idles (rev2) Patchwork
@ 2019-11-18 16:16   ` Patchwork
  0 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2019-11-18 16:16 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/gt: Schedule request retirement when submission idles (rev2)
URL   : https://patchwork.freedesktop.org/series/69628/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
a864196824b7 drm/i915/gt: Schedule request retirement when submission idles
-:25: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")'
#25: 
References: 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA")

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

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

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

* ✗ Fi.CI.BAT: failure for drm/i915/gt: Schedule request retirement when submission idles (rev2)
  2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
                   ` (2 preceding siblings ...)
  2019-11-18 16:16 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Schedule request retirement when submission idles (rev2) Patchwork
@ 2019-11-18 16:42 ` Patchwork
  2019-11-18 16:42   ` [Intel-gfx] " Patchwork
  2019-11-18 21:30 ` [PATCH] drm/i915/gt: Schedule request retirement when submission idles kbuild test robot
  2019-11-19 15:28 ` kbuild test robot
  5 siblings, 1 reply; 16+ messages in thread
From: Patchwork @ 2019-11-18 16:42 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/gt: Schedule request retirement when submission idles (rev2)
URL   : https://patchwork.freedesktop.org/series/69628/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7363 -> Patchwork_15314
====================================================

Summary
-------

  **FAILURE**

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

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live_execlists:
    - fi-bdw-5557u:       [PASS][1] -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-bdw-5557u/igt@i915_selftest@live_execlists.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-bdw-5557u/igt@i915_selftest@live_execlists.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-skl-lmem:        [PASS][3] -> [TIMEOUT][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-skl-lmem/igt@i915_selftest@live_gem_contexts.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-skl-lmem/igt@i915_selftest@live_gem_contexts.html
    - fi-whl-u:           [PASS][5] -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-whl-u/igt@i915_selftest@live_gem_contexts.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-whl-u/igt@i915_selftest@live_gem_contexts.html
    - fi-skl-6770hq:      [PASS][7] -> [TIMEOUT][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-skl-6770hq/igt@i915_selftest@live_gem_contexts.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-skl-6770hq/igt@i915_selftest@live_gem_contexts.html

  * igt@i915_selftest@live_gt_contexts:
    - fi-kbl-soraka:      [PASS][9] -> [DMESG-FAIL][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-kbl-soraka/igt@i915_selftest@live_gt_contexts.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-kbl-soraka/igt@i915_selftest@live_gt_contexts.html
    - fi-bsw-n3050:       [PASS][11] -> [DMESG-FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-bsw-n3050/igt@i915_selftest@live_gt_contexts.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-bsw-n3050/igt@i915_selftest@live_gt_contexts.html

  * igt@i915_selftest@live_workarounds:
    - fi-cfl-8700k:       [PASS][13] -> [INCOMPLETE][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-cfl-8700k/igt@i915_selftest@live_workarounds.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-cfl-8700k/igt@i915_selftest@live_workarounds.html

  * igt@runner@aborted:
    - fi-kbl-soraka:      NOTRUN -> [FAIL][15]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-kbl-soraka/igt@runner@aborted.html
    - fi-whl-u:           NOTRUN -> [FAIL][16]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-whl-u/igt@runner@aborted.html
    - fi-cfl-8700k:       NOTRUN -> [FAIL][17]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-cfl-8700k/igt@runner@aborted.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-icl-dsi:         [PASS][18] -> [INCOMPLETE][19] ([fdo#107713] / [fdo#108840])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-dsi/igt@i915_pm_rpm@basic-pci-d3-state.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-dsi/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-peppy:       [PASS][20] -> [DMESG-FAIL][21] ([fdo#112147])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-hsw-peppy/igt@i915_selftest@live_blt.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-hsw-peppy/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-icl-y:           [PASS][22] -> [INCOMPLETE][23] ([fdo#107713])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-y/igt@i915_selftest@live_gem_contexts.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-y/igt@i915_selftest@live_gem_contexts.html
    - fi-icl-u3:          [PASS][24] -> [INCOMPLETE][25] ([fdo#107713])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-u3/igt@i915_selftest@live_gem_contexts.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-u3/igt@i915_selftest@live_gem_contexts.html
    - fi-icl-u2:          [PASS][26] -> [INCOMPLETE][27] ([fdo#107713])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-u2/igt@i915_selftest@live_gem_contexts.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-u2/igt@i915_selftest@live_gem_contexts.html
    - fi-bsw-kefka:       [PASS][28] -> [INCOMPLETE][29] ([fdo# 111542])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-bsw-kefka/igt@i915_selftest@live_gem_contexts.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-bsw-kefka/igt@i915_selftest@live_gem_contexts.html
    - fi-cfl-guc:         [PASS][30] -> [INCOMPLETE][31] ([fdo#106070] / [fdo#111700])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-cfl-guc/igt@i915_selftest@live_gem_contexts.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-cfl-guc/igt@i915_selftest@live_gem_contexts.html

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

  * igt@kms_frontbuffer_tracking@basic:
    - fi-icl-u2:          [PASS][34] -> [FAIL][35] ([fdo#103167])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html

  
  [fdo# 111542]: https://bugs.freedesktop.org/show_bug.cgi?id= 111542
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#106070]: https://bugs.freedesktop.org/show_bug.cgi?id=106070
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#108840]: https://bugs.freedesktop.org/show_bug.cgi?id=108840
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#111700]: https://bugs.freedesktop.org/show_bug.cgi?id=111700
  [fdo#112147]: https://bugs.freedesktop.org/show_bug.cgi?id=112147


Participating hosts (49 -> 44)
------------------------------

  Missing    (5): fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper 


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

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7363 -> Patchwork_15314

  CI-20190529: 20190529
  CI_DRM_7363: 4692f6024871be3eaaca7f94848ceac4b53e1887 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5292: ea9cd47fdb72c16d5ec84c04a85122c451c30025 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_15314: a864196824b7e449481c0da1fff2e063ef180d74 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a864196824b7 drm/i915/gt: Schedule request retirement when submission idles

== Logs ==

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

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

* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/gt: Schedule request retirement when submission idles (rev2)
  2019-11-18 16:42 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2019-11-18 16:42   ` Patchwork
  0 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2019-11-18 16:42 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/gt: Schedule request retirement when submission idles (rev2)
URL   : https://patchwork.freedesktop.org/series/69628/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7363 -> Patchwork_15314
====================================================

Summary
-------

  **FAILURE**

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

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live_execlists:
    - fi-bdw-5557u:       [PASS][1] -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-bdw-5557u/igt@i915_selftest@live_execlists.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-bdw-5557u/igt@i915_selftest@live_execlists.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-skl-lmem:        [PASS][3] -> [TIMEOUT][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-skl-lmem/igt@i915_selftest@live_gem_contexts.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-skl-lmem/igt@i915_selftest@live_gem_contexts.html
    - fi-whl-u:           [PASS][5] -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-whl-u/igt@i915_selftest@live_gem_contexts.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-whl-u/igt@i915_selftest@live_gem_contexts.html
    - fi-skl-6770hq:      [PASS][7] -> [TIMEOUT][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-skl-6770hq/igt@i915_selftest@live_gem_contexts.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-skl-6770hq/igt@i915_selftest@live_gem_contexts.html

  * igt@i915_selftest@live_gt_contexts:
    - fi-kbl-soraka:      [PASS][9] -> [DMESG-FAIL][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-kbl-soraka/igt@i915_selftest@live_gt_contexts.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-kbl-soraka/igt@i915_selftest@live_gt_contexts.html
    - fi-bsw-n3050:       [PASS][11] -> [DMESG-FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-bsw-n3050/igt@i915_selftest@live_gt_contexts.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-bsw-n3050/igt@i915_selftest@live_gt_contexts.html

  * igt@i915_selftest@live_workarounds:
    - fi-cfl-8700k:       [PASS][13] -> [INCOMPLETE][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-cfl-8700k/igt@i915_selftest@live_workarounds.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-cfl-8700k/igt@i915_selftest@live_workarounds.html

  * igt@runner@aborted:
    - fi-kbl-soraka:      NOTRUN -> [FAIL][15]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-kbl-soraka/igt@runner@aborted.html
    - fi-whl-u:           NOTRUN -> [FAIL][16]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-whl-u/igt@runner@aborted.html
    - fi-cfl-8700k:       NOTRUN -> [FAIL][17]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-cfl-8700k/igt@runner@aborted.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-icl-dsi:         [PASS][18] -> [INCOMPLETE][19] ([fdo#107713] / [fdo#108840])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-dsi/igt@i915_pm_rpm@basic-pci-d3-state.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-dsi/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-peppy:       [PASS][20] -> [DMESG-FAIL][21] ([fdo#112147])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-hsw-peppy/igt@i915_selftest@live_blt.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-hsw-peppy/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-icl-y:           [PASS][22] -> [INCOMPLETE][23] ([fdo#107713])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-y/igt@i915_selftest@live_gem_contexts.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-y/igt@i915_selftest@live_gem_contexts.html
    - fi-icl-u3:          [PASS][24] -> [INCOMPLETE][25] ([fdo#107713])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-u3/igt@i915_selftest@live_gem_contexts.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-u3/igt@i915_selftest@live_gem_contexts.html
    - fi-icl-u2:          [PASS][26] -> [INCOMPLETE][27] ([fdo#107713])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-u2/igt@i915_selftest@live_gem_contexts.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-u2/igt@i915_selftest@live_gem_contexts.html
    - fi-bsw-kefka:       [PASS][28] -> [INCOMPLETE][29] ([fdo# 111542])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-bsw-kefka/igt@i915_selftest@live_gem_contexts.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-bsw-kefka/igt@i915_selftest@live_gem_contexts.html
    - fi-cfl-guc:         [PASS][30] -> [INCOMPLETE][31] ([fdo#106070] / [fdo#111700])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-cfl-guc/igt@i915_selftest@live_gem_contexts.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-cfl-guc/igt@i915_selftest@live_gem_contexts.html

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

  * igt@kms_frontbuffer_tracking@basic:
    - fi-icl-u2:          [PASS][34] -> [FAIL][35] ([fdo#103167])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7363/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15314/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html

  
  [fdo# 111542]: https://bugs.freedesktop.org/show_bug.cgi?id= 111542
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#106070]: https://bugs.freedesktop.org/show_bug.cgi?id=106070
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#108840]: https://bugs.freedesktop.org/show_bug.cgi?id=108840
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#111700]: https://bugs.freedesktop.org/show_bug.cgi?id=111700
  [fdo#112147]: https://bugs.freedesktop.org/show_bug.cgi?id=112147


Participating hosts (49 -> 44)
------------------------------

  Missing    (5): fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper 


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

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7363 -> Patchwork_15314

  CI-20190529: 20190529
  CI_DRM_7363: 4692f6024871be3eaaca7f94848ceac4b53e1887 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5292: ea9cd47fdb72c16d5ec84c04a85122c451c30025 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_15314: a864196824b7e449481c0da1fff2e063ef180d74 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a864196824b7 drm/i915/gt: Schedule request retirement when submission idles

== Logs ==

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

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

* Re: [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
                   ` (3 preceding siblings ...)
  2019-11-18 16:42 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2019-11-18 21:30 ` kbuild test robot
  2019-11-18 21:30   ` [Intel-gfx] " kbuild test robot
  2019-11-19 15:28 ` kbuild test robot
  5 siblings, 1 reply; 16+ messages in thread
From: kbuild test robot @ 2019-11-18 21:30 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx, kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2951 bytes --]

Hi Chris,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on next-20191118]
[cannot apply to v5.4-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-gt-Schedule-request-retirement-when-submission-idles/20191119-023819
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-defconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/gt/intel_lrc.c: In function 'execlists_submission_tasklet':
>> drivers/gpu/drm/i915/gt/intel_lrc.c:2235:7: error: implicit declaration of function 'execlists_execlists'; did you mean 'execlists_active'? [-Werror=implicit-function-declaration]
     if (!execlists_execlists(&engine->execlists))
          ^~~~~~~~~~~~~~~~~~~
          execlists_active
   cc1: some warnings being treated as errors

vim +2235 drivers/gpu/drm/i915/gt/intel_lrc.c

  2205	
  2206	/*
  2207	 * Check the unread Context Status Buffers and manage the submission of new
  2208	 * contexts to the ELSP accordingly.
  2209	 */
  2210	static void execlists_submission_tasklet(unsigned long data)
  2211	{
  2212		struct intel_engine_cs * const engine = (struct intel_engine_cs *)data;
  2213		bool timeout = preempt_timeout(engine);
  2214	
  2215		process_csb(engine);
  2216		if (!READ_ONCE(engine->execlists.pending[0]) || timeout) {
  2217			unsigned long flags;
  2218	
  2219			spin_lock_irqsave(&engine->active.lock, flags);
  2220			__execlists_submission_tasklet(engine);
  2221			spin_unlock_irqrestore(&engine->active.lock, flags);
  2222	
  2223			/* Recheck after serialising with direct-submission */
  2224			if (timeout && preempt_timeout(engine))
  2225				preempt_reset(engine);
  2226		}
  2227	
  2228		/*
  2229		 * If the GPU is currently idle, retire the outstanding completed
  2230		 * requests. This will allow us to enter soft-rc6 as soon as possible,
  2231		 * albeit at the cost of running the retire worker much more frequently
  2232		 * (over the entire GT not just this engine) and emitting more idle
  2233		 * barriers (i.e. kernel context switches) which may some extra latency.
  2234		 */
> 2235		if (!execlists_execlists(&engine->execlists))
  2236			intel_gt_schedule_retire_requests(engine->gt);
  2237	}
  2238	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28187 bytes --]

[-- Attachment #3: Type: text/plain, Size: 159 bytes --]

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

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

* Re: [Intel-gfx] [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 21:30 ` [PATCH] drm/i915/gt: Schedule request retirement when submission idles kbuild test robot
@ 2019-11-18 21:30   ` kbuild test robot
  0 siblings, 0 replies; 16+ messages in thread
From: kbuild test robot @ 2019-11-18 21:30 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx, kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2951 bytes --]

Hi Chris,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on next-20191118]
[cannot apply to v5.4-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-gt-Schedule-request-retirement-when-submission-idles/20191119-023819
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-defconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/gt/intel_lrc.c: In function 'execlists_submission_tasklet':
>> drivers/gpu/drm/i915/gt/intel_lrc.c:2235:7: error: implicit declaration of function 'execlists_execlists'; did you mean 'execlists_active'? [-Werror=implicit-function-declaration]
     if (!execlists_execlists(&engine->execlists))
          ^~~~~~~~~~~~~~~~~~~
          execlists_active
   cc1: some warnings being treated as errors

vim +2235 drivers/gpu/drm/i915/gt/intel_lrc.c

  2205	
  2206	/*
  2207	 * Check the unread Context Status Buffers and manage the submission of new
  2208	 * contexts to the ELSP accordingly.
  2209	 */
  2210	static void execlists_submission_tasklet(unsigned long data)
  2211	{
  2212		struct intel_engine_cs * const engine = (struct intel_engine_cs *)data;
  2213		bool timeout = preempt_timeout(engine);
  2214	
  2215		process_csb(engine);
  2216		if (!READ_ONCE(engine->execlists.pending[0]) || timeout) {
  2217			unsigned long flags;
  2218	
  2219			spin_lock_irqsave(&engine->active.lock, flags);
  2220			__execlists_submission_tasklet(engine);
  2221			spin_unlock_irqrestore(&engine->active.lock, flags);
  2222	
  2223			/* Recheck after serialising with direct-submission */
  2224			if (timeout && preempt_timeout(engine))
  2225				preempt_reset(engine);
  2226		}
  2227	
  2228		/*
  2229		 * If the GPU is currently idle, retire the outstanding completed
  2230		 * requests. This will allow us to enter soft-rc6 as soon as possible,
  2231		 * albeit at the cost of running the retire worker much more frequently
  2232		 * (over the entire GT not just this engine) and emitting more idle
  2233		 * barriers (i.e. kernel context switches) which may some extra latency.
  2234		 */
> 2235		if (!execlists_execlists(&engine->execlists))
  2236			intel_gt_schedule_retire_requests(engine->gt);
  2237	}
  2238	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28187 bytes --]

[-- Attachment #3: Type: text/plain, Size: 159 bytes --]

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

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

* Re: [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
                   ` (4 preceding siblings ...)
  2019-11-18 21:30 ` [PATCH] drm/i915/gt: Schedule request retirement when submission idles kbuild test robot
@ 2019-11-19 15:28 ` kbuild test robot
  2019-11-19 15:28   ` [Intel-gfx] " kbuild test robot
  5 siblings, 1 reply; 16+ messages in thread
From: kbuild test robot @ 2019-11-19 15:28 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx, kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3589 bytes --]

Hi Chris,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20191118]
[cannot apply to v5.4-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-gt-Schedule-request-retirement-when-submission-idles/20191119-023819
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-e002-20191119 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/export.h:42:0,
                    from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    from include/linux/interrupt.h:6,
                    from drivers/gpu/drm/i915/gt/intel_lrc.c:134:
   drivers/gpu/drm/i915/gt/intel_lrc.c: In function 'execlists_submission_tasklet':
   drivers/gpu/drm/i915/gt/intel_lrc.c:2235:7: error: implicit declaration of function 'execlists_execlists'; did you mean 'execlists_active'? [-Werror=implicit-function-declaration]
     if (!execlists_execlists(&engine->execlists))
          ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
>> drivers/gpu/drm/i915/gt/intel_lrc.c:2235:2: note: in expansion of macro 'if'
     if (!execlists_execlists(&engine->execlists))
     ^~
   cc1: some warnings being treated as errors

vim +/if +2235 drivers/gpu/drm/i915/gt/intel_lrc.c

  2205	
  2206	/*
  2207	 * Check the unread Context Status Buffers and manage the submission of new
  2208	 * contexts to the ELSP accordingly.
  2209	 */
  2210	static void execlists_submission_tasklet(unsigned long data)
  2211	{
  2212		struct intel_engine_cs * const engine = (struct intel_engine_cs *)data;
  2213		bool timeout = preempt_timeout(engine);
  2214	
  2215		process_csb(engine);
  2216		if (!READ_ONCE(engine->execlists.pending[0]) || timeout) {
  2217			unsigned long flags;
  2218	
  2219			spin_lock_irqsave(&engine->active.lock, flags);
  2220			__execlists_submission_tasklet(engine);
  2221			spin_unlock_irqrestore(&engine->active.lock, flags);
  2222	
  2223			/* Recheck after serialising with direct-submission */
  2224			if (timeout && preempt_timeout(engine))
  2225				preempt_reset(engine);
  2226		}
  2227	
  2228		/*
  2229		 * If the GPU is currently idle, retire the outstanding completed
  2230		 * requests. This will allow us to enter soft-rc6 as soon as possible,
  2231		 * albeit at the cost of running the retire worker much more frequently
  2232		 * (over the entire GT not just this engine) and emitting more idle
  2233		 * barriers (i.e. kernel context switches) which may some extra latency.
  2234		 */
> 2235		if (!execlists_execlists(&engine->execlists))
  2236			intel_gt_schedule_retire_requests(engine->gt);
  2237	}
  2238	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 33036 bytes --]

[-- Attachment #3: Type: text/plain, Size: 159 bytes --]

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

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

* Re: [Intel-gfx] [PATCH] drm/i915/gt: Schedule request retirement when submission idles
  2019-11-19 15:28 ` kbuild test robot
@ 2019-11-19 15:28   ` kbuild test robot
  0 siblings, 0 replies; 16+ messages in thread
From: kbuild test robot @ 2019-11-19 15:28 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx, kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3589 bytes --]

Hi Chris,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20191118]
[cannot apply to v5.4-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-gt-Schedule-request-retirement-when-submission-idles/20191119-023819
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-e002-20191119 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/export.h:42:0,
                    from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    from include/linux/interrupt.h:6,
                    from drivers/gpu/drm/i915/gt/intel_lrc.c:134:
   drivers/gpu/drm/i915/gt/intel_lrc.c: In function 'execlists_submission_tasklet':
   drivers/gpu/drm/i915/gt/intel_lrc.c:2235:7: error: implicit declaration of function 'execlists_execlists'; did you mean 'execlists_active'? [-Werror=implicit-function-declaration]
     if (!execlists_execlists(&engine->execlists))
          ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
>> drivers/gpu/drm/i915/gt/intel_lrc.c:2235:2: note: in expansion of macro 'if'
     if (!execlists_execlists(&engine->execlists))
     ^~
   cc1: some warnings being treated as errors

vim +/if +2235 drivers/gpu/drm/i915/gt/intel_lrc.c

  2205	
  2206	/*
  2207	 * Check the unread Context Status Buffers and manage the submission of new
  2208	 * contexts to the ELSP accordingly.
  2209	 */
  2210	static void execlists_submission_tasklet(unsigned long data)
  2211	{
  2212		struct intel_engine_cs * const engine = (struct intel_engine_cs *)data;
  2213		bool timeout = preempt_timeout(engine);
  2214	
  2215		process_csb(engine);
  2216		if (!READ_ONCE(engine->execlists.pending[0]) || timeout) {
  2217			unsigned long flags;
  2218	
  2219			spin_lock_irqsave(&engine->active.lock, flags);
  2220			__execlists_submission_tasklet(engine);
  2221			spin_unlock_irqrestore(&engine->active.lock, flags);
  2222	
  2223			/* Recheck after serialising with direct-submission */
  2224			if (timeout && preempt_timeout(engine))
  2225				preempt_reset(engine);
  2226		}
  2227	
  2228		/*
  2229		 * If the GPU is currently idle, retire the outstanding completed
  2230		 * requests. This will allow us to enter soft-rc6 as soon as possible,
  2231		 * albeit at the cost of running the retire worker much more frequently
  2232		 * (over the entire GT not just this engine) and emitting more idle
  2233		 * barriers (i.e. kernel context switches) which may some extra latency.
  2234		 */
> 2235		if (!execlists_execlists(&engine->execlists))
  2236			intel_gt_schedule_retire_requests(engine->gt);
  2237	}
  2238	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 33036 bytes --]

[-- Attachment #3: Type: text/plain, Size: 159 bytes --]

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

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

end of thread, other threads:[~2019-11-19 15:29 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-18 14:45 [PATCH] drm/i915/gt: Schedule request retirement when submission idles Chris Wilson
2019-11-18 14:45 ` [Intel-gfx] " Chris Wilson
2019-11-18 14:46 ` Chris Wilson
2019-11-18 14:46   ` [Intel-gfx] " Chris Wilson
2019-11-18 15:12   ` Tvrtko Ursulin
2019-11-18 15:12     ` [Intel-gfx] " Tvrtko Ursulin
2019-11-18 15:18     ` Chris Wilson
2019-11-18 15:18       ` [Intel-gfx] " Chris Wilson
2019-11-18 16:16 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Schedule request retirement when submission idles (rev2) Patchwork
2019-11-18 16:16   ` [Intel-gfx] " Patchwork
2019-11-18 16:42 ` ✗ Fi.CI.BAT: failure " Patchwork
2019-11-18 16:42   ` [Intel-gfx] " Patchwork
2019-11-18 21:30 ` [PATCH] drm/i915/gt: Schedule request retirement when submission idles kbuild test robot
2019-11-18 21:30   ` [Intel-gfx] " kbuild test robot
2019-11-19 15:28 ` kbuild test robot
2019-11-19 15:28   ` [Intel-gfx] " kbuild test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox