[PATCH] tools: pblimage: fix image header verification function
Pali Rohár
pali at kernel.org
Fri Feb 25 21:36:03 CET 2022
On Thursday 17 February 2022 11:51:36 Zhiqiang Hou wrote:
> From: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
>
> The Layerscape platforms have different RCW header value from FSL
> PowerPC platforms, the current image header verification callback
> is only working on PowerPC, it will fail on Layerscape, this patch
> is to fix this issue.
>
> This is a historical problem and exposed by the following patch:
> http://patchwork.ozlabs.org/project/uboot/patch/20220114173443.9877-1-pali@kernel.org
>
> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
Hello Tom! Could you look at this change? It should unblock applying my above patch.
> ---
> Makefile | 2 +-
> tools/pblimage.c | 10 ++++++++--
> tools/pblimage.h | 3 ++-
> 3 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 4b152249ca..3c2bc9741c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1410,7 +1410,7 @@ MKIMAGEFLAGS_u-boot-spl.kwb = -n $(KWD_CONFIG_FILE) \
> $(if $(KEYDIR),-k $(KEYDIR))
>
> MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
> - -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
> + -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -A $(ARCH) -T pblimage
>
> ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
> UBOOT_BIN := u-boot-with-dtb.bin
> diff --git a/tools/pblimage.c b/tools/pblimage.c
> index 3c823e96cf..bd639c276f 100644
> --- a/tools/pblimage.c
> +++ b/tools/pblimage.c
> @@ -230,19 +230,25 @@ static int pblimage_verify_header(unsigned char *ptr, int image_size,
> struct image_tool_params *params)
> {
> struct pbl_header *pbl_hdr = (struct pbl_header *) ptr;
> + uint32_t rcwheader;
> +
> + if (params->arch == IH_ARCH_ARM)
> + rcwheader = RCW_ARM_HEADER;
> + else
> + rcwheader = RCW_PPC_HEADER;
>
> /* Only a few checks can be done: search for magic numbers */
> if (ENDIANNESS == 'l') {
> if (pbl_hdr->preamble != reverse_byte(RCW_PREAMBLE))
> return -FDT_ERR_BADSTRUCTURE;
>
> - if (pbl_hdr->rcwheader != reverse_byte(RCW_HEADER))
> + if (pbl_hdr->rcwheader != reverse_byte(rcwheader))
> return -FDT_ERR_BADSTRUCTURE;
> } else {
> if (pbl_hdr->preamble != RCW_PREAMBLE)
> return -FDT_ERR_BADSTRUCTURE;
>
> - if (pbl_hdr->rcwheader != RCW_HEADER)
> + if (pbl_hdr->rcwheader != rcwheader)
> return -FDT_ERR_BADSTRUCTURE;
> }
> return 0;
> diff --git a/tools/pblimage.h b/tools/pblimage.h
> index 81c5492926..0222e8067b 100644
> --- a/tools/pblimage.h
> +++ b/tools/pblimage.h
> @@ -8,7 +8,8 @@
>
> #define RCW_BYTES 64
> #define RCW_PREAMBLE 0xaa55aa55
> -#define RCW_HEADER 0x010e0100
> +#define RCW_ARM_HEADER 0x01ee0100
> +#define RCW_PPC_HEADER 0x010e0100
>
> struct pbl_header {
> uint32_t preamble;
> --
> 2.25.1
>
More information about the U-Boot
mailing list