Hi Peng, On Fri, 28 Feb 2025 12:17:56 +0800 Peng Fan <[email protected]> wrote:
> Hi Benjamin, > > On Fri, Feb 21, 2025 at 08:05:01AM +0100, [email protected] wrote: > >From: Benjamin Lemouzy <[email protected]> > > > >Loading a FIT kernel image with hash hardware acceleration enabled > >(CONFIG_SHA_HW_ACCEL=y) displays the following CACHE warning: > > Sorry for my lazyness, the following patch should be able to solve > your issue. I will prepare a PR soon. > https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/ I just tested the suggested patch and it's not working: ## Loading kernel from FIT Image at 16000000 ... Using 'conf-imx6q-xxx.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Type: Kernel Image Compression: uncompressed Data Start: 0x16000128 Data Size: 7600544 Bytes = 7.2 MiB Architecture: ARM OS: Linux Load Address: 0x10008000 Entry Point: 0x10008000 Hash algo: sha256 Hash value: a664f6c4d4ac97e2d867b8ee4f38cf934a48f99c65f19f824162b7ca077cb0d9 Verifying Hash Integrity ... sha256+ OK ## Loading ramdisk from FIT Image at 16000000 ... Using 'conf-imx6q-xxx.dtb' configuration Trying 'ramdisk-1' ramdisk subimage Description: ctp-image-base-initramfs Type: RAMDisk Image Compression: uncompressed Data Start: 0x1676d6d4 Data Size: 12635898 Bytes = 12.1 MiB Architecture: ARM OS: Linux Load Address: 0x13000000 Entry Point: unavailable Hash algo: sha256 Hash value: e1fe9087261f33679b95cd82b387317fa31b58f6365406fad1df1f27d46923e9 Verifying Hash Integrity ... sha256CAAM was not setup properly or it is faulty error! Bad hash value for 'hash-1' hash node in 'ramdisk-1' image node Bad Data Hash Ramdisk image is corrupt or invalid Benjamin > Thanks, > Peng > > > > [...] > > Trying 'kernel-1' kernel subimage > > [...] > > Verifying Hash Integrity ... sha256CACHE: Misaligned operation at > >range [16000128, 1673fae8] > > [...] > > Trying 'ramdisk-1' ramdisk subimage > > [...] > > Verifying Hash Integrity ... sha256CACHE: Misaligned operation at > >range [1676d6d4, 1737a5d4] > > [...] > > Trying 'fdt-imx6q-xxx.dtb' fdt subimage > > [...] > > Verifying Hash Integrity ... sha256CACHE: Misaligned operation at > >range [1673fbdc, 1674b0dc] > > [...] > > > >This patch fixes it. > > > >Tested on: > >- i.MX 6 custom board > >- LS1021A custom board > > > >Signed-off-by: Benjamin Lemouzy <[email protected]> > >--- > > drivers/crypto/fsl/fsl_hash.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > >diff --git a/drivers/crypto/fsl/fsl_hash.c > >b/drivers/crypto/fsl/fsl_hash.c index 79b32e2627..b721c86609 100644 > >--- a/drivers/crypto/fsl/fsl_hash.c > >+++ b/drivers/crypto/fsl/fsl_hash.c > >@@ -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, > >-- > >2.43.0 > >

