]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
crypto: fsl: blob: Flush dcache range for destination address
authorBreno Lima <breno.lima@nxp.com>
Thu, 25 Mar 2021 09:30:16 +0000 (17:30 +0800)
committerStefano Babic <sbabic@denx.de>
Thu, 8 Apr 2021 07:18:29 +0000 (09:18 +0200)
The blob command is not working on i.MX7D, i.MX8MQ and i.MX8MM
devices.

Due to different cache management it's necessary to flush dcache
range for destination address so data can be available in memory.

Add necessary operations in blob_encap() and blob_decap() functions.

Signed-off-by: Breno Lima <breno.lima@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/crypto/fsl/fsl_blob.c

index d6bd861251e0464e834ec5344d139b5e288ea713..e8202cc569737dd756ef3d3ef2a72239042bd658 100644 (file)
@@ -65,6 +65,9 @@ int blob_decap(u8 *key_mod, u8 *src, u8 *dst, u32 len)
        flush_dcache_range((unsigned long)desc,
                           (unsigned long)desc + size);
 
+       flush_dcache_range((unsigned long)dst,
+                          (unsigned long)dst + size);
+
        ret = run_descriptor_jr(desc);
 
        if (ret) {
@@ -130,6 +133,9 @@ int blob_encap(u8 *key_mod, u8 *src, u8 *dst, u32 len)
        flush_dcache_range((unsigned long)desc,
                           (unsigned long)desc + size);
 
+       flush_dcache_range((unsigned long)dst,
+                          (unsigned long)dst + size);
+
        ret = run_descriptor_jr(desc);
 
        if (ret) {