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