drm/i915/guc: Decode another GuC load failure case
authorJohn Harrison <John.C.Harrison@Intel.com>
Tue, 2 May 2023 23:40:02 +0000 (16:40 -0700)
committerJohn Harrison <John.C.Harrison@Intel.com>
Fri, 5 May 2023 22:33:53 +0000 (15:33 -0700)
Explain another potential firmware failure mode and early exit the
long wait if hit.

Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230502234007.1762014-2-John.C.Harrison@Intel.com
drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c

index bcb1129b3610255339465306f7e661f975b35c10..dabeaf4f245f32440fc9133d151eb6855e0af7b2 100644 (file)
@@ -44,6 +44,7 @@ enum intel_guc_load_status {
 enum intel_bootrom_load_status {
        INTEL_BOOTROM_STATUS_NO_KEY_FOUND                 = 0x13,
        INTEL_BOOTROM_STATUS_AES_PROD_KEY_FOUND           = 0x1A,
+       INTEL_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE       = 0x2B,
        INTEL_BOOTROM_STATUS_RSA_FAILED                   = 0x50,
        INTEL_BOOTROM_STATUS_PAVPC_FAILED                 = 0x73,
        INTEL_BOOTROM_STATUS_WOPCM_FAILED                 = 0x74,
index 6fda3aec5c66ab9ab52c7d39c6fb5fd08768041c..0ff088a5e51a849351f362adfd9bb0bcfeb5d006 100644 (file)
@@ -129,6 +129,7 @@ static inline bool guc_load_done(struct intel_uncore *uncore, u32 *status, bool
        case INTEL_BOOTROM_STATUS_RC6CTXCONFIG_FAILED:
        case INTEL_BOOTROM_STATUS_MPUMAP_INCORRECT:
        case INTEL_BOOTROM_STATUS_EXCEPTION:
+       case INTEL_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
                *success = false;
                return true;
        }
@@ -219,6 +220,11 @@ static int guc_wait_ucode(struct intel_guc *guc)
                        guc_info(guc, "firmware signature verification failed\n");
                        ret = -ENOEXEC;
                        break;
+
+               case INTEL_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
+                       guc_info(guc, "firmware production part check failure\n");
+                       ret = -ENOEXEC;
+                       break;
                }
 
                switch (ukernel) {