]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/guc: skip disabling CTBs before sanitizing the GuC
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Thu, 3 Jun 2021 05:16:11 +0000 (22:16 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 3 Jun 2021 21:30:48 +0000 (23:30 +0200)
If we're about to sanitize the GuC, something might have going wrong
beforehand, so we should avoid trying to talk to it. Even if GuC is
still running fine, the sanitize will reset its internal state and clear
the CTB registration, so there is still no need to explicitly do so.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/2469
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210603051630.2635-2-matthew.brost@intel.com
drivers/gpu/drm/i915/gt/uc/intel_uc.c

index 6abb8f2dc33d6735137de03adda6652c843d6e41..892c1315ce4943c36a9368d5a1f1d2e2dc976be0 100644 (file)
@@ -504,7 +504,7 @@ static int __uc_init_hw(struct intel_uc *uc)
 
        ret = intel_guc_sample_forcewake(guc);
        if (ret)
-               goto err_communication;
+               goto err_log_capture;
 
        if (intel_uc_uses_guc_submission(uc))
                intel_guc_submission_enable(guc);
@@ -529,8 +529,6 @@ static int __uc_init_hw(struct intel_uc *uc)
        /*
         * We've failed to load the firmware :(
         */
-err_communication:
-       guc_disable_communication(guc);
 err_log_capture:
        __uc_capture_load_err_log(uc);
 err_out:
@@ -558,9 +556,6 @@ static void __uc_fini_hw(struct intel_uc *uc)
        if (intel_uc_uses_guc_submission(uc))
                intel_guc_submission_disable(guc);
 
-       if (guc_communication_enabled(guc))
-               guc_disable_communication(guc);
-
        __uc_sanitize(uc);
 }
 
@@ -577,7 +572,6 @@ void intel_uc_reset_prepare(struct intel_uc *uc)
        if (!intel_guc_is_ready(guc))
                return;
 
-       guc_disable_communication(guc);
        __uc_sanitize(uc);
 }