[U-Boot] [PATCH 1/2] spl: Fix redundant image of uboot
Michael Nazzareno Trimarchi
michael at amarulasolutions.com
Wed Jul 4 14:27:02 UTC 2018
Hi
On Wed, Jul 4, 2018 at 4:19 PM, Lothar Waßmann <LW at karo-electronics.de> wrote:
> Hi,
>
> On Wed, 4 Jul 2018 15:53:36 +0200 Michael Trimarchi wrote:
>> We need to address the redundat image case and undestand if the
>> image is corrupted or not and fallback to the copy. The function
>> used before was always return 0 without any evaluation of the
>> error. We try to make it work properly
>>
>> Change-Id: Id6fc221c5cc08934b7324dd5d319b93c56e2e678
>> Signed-off-by: Michael Trimarchi <michael at amarulasolutions.com>
>> ---
>> common/spl/spl_nand.c | 34 +++++++++++++++++++++++++---------
>> 1 file changed, 25 insertions(+), 9 deletions(-)
>>
>> diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
>> index 9a52500..b96fce2 100644
>> --- a/common/spl/spl_nand.c
>> +++ b/common/spl/spl_nand.c
>> @@ -44,9 +44,7 @@ static int spl_nand_load_element(struct spl_image_info *spl_image,
>> {
>> int err;
>>
>> - err = nand_spl_load_image(offset, sizeof(*header), (void *)header);
>> - if (err)
>> - return err;
>> + nand_spl_load_image(offset, sizeof(*header), (void *)header);
>>
>> if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
>> image_get_magic(header) == FDT_MAGIC) {
>> @@ -59,13 +57,31 @@ static int spl_nand_load_element(struct spl_image_info *spl_image,
>> load.bl_len = 1;
>> load.read = spl_nand_fit_read;
>> return spl_load_simple_fit(spl_image, &load, offset, header);
>> - } else {
>> - err = spl_parse_image_header(spl_image, header);
>> - if (err)
>> - return err;
>> - return nand_spl_load_image(offset, spl_image->size,
>> - (void *)(ulong)spl_image->load_addr);
>> }
>> + err = spl_parse_image_header(spl_image, header);
>> + if (err)
>> + return err;
>> +
>> + nand_spl_load_image(offset, spl_image->size,
>> + (void *)(ulong)spl_image->load_addr);
>> +
>> + /*
>> + * Logic of the error is inverted for image_check* functions.
>> + * We want to verify that header is correct and the data are correct
>> + * for LEGACY image type
>> + */
>> + err = image_check_hcrc((const image_header_t *)spl_image->load_addr);
>> + if (!err) {
>>
> Why not simply:
> if (!image_check_hcrc(...) {
>> + debug("Header checksum failed\n");
>> + return -EINVAL;
>> + }
>> + err = image_check_dcrc((const image_header_t *)spl_image->load_addr);
>> + if (!err) {
>>
> dto.
Just because I want to be in the style of this file ;)
Michael
>
>> + debug("Image checksum failed\n");
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> }
>>
>> static int spl_nand_load_image(struct spl_image_info *spl_image,
>
>
> Lothar Waßmann
--
| Michael Nazzareno Trimarchi Amarula Solutions BV |
| COO - Founder Cruquiuskade 47 |
| +31(0)851119172 Amsterdam 1018 AM NL |
| [`as] http://www.amarulasolutions.com |
More information about the U-Boot
mailing list