fsl_hash.c: Alignment problem when using caam_hash() for FIT images
Sean Anderson
sean.anderson at seco.com
Fri Apr 29 16:10:28 CEST 2022
Hi Stefan,
On 4/29/22 8:54 AM, Stefan Roese wrote:
> Hi,
>
> while working on an LX2160 based board and updating to latest mainline
> I noticed problems using the HW accelerated hash functions on this
> platform, when trying to boot a FIT Kernel image. Here the resulting
> error message:
>
> ## Loading kernel from FIT Image at a0000000 ...
> Using 'conf-freescale_lx2160a.dtb' configuration
> Trying 'kernel-1' kernel subimage
> Verifying Hash Integrity ... sha256Error: Address arguments are not aligned
> CAAM was not setup properly or it is faulty
> error!
> Bad hash value for 'hash-1' hash node in 'kernel-1' image node
> Bad Data Hash
> ERROR: can't get kernel image!
>
> And here the addresses, printed from caam_hash():
> caam_hash (171): pbuf=00000000a00000fc pout=00000000fbde6f80 buf_len=5291241 ARCH_DMA_MINALIGN=64
>
> pbuf points to an area in the FIT image itself. So its not easy
> to change this.
>
> In some quick tests I've dropped the alignment check and have not seen
> any problems yet. The hash is calculated without any problems and seems
> to be okay. I might be just lucky though, not sure.
>
> So my basic question is: Is this alignment really necessary and required
> for both addresses in this function?
>
> If yes, do you have some suggestions on how to handle this? Other than
> allocating new aligned buffers in caam_hash() and memcpy'ing to those
> new buffers instead. BTW, this is not a preferred solution for me, as
> boot-time is crucial for my platform.
Use -EB 0x40 when generating your image. This will use "external" data
(e.g. not within the dtb) which is aligned to 64 bytes.
--Sean
More information about the U-Boot
mailing list