From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Wood Date: Tue, 16 Jun 2009 15:19:19 -0500 Subject: [U-Boot] PATCH: bugfix for nand erase failure with bad blocks In-Reply-To: <20090616200940.DD093832E416@gemini.denx.de> References: <4A3798C4.8000303@valueteam.com> <20090616181035.52228832E416@gemini.denx.de> <4A37F7BF.2090101@valueteam.com> <20090616200940.DD093832E416@gemini.denx.de> Message-ID: <4A37FE47.3030203@freescale.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Wolfgang Denk wrote: > Dear "Michele De Candia (VT)", > > In message <4A37F7BF.2090101@valueteam.com> you wrote: >>>> this patch fixes a bug for 'nand erase' command: when bad blocks are >>>> present into erasing area, they were skipped but the erased size was >>>> updated anyway. >>> And what exactly is the bug in this behaviour? >>> >> I think that 'erase' should have the same behaviour of 'write' and >> 'read' commands: skip bad blocks until read/write size is reached. If >> you write a script that erases and then writes a NAND area and bad >> blocks are not skipped while erasing (as U-Boot actually does), the >> following 'write' is successfully done but ECC checks fail on next read >> on the same area. > > I see - thanks for the explanation. > > Hm... actually I think the write should fail in such a case... > > Scott, what do you think? I think the current behavior is reasonable. You're erasing a specific region of flash, not an amount needed to hold a certain amount of data. While I can see the appeal of Michele's suggestion, I think it would be more error-prone as people trying to erase a region rather than just the size of data could erase too much. It definitely should not be an error to erase a region that happens to contain a bad block. Bad blocks are expected and we need to work around them. -Scott