Commit 3243bd09 authored by Michal Wajdeczko's avatar Michal Wajdeczko Committed by Chris Wilson

drm/i915/uc: Reorder firmware status codes

On Gen9 when we try to reload HuC due to GuC upload error, we hit:

<7> [232.025927] [drm:intel_uc_init_hw [i915]] GuC fw load failed: -8; will reset and retry 2 more time(s)
<7> [232.026004] [drm:intel_uc_fw_upload [i915]] HuC fw load i915/kbl_huc_ver02_00_1810.bin
<7> [232.026686] [drm:intel_uc_fw_upload [i915]] HuC fw xfer completed
<6> [232.026688] [drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
<3> [232.026703] intel_uc_fw_copy_rsa:541 GEM_BUG_ON(!intel_uc_fw_is_available(uc_fw))

as firmware that previously failed to load was wrongly treated as
unavailable since its status code was not matching status check logic.
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190802184055.31988-4-michal.wajdeczko@intel.com
parent 771051ea
...@@ -37,12 +37,12 @@ struct intel_gt; ...@@ -37,12 +37,12 @@ struct intel_gt;
#define INTEL_UC_FIRMWARE_URL "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915" #define INTEL_UC_FIRMWARE_URL "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915"
enum intel_uc_fw_status { enum intel_uc_fw_status {
INTEL_UC_FIRMWARE_FAIL = -3, /* failed to xfer or init/auth the fw */ INTEL_UC_FIRMWARE_NOT_SUPPORTED = -1, /* no uc HW or disabled */
INTEL_UC_FIRMWARE_MISSING = -2, /* blob not found on the system */
INTEL_UC_FIRMWARE_NOT_SUPPORTED = -1, /* no uc HW */
INTEL_UC_FIRMWARE_UNINITIALIZED = 0, /* used to catch checks done too early */ INTEL_UC_FIRMWARE_UNINITIALIZED = 0, /* used to catch checks done too early */
INTEL_UC_FIRMWARE_SELECTED, /* selected the blob we want to load */ INTEL_UC_FIRMWARE_SELECTED, /* selected the blob we want to load */
INTEL_UC_FIRMWARE_MISSING, /* blob not found on the system */
INTEL_UC_FIRMWARE_AVAILABLE, /* blob found and copied in mem */ INTEL_UC_FIRMWARE_AVAILABLE, /* blob found and copied in mem */
INTEL_UC_FIRMWARE_FAIL, /* failed to xfer or init/auth the fw */
INTEL_UC_FIRMWARE_TRANSFERRED, /* dma xfer done */ INTEL_UC_FIRMWARE_TRANSFERRED, /* dma xfer done */
INTEL_UC_FIRMWARE_RUNNING /* init/auth done */ INTEL_UC_FIRMWARE_RUNNING /* init/auth done */
}; };
...@@ -83,18 +83,18 @@ static inline ...@@ -83,18 +83,18 @@ static inline
const char *intel_uc_fw_status_repr(enum intel_uc_fw_status status) const char *intel_uc_fw_status_repr(enum intel_uc_fw_status status)
{ {
switch (status) { switch (status) {
case INTEL_UC_FIRMWARE_FAIL:
return "FAIL";
case INTEL_UC_FIRMWARE_MISSING:
return "MISSING";
case INTEL_UC_FIRMWARE_NOT_SUPPORTED: case INTEL_UC_FIRMWARE_NOT_SUPPORTED:
return "N/A"; return "N/A";
case INTEL_UC_FIRMWARE_UNINITIALIZED: case INTEL_UC_FIRMWARE_UNINITIALIZED:
return "UNINITIALIZED"; return "UNINITIALIZED";
case INTEL_UC_FIRMWARE_SELECTED: case INTEL_UC_FIRMWARE_SELECTED:
return "SELECTED"; return "SELECTED";
case INTEL_UC_FIRMWARE_MISSING:
return "MISSING";
case INTEL_UC_FIRMWARE_AVAILABLE: case INTEL_UC_FIRMWARE_AVAILABLE:
return "AVAILABLE"; return "AVAILABLE";
case INTEL_UC_FIRMWARE_FAIL:
return "FAIL";
case INTEL_UC_FIRMWARE_TRANSFERRED: case INTEL_UC_FIRMWARE_TRANSFERRED:
return "TRANSFERRED"; return "TRANSFERRED";
case INTEL_UC_FIRMWARE_RUNNING: case INTEL_UC_FIRMWARE_RUNNING:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment