Commit 3b05c4f8 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915/selftests: Teach guc to take intel_gt as its argument



The guc selftests are hardware^W firmare centric and so want to use the
gt as its target.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191016115311.12894-1-chris@chris-wilson.co.uk
parent 1357fa81
Loading
Loading
Loading
Loading
+14 −28
Original line number Diff line number Diff line
@@ -108,22 +108,15 @@ static bool client_doorbell_in_sync(struct intel_guc_client *client)
 * validating that the doorbells status expected by the driver matches what the
 * GuC/HW have.
 */
static int igt_guc_clients(void *args)
static int igt_guc_clients(void *arg)
{
	struct drm_i915_private *dev_priv = args;
	struct intel_gt *gt = arg;
	struct intel_guc *guc = &gt->uc.guc;
	intel_wakeref_t wakeref;
	struct intel_guc *guc;
	int err = 0;

	GEM_BUG_ON(!HAS_GT_UC(dev_priv));
	wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);

	guc = &dev_priv->gt.uc.guc;
	if (!guc) {
		pr_err("No guc object!\n");
		err = -EINVAL;
		goto unlock;
	}
	GEM_BUG_ON(!HAS_GT_UC(gt->i915));
	wakeref = intel_runtime_pm_get(gt->uncore->rpm);

	err = check_all_doorbells(guc);
	if (err)
@@ -188,7 +181,7 @@ out:
	guc_clients_create(guc);
	guc_clients_enable(guc);
unlock:
	intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
	intel_runtime_pm_put(gt->uncore->rpm, wakeref);
	return err;
}

@@ -199,21 +192,14 @@ unlock:
 */
static int igt_guc_doorbells(void *arg)
{
	struct drm_i915_private *dev_priv = arg;
	struct intel_gt *gt = arg;
	struct intel_guc *guc = &gt->uc.guc;
	intel_wakeref_t wakeref;
	struct intel_guc *guc;
	int i, err = 0;
	u16 db_id;

	GEM_BUG_ON(!HAS_GT_UC(dev_priv));
	wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);

	guc = &dev_priv->gt.uc.guc;
	if (!guc) {
		pr_err("No guc object!\n");
		err = -EINVAL;
		goto unlock;
	}
	GEM_BUG_ON(!HAS_GT_UC(gt->i915));
	wakeref = intel_runtime_pm_get(gt->uncore->rpm);

	err = check_all_doorbells(guc);
	if (err)
@@ -295,19 +281,19 @@ out:
			guc_client_free(clients[i]);
		}
unlock:
	intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
	intel_runtime_pm_put(gt->uncore->rpm, wakeref);
	return err;
}

int intel_guc_live_selftest(struct drm_i915_private *dev_priv)
int intel_guc_live_selftest(struct drm_i915_private *i915)
{
	static const struct i915_subtest tests[] = {
		SUBTEST(igt_guc_clients),
		SUBTEST(igt_guc_doorbells),
	};

	if (!USES_GUC_SUBMISSION(dev_priv))
	if (!USES_GUC_SUBMISSION(i915))
		return 0;

	return i915_subtests(tests, dev_priv);
	return intel_gt_live_subtests(tests, &i915->gt);
}