[U-Boot] [PATCH] imx: imx8: fix loading container image from eMMC boot partitions

Peng Fan peng.fan at nxp.com
Tue Oct 22 02:43:31 UTC 2019


Hi Anatolij,

> -----Original Message-----
> From: Anatolij Gustschin <agust at denx.de>
> Sent: 2019年10月21日 23:22
> To: u-boot at lists.denx.de
> Cc: sbabic at denx.de; festevam at gmail.com; dl-uboot-imx
> <uboot-imx at nxp.com>; Ye Li <ye.li at nxp.com>
> Subject: [PATCH] imx: imx8: fix loading container image from eMMC boot
> partitions
> 
> Booting with images in eMMC hardware boot partition doesn't work because
> the container header is loaded from user partition, thus the loaded data
> doesn't have a valid header. Add partition switching to support booting from
> eMMC boot partitions.

get_boot_device_offset already switched partition, there is no need to add
partition switch logic in get_container_size.

Regards,
Peng.

> 
> Signed-off-by: Anatolij Gustschin <agust at denx.de>
> ---
>  arch/arm/mach-imx/imx8/image.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-imx/imx8/image.c
> b/arch/arm/mach-imx/imx8/image.c index 58a29e8..b0e9494 100644
> --- a/arch/arm/mach-imx/imx8/image.c
> +++ b/arch/arm/mach-imx/imx8/image.c
> @@ -72,7 +72,20 @@ static int get_container_size(void *dev, int dev_type,
> unsigned long offset)
>  	if (dev_type == MMC_DEV) {
>  		unsigned long count = 0;
>  		struct mmc *mmc = (struct mmc *)dev;
> -
> +		u8 part;
> +
> +		part = EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config);
> +		if (part == 7)
> +			part = 0;
> +		if (part == 1 || part == 2) {
> +			if (CONFIG_IS_ENABLED(MMC_TINY))
> +				ret = mmc_switch_part(mmc, part);
> +			else
> +				ret = blk_dselect_hwpart(mmc_get_blk_desc(mmc),
> +							 part);
> +			if (ret)
> +				return ret;
> +		}
>  		count = blk_dread(mmc_get_blk_desc(mmc),
>  				  offset / mmc->read_bl_len,
>  				  CONTAINER_HDR_ALIGNMENT / mmc->read_bl_len,
> --
> 2.7.4



More information about the U-Boot mailing list