From 76ed32236aa396cb0e15eb049bea03710ca1992d Mon Sep 17 00:00:00 2001 From: Sieu Mun Tang Date: Sun, 4 Dec 2022 01:43:35 +0800 Subject: [PATCH] fix(intel): add mailbox error return status for FCS_DECRYPTION Add 2 more mailbox error return status for FCS_DECRYPTION when sending mailbox command to SDM Signed-off-by: Sieu Mun Tang Change-Id: Ifff4faa397232cc0080f9fca6f6948ac305915c4 --- plat/intel/soc/common/include/socfpga_mailbox.h | 4 ++++ plat/intel/soc/common/sip/socfpga_sip_fcs.c | 5 ++++- plat/intel/soc/common/socfpga_sip_svc.c | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/plat/intel/soc/common/include/socfpga_mailbox.h b/plat/intel/soc/common/include/socfpga_mailbox.h index 3ab6f522e..3abf39dca 100644 --- a/plat/intel/soc/common/include/socfpga_mailbox.h +++ b/plat/intel/soc/common/include/socfpga_mailbox.h @@ -129,6 +129,10 @@ #define MBOX_BUSY -5 #define MBOX_TIMEOUT -2047 +/* Key Status */ +#define MBOX_RET_SDOS_DECRYPTION_ERROR_102 -258 +#define MBOX_RET_SDOS_DECRYPTION_ERROR_103 -259 + /* Reconfig Status Response */ #define RECONFIG_STATUS_STATE 0 #define RECONFIG_STATUS_PIN_STATUS 2 diff --git a/plat/intel/soc/common/sip/socfpga_sip_fcs.c b/plat/intel/soc/common/sip/socfpga_sip_fcs.c index f18c3e4f7..3b0b37029 100644 --- a/plat/intel/soc/common/sip/socfpga_sip_fcs.c +++ b/plat/intel/soc/common/sip/socfpga_sip_fcs.c @@ -411,7 +411,10 @@ int intel_fcs_decryption_ext(uint32_t session_id, uint32_t context_id, (uint32_t *) &payload, payload_size, CMD_CASUAL, resp_data, &resp_len); - if (status < 0) { + if (status == MBOX_RET_SDOS_DECRYPTION_ERROR_102 || + status == MBOX_RET_SDOS_DECRYPTION_ERROR_103) { + *mbox_error = -status; + } else if (status < 0) { *mbox_error = -status; return INTEL_SIP_SMC_STATUS_ERROR; } diff --git a/plat/intel/soc/common/socfpga_sip_svc.c b/plat/intel/soc/common/socfpga_sip_svc.c index a20e61c76..79f743f5d 100644 --- a/plat/intel/soc/common/socfpga_sip_svc.c +++ b/plat/intel/soc/common/socfpga_sip_svc.c @@ -611,7 +611,10 @@ uint32_t intel_smc_service_completed(uint64_t addr, uint32_t size, *ret_size = resp_len * MBOX_WORD_BYTE; flush_dcache_range(addr, *ret_size); - if (status != MBOX_RET_OK) { + if (status == MBOX_RET_SDOS_DECRYPTION_ERROR_102 || + status == MBOX_RET_SDOS_DECRYPTION_ERROR_103) { + *mbox_error = -status; + } else if (status != MBOX_RET_OK) { *mbox_error = -status; return INTEL_SIP_SMC_STATUS_ERROR; } -- 2.39.5