diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index 710b4c4..7b06c7b 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -406,7 +406,7 @@ int intel_guc_suspend(struct drm_i915_private *dev_priv)
 	if (guc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS)
 		return 0;
 
-	intel_guc_disable_interrupts(guc);
+	intel_guc_log_disable_interrupts(guc);
 
 	data[0] = INTEL_GUC_ACTION_ENTER_S_STATE;
 	/* any value greater than GUC_POWER_D0 */
@@ -451,8 +451,7 @@ int intel_guc_resume(struct drm_i915_private *dev_priv)
 	if (guc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS)
 		return 0;
 
-	if (guc->log.level >= 0)
-		intel_guc_enable_interrupts(guc);
+	intel_guc_log_enable_interrupts(guc);
 
 	data[0] = INTEL_GUC_ACTION_EXIT_S_STATE;
 	data[1] = GUC_POWER_D0;
diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
index aa6434a..1e535e6 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/intel_guc_log.c
@@ -483,12 +483,11 @@ static void guc_log_capture_logs(struct intel_guc *guc)
 
 static void guc_flush_logs(struct intel_guc *guc)
 {
-	if (!USES_GUC_SUBMISSION(dev_priv) ||
-	    guc->log.level < 0)
+	if (guc->log.level < 0)
 		return;
 
 	/* First disable the interrupts, will be renabled afterwards */
-	intel_guc_disable_interrupts(guc);
+	intel_guc_log_disable_interrupts(guc);
 
 	/* Before initiating the forceful flush, wait for any pending/ongoing
 	 * flush to complete otherwise forceful flush may not actually happen.
@@ -594,7 +593,7 @@ int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val)
 		}
 
 		/* GuC logging is currently the only user of Guc2Host interrupts */
-		intel_guc_enable_interrupts(guc);
+		intel_guc_log_enable_interrupts(guc);
 	} else {
 		/* Once logging is disabled, GuC won't generate logs & send an
 		 * interrupt. But there could be some data in the log buffer
@@ -612,8 +611,10 @@ int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val)
 
 void i915_guc_log_register(struct drm_i915_private *dev_priv)
 {
-	if (!USES_GUC_SUBMISSION(dev_priv) ||
-	    dev_priv->guc.log.level < 0)
+	if (!HAS_GUC(dev_priv))
+		return;
+
+	if (dev_priv->guc.log.level < 0)
 		return;
 
 	mutex_lock(&dev_priv->drm.struct_mutex);
@@ -623,15 +624,27 @@ void i915_guc_log_register(struct drm_i915_private *dev_priv)
 
 void i915_guc_log_unregister(struct drm_i915_private *dev_priv)
 {
-	if (!USES_GUC_SUBMISSION(dev_priv))
+	if (!HAS_GUC(dev_priv))
 		return;
 
 	mutex_lock(&dev_priv->drm.struct_mutex);
 	/* GuC logging is currently the only user of Guc2Host interrupts */
 	intel_runtime_pm_get(dev_priv);
-	intel_guc_disable_interrupts(&dev_priv->guc);
+	intel_guc_log_disable_interrupts(&dev_priv->guc);
 	intel_runtime_pm_put(dev_priv);
 
 	intel_guc_log_runtime_destroy(&dev_priv->guc);
 	mutex_unlock(&dev_priv->drm.struct_mutex);
 }
+
+void intel_guc_log_enable_interrupts(struct intel_guc *guc)
+{
+	if (guc->log.level >= 0)
+		intel_guc_enable_interrupts(guc);
+}
+
+void intel_guc_log_disable_interrupts(struct intel_guc *guc)
+{
+	if (guc->log.level >= 0)
+		intel_guc_disable_interrupts(guc);
+}
diff --git a/drivers/gpu/drm/i915/intel_guc_log.h b/drivers/gpu/drm/i915/intel_guc_log.h
index 362bbef..fbb6cf1 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.h
+++ b/drivers/gpu/drm/i915/intel_guc_log.h
@@ -63,5 +63,7 @@ struct intel_guc_log {
 int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val);
 void i915_guc_log_register(struct drm_i915_private *dev_priv);
 void i915_guc_log_unregister(struct drm_i915_private *dev_priv);
+void intel_guc_log_enable_interrupts(struct intel_guc *guc);
+void intel_guc_log_disable_interrupts(struct intel_guc *guc);
 
 #endif
diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
index 4d9031d..86e04c2 100644
--- a/drivers/gpu/drm/i915/intel_uc.c
+++ b/drivers/gpu/drm/i915/intel_uc.c
@@ -318,9 +318,11 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
 	if (ret)
 		goto err_log_capture;
 
+	intel_guc_log_enable_interrupts(guc);
+
 	ret = guc_enable_communication(guc);
 	if (ret)
-		goto err_log_capture;
+		goto err_log_interrupts;
 
 	if (USES_HUC(dev_priv)) {
 		ret = intel_huc_auth(huc);
@@ -329,12 +331,9 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
 	}
 
 	if (USES_GUC_SUBMISSION(dev_priv)) {
-		if (guc->log.level >= 0)
-			intel_guc_enable_interrupts(guc);
-
 		ret = intel_guc_submission_enable(guc);
 		if (ret)
-			goto err_interrupts;
+			goto err_communication;
 	}
 
 	dev_info(dev_priv->drm.dev, "GuC firmware version %u.%u\n",
@@ -349,10 +348,10 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
 	/*
 	 * We've failed to load the firmware :(
 	 */
-err_interrupts:
-	intel_guc_disable_interrupts(guc);
 err_communication:
 	guc_disable_communication(guc);
+err_log_interrupts:
+	intel_guc_log_disable_interrupts(guc);
 err_log_capture:
 	guc_capture_load_err_log(guc);
 err_out:
