]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
fix(intel): flash dcache before mmio read
authorJit Loon Lim <jit.loon.lim@intel.com>
Mon, 27 Mar 2023 07:19:53 +0000 (15:19 +0800)
committerSieu Mun Tang <sieu.mun.tang@intel.com>
Mon, 10 Apr 2023 16:20:45 +0000 (00:20 +0800)
Flash dcache before mmio read to avoid reading old/previous value.

Signed-off-by: Jit Loon Lim <jit.loon.lim@intel.com>
Change-Id: Ifd5a63a3c0f20b3e673be62ff5c3b6c4cf69df51

plat/intel/soc/common/sip/socfpga_sip_fcs.c

index 0166eb726f215f3c0c465574a0d62fe1fc790e69..508043ff75cf155d260e15a9e840a7f797f0b634 100644 (file)
@@ -283,6 +283,7 @@ uint32_t intel_fcs_decryption(uint32_t src_addr, uint32_t src_size,
        uint32_t load_size;
        uintptr_t id_offset;
 
+       inv_dcache_range(src_addr, src_size); /* flush cache before mmio read to avoid reading old values */
        id_offset = src_addr + FCS_OWNER_ID_OFFSET;
        fcs_decrypt_payload payload = {
                FCS_DECRYPTION_DATA_0,
@@ -392,6 +393,7 @@ int intel_fcs_decryption_ext(uint32_t session_id, uint32_t context_id,
                return INTEL_SIP_SMC_STATUS_REJECTED;
        }
 
+       inv_dcache_range(src_addr, src_size); /* flush cache before mmio read to avoid reading old values */
        id_offset = src_addr + FCS_OWNER_ID_OFFSET;
        fcs_decrypt_ext_payload payload = {
                session_id,
@@ -822,6 +824,7 @@ int intel_fcs_get_crypto_service_key_info(uint32_t session_id, uint32_t key_id,
                                CMD_CASUAL, (uint32_t *) dst_addr, &resp_len);
 
        if (resp_len > 0) {
+               inv_dcache_range(dst_addr, (resp_len * MBOX_WORD_BYTE)); /* flush cache before mmio read to avoid reading old values */
                op_status = mmio_read_32(dst_addr) &
                        FCS_CS_KEY_RESP_STATUS_MASK;
        }