drm/i915/gt: Pull intel_gt_init_hw() into intel_gt_resume()
Since intel_gt_resume() is always immediately proceeded by init_hw, pull the call into intel_gt_resume, where we have the rpm and fw already held. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Andi Shyti <andi.shyti@intel.com> Reviewed-by: Andi Shyti <andi.shyti@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191222144046.1674865-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
e26b6d4341
commit
cfe6b30fc3
@ -101,28 +101,10 @@ void i915_gem_resume(struct drm_i915_private *i915)
|
|||||||
{
|
{
|
||||||
GEM_TRACE("%s\n", dev_name(i915->drm.dev));
|
GEM_TRACE("%s\n", dev_name(i915->drm.dev));
|
||||||
|
|
||||||
intel_uncore_forcewake_get(&i915->uncore, FORCEWAKE_ALL);
|
|
||||||
|
|
||||||
if (intel_gt_init_hw(&i915->gt))
|
|
||||||
goto err_wedged;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As we didn't flush the kernel context before suspend, we cannot
|
* As we didn't flush the kernel context before suspend, we cannot
|
||||||
* guarantee that the context image is complete. So let's just reset
|
* guarantee that the context image is complete. So let's just reset
|
||||||
* it and start again.
|
* it and start again.
|
||||||
*/
|
*/
|
||||||
if (intel_gt_resume(&i915->gt))
|
intel_gt_resume(&i915->gt);
|
||||||
goto err_wedged;
|
|
||||||
|
|
||||||
out_unlock:
|
|
||||||
intel_uncore_forcewake_put(&i915->uncore, FORCEWAKE_ALL);
|
|
||||||
return;
|
|
||||||
|
|
||||||
err_wedged:
|
|
||||||
if (!intel_gt_is_wedged(&i915->gt)) {
|
|
||||||
dev_err(i915->drm.dev,
|
|
||||||
"Failed to re-initialize GPU, declaring it wedged!\n");
|
|
||||||
intel_gt_set_wedged(&i915->gt);
|
|
||||||
}
|
|
||||||
goto out_unlock;
|
|
||||||
}
|
}
|
||||||
|
@ -594,14 +594,9 @@ int intel_gt_init(struct intel_gt *gt)
|
|||||||
|
|
||||||
intel_uc_init(>->uc);
|
intel_uc_init(>->uc);
|
||||||
|
|
||||||
err = intel_gt_init_hw(gt);
|
|
||||||
if (err)
|
|
||||||
goto err_uc_init;
|
|
||||||
|
|
||||||
/* Only when the HW is re-initialised, can we replay the requests */
|
|
||||||
err = intel_gt_resume(gt);
|
err = intel_gt_resume(gt);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_gt_init_hw;
|
goto err_uc_init;
|
||||||
|
|
||||||
err = __engines_record_defaults(gt);
|
err = __engines_record_defaults(gt);
|
||||||
if (err)
|
if (err)
|
||||||
@ -618,7 +613,6 @@ int intel_gt_init(struct intel_gt *gt)
|
|||||||
goto out_fw;
|
goto out_fw;
|
||||||
err_gt:
|
err_gt:
|
||||||
__intel_gt_disable(gt);
|
__intel_gt_disable(gt);
|
||||||
err_gt_init_hw:
|
|
||||||
intel_uc_fini_hw(>->uc);
|
intel_uc_fini_hw(>->uc);
|
||||||
err_uc_init:
|
err_uc_init:
|
||||||
intel_uc_fini(>->uc);
|
intel_uc_fini(>->uc);
|
||||||
|
@ -187,7 +187,7 @@ int intel_gt_resume(struct intel_gt *gt)
|
|||||||
{
|
{
|
||||||
struct intel_engine_cs *engine;
|
struct intel_engine_cs *engine;
|
||||||
enum intel_engine_id id;
|
enum intel_engine_id id;
|
||||||
int err = 0;
|
int err;
|
||||||
|
|
||||||
GT_TRACE(gt, "\n");
|
GT_TRACE(gt, "\n");
|
||||||
|
|
||||||
@ -202,6 +202,15 @@ int intel_gt_resume(struct intel_gt *gt)
|
|||||||
intel_uncore_forcewake_get(gt->uncore, FORCEWAKE_ALL);
|
intel_uncore_forcewake_get(gt->uncore, FORCEWAKE_ALL);
|
||||||
intel_rc6_sanitize(>->rc6);
|
intel_rc6_sanitize(>->rc6);
|
||||||
|
|
||||||
|
/* Only when the HW is re-initialised, can we replay the requests */
|
||||||
|
err = intel_gt_init_hw(gt);
|
||||||
|
if (err) {
|
||||||
|
dev_err(gt->i915->drm.dev,
|
||||||
|
"Failed to initialize GPU, declaring it wedged!\n");
|
||||||
|
intel_gt_set_wedged(gt);
|
||||||
|
goto err_fw;
|
||||||
|
}
|
||||||
|
|
||||||
intel_rps_enable(>->rps);
|
intel_rps_enable(>->rps);
|
||||||
intel_llc_enable(>->llc);
|
intel_llc_enable(>->llc);
|
||||||
|
|
||||||
@ -234,6 +243,7 @@ int intel_gt_resume(struct intel_gt *gt)
|
|||||||
|
|
||||||
user_forcewake(gt, false);
|
user_forcewake(gt, false);
|
||||||
|
|
||||||
|
err_fw:
|
||||||
intel_uncore_forcewake_put(gt->uncore, FORCEWAKE_ALL);
|
intel_uncore_forcewake_put(gt->uncore, FORCEWAKE_ALL);
|
||||||
intel_gt_pm_put(gt);
|
intel_gt_pm_put(gt);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user