drm/i915/dmc: handle request_firmware() errors separately
authorJani Nikula <jani.nikula@intel.com>
Fri, 19 Apr 2024 09:41:54 +0000 (12:41 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 22 Apr 2024 13:48:13 +0000 (16:48 +0300)
Clarify request_firmware() error handling. Don't proceed to trying to
parse non-existent firmware or check for payload when request_firmware()
failed to begin with. There's no reason to release_firmware() either
when request_firmware() failed.

Also move the message about DMC firmware homepage here, as in other
cases the user probably has some firmware, although its parsing fails
for some reason.

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Acked-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/0654bb3480f8d2103225d26f665badead5495532.1713519628.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_dmc.c

index 3697a02b51b639535c218e99ed02f4027761bdfa..8f2a0afe48ba0c9ac0a7c69bc6999c93e2f8802e 100644 (file)
@@ -942,6 +942,15 @@ static void dmc_load_work_fn(struct work_struct *work)
                }
        }
 
+       if (err) {
+               drm_notice(&i915->drm,
+                          "Failed to load DMC firmware %s (%pe). Disabling runtime power management.\n",
+                          dmc->fw_path, ERR_PTR(err));
+               drm_notice(&i915->drm, "DMC firmware homepage: %s",
+                          INTEL_DMC_FIRMWARE_URL);
+               return;
+       }
+
        parse_dmc_fw(dmc, fw);
 
        if (intel_dmc_has_payload(i915)) {
@@ -956,8 +965,6 @@ static void dmc_load_work_fn(struct work_struct *work)
                           "Failed to load DMC firmware %s."
                           " Disabling runtime power management.\n",
                           dmc->fw_path);
-               drm_notice(&i915->drm, "DMC firmware homepage: %s",
-                          INTEL_DMC_FIRMWARE_URL);
        }
 
        release_firmware(fw);