Re: [U-Boot] [PATCH 1/3] SPL: Let spl_parse_image_header() return value

2016-05-23 Thread Suman Anna
On 05/20/2016 07:22 PM, Fabio Estevam wrote:
> On Fri, May 20, 2016 at 6:56 PM, Nishanth Menon  wrote:
>> Marek,
>>
>> Just forwarding report from Suman (in CC) reporting that as of u-boot
>> master 4b6e1fd "Merge git://git.denx.de/u-boot-dm"
>> It looks like BeagleBoard-X15, DRA7 platforms fail due to this commit.
>> Fail signature looks like the following:
>> ...
>> DRA752 ES2.0
>> Trying to boot from MMC1
>> reading args
>> spl_load_image_fat_os: error reading image args, err - -1
>> reading u-boot.img
>> spl_load_image_fat: error reading image u-boot.img, err - 0
>> Failed to mount ext2 filesystem...
>> spl_load_image_ext_os: ext4fs mount err - 0
>> Failed to mount ext2 filesystem...
>> spl_load_image_ext: ext4fs mount err - 0
> 
> Looks like this can be fixed with this patch from Marek:
> https://patchwork.ozlabs.org/patch/624267/

Thanks Fabio for pointing out the fix. I have verified that this patch
fixes the boot on both the above platforms.

regards
Suman

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/3] SPL: Let spl_parse_image_header() return value

2016-05-20 Thread Fabio Estevam
On Fri, May 20, 2016 at 6:56 PM, Nishanth Menon  wrote:
> Marek,
>
> Just forwarding report from Suman (in CC) reporting that as of u-boot
> master 4b6e1fd "Merge git://git.denx.de/u-boot-dm"
> It looks like BeagleBoard-X15, DRA7 platforms fail due to this commit.
> Fail signature looks like the following:
> ...
> DRA752 ES2.0
> Trying to boot from MMC1
> reading args
> spl_load_image_fat_os: error reading image args, err - -1
> reading u-boot.img
> spl_load_image_fat: error reading image u-boot.img, err - 0
> Failed to mount ext2 filesystem...
> spl_load_image_ext_os: ext4fs mount err - 0
> Failed to mount ext2 filesystem...
> spl_load_image_ext: ext4fs mount err - 0

Looks like this can be fixed with this patch from Marek:
https://patchwork.ozlabs.org/patch/624267/
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/3] SPL: Let spl_parse_image_header() return value

2016-05-20 Thread Nishanth Menon
Marek,

Just forwarding report from Suman (in CC) reporting that as of u-boot
master 4b6e1fd "Merge git://git.denx.de/u-boot-dm"
It looks like BeagleBoard-X15, DRA7 platforms fail due to this commit.
Fail signature looks like the following:
...
DRA752 ES2.0
Trying to boot from MMC1
reading args
spl_load_image_fat_os: error reading image args, err - -1
reading u-boot.img
spl_load_image_fat: error reading image u-boot.img, err - 0
Failed to mount ext2 filesystem...
spl_load_image_ext_os: ext4fs mount err - 0
Failed to mount ext2 filesystem...
spl_load_image_ext: ext4fs mount err - 0

...

On Thu, Apr 28, 2016 at 5:44 PM, Marek Vasut  wrote:
> Allow the spl_parse_image_header() to return value. This is convenient
> for controlling the SPL boot flow if the loaded image is corrupted.
>
> Signed-off-by: Marek Vasut 
> Cc: Fabio Estevam 
> Cc: Peng Fan 
> Cc: Stefano Babic 
> Cc: Tom Rini 
> ---
>  common/spl/spl.c   |  3 ++-
>  common/spl/spl_ext.c   |  6 +-
>  common/spl/spl_fat.c   |  4 +++-
>  common/spl/spl_mmc.c   |  6 +-
>  common/spl/spl_nand.c  |  9 +++--
>  common/spl/spl_net.c   |  4 +---
>  common/spl/spl_nor.c   |  9 +++--
>  common/spl/spl_onenand.c   |  5 -
>  common/spl/spl_ymodem.c|  7 +--
>  drivers/mtd/spi/spi_spl_load.c | 10 --
>  include/spl.h  |  2 +-
>  11 files changed, 48 insertions(+), 17 deletions(-)
>
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index 82e7f58..7259619 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -73,7 +73,7 @@ void spl_set_header_raw_uboot(void)
> spl_image.name = "U-Boot";
>  }
>
> -void spl_parse_image_header(const struct image_header *header)
> +int spl_parse_image_header(const struct image_header *header)
>  {
> u32 header_size = sizeof(struct image_header);
>
> @@ -118,6 +118,7 @@ void spl_parse_image_header(const struct image_header 
> *header)
> spl_set_header_raw_uboot();
>  #endif
> }
> +   return 0;
>  }
>
>  __weak void __noreturn jump_to_image_no_args(struct spl_image_info 
> *spl_image)
> diff --git a/common/spl/spl_ext.c b/common/spl/spl_ext.c
> index b77dbf4..ade5496 100644
> --- a/common/spl/spl_ext.c
> +++ b/common/spl/spl_ext.c
> @@ -48,7 +48,11 @@ int spl_load_image_ext(struct blk_desc *block_dev,
> goto end;
> }
>
> -   spl_parse_image_header(header);
> +   err = spl_parse_image_header(header);
> +   if (err < 0) {
> +   puts("spl: ext4fs_read failed\n");
> +   goto end;
> +   }
>
> err = ext4fs_read((char *)spl_image.load_addr, filelen, &actlen);
>
> diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c
> index d761b26..338ea2f 100644
> --- a/common/spl/spl_fat.c
> +++ b/common/spl/spl_fat.c
> @@ -57,7 +57,9 @@ int spl_load_image_fat(struct blk_desc *block_dev,
> if (err <= 0)
> goto end;
>
> -   spl_parse_image_header(header);
> +   err = spl_parse_image_header(header);
> +   if (err <= 0)
> +   goto end;
>
> err = file_fat_read(filename, (u8 *)spl_image.load_addr, 0);
>
> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> index 8d588d1..360c754 100644
> --- a/common/spl/spl_mmc.c
> +++ b/common/spl/spl_mmc.c
> @@ -23,8 +23,12 @@ static int mmc_load_legacy(struct mmc *mmc, ulong sector,
>  {
> u32 image_size_sectors;
> unsigned long count;
> +   int ret;
> +
> +   ret = spl_parse_image_header(header);
> +   if (ret)
> +   return ret;
>
> -   spl_parse_image_header(header);
> /* convert size to sectors - round up */
> image_size_sectors = (spl_image.size + mmc->read_bl_len - 1) /
>  mmc->read_bl_len;
> diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
> index 79388ff..bbd9546 100644
> --- a/common/spl/spl_nand.c
> +++ b/common/spl/spl_nand.c
> @@ -32,7 +32,10 @@ static int spl_nand_load_element(int offset, struct 
> image_header *header)
> if (err)
> return err;
>
> -   spl_parse_image_header(header);
> +   err = spl_parse_image_header(header);
> +   if (err)
> +   return err;
> +
> return nand_spl_load_image(offset, spl_image.size,
>(void *)(unsigned 
> long)spl_image.load_addr);
>  }
> @@ -77,7 +80,9 @@ int spl_nand_load_image(void)
> /* load linux */
> nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS,
> sizeof(*header), (void *)header);
> -   spl_parse_image_header(header);
> +   err = spl_parse_image_header(header);
> +   if (err)
> +   return err;
> if (header->ih_os == IH_OS_LINUX) {
> /* happy - was a linux */
> err = nand_spl_load_image(
> diff --git a/commo

[U-Boot] [PATCH 1/3] SPL: Let spl_parse_image_header() return value

2016-04-28 Thread Marek Vasut
Allow the spl_parse_image_header() to return value. This is convenient
for controlling the SPL boot flow if the loaded image is corrupted.

Signed-off-by: Marek Vasut 
Cc: Fabio Estevam 
Cc: Peng Fan 
Cc: Stefano Babic 
Cc: Tom Rini 
---
 common/spl/spl.c   |  3 ++-
 common/spl/spl_ext.c   |  6 +-
 common/spl/spl_fat.c   |  4 +++-
 common/spl/spl_mmc.c   |  6 +-
 common/spl/spl_nand.c  |  9 +++--
 common/spl/spl_net.c   |  4 +---
 common/spl/spl_nor.c   |  9 +++--
 common/spl/spl_onenand.c   |  5 -
 common/spl/spl_ymodem.c|  7 +--
 drivers/mtd/spi/spi_spl_load.c | 10 --
 include/spl.h  |  2 +-
 11 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/common/spl/spl.c b/common/spl/spl.c
index 82e7f58..7259619 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -73,7 +73,7 @@ void spl_set_header_raw_uboot(void)
spl_image.name = "U-Boot";
 }
 
-void spl_parse_image_header(const struct image_header *header)
+int spl_parse_image_header(const struct image_header *header)
 {
u32 header_size = sizeof(struct image_header);
 
@@ -118,6 +118,7 @@ void spl_parse_image_header(const struct image_header 
*header)
spl_set_header_raw_uboot();
 #endif
}
+   return 0;
 }
 
 __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
diff --git a/common/spl/spl_ext.c b/common/spl/spl_ext.c
index b77dbf4..ade5496 100644
--- a/common/spl/spl_ext.c
+++ b/common/spl/spl_ext.c
@@ -48,7 +48,11 @@ int spl_load_image_ext(struct blk_desc *block_dev,
goto end;
}
 
-   spl_parse_image_header(header);
+   err = spl_parse_image_header(header);
+   if (err < 0) {
+   puts("spl: ext4fs_read failed\n");
+   goto end;
+   }
 
err = ext4fs_read((char *)spl_image.load_addr, filelen, &actlen);
 
diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c
index d761b26..338ea2f 100644
--- a/common/spl/spl_fat.c
+++ b/common/spl/spl_fat.c
@@ -57,7 +57,9 @@ int spl_load_image_fat(struct blk_desc *block_dev,
if (err <= 0)
goto end;
 
-   spl_parse_image_header(header);
+   err = spl_parse_image_header(header);
+   if (err <= 0)
+   goto end;
 
err = file_fat_read(filename, (u8 *)spl_image.load_addr, 0);
 
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 8d588d1..360c754 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -23,8 +23,12 @@ static int mmc_load_legacy(struct mmc *mmc, ulong sector,
 {
u32 image_size_sectors;
unsigned long count;
+   int ret;
+
+   ret = spl_parse_image_header(header);
+   if (ret)
+   return ret;
 
-   spl_parse_image_header(header);
/* convert size to sectors - round up */
image_size_sectors = (spl_image.size + mmc->read_bl_len - 1) /
 mmc->read_bl_len;
diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
index 79388ff..bbd9546 100644
--- a/common/spl/spl_nand.c
+++ b/common/spl/spl_nand.c
@@ -32,7 +32,10 @@ static int spl_nand_load_element(int offset, struct 
image_header *header)
if (err)
return err;
 
-   spl_parse_image_header(header);
+   err = spl_parse_image_header(header);
+   if (err)
+   return err;
+
return nand_spl_load_image(offset, spl_image.size,
   (void *)(unsigned long)spl_image.load_addr);
 }
@@ -77,7 +80,9 @@ int spl_nand_load_image(void)
/* load linux */
nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS,
sizeof(*header), (void *)header);
-   spl_parse_image_header(header);
+   err = spl_parse_image_header(header);
+   if (err)
+   return err;
if (header->ih_os == IH_OS_LINUX) {
/* happy - was a linux */
err = nand_spl_load_image(
diff --git a/common/spl/spl_net.c b/common/spl/spl_net.c
index 63b20d8..ae71d26 100644
--- a/common/spl/spl_net.c
+++ b/common/spl/spl_net.c
@@ -34,7 +34,5 @@ int spl_net_load_image(const char *device)
printf("Problem booting with BOOTP\n");
return rv;
}
-   spl_parse_image_header((struct image_header *)load_addr);
-
-   return 0;
+   return spl_parse_image_header((struct image_header *)load_addr);
 }
diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
index d0bd0b0..da2422f 100644
--- a/common/spl/spl_nor.c
+++ b/common/spl/spl_nor.c
@@ -9,6 +9,7 @@
 
 int spl_nor_load_image(void)
 {
+   int ret;
/*
 * Loading of the payload to SDRAM is done with skipping of
 * the mkimage header in this SPL NOR driver
@@ -28,7 +29,9 @@ int spl_nor_load_image(void)
if (image_get_os(header) == IH_O