]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
crypto: fsl_hash: fix flush dcache alignment in caam_hash()
authorBenjamin Lemouzy <blemouzy@centralp.fr>
Fri, 21 Feb 2025 07:05:01 +0000 (08:05 +0100)
committerPeng Fan <peng.fan@nxp.com>
Mon, 3 Mar 2025 06:18:50 +0000 (14:18 +0800)
Loading a FIT kernel image with hash hardware acceleration enabled
(CONFIG_SHA_HW_ACCEL=y) displays the following CACHE warning:

    [...]
    Trying 'kernel-1' kernel subimage
    [...]
    Verifying Hash Integrity ... sha256CACHE: Misaligned operation at
range [160001281673fae8]
    [...]
    Trying 'ramdisk-1' ramdisk subimage
    [...]
    Verifying Hash Integrity ... sha256CACHE: Misaligned operation at
range [1676d6d41737a5d4]
    [...]
    Trying 'fdt-imx6q-xxx.dtb' fdt subimage
    [...]
    Verifying Hash Integrity ... sha256CACHE: Misaligned operation at
range [1673fbdc1674b0dc]
    [...]

This patch fixes it.

Tested on:
- i.MX 6 custom board
- LS1021A custom board

Signed-off-by: Benjamin Lemouzy <blemouzy@centralp.fr>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/crypto/fsl/fsl_hash.c

index 79b32e2627c4579816a036efaea2adaff2c939f8..b721c866095b7fa504d8f313f65c5ce7e58b619a 100644 (file)
@@ -183,6 +183,7 @@ int caam_hash(const unsigned char *pbuf, unsigned int buf_len,
 {
        int ret = 0;
        uint32_t *desc;
+       unsigned long pbuf_aligned;
        unsigned int size;
 
        desc = malloc_cache_aligned(sizeof(int) * MAX_CAAM_DESCSIZE);
@@ -191,8 +192,9 @@ int caam_hash(const unsigned char *pbuf, unsigned int buf_len,
                return -ENOMEM;
        }
 
-       size = ALIGN(buf_len, ARCH_DMA_MINALIGN);
-       flush_dcache_range((unsigned long)pbuf, (unsigned long)pbuf + size);
+       pbuf_aligned = ALIGN_DOWN((unsigned long)pbuf, ARCH_DMA_MINALIGN);
+       size = ALIGN(buf_len + ((unsigned long)pbuf - pbuf_aligned), ARCH_DMA_MINALIGN);
+       flush_dcache_range(pbuf_aligned, pbuf_aligned + size);
 
        inline_cnstr_jobdesc_hash(desc, pbuf, buf_len, pout,
                                  driver_hash[algo].alg_type,