[U-Boot] [PATCH v5 03/24] arm: imx: hab: Optimise flow of authenticate_image on is_enabled fail
Breno Matheus Lima
brenomatheus at gmail.com
Thu Jan 11 19:34:45 UTC 2018
Hi Bryan,
2018-01-08 15:36 GMT-02:00 Bryan O'Donoghue <bryan.odonoghue at linaro.org>:
> There is no need to call is_enabled() twice in authenticate_image - it does
> nothing but add an additional layer of indentation.
>
> We can check for is_enabled() at the start of the function and return the
> result code directly.
>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue at linaro.org>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Fabio Estevam <fabio.estevam at nxp.com>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Albert Aribaud <albert.u.boot at aribaud.net>
> Cc: Sven Ebenfeld <sven.ebenfeld at gmail.com>
> Cc: George McCollister <george.mccollister at gmail.com>
> Cc: Breno Matheus Lima <brenomatheus at gmail.com>
> ---
> arch/arm/mach-imx/hab.c | 138 ++++++++++++++++++++++++------------------------
> 1 file changed, 69 insertions(+), 69 deletions(-)
>
> diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c
> index 9fe6d43..6f86c02 100644
> --- a/arch/arm/mach-imx/hab.c
> +++ b/arch/arm/mach-imx/hab.c
> @@ -428,91 +428,91 @@ int authenticate_image(uint32_t ddr_start, uint32_t image_size)
> hab_rvt_entry = hab_rvt_entry_p;
> hab_rvt_exit = hab_rvt_exit_p;
>
> - if (is_hab_enabled()) {
> - printf("\nAuthenticate image from DDR location 0x%x...\n",
> - ddr_start);
> + if (!is_hab_enabled()) {
> + puts("hab fuse not enabled\n");
> + return result;
> + }
Just another comment in your series, I was working on an open i.MX6UL
EVK and noticed that we may have problem with SPL boards in open mode:
U-Boot SPL 2018.01-rc3-39088-g59b5c4e (Jan 11 2018 - 16:32:52)
Trying to boot from MMC1
hab fuse not enabled
spl: ERROR: image authentication unsuccessful
### ERROR ### Please RESET the board ###
The imx_hab_authenticate_image() is returning an authentication
failure in this case and we cannot boot u-boot-ivt.img. In this way is
not possible to run hab_status before closing the device.
I think the following fix this issue:
--- a/arch/arm/mach-imx/hab.c
+++ b/arch/arm/mach-imx/hab.c
@@ -492,7 +492,7 @@ int imx_hab_authenticate_image(uint32_t ddr_start,
uint32_t image_size,
if (!imx_hab_is_enabled()) {
puts("hab fuse not enabled\n");
- return result;
+ goto hab_exit;
}
printf("\nAuthenticate image from DDR location 0x%x...\n",
@@ -594,7 +594,8 @@ hab_exit_failure_print_status:
hab_caam_clock_disable:
hab_caam_clock_enable(0);
- if (load_addr != 0)
+hab_exit:
+ if (load_addr != 0 || (!imx_hab_is_enabled()))
result = 0;
Can you please check if is possible to add this on your series? If is
too late I can submit a patch.
Thanks,
Breno Lima
More information about the U-Boot
mailing list