diff mbox series

[1/5] drm/i915/guc: Decode another GuC load failure case

Message ID 20230415005706.4135485-2-John.C.Harrison@Intel.com (mailing list archive)
State New, archived
Headers show
Series Improvements to uc firmare management | expand

Commit Message

John Harrison April 15, 2023, 12:57 a.m. UTC
From: John Harrison <John.C.Harrison@Intel.com>

Explain another potential firmware failure mode and early exit the
long wait if hit.

Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h | 1 +
 drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c       | 6 ++++++
 2 files changed, 7 insertions(+)

Comments

Daniele Ceraolo Spurio April 18, 2023, 6:41 p.m. UTC | #1
On 4/14/2023 5:57 PM, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> 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>

Daniele

> ---
>   drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h | 1 +
>   drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c       | 6 ++++++
>   2 files changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
> index bcb1129b36102..dabeaf4f245f3 100644
> --- a/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
> +++ b/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
> @@ -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,
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
> index 6fda3aec5c66a..0ff088a5e51a8 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
> @@ -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) {
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
index bcb1129b36102..dabeaf4f245f3 100644
--- a/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
+++ b/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h
@@ -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,
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
index 6fda3aec5c66a..0ff088a5e51a8 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
@@ -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) {