public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
@ 2010-10-08  8:03 Stefano Babic
  2010-10-08 11:04 ` Sergei Shtylyov
  2010-10-08 13:39 ` Steve Sakoman
  0 siblings, 2 replies; 9+ messages in thread
From: Stefano Babic @ 2010-10-08  8:03 UTC (permalink / raw)
  To: u-boot

mmc_initialize is not called at the startup if the
relocation takes place and the environment is stored
into a MMC card.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 arch/arm/lib/board.c |   10 +++++-----
 common/env_mmc.c     |   11 +++++------
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
index 5f2dfd0..704ddcb 100644
--- a/arch/arm/lib/board.c
+++ b/arch/arm/lib/board.c
@@ -775,6 +775,11 @@ void board_init_r (gd_t *id, ulong dest_addr)
 	nand_init();		/* go init the NAND */
 #endif
 
+#ifdef CONFIG_GENERIC_MMC
+	puts ("MMC:   ");
+	mmc_initialize (bd);
+#endif
+
 #if defined(CONFIG_CMD_ONENAND)
 	onenand_init();
 #endif
@@ -854,11 +859,6 @@ extern void davinci_eth_set_mac_addr (const u_int8_t *addr);
 	board_late_init ();
 #endif
 
-#ifdef CONFIG_GENERIC_MMC
-	puts ("MMC:   ");
-	mmc_initialize (gd->bd);
-#endif
-
 #ifdef CONFIG_BITBANGMII
 	bb_miiphy_init();
 #endif
diff --git a/common/env_mmc.c b/common/env_mmc.c
index 14203b6..cb7c448 100644
--- a/common/env_mmc.c
+++ b/common/env_mmc.c
@@ -130,24 +130,23 @@ void env_relocate_spec(void)
 {
 #if !defined(ENV_IS_EMBEDDED)
 	struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
+	char buf[CONFIG_ENV_SIZE];
 
 	if (init_mmc_for_env(mmc))
 		return;
 
-	if (read_env(mmc, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, env_ptr))
-		return use_default();
-
-	if (crc32(0, env_ptr->data, ENV_SIZE) != env_ptr->crc)
+	if (read_env(mmc, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, buf))
 		return use_default();
 
 	gd->env_valid = 1;
+
+	env_import(buf, 1);
 #endif
 }
 
 #if !defined(ENV_IS_EMBEDDED)
 static void use_default()
 {
-	puts ("*** Warning - bad CRC or MMC, using default environment\n\n");
-	set_default_env();
+	set_default_env("*** Warning - bad CRC or MMC, using default environment\n\n");
 }
 #endif
-- 
1.6.3.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08  8:03 [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c Stefano Babic
@ 2010-10-08 11:04 ` Sergei Shtylyov
  2010-10-08 11:26   ` Stefano Babic
  2010-10-08 13:39 ` Steve Sakoman
  1 sibling, 1 reply; 9+ messages in thread
From: Sergei Shtylyov @ 2010-10-08 11:04 UTC (permalink / raw)
  To: u-boot

Hello.

On 08-10-2010 12:03, Stefano Babic wrote:

> mmc_initialize is not called at the startup if the
> relocation takes place and the environment is stored
> into a MMC card.

> Signed-off-by: Stefano Babic<sbabic@denx.de>
[...]

> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> index 5f2dfd0..704ddcb 100644
> --- a/arch/arm/lib/board.c
> +++ b/arch/arm/lib/board.c
> @@ -775,6 +775,11 @@ void board_init_r (gd_t *id, ulong dest_addr)
>   	nand_init();		/* go init the NAND */
>   #endif
>
> +#ifdef CONFIG_GENERIC_MMC
> +	puts ("MMC:   ");
> +	mmc_initialize (bd);

    This wouldn't pass checkpatch.pl. Spaces before ( are not allowed.

WBR, Sergei

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08 11:04 ` Sergei Shtylyov
@ 2010-10-08 11:26   ` Stefano Babic
  0 siblings, 0 replies; 9+ messages in thread
From: Stefano Babic @ 2010-10-08 11:26 UTC (permalink / raw)
  To: u-boot

Sergei Shtylyov wrote:
> Hello.
> 

Hello Sergei,

>    This wouldn't pass checkpatch.pl. Spaces before ( are not allowed.

Agree, thanks. I will wait until Steve's feedback to understand if the
problem is really solved.

Best regards,
Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08  8:03 [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c Stefano Babic
  2010-10-08 11:04 ` Sergei Shtylyov
@ 2010-10-08 13:39 ` Steve Sakoman
  2010-10-08 13:42   ` Steve Sakoman
  2010-10-08 16:03   ` Stefano Babic
  1 sibling, 2 replies; 9+ messages in thread
From: Steve Sakoman @ 2010-10-08 13:39 UTC (permalink / raw)
  To: u-boot

On Fri, Oct 8, 2010 at 1:03 AM, Stefano Babic <sbabic@denx.de> wrote:
> mmc_initialize is not called at the startup if the
> relocation takes place and the environment is stored
> into a MMC card.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> ---
> ?arch/arm/lib/board.c | ? 10 +++++-----
> ?common/env_mmc.c ? ? | ? 11 +++++------
> ?2 files changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> index 5f2dfd0..704ddcb 100644
> --- a/arch/arm/lib/board.c
> +++ b/arch/arm/lib/board.c
> @@ -775,6 +775,11 @@ void board_init_r (gd_t *id, ulong dest_addr)
> ? ? ? ?nand_init(); ? ? ? ? ? ?/* go init the NAND */
> ?#endif
>
> +#ifdef CONFIG_GENERIC_MMC
> + ? ? ? puts ("MMC: ? ");
> + ? ? ? mmc_initialize (bd);
> +#endif
> +
> ?#if defined(CONFIG_CMD_ONENAND)
> ? ? ? ?onenand_init();
> ?#endif
> @@ -854,11 +859,6 @@ extern void davinci_eth_set_mac_addr (const u_int8_t *addr);
> ? ? ? ?board_late_init ();
> ?#endif
>
> -#ifdef CONFIG_GENERIC_MMC
> - ? ? ? puts ("MMC: ? ");
> - ? ? ? mmc_initialize (gd->bd);
> -#endif
> -
> ?#ifdef CONFIG_BITBANGMII
> ? ? ? ?bb_miiphy_init();
> ?#endif

I think it might make more sense to put the MMC ifdef after the
onenand code so that it doesn't split the nand/onenand grouping.
Otherwise it matches what I did.

> diff --git a/common/env_mmc.c b/common/env_mmc.c
> index 14203b6..cb7c448 100644
> --- a/common/env_mmc.c
> +++ b/common/env_mmc.c
> @@ -130,24 +130,23 @@ void env_relocate_spec(void)
> ?{
> ?#if !defined(ENV_IS_EMBEDDED)
> ? ? ? ?struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
> + ? ? ? char buf[CONFIG_ENV_SIZE];
>
> ? ? ? ?if (init_mmc_for_env(mmc))
> ? ? ? ? ? ? ? ?return;
>
> - ? ? ? if (read_env(mmc, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, env_ptr))
> - ? ? ? ? ? ? ? return use_default();
> -
> - ? ? ? if (crc32(0, env_ptr->data, ENV_SIZE) != env_ptr->crc)
> + ? ? ? if (read_env(mmc, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, buf))
> ? ? ? ? ? ? ? ?return use_default();

This is a void function and shouldn't have a return value.  I fixed
this in my version.

>
> ? ? ? ?gd->env_valid = 1;

I removed this in my version, probably an error to do that though :-)

> +
> + ? ? ? env_import(buf, 1);
> ?#endif
> ?}
>
> ?#if !defined(ENV_IS_EMBEDDED)
> ?static void use_default()
> ?{
> - ? ? ? puts ("*** Warning - bad CRC or MMC, using default environment\n\n");
> - ? ? ? set_default_env();
> + ? ? ? set_default_env("*** Warning - bad CRC or MMC, using default environment\n\n");

I previously submitted a patch to fix this and Wolfgang sent an email
saying that it had been applied.

> ?}
> ?#endif
> --
> 1.6.3.3
>
>

I'll revise my patch to add the missing gd->env_valid = 1; and re-test.

Steve

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08 13:39 ` Steve Sakoman
@ 2010-10-08 13:42   ` Steve Sakoman
  2010-10-08 16:05     ` Stefano Babic
  2010-10-08 16:03   ` Stefano Babic
  1 sibling, 1 reply; 9+ messages in thread
From: Steve Sakoman @ 2010-10-08 13:42 UTC (permalink / raw)
  To: u-boot

On Fri, Oct 8, 2010 at 6:39 AM, Steve Sakoman <sakoman@gmail.com> wrote:
> On Fri, Oct 8, 2010 at 1:03 AM, Stefano Babic <sbabic@denx.de> wrote:
>> mmc_initialize is not called at the startup if the
>> relocation takes place and the environment is stored
>> into a MMC card.
>>
>> Signed-off-by: Stefano Babic <sbabic@denx.de>
>> ---
>> ?arch/arm/lib/board.c | ? 10 +++++-----
>> ?common/env_mmc.c ? ? | ? 11 +++++------
>> ?2 files changed, 10 insertions(+), 11 deletions(-)
>>
>> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
>> index 5f2dfd0..704ddcb 100644
>> --- a/arch/arm/lib/board.c
>> +++ b/arch/arm/lib/board.c
>> @@ -775,6 +775,11 @@ void board_init_r (gd_t *id, ulong dest_addr)
>> ? ? ? ?nand_init(); ? ? ? ? ? ?/* go init the NAND */
>> ?#endif
>>
>> +#ifdef CONFIG_GENERIC_MMC
>> + ? ? ? puts ("MMC: ? ");
>> + ? ? ? mmc_initialize (bd);
>> +#endif
>> +
>> ?#if defined(CONFIG_CMD_ONENAND)
>> ? ? ? ?onenand_init();
>> ?#endif
>> @@ -854,11 +859,6 @@ extern void davinci_eth_set_mac_addr (const u_int8_t *addr);
>> ? ? ? ?board_late_init ();
>> ?#endif
>>
>> -#ifdef CONFIG_GENERIC_MMC
>> - ? ? ? puts ("MMC: ? ");
>> - ? ? ? mmc_initialize (gd->bd);
>> -#endif
>> -
>> ?#ifdef CONFIG_BITBANGMII
>> ? ? ? ?bb_miiphy_init();
>> ?#endif
>
> I think it might make more sense to put the MMC ifdef after the
> onenand code so that it doesn't split the nand/onenand grouping.
> Otherwise it matches what I did.
>
>> diff --git a/common/env_mmc.c b/common/env_mmc.c
>> index 14203b6..cb7c448 100644
>> --- a/common/env_mmc.c
>> +++ b/common/env_mmc.c
>> @@ -130,24 +130,23 @@ void env_relocate_spec(void)
>> ?{
>> ?#if !defined(ENV_IS_EMBEDDED)
>> ? ? ? ?struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
>> + ? ? ? char buf[CONFIG_ENV_SIZE];
>>
>> ? ? ? ?if (init_mmc_for_env(mmc))
>> ? ? ? ? ? ? ? ?return;
>>
>> - ? ? ? if (read_env(mmc, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, env_ptr))
>> - ? ? ? ? ? ? ? return use_default();
>> -
>> - ? ? ? if (crc32(0, env_ptr->data, ENV_SIZE) != env_ptr->crc)
>> + ? ? ? if (read_env(mmc, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, buf))
>> ? ? ? ? ? ? ? ?return use_default();
>
> This is a void function and shouldn't have a return value. ?I fixed
> this in my version.
>
>>
>> ? ? ? ?gd->env_valid = 1;
>
> I removed this in my version, probably an error to do that though :-)
>
>> +
>> + ? ? ? env_import(buf, 1);
>> ?#endif
>> ?}
>>
>> ?#if !defined(ENV_IS_EMBEDDED)
>> ?static void use_default()
>> ?{
>> - ? ? ? puts ("*** Warning - bad CRC or MMC, using default environment\n\n");
>> - ? ? ? set_default_env();
>> + ? ? ? set_default_env("*** Warning - bad CRC or MMC, using default environment\n\n");
>
> I previously submitted a patch to fix this and Wolfgang sent an email
> saying that it had been applied.
>
>> ?}
>> ?#endif
>> --
>> 1.6.3.3
>>
>>
>
> I'll revise my patch to add the missing gd->env_valid = 1; and re-test.

Hmm . . . looking at env_nand.c I see that it doesn't do gd->env_valid
= 1 either, which is probably why I removed it last night.

Any idea whether it is actually required?  Seems to work fine without it!

Steve

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08 13:39 ` Steve Sakoman
  2010-10-08 13:42   ` Steve Sakoman
@ 2010-10-08 16:03   ` Stefano Babic
  1 sibling, 0 replies; 9+ messages in thread
From: Stefano Babic @ 2010-10-08 16:03 UTC (permalink / raw)
  To: u-boot

Steve Sakoman wrote:
> On Fri, Oct 8, 2010 at 1:03 AM, Stefano Babic <sbabic@denx.de> wrote:
>> mmc_initialize is not called at the startup if the
>> relocation takes place and the environment is stored
>> into a MMC card.
>>

Hallo Steve,

> I think it might make more sense to put the MMC ifdef after the
> onenand code so that it doesn't split the nand/onenand grouping.
> Otherwise it matches what I did.

Yes, it makes more sens - and I do not see any problem to move it

> 
> This is a void function and shouldn't have a return value.  I fixed
> this in my version.

Agree.

> 
>>        gd->env_valid = 1;
> 
> I removed this in my version, probably an error to do that though :-)

Or probably not...env_valid should signalize if the checksum is correct,
and now the checksum is verified by the env_import function, as I have
understood.

> I previously submitted a patch to fix this and Wolfgang sent an email
> saying that it had been applied.

Ah, ok, I have missed it ;-)

> I'll revise my patch to add the missing gd->env_valid = 1; and re-test.

Ok, thanks

Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08 13:42   ` Steve Sakoman
@ 2010-10-08 16:05     ` Stefano Babic
  2010-10-08 16:21       ` Steve Sakoman
  0 siblings, 1 reply; 9+ messages in thread
From: Stefano Babic @ 2010-10-08 16:05 UTC (permalink / raw)
  To: u-boot

Steve Sakoman wrote:

>> I'll revise my patch to add the missing gd->env_valid = 1; and re-test.
> 
> Hmm . . . looking at env_nand.c I see that it doesn't do gd->env_valid
> = 1 either, which is probably why I removed it last night.
> 
> Any idea whether it is actually required?  Seems to work fine without it!

I have understood, it is not required if we call env_import and we
require to verify the checksum.

Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08 16:05     ` Stefano Babic
@ 2010-10-08 16:21       ` Steve Sakoman
  2010-10-08 18:13         ` Stefano Babic
  0 siblings, 1 reply; 9+ messages in thread
From: Steve Sakoman @ 2010-10-08 16:21 UTC (permalink / raw)
  To: u-boot

On Fri, Oct 8, 2010 at 9:05 AM, Stefano Babic <sbabic@denx.de> wrote:
> Steve Sakoman wrote:
>
>>> I'll revise my patch to add the missing gd->env_valid = 1; and re-test.
>>
>> Hmm . . . looking at env_nand.c I see that it doesn't do gd->env_valid
>> = 1 either, which is probably why I removed it last night.
>>
>> Any idea whether it is actually required? ?Seems to work fine without it!
>
> I have understood, it is not required if we call env_import and we
> require to verify the checksum.

OK, thanks!

Would you like me to submit the patch or would you like to revise & resubmit?

Steve

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c
  2010-10-08 16:21       ` Steve Sakoman
@ 2010-10-08 18:13         ` Stefano Babic
  0 siblings, 0 replies; 9+ messages in thread
From: Stefano Babic @ 2010-10-08 18:13 UTC (permalink / raw)
  To: u-boot

Steve Sakoman wrote:
> On Fri, Oct 8, 2010 at 9:05 AM, Stefano Babic <sbabic@denx.de> wrote:
>> Steve Sakoman wrote:
>>
>>>> I'll revise my patch to add the missing gd->env_valid = 1; and re-test.
>>> Hmm . . . looking at env_nand.c I see that it doesn't do gd->env_valid
>>> = 1 either, which is probably why I removed it last night.
>>>
>>> Any idea whether it is actually required?  Seems to work fine without it!
>> I have understood, it is not required if we call env_import and we
>> require to verify the checksum.
> 
> OK, thanks!
> 
> Would you like me to submit the patch or would you like to revise & resubmit?

No problem at all - you can submit your patch, as it seems to me more
complete as mine.

Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-10-08 18:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-08  8:03 [U-Boot] [PATCH] Crash in env_relocate_spec() of env_mmc.c Stefano Babic
2010-10-08 11:04 ` Sergei Shtylyov
2010-10-08 11:26   ` Stefano Babic
2010-10-08 13:39 ` Steve Sakoman
2010-10-08 13:42   ` Steve Sakoman
2010-10-08 16:05     ` Stefano Babic
2010-10-08 16:21       ` Steve Sakoman
2010-10-08 18:13         ` Stefano Babic
2010-10-08 16:03   ` Stefano Babic

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox