Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b08ae03 authored by Daniele Ceraolo Spurio's avatar Daniele Ceraolo Spurio Committed by Chris Wilson
Browse files

drm/i915/guc: Remove client->submissions



The engine->guc_id is GuC FW defined and it is not guaranteed to be
below I915_NUM_ENGINES, so we shouldn't use it with the i915-defined
client->submissions, as we might overflow.
Instead of fixing it, just get rid of client->submissions, because the
information we get from it is not interesting anymore now that we only
have 1 client.

Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190814002145.29056-1-daniele.ceraolospurio@intel.com
parent be6133b8
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -470,8 +470,6 @@ static void guc_add_request(struct intel_guc *guc, struct i915_request *rq)
	guc_wq_item_append(client, engine->guc_id, ctx_desc,
			   ring_tail, rq->fence.seqno);
	guc_ring_doorbell(client);

	client->submissions[engine->guc_id] += 1;
}

/*
+0 −2
Original line number Diff line number Diff line
@@ -51,8 +51,6 @@ struct intel_guc_client {

	/* Protects GuC client's WQ access */
	spinlock_t wq_lock;
	/* Per-engine counts of GuC submissions */
	u64 submissions[I915_NUM_ENGINES];

	/* For testing purposes, use nop WQ items instead of real ones */
	I915_SELFTEST_DECLARE(bool use_nop_wqi);
+8 −24
Original line number Diff line number Diff line
@@ -1882,31 +1882,11 @@ static void i915_guc_log_info(struct seq_file *m,
	}
}

static void i915_guc_client_info(struct seq_file *m,
				 struct drm_i915_private *dev_priv,
				 struct intel_guc_client *client)
{
	struct intel_engine_cs *engine;
	u64 tot = 0;

	seq_printf(m, "\tPriority %d, GuC stage index: %u, PD offset 0x%x\n",
		client->priority, client->stage_id, client->proc_desc_offset);
	seq_printf(m, "\tDoorbell id %d, offset: 0x%lx\n",
		client->doorbell_id, client->doorbell_offset);

	for_each_uabi_engine(engine, dev_priv) {
		u64 submissions = client->submissions[engine->guc_id];
		tot += submissions;
		seq_printf(m, "\tSubmissions: %llu %s\n",
				submissions, engine->name);
	}
	seq_printf(m, "\tTotal: %llu\n", tot);
}

static int i915_guc_info(struct seq_file *m, void *data)
{
	struct drm_i915_private *dev_priv = node_to_i915(m->private);
	const struct intel_guc *guc = &dev_priv->gt.uc.guc;
	struct intel_guc_client *client = guc->execbuf_client;

	if (!USES_GUC(dev_priv))
		return -ENODEV;
@@ -1922,9 +1902,13 @@ static int i915_guc_info(struct seq_file *m, void *data)
	seq_printf(m, "\t%*pb\n", GUC_NUM_DOORBELLS, guc->doorbell_bitmap);
	seq_printf(m, "Doorbell next cacheline: 0x%x\n", guc->db_cacheline);

	seq_printf(m, "\nGuC execbuf client @ %p:\n", guc->execbuf_client);
	i915_guc_client_info(m, dev_priv, guc->execbuf_client);

	seq_printf(m, "\nGuC execbuf client @ %p:\n", client);
	seq_printf(m, "\tPriority %d, GuC stage index: %u, PD offset 0x%x\n",
		   client->priority,
		   client->stage_id,
		   client->proc_desc_offset);
	seq_printf(m, "\tDoorbell id %d, offset: 0x%lx\n",
		   client->doorbell_id, client->doorbell_offset);
	/* Add more as required ... */

	return 0;