* [CI 1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission
@ 2016-04-29 8:07 Chris Wilson
2016-04-29 8:07 ` [CI 2/3] drm/i915: Trim the flush for the legacy request emission Chris Wilson
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Chris Wilson @ 2016-04-29 8:07 UTC (permalink / raw)
To: intel-gfx
With 5 rings and a flush, we need 192 bytes of space to emit the
breadcrumb and semaphores. However, we need some spare room the size of
the single largest packet (36 dwords, 144 bytes) to accommodate
wraparound giving a grand total of 336 bytes
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
drivers/gpu/drm/i915/intel_ringbuffer.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 7023e88531b5..d7082124eee3 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -483,10 +483,10 @@ static inline u32 intel_ring_get_tail(struct intel_ringbuffer *ringbuf)
/*
* Arbitrary size for largest possible 'add request' sequence. The code paths
* are complex and variable. Empirical measurement shows that the worst case
- * is ILK at 136 words. Reserving too much is better than reserving too little
- * as that allows for corner cases that might have been missed. So the figure
- * has been rounded up to 160 words.
+ * is BDW at 192 bytes (6 + 6 + 36 dwords), then ILK at 136 bytes. However,
+ * we need to allocate double the largest single packet within that emission
+ * to account for tail wraparound (so 6 + 6 + 72 dwords for BDW).
*/
-#define MIN_SPACE_FOR_ADD_REQUEST 160
+#define MIN_SPACE_FOR_ADD_REQUEST 336
#endif /* _INTEL_RINGBUFFER_H_ */
--
2.8.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [CI 2/3] drm/i915: Trim the flush for the legacy request emission
2016-04-29 8:07 [CI 1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission Chris Wilson
@ 2016-04-29 8:07 ` Chris Wilson
2016-04-29 8:07 ` [CI 3/3] drm/i915: Trim the flush for the execlists " Chris Wilson
2016-04-29 9:17 ` ✓ Fi.CI.BAT: success for series starting with [CI,1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission Patchwork
2 siblings, 0 replies; 4+ messages in thread
From: Chris Wilson @ 2016-04-29 8:07 UTC (permalink / raw)
To: intel-gfx
At the start of request emission, we flush some space for the request,
estimating the typical size for the request body. The tail is now much
larger than the typical body, so we can shrink the flush slightly.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
drivers/gpu/drm/i915/intel_ringbuffer.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index b5e79ac29ebc..c7637ceec1f4 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -34,6 +34,11 @@
#include "i915_trace.h"
#include "intel_drv.h"
+/* Rough estimate of the typical request size, performing a flush,
+ * set-context and then emitting the batch.
+ */
+#define LEGACY_REQUEST_SIZE 200
+
int __intel_ring_space(int head, int tail, int size)
{
int space = head - tail;
@@ -2345,7 +2350,7 @@ int intel_ring_alloc_request_extras(struct drm_i915_gem_request *request)
* we start building the request - in which case we will just
* have to repeat work.
*/
- request->reserved_space += MIN_SPACE_FOR_ADD_REQUEST;
+ request->reserved_space += LEGACY_REQUEST_SIZE;
request->ringbuf = request->engine->buffer;
@@ -2353,7 +2358,7 @@ int intel_ring_alloc_request_extras(struct drm_i915_gem_request *request)
if (ret)
return ret;
- request->reserved_space -= MIN_SPACE_FOR_ADD_REQUEST;
+ request->reserved_space -= LEGACY_REQUEST_SIZE;
return 0;
}
--
2.8.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [CI 3/3] drm/i915: Trim the flush for the execlists request emission
2016-04-29 8:07 [CI 1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission Chris Wilson
2016-04-29 8:07 ` [CI 2/3] drm/i915: Trim the flush for the legacy request emission Chris Wilson
@ 2016-04-29 8:07 ` Chris Wilson
2016-04-29 9:17 ` ✓ Fi.CI.BAT: success for series starting with [CI,1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission Patchwork
2 siblings, 0 replies; 4+ messages in thread
From: Chris Wilson @ 2016-04-29 8:07 UTC (permalink / raw)
To: intel-gfx
At the start of request emission, we flush some space for the request,
estimating the typical size for the request body. The common tail is now
much larger than the typical body, so we can shrink the flush
substantially.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
drivers/gpu/drm/i915/intel_lrc.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 874c2515f9d4..ec2522243b5e 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -228,6 +228,9 @@ enum {
#define GEN8_CTX_RCS_INDIRECT_CTX_OFFSET_DEFAULT 0x17
#define GEN9_CTX_RCS_INDIRECT_CTX_OFFSET_DEFAULT 0x26
+/* Typical size of the average request (2 pipecontrols and a MI_BB) */
+#define EXECLISTS_REQUEST_SIZE 64 /* bytes */
+
static int execlists_context_deferred_alloc(struct intel_context *ctx,
struct intel_engine_cs *engine);
static int intel_lr_context_pin(struct intel_context *ctx,
@@ -681,7 +684,7 @@ int intel_logical_ring_alloc_request_extras(struct drm_i915_gem_request *request
* we start building the request - in which case we will just
* have to repeat work.
*/
- request->reserved_space += MIN_SPACE_FOR_ADD_REQUEST;
+ request->reserved_space += EXECLISTS_REQUEST_SIZE;
if (request->ctx->engine[engine->id].state == NULL) {
ret = execlists_context_deferred_alloc(request->ctx, engine);
@@ -727,7 +730,7 @@ int intel_logical_ring_alloc_request_extras(struct drm_i915_gem_request *request
* to cancel/unwind this request now.
*/
- request->reserved_space -= MIN_SPACE_FOR_ADD_REQUEST;
+ request->reserved_space -= EXECLISTS_REQUEST_SIZE;
return 0;
err_unpin:
--
2.8.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [CI,1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission
2016-04-29 8:07 [CI 1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission Chris Wilson
2016-04-29 8:07 ` [CI 2/3] drm/i915: Trim the flush for the legacy request emission Chris Wilson
2016-04-29 8:07 ` [CI 3/3] drm/i915: Trim the flush for the execlists " Chris Wilson
@ 2016-04-29 9:17 ` Patchwork
2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2016-04-29 9:17 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: series starting with [CI,1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission
URL : https://patchwork.freedesktop.org/series/6523/
State : success
== Summary ==
Series 6523v1 Series without cover letter
http://patchwork.freedesktop.org/api/1.0/series/6523/revisions/1/mbox/
Test gem_exec_whisper:
Subgroup basic:
dmesg-warn -> PASS (ilk-hp8440p)
Test gem_sync:
Subgroup basic-render:
dmesg-warn -> PASS (ilk-hp8440p)
Test kms_force_connector_basic:
Subgroup force-load-detect:
skip -> PASS (hsw-gt2)
bdw-nuci7-2 total:201 pass:189 dwarn:0 dfail:0 fail:0 skip:12
bdw-ultra total:201 pass:176 dwarn:0 dfail:0 fail:0 skip:25
bsw-nuc-2 total:200 pass:159 dwarn:0 dfail:0 fail:0 skip:41
byt-nuc total:200 pass:159 dwarn:0 dfail:0 fail:0 skip:41
hsw-brixbox total:201 pass:175 dwarn:0 dfail:0 fail:0 skip:26
hsw-gt2 total:201 pass:179 dwarn:0 dfail:0 fail:1 skip:21
ilk-hp8440p total:201 pass:140 dwarn:0 dfail:0 fail:0 skip:61
ivb-t430s total:201 pass:170 dwarn:0 dfail:0 fail:0 skip:31
skl-i7k-2 total:201 pass:174 dwarn:0 dfail:0 fail:0 skip:27
skl-nuci5 total:201 pass:190 dwarn:0 dfail:0 fail:0 skip:11
snb-x220t total:201 pass:159 dwarn:0 dfail:0 fail:1 skip:41
snb-dellxps failed to collect. IGT log at Patchwork_2108/snb-dellxps/igt.log
Results at /archive/results/CI_IGT_test/Patchwork_2108/
f739e448f0278feb6bfcbf2f0caf6fa9a6a2b0a1 drm-intel-nightly: 2016y-04m-29d-08h-04m-09s UTC integration manifest
1ad60b0 drm/i915: Trim the flush for the execlists request emission
5c6cb25 drm/i915: Trim the flush for the legacy request emission
acee343 drm/i915: Bump reserved size for legacy gen8 semaphore emission
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-04-29 9:17 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-29 8:07 [CI 1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission Chris Wilson
2016-04-29 8:07 ` [CI 2/3] drm/i915: Trim the flush for the legacy request emission Chris Wilson
2016-04-29 8:07 ` [CI 3/3] drm/i915: Trim the flush for the execlists " Chris Wilson
2016-04-29 9:17 ` ✓ Fi.CI.BAT: success for series starting with [CI,1/3] drm/i915: Bump reserved size for legacy gen8 semaphore emission 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.