summaryrefslogtreecommitdiff
path: root/plat/arm/css/common/css_scp_bootloader.c
diff options
context:
space:
mode:
authordanh-arm <dan.handley@arm.com>2016-02-18 18:36:00 +0000
committerdanh-arm <dan.handley@arm.com>2016-02-18 18:36:00 +0000
commit85df7e44ce3974e2c78d99e6ea31f047de6de445 (patch)
tree7c7c7583d24faf59bd66adc827ba7dd789877de0 /plat/arm/css/common/css_scp_bootloader.c
parent879599076e80c98c3d76b2c0c1efb6136a2f86b4 (diff)
parent74eb26e4098d0a1f5c6ef49c1355e99d80027f36 (diff)
Merge pull request #523 from jcastillo-arm/jc/genfw-791
ARM platforms: rationalise memory attributes of shared memory
Diffstat (limited to 'plat/arm/css/common/css_scp_bootloader.c')
-rw-r--r--plat/arm/css/common/css_scp_bootloader.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/plat/arm/css/common/css_scp_bootloader.c b/plat/arm/css/common/css_scp_bootloader.c
index 8bfaa87c..d3f671e2 100644
--- a/plat/arm/css/common/css_scp_bootloader.c
+++ b/plat/arm/css/common/css_scp_bootloader.c
@@ -77,10 +77,10 @@ static void scp_boot_message_start(void)
static void scp_boot_message_send(size_t payload_size)
{
- /* Make sure payload can be seen by SCP */
- if (MHU_PAYLOAD_CACHED)
- flush_dcache_range(BOM_SHARED_MEM,
- sizeof(bom_cmd_t) + payload_size);
+ /* Ensure that any write to the BOM payload area is seen by SCP before
+ * we write to the MHU register. If these 2 writes were reordered by
+ * the CPU then SCP would read stale payload data */
+ dmbst();
/* Send command to SCP */
mhu_secure_message_send(BOM_MHU_SLOT_ID);
@@ -99,9 +99,10 @@ static uint32_t scp_boot_message_wait(size_t size)
panic();
}
- /* Make sure we see the reply from the SCP and not any stale data */
- if (MHU_PAYLOAD_CACHED)
- inv_dcache_range(BOM_SHARED_MEM, size);
+ /* Ensure that any read to the BOM payload area is done after reading
+ * the MHU register. If these 2 reads were reordered then the CPU would
+ * read invalid payload data */
+ dmbld();
return *(uint32_t *) BOM_SHARED_MEM;
}