public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
@ 2008-06-02  1:53 Grant Erickson
  2008-06-02  6:22 ` Stefan Roese
  0 siblings, 1 reply; 13+ messages in thread
From: Grant Erickson @ 2008-06-02  1:53 UTC (permalink / raw)
  To: u-boot

Before I jump in with the BDI and start debugging, has anyone else using
'nboot' and FIT images noticed that 'nboot' periodically fails where 'nand
read.i' of the SAME region of NAND succeeds?

    => echo $bootaddr
    800000
    => echo $boot0
    nboot ${bootaddr} 0 0 && setenv bootargs root=/dev/mtdblock9 && run
    addjffs2 addtty && bootm ${bootaddr}
    => run boot0

    Loading from NAND 64MiB 3,3V 8-bit, offset 0x0
    ** Bad FIT image format

    => nand read.i ${bootaddr} 0 400000

    NAND read: device 0 offset 0x0, size 0x400000

    Reading data from 0x3ffe00 -- 100% complete.
     4194304 bytes read: OK
    => setenv bootargs root=/dev/mtdblock9
    => run addjffs2 addtty
    => bootm ${bootaddr}
    ## Booting kernel from FIT Image at 00800000 ...
       Using 'config at 1' configuration
       Trying 'kernel at 1' kernel subimage
    ...
    Using Haleakala machine description
    Linux version 2.6.25-rc3-00951-g6514352-dirty (gerickson at ubuntu-fusion)
(gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) #2 Wed May 28 22:49:36 PDT 2008
    Zone PFN ranges:
      DMA             0 ->    65536
      Normal      65536 ->    65536
    Movable zone start PFN for each node
    early_node_map[1] active PFN ranges
    ...

This is using AMCC's Haleakala board with Samsung K9F1208U0B NAND, though I
suspect that doesn't make any difference since nand read.i works fine.

Regards,

Grant

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

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-02  1:53 [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds Grant Erickson
@ 2008-06-02  6:22 ` Stefan Roese
  2008-06-02 18:21   ` Scott Wood
  0 siblings, 1 reply; 13+ messages in thread
From: Stefan Roese @ 2008-06-02  6:22 UTC (permalink / raw)
  To: u-boot

Hi Grant,

On Monday 02 June 2008, Grant Erickson wrote:
> Before I jump in with the BDI and start debugging, has anyone else using
> 'nboot' and FIT images noticed that 'nboot' periodically fails where 'nand
> read.i' of the SAME region of NAND succeeds?

Not sure here, since I never used nboot before. But "nand read.i" skips bad 
blocks and perhaps "nboot" not? I suggest that you check if this is the case 
and if you have bad blocks in this NAND area.

Best regards,
Stefan

=====================================================================
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] 13+ messages in thread

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-02  6:22 ` Stefan Roese
@ 2008-06-02 18:21   ` Scott Wood
  2008-06-02 22:02     ` Grant Erickson
  0 siblings, 1 reply; 13+ messages in thread
From: Scott Wood @ 2008-06-02 18:21 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2008 at 08:22:21AM +0200, Stefan Roese wrote:
> Hi Grant,
> 
> On Monday 02 June 2008, Grant Erickson wrote:
> > Before I jump in with the BDI and start debugging, has anyone else using
> > 'nboot' and FIT images noticed that 'nboot' periodically fails where 'nand
> > read.i' of the SAME region of NAND succeeds?
> 
> Not sure here, since I never used nboot before. But "nand read.i" skips bad 
> blocks and perhaps "nboot" not? I suggest that you check if this is the case 
> and if you have bad blocks in this NAND area.

It is indeed the case -- you need to use "nboot.i".

-Scott

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

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-02 18:21   ` Scott Wood
@ 2008-06-02 22:02     ` Grant Erickson
  2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
  2008-06-05 20:47       ` [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds Grant Erickson
  0 siblings, 2 replies; 13+ messages in thread
From: Grant Erickson @ 2008-06-02 22:02 UTC (permalink / raw)
  To: u-boot

On 6/2/08 11:21 AM, Scott Wood wrote:
> On Mon, Jun 02, 2008 at 08:22:21AM +0200, Stefan Roese wrote:
>> Hi Grant,
>> 
>> On Monday 02 June 2008, Grant Erickson wrote:
>>> Before I jump in with the BDI and start debugging, has anyone else using
>>> 'nboot' and FIT images noticed that 'nboot' periodically fails where 'nand
>>> read.i' of the SAME region of NAND succeeds?
>> 
>> Not sure here, since I never used nboot before. But "nand read.i" skips bad
>> blocks and perhaps "nboot" not? I suggest that you check if this is the case
>> and if you have bad blocks in this NAND area.
> 
> It is indeed the case -- you need to use "nboot.i".
> 
> -Scott

Scott and Stefan,

Thanks for the suggestion. That solved it. As an academic exercise, is there
any practical reason a system would want to use nboot, as I erroneously
chose to do, without .i|.jffs2|.e?

Regards,

Grant

-- 
Principal
Nuovation System Designs, LLC

998 Alpine Terrace Suite 3
Sunnyvale, CA 94086-2469
US

T +1-408-749-0495
F +1-205-449-0495
M +1-408-489-5710

gerickson at nuovations.com
http://www.nuovations.com/

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

* [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds)
  2008-06-02 22:02     ` Grant Erickson
@ 2008-06-02 22:07       ` Scott Wood
  2008-06-03  0:48         ` Stuart Wood
                           ` (3 more replies)
  2008-06-05 20:47       ` [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds Grant Erickson
  1 sibling, 4 replies; 13+ messages in thread
From: Scott Wood @ 2008-06-02 22:07 UTC (permalink / raw)
  To: u-boot

Grant Erickson wrote:
> Thanks for the suggestion. That solved it. As an academic exercise, is there
> any practical reason a system would want to use nboot, as I erroneously
> chose to do, without .i|.jffs2|.e?

I don't think so, though I don't know the history involved.  Does anyone 
actually use the non-block-skipping versions of any of the nand commands 
(intentionally, that is)?  If the answer is no, then we could make it 
the default.

-Scott

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

* [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds)
  2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
@ 2008-06-03  0:48         ` Stuart Wood
  2008-06-03  6:09         ` Stefan Roese
                           ` (2 subsequent siblings)
  3 siblings, 0 replies; 13+ messages in thread
From: Stuart Wood @ 2008-06-03  0:48 UTC (permalink / raw)
  To: u-boot

I would vote for making bad black handling the default. I've been
working on fixing up a design of ours that mistakenly used non block
skipping version and I've been trying to find all the places were bad
block's were not being skipped and fixes them. Our system only uses
NAND flash and people are very concerned about it.

Stuart

On Mon, Jun 2, 2008 at 6:07 PM, Scott Wood <scottwood@freescale.com> wrote:
> Grant Erickson wrote:
>> Thanks for the suggestion. That solved it. As an academic exercise, is there
>> any practical reason a system would want to use nboot, as I erroneously
>> chose to do, without .i|.jffs2|.e?
>
> I don't think so, though I don't know the history involved.  Does anyone
> actually use the non-block-skipping versions of any of the nand commands
> (intentionally, that is)?  If the answer is no, then we could make it
> the default.
>
> -Scott
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> U-Boot-Users mailing list
> U-Boot-Users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/u-boot-users
>



-- 
Stuart Wood

Lab X Technologies, LLC
176 Anderson Ave.
Suite 302
Rochester, NY 14607
Phone: (585) 271-7790 x207
Fax: (585) 473.4707

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

* [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds)
  2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
  2008-06-03  0:48         ` Stuart Wood
@ 2008-06-03  6:09         ` Stefan Roese
  2008-06-04  7:19         ` Matthias Fuchs
  2008-06-04  9:56         ` [U-Boot-Users] Non-block-skipping NAND commands Detlev Zundel
  3 siblings, 0 replies; 13+ messages in thread
From: Stefan Roese @ 2008-06-03  6:09 UTC (permalink / raw)
  To: u-boot

On Tuesday 03 June 2008, Scott Wood wrote:
> Grant Erickson wrote:
> > Thanks for the suggestion. That solved it. As an academic exercise, is
> > there any practical reason a system would want to use nboot, as I
> > erroneously chose to do, without .i|.jffs2|.e?
>
> I don't think so, though I don't know the history involved.  Does anyone
> actually use the non-block-skipping versions of any of the nand commands
> (intentionally, that is)?  If the answer is no, then we could make it
> the default.

I'm fine with making bad-block-skipping the default. I never used the "other" 
version and I don't know what it's really useful for.

Best regards,
Stefan

=====================================================================
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] 13+ messages in thread

* [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds)
  2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
  2008-06-03  0:48         ` Stuart Wood
  2008-06-03  6:09         ` Stefan Roese
@ 2008-06-04  7:19         ` Matthias Fuchs
  2008-06-04  9:56         ` [U-Boot-Users] Non-block-skipping NAND commands Detlev Zundel
  3 siblings, 0 replies; 13+ messages in thread
From: Matthias Fuchs @ 2008-06-04  7:19 UTC (permalink / raw)
  To: u-boot

Hi Scott,

we are using the NAND stuff for a couple of boards. All use the .i or .jffs2 extension.
So I also vote for making skipping the default. But the extensions should be preserved :-)

Matthias

On Tuesday 03 June 2008 00:07, Scott Wood wrote:
> Grant Erickson wrote:
> > Thanks for the suggestion. That solved it. As an academic exercise, is there
> > any practical reason a system would want to use nboot, as I erroneously
> > chose to do, without .i|.jffs2|.e?
> 
> I don't think so, though I don't know the history involved.  Does anyone 
> actually use the non-block-skipping versions of any of the nand commands 
> (intentionally, that is)?  If the answer is no, then we could make it 
> the default.
> 
> -Scott

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

* [U-Boot-Users] Non-block-skipping NAND commands
  2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
                           ` (2 preceding siblings ...)
  2008-06-04  7:19         ` Matthias Fuchs
@ 2008-06-04  9:56         ` Detlev Zundel
  3 siblings, 0 replies; 13+ messages in thread
From: Detlev Zundel @ 2008-06-04  9:56 UTC (permalink / raw)
  To: u-boot

Hi Scott,

> Grant Erickson wrote:
>> Thanks for the suggestion. That solved it. As an academic exercise, is there
>> any practical reason a system would want to use nboot, as I erroneously
>> chose to do, without .i|.jffs2|.e?
>
> I don't think so, though I don't know the history involved.  Does anyone 
> actually use the non-block-skipping versions of any of the nand commands 
> (intentionally, that is)?  If the answer is no, then we could make it 
> the default.

I also vote for commands to be bad-block aware per default as I also
already got bitten by that.

Cheers
  Detlev

-- 
Q:  What does FAQ stand for?
A:  We are Frequently Asked this Question, and we have no idea.
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de

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

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-02 22:02     ` Grant Erickson
  2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
@ 2008-06-05 20:47       ` Grant Erickson
  2008-06-05 22:30         ` Grant Erickson
  1 sibling, 1 reply; 13+ messages in thread
From: Grant Erickson @ 2008-06-05 20:47 UTC (permalink / raw)
  To: u-boot

On 6/2/08 3:02 PM, Grant Erickson wrote:
> On 6/2/08 11:21 AM, Scott Wood wrote:
>> On Mon, Jun 02, 2008 at 08:22:21AM +0200, Stefan Roese wrote:
>>> Hi Grant,
>>> 
>>> On Monday 02 June 2008, Grant Erickson wrote:
>>>> Before I jump in with the BDI and start debugging, has anyone else using
>>>> 'nboot' and FIT images noticed that 'nboot' periodically fails where 'nand
>>>> read.i' of the SAME region of NAND succeeds?
>>> 
>>> Not sure here, since I never used nboot before. But "nand read.i" skips bad
>>> blocks and perhaps "nboot" not? I suggest that you check if this is the case
>>> and if you have bad blocks in this NAND area.
>> 
>> It is indeed the case -- you need to use "nboot.i".
>> 
>> -Scott
> 
> Scott and Stefan,
> 
> Thanks for the suggestion. That solved it. As an academic exercise, is there
> any practical reason a system would want to use nboot, as I erroneously chose
> to do, without .i|.jffs2|.e?

It would appear I was slightly too quick to regard this as fixed. What I
found this morning is the following with the AMCC "Haleakala" board:

1) A 48+ hour reboot test bouncing between the boot0 and boot1 partitions
passed, where boot0 and boot1 are defined as:

    => printenv bootaddr bootcmd boot0 boot1
    bootaddr=800000
    bootcmd=run boot0 || run boot1 || reset
    boot0=nboot.i ${bootaddr} 0 0 && setenv bootargs root=/dev/mtdblock9 &&
run addjffs2 addtty && bootm ${bootaddr}
    boot1=nboot.i ${bootaddr} 0 1C00000 && setenv bootargs
root=/dev/mtdblock11 && run addjffs2 addtty && bootm ${bootaddr}

2) I stopped that test and added power-cycling to the mix and it, again,
immediately failed with:

    Loading from NAND 64MiB 3,3V 8-bit, offset 0x0
    ** Bad FIT image format

    Loading from NAND 64MiB 3,3V 8-bit, offset 0x1c00000
    ** Bad FIT image format

So, resets are not enough to trigger this issue, it takes a power cycle.

I have found that this state is recoverable by issuing a 'nand read.i' and
then re-running 'boot0':

    => nand read.i ${bootaddr} 0 400000 && run boot0

From that point forward, both boot0 and boot1 work flawlessly.

I have also found that NFS booting to get Linux up and running, restarting
and then running boot0 or boot1 also works from that point forward until the
next power cycle.

So, there seems to be some specific state the PowerPC NDFC (NAND controller)
or Samsung K9F1208U0B NAND gets in where either 'nand read.i' or the Linux
MTD driver kick one or both in such a way as to get out of whatever state
prevents nboot.i from working.

Strangely though, both nand read.i and nboot.i both exercise the same
nand_read_opts path in nand_util.c.

Any thoughts?

Regards,

Grant

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

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-05 20:47       ` [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds Grant Erickson
@ 2008-06-05 22:30         ` Grant Erickson
  2008-06-05 22:59           ` Grant Erickson
  0 siblings, 1 reply; 13+ messages in thread
From: Grant Erickson @ 2008-06-05 22:30 UTC (permalink / raw)
  To: u-boot

On 6/5/08 1:47 PM, Grant Erickson wrote:
> On 6/2/08 3:02 PM, Grant Erickson wrote:
>> On 6/2/08 11:21 AM, Scott Wood wrote:
>>> On Mon, Jun 02, 2008 at 08:22:21AM +0200, Stefan Roese wrote:
>>>> Hi Grant,
>>>> 
>>>> On Monday 02 June 2008, Grant Erickson wrote:
>>>>> Before I jump in with the BDI and start debugging, has anyone else using
>>>>> 'nboot' and FIT images noticed that 'nboot' periodically fails where 'nand
>>>>> read.i' of the SAME region of NAND succeeds?
>>>> 
>>>> Not sure here, since I never used nboot before. But "nand read.i" skips bad
>>>> blocks and perhaps "nboot" not? I suggest that you check if this is the
>>>> case 
>>>> and if you have bad blocks in this NAND area.
>>> 
>>> It is indeed the case -- you need to use "nboot.i".
>>> 
>>> -Scott
>> 
>> Scott and Stefan,
>> 
>> Thanks for the suggestion. That solved it. As an academic exercise, is there
>> any practical reason a system would want to use nboot, as I erroneously chose
>> to do, without .i|.jffs2|.e?
> 
> It would appear I was slightly too quick to regard this as fixed. What I found
> this morning is the following with the AMCC "Haleakala" board:
> 
> 1) A 48+ hour reboot test bouncing between the boot0 and boot1 partitions
> passed, where boot0 and boot1 are defined as:
> 
>     => printenv bootaddr bootcmd boot0 boot1
>     bootaddr=800000
>     bootcmd=run boot0 || run boot1 || reset
>     boot0=nboot.i ${bootaddr} 0 0 && setenv bootargs root=/dev/mtdblock9 &&
> run addjffs2 addtty && bootm ${bootaddr}
>     boot1=nboot.i ${bootaddr} 0 1C00000 && setenv bootargs
> root=/dev/mtdblock11 && run addjffs2 addtty && bootm ${bootaddr}
> 
> 2) I stopped that test and added power-cycling to the mix and it, again,
> immediately failed with:
> 
>     Loading from NAND 64MiB 3,3V 8-bit, offset 0x0
>     ** Bad FIT image format
> 
>     Loading from NAND 64MiB 3,3V 8-bit, offset 0x1c00000
>     ** Bad FIT image format
> 
> So, resets are not enough to trigger this issue, it takes a power cycle.
> 
> I have found that this state is recoverable by issuing a 'nand read.i' and
> then re-running 'boot0':
> 
>     => nand read.i ${bootaddr} 0 400000 && run boot0
> 
> From that point forward, both boot0 and boot1 work flawlessly.
> 
> I have also found that NFS booting to get Linux up and running, restarting and
> then running boot0 or boot1 also works from that point forward until the next
> power cycle.
> 
> So, there seems to be some specific state the PowerPC NDFC (NAND controller)
> or Samsung K9F1208U0B NAND gets in where either 'nand read.i' or the Linux MTD
> driver kick one or both in such a way as to get out of whatever state prevents
> nboot.i from working.
> 
> Strangely though, both nand read.i and nboot.i both exercise the same
> nand_read_opts path in nand_util.c.
> 
> Any thoughts?

Marian:

I'm following up with you on this since 'git blame cmd_nand.c' seems to
indicate you added the CONFIG_FIT support to this file.

Based on stepping through with the debugger, my initial guess about hardware
issues may have been incorrect. Is there an implicit assumption in the
following snippet from nand_load_image() in cmd_nand.c:

    ...

    cnt = nand->oobblock;
    if (jffs2) {
        nand_read_options_t opts;
        memset(&opts, 0, sizeof(opts));
        opts.buffer = (u_char*) addr;
        opts.length = cnt;
        opts.offset = offset;
        opts.quiet      = 1;
        r = nand_read_opts(nand, &opts);
    } else {
        r = nand_read(nand, offset, &cnt, (u_char *) addr);
    }

    if (r) {
        puts("** Read error\n");
        show_boot_progress (-56);
        return 1;
    }

    ...

    switch (genimg_get_format ((void *)addr)) {

    ...

#if defined(CONFIG_FIT)
    case IMAGE_FORMAT_FIT:
        fit_hdr = (const void *)addr;
        if (!fit_check_format (fit_hdr)) {
            show_boot_progress (-150);
            puts ("** Bad FIT image format\n");
            return 1;
        }
        show_boot_progress (151);
        puts ("Fit image detected...\n");

        cnt = fit_get_size (fit_hdr);
        break;
#endif

    ...

that casting 'addr' to 'fit_hdr' represents more than 512 bytes of valid
data to be accessed by fit_check_format()? If so, should not 'cnt =
nand->oobblock' be explicitly set to match that assumption?

I am guessing that my observation that NFS booting and nand read.i addressed
the issue strictly had to do with the fact that the 8 MiB address to which
those operate were not getting used or otherwise updated between resets
after the boot of the kernel allowing subsequent runs of 'nboot' to
"leverage" the stale data.

Regards,

Grant

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

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-05 22:30         ` Grant Erickson
@ 2008-06-05 22:59           ` Grant Erickson
  2008-06-06  7:38             ` Marian Balakowicz
  0 siblings, 1 reply; 13+ messages in thread
From: Grant Erickson @ 2008-06-05 22:59 UTC (permalink / raw)
  To: u-boot

On 6/5/08 3:30 PM, Grant Erickson wrote:
> I'm following up with you on this since 'git blame cmd_nand.c' seems to
> indicate you added the CONFIG_FIT support to this file.
> 
> Based on stepping through with the debugger, my initial guess about hardware
> issues may have been incorrect. Is there an implicit assumption in the
> following snippet from nand_load_image() in cmd_nand.c:
> 
> [ code omitted ]
> 
> that casting 'addr' to 'fit_hdr' represents more than 512 bytes of valid data
> to be accessed by fit_check_format()? If so, should not 'cnt = nand->oobblock'
> be explicitly set to match that assumption?
> 
> I am guessing that my observation that NFS booting and nand read.i addressed
> the issue strictly had to do with the fact that the 8 MiB address to which
> those operate were not getting used or otherwise updated between resets after
> the boot of the kernel allowing subsequent runs of 'nboot' to "leverage" the
> stale data.

The boot.itb image I have in NAND is 0x13CB98 bytes in size. Running a
series of 'nand read.i ${bootaddr} 0 <...>':

    => nand read.i ${bootaddr} 0 1000 && iminfo ${bootaddr}
    ## Checking Image at 00800000 ...
       FIT image found
    Bad FIT image format!
    
    => nand read.i ${bootaddr} 0 2000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 4000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 8000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 10000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 20000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 40000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 80000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 100000 && iminfo ${bootaddr}
    ...
    => nand read.i ${bootaddr} 0 200000 && iminfo ${bootaddr}
    ...
    ## Checking Image at 00800000 ...
       FIT image found
       FIT description: Linux Kernel with Device Tree
        Image 0 (kernel at 1)
         Description:  Kernel
         Type:         Kernel Image
         Compression:  gzip compressed
         Data Start:   0x008000c8
    ...

So, it would appear that the answer, at least for this trivial boot.itb of a
kernel and DTB, for how large must the initial value of 'cnt' be is "as
large as the image being nboot'ed is". That said, it looks like nboot and
FIT images may not work together at present with today's code.

Any thoughts?

Regards,

Grant

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

* [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds
  2008-06-05 22:59           ` Grant Erickson
@ 2008-06-06  7:38             ` Marian Balakowicz
  0 siblings, 0 replies; 13+ messages in thread
From: Marian Balakowicz @ 2008-06-06  7:38 UTC (permalink / raw)
  To: u-boot


Hi Grant,

Grant Erickson wrote:
> On 6/5/08 3:30 PM, Grant Erickson wrote:
>> I'm following up with you on this since 'git blame cmd_nand.c' seems to
>> indicate you added the CONFIG_FIT support to this file.
>>
>> Based on stepping through with the debugger, my initial guess about hardware
>> issues may have been incorrect. Is there an implicit assumption in the
>> following snippet from nand_load_image() in cmd_nand.c:
>>
>> [ code omitted ]
>>
>> that casting 'addr' to 'fit_hdr' represents more than 512 bytes of valid data
>> to be accessed by fit_check_format()? If so, should not 'cnt = nand->oobblock'
>> be explicitly set to match that assumption?
>>
>> I am guessing that my observation that NFS booting and nand read.i addressed
>> the issue strictly had to do with the fact that the 8 MiB address to which
>> those operate were not getting used or otherwise updated between resets after
>> the boot of the kernel allowing subsequent runs of 'nboot' to "leverage" the
>> stale data.
> 
> The boot.itb image I have in NAND is 0x13CB98 bytes in size. Running a
> series of 'nand read.i ${bootaddr} 0 <...>':
>
...
> 
> So, it would appear that the answer, at least for this trivial boot.itb of a
> kernel and DTB, for how large must the initial value of 'cnt' be is "as
> large as the image being nboot'ed is". That said, it looks like nboot and
> FIT images may not work together at present with today's code.
> 
> Any thoughts?

Doing a FIT format check on a first sector data is obviously wrong.
This was a good spot for such check with the initial implementation of
the routine, but it should have been corrected after that changed,
stupid me. As you'll note fit_print_contents() call is deferred, and
that is for the same reason, it needs the whole image data to operate
on. Same, for format check, it cannot be done earlier than that.

I'll post a patch later today that fixes it, please give it a try on
your system.

Cheers,
m.

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

end of thread, other threads:[~2008-06-06  7:38 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-02  1:53 [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds Grant Erickson
2008-06-02  6:22 ` Stefan Roese
2008-06-02 18:21   ` Scott Wood
2008-06-02 22:02     ` Grant Erickson
2008-06-02 22:07       ` [U-Boot-Users] Non-block-skipping NAND commands (was: Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds) Scott Wood
2008-06-03  0:48         ` Stuart Wood
2008-06-03  6:09         ` Stefan Roese
2008-06-04  7:19         ` Matthias Fuchs
2008-06-04  9:56         ` [U-Boot-Users] Non-block-skipping NAND commands Detlev Zundel
2008-06-05 20:47       ` [U-Boot-Users] Loading from NAND using 'nboot' Periodically Fails Where 'nand read' Succeeds Grant Erickson
2008-06-05 22:30         ` Grant Erickson
2008-06-05 22:59           ` Grant Erickson
2008-06-06  7:38             ` Marian Balakowicz

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