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

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
...@@ -108,22 +108,15 @@ static bool client_doorbell_in_sync(struct intel_guc_client *client) ...@@ -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 * validating that the doorbells status expected by the driver matches what the
* GuC/HW have. * 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; intel_wakeref_t wakeref;
struct intel_guc *guc;
int err = 0; int err = 0;
GEM_BUG_ON(!HAS_GT_UC(dev_priv)); GEM_BUG_ON(!HAS_GT_UC(gt->i915));
wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); wakeref = intel_runtime_pm_get(gt->uncore->rpm);
guc = &dev_priv->gt.uc.guc;
if (!guc) {
pr_err("No guc object!\n");
err = -EINVAL;
goto unlock;
}
err = check_all_doorbells(guc); err = check_all_doorbells(guc);
if (err) if (err)
...@@ -188,7 +181,7 @@ static int igt_guc_clients(void *args) ...@@ -188,7 +181,7 @@ static int igt_guc_clients(void *args)
guc_clients_create(guc); guc_clients_create(guc);
guc_clients_enable(guc); guc_clients_enable(guc);
unlock: unlock:
intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); intel_runtime_pm_put(gt->uncore->rpm, wakeref);
return err; return err;
} }
...@@ -199,21 +192,14 @@ static int igt_guc_clients(void *args) ...@@ -199,21 +192,14 @@ static int igt_guc_clients(void *args)
*/ */
static int igt_guc_doorbells(void *arg) 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; intel_wakeref_t wakeref;
struct intel_guc *guc;
int i, err = 0; int i, err = 0;
u16 db_id; u16 db_id;
GEM_BUG_ON(!HAS_GT_UC(dev_priv)); GEM_BUG_ON(!HAS_GT_UC(gt->i915));
wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); wakeref = intel_runtime_pm_get(gt->uncore->rpm);
guc = &dev_priv->gt.uc.guc;
if (!guc) {
pr_err("No guc object!\n");
err = -EINVAL;
goto unlock;
}
err = check_all_doorbells(guc); err = check_all_doorbells(guc);
if (err) if (err)
...@@ -295,19 +281,19 @@ static int igt_guc_doorbells(void *arg) ...@@ -295,19 +281,19 @@ static int igt_guc_doorbells(void *arg)
guc_client_free(clients[i]); guc_client_free(clients[i]);
} }
unlock: unlock:
intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); intel_runtime_pm_put(gt->uncore->rpm, wakeref);
return err; 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[] = { static const struct i915_subtest tests[] = {
SUBTEST(igt_guc_clients), SUBTEST(igt_guc_clients),
SUBTEST(igt_guc_doorbells), SUBTEST(igt_guc_doorbells),
}; };
if (!USES_GUC_SUBMISSION(dev_priv)) if (!USES_GUC_SUBMISSION(i915))
return 0; return 0;
return i915_subtests(tests, dev_priv); return intel_gt_live_subtests(tests, &i915->gt);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment