diff mbox

drm/i915/guc: index host arrays by i915 engine ID, not guc_id

Message ID 1466180952-6488-1-git-send-email-david.s.gordon@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dave Gordon June 17, 2016, 4:29 p.m. UTC
The ONLY places that guc_id (aka hw_id) should be used are those where
the value or address is determined by and shared with the GuC firmware;
specifically, when filling in the GuC-context-descriptor or the GuC
addon data, or putting an entry in the GuC's work queue.

It need not (and therefore should not) be used to index GuC statistics
or similar host-managed tracking data. In particular, i915_guc_submit()
produces (and debugfs decodes) GuC submission statistics which should be
indexed by driver-engine-id rather then guc-engine-id.

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c        | 10 +++++-----
 drivers/gpu/drm/i915/i915_guc_submission.c |  2 +-
 drivers/gpu/drm/i915/intel_guc.h           |  7 ++++---
 3 files changed, 10 insertions(+), 9 deletions(-)

Comments

Chris Wilson June 20, 2016, 9:37 a.m. UTC | #1
On Fri, Jun 17, 2016 at 05:29:12PM +0100, Dave Gordon wrote:
> The ONLY places that guc_id (aka hw_id) should be used are those where
> the value or address is determined by and shared with the GuC firmware;
> specifically, when filling in the GuC-context-descriptor or the GuC
> addon data, or putting an entry in the GuC's work queue.
> 
> It need not (and therefore should not) be used to index GuC statistics
> or similar host-managed tracking data. In particular, i915_guc_submit()
> produces (and debugfs decodes) GuC submission statistics which should be
> indexed by driver-engine-id rather then guc-engine-id.
> 
> Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Tvrtko Ursulin June 21, 2016, 10:26 a.m. UTC | #2
On 20/06/16 16:04, Patchwork wrote:
> == Series Details ==
>
> Series: drm/i915/guc: index host arrays by i915 engine ID, not guc_id (rev2)
> URL   : https://patchwork.freedesktop.org/series/8848/
> State : success
>
> == Summary ==
>
> Series 8848v2 drm/i915/guc: index host arrays by i915 engine ID, not guc_id
> http://patchwork.freedesktop.org/api/1.0/series/8848/revisions/2/mbox
>
>
> fi-skl-i5-6260u  total:223  pass:200  dwarn:0   dfail:0   fail:2   skip:21
> fi-skl-i7-6700k  total:223  pass:186  dwarn:0   dfail:0   fail:2   skip:35
> fi-snb-i7-2600   total:223  pass:172  dwarn:0   dfail:0   fail:2   skip:49
> ro-bdw-i5-5250u  total:223  pass:195  dwarn:2   dfail:0   fail:2   skip:24
> ro-bdw-i7-5600u  total:223  pass:183  dwarn:0   dfail:0   fail:2   skip:38
> ro-bsw-n3050     total:223  pass:170  dwarn:0   dfail:0   fail:4   skip:49
> ro-byt-n2820     total:223  pass:171  dwarn:0   dfail:0   fail:5   skip:47
> ro-hsw-i3-4010u  total:223  pass:188  dwarn:0   dfail:0   fail:2   skip:33
> ro-hsw-i7-4770r  total:223  pass:188  dwarn:0   dfail:0   fail:2   skip:33
> ro-ilk-i7-620lm  total:223  pass:148  dwarn:0   dfail:0   fail:3   skip:72
> ro-ilk1-i5-650   total:218  pass:148  dwarn:0   dfail:0   fail:3   skip:67
> ro-ivb-i7-3770   total:223  pass:179  dwarn:0   dfail:0   fail:2   skip:42
> ro-ivb2-i7-3770  total:223  pass:183  dwarn:0   dfail:0   fail:2   skip:38
> ro-skl3-i5-6260u total:223  pass:199  dwarn:1   dfail:0   fail:2   skip:21
> ro-snb-i7-2620M  total:223  pass:172  dwarn:0   dfail:0   fail:3   skip:48
> fi-hsw-i7-4770k failed to connect after reboot
> ro-bdw-i7-5557U failed to connect after reboot
>
> Results at /archive/results/CI_IGT_test/RO_Patchwork_1240/
>
> f586720 drm-intel-nightly: 2016y-06m-20d-13h-24m-46s UTC integration manifest
> fb74e49 drm/i915/guc: index host arrays by i915 engine ID, not guc_id

Merged to dinq, thanks for the patch and review.

Regards,

Tvrtko
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 5b75266..7d63af0 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2544,9 +2544,9 @@  static void i915_guc_client_info(struct seq_file *m,
 
 	for_each_engine(engine, dev_priv) {
 		seq_printf(m, "\tSubmissions: %llu %s\n",
-				client->submissions[engine->guc_id],
+				client->submissions[engine->id],
 				engine->name);
-		tot += client->submissions[engine->guc_id];
+		tot += client->submissions[engine->id];
 	}
 	seq_printf(m, "\tTotal: %llu\n", tot);
 }
@@ -2587,9 +2587,9 @@  static int i915_guc_info(struct seq_file *m, void *data)
 	seq_printf(m, "\nGuC submissions:\n");
 	for_each_engine(engine, dev_priv) {
 		seq_printf(m, "\t%-24s: %10llu, last seqno 0x%08x\n",
-			engine->name, guc.submissions[engine->guc_id],
-			guc.last_seqno[engine->guc_id]);
-		total += guc.submissions[engine->guc_id];
+			engine->name, guc.submissions[engine->id],
+			guc.last_seqno[engine->id]);
+		total += guc.submissions[engine->id];
 	}
 	seq_printf(m, "\t%s: %llu\n", "Total", total);
 
diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
index 22a55ac..01c7cdf 100644
--- a/drivers/gpu/drm/i915/i915_guc_submission.c
+++ b/drivers/gpu/drm/i915/i915_guc_submission.c
@@ -582,7 +582,7 @@  static int guc_ring_doorbell(struct i915_guc_client *gc)
  */
 int i915_guc_submit(struct drm_i915_gem_request *rq)
 {
-	unsigned int engine_id = rq->engine->guc_id;
+	unsigned int engine_id = rq->engine->id;
 	struct intel_guc *guc = &rq->i915->guc;
 	struct i915_guc_client *client = guc->execbuf_client;
 	int b_ret;
diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h
index 4df80cc..3e3e743 100644
--- a/drivers/gpu/drm/i915/intel_guc.h
+++ b/drivers/gpu/drm/i915/intel_guc.h
@@ -26,6 +26,7 @@ 
 
 #include "intel_guc_fwif.h"
 #include "i915_guc_reg.h"
+#include "intel_ringbuffer.h"
 
 struct drm_i915_gem_request;
 
@@ -86,7 +87,7 @@  struct i915_guc_client {
 	int retcode;
 
 	/* Per-engine counts of GuC submissions */
-	uint64_t submissions[GUC_MAX_ENGINES_NUM];
+	uint64_t submissions[I915_NUM_ENGINES];
 };
 
 enum intel_guc_fw_status {
@@ -143,8 +144,8 @@  struct intel_guc {
 	uint32_t action_fail;		/* Total number of failures	*/
 	int32_t action_err;		/* Last error code		*/
 
-	uint64_t submissions[GUC_MAX_ENGINES_NUM];
-	uint32_t last_seqno[GUC_MAX_ENGINES_NUM];
+	uint64_t submissions[I915_NUM_ENGINES];
+	uint32_t last_seqno[I915_NUM_ENGINES];
 };
 
 /* intel_guc_loader.c */