[U-Boot] [PATCH v5 03/24] arm: imx: hab: Optimise flow of authenticate_image on is_enabled fail
Bryan O'Donoghue
bryan.odonoghue at linaro.org
Fri Jan 12 11:17:17 UTC 2018
On 11/01/18 19:34, Breno Matheus Lima wrote:
> 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.
So, at least on the MX7 - bootrom->authenticate_image() won't run unless
the board is in locked mode, I suspect that's the same behavior on the MX6.
> 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;
Right, what you want is for uboot->authenticate_image() to return zero
(OK) when the part is unlocked.
If this were the first time we were adding this code in, I'd say that
would be a crazy thing to do because
1. bootrom->authenticate_image() will return an error
2. uboot->authenticate_image() will not even call
bootrom->authenticate_image()
However since you already have a dependency on this behavior - I'll
respin this code ....
---
bod
More information about the U-Boot
mailing list