return 0;
 }
 
+static int try_firmware_load(struct intel_uc_fw *uc_fw, const struct firmware **fw)
+{
+       struct intel_gt *gt = __uc_fw_to_gt(uc_fw);
+       struct device *dev = gt->i915->drm.dev;
+       int err;
+
+       err = firmware_request_nowarn(fw, uc_fw->file_selected.path, dev);
+
+       if (err)
+               return err;
+
+       if ((*fw)->size > INTEL_UC_RSVD_GGTT_PER_FW) {
+               drm_err(>->i915->drm,
+                       "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
+                       intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+                       (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
+
+               /* try to find another blob to load */
+               release_firmware(*fw);
+               *fw = NULL;
+               return -ENOENT;
+       }
+
+       return 0;
+}
+
 /**
  * intel_uc_fw_fetch - fetch uC firmware
  * @uc_fw: uC firmware
        struct intel_gt *gt = __uc_fw_to_gt(uc_fw);
        struct drm_i915_private *i915 = gt->i915;
        struct intel_uc_fw_file file_ideal;
-       struct device *dev = i915->drm.dev;
        struct drm_i915_gem_object *obj;
        const struct firmware *fw = NULL;
        bool old_ver = false;
        __force_fw_fetch_failures(uc_fw, -EINVAL);
        __force_fw_fetch_failures(uc_fw, -ESTALE);
 
-       err = firmware_request_nowarn(&fw, uc_fw->file_selected.path, dev);
+       err = try_firmware_load(uc_fw, &fw);
        memcpy(&file_ideal, &uc_fw->file_wanted, sizeof(file_ideal));
 
-       if (!err && fw->size > INTEL_UC_RSVD_GGTT_PER_FW) {
-               drm_err(&i915->drm,
-                       "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
-                       intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
-                       fw->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
-
-               /* try to find another blob to load */
-               release_firmware(fw);
-               err = -ENOENT;
-       }
-
        /* Any error is terminal if overriding. Don't bother searching for older versions */
        if (err && intel_uc_fw_is_overridden(uc_fw))
                goto fail;
                        break;
                }
 
-               err = firmware_request_nowarn(&fw, uc_fw->file_selected.path, dev);
+               err = try_firmware_load(uc_fw, &fw);
        }
 
        if (err)