public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Marek Vasut <marek.vasut@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] what to do when the uboot can not mark the phisical bad block of nand flash?
Date: Fri, 25 Nov 2011 09:51:17 +0100	[thread overview]
Message-ID: <201111250951.17247.marek.vasut@gmail.com> (raw)
In-Reply-To: <6a01cea6.1a2e2.133d5caa742.Coremail.liaohengquan1986@163.com>

> Hi, guys                I got a problem. I move a part of source code of
> linux/driver/mtd/nand to the u-boot. But I found that the u-boot can not
> mark the phsical bad block . when I run nand_erase() or nand_scrub(), it
> return error num as below: linux/driver/mtd/nand/nand_base.c
>     2589            chip->erase_cmd(mtd, page & chip->pagemask);     2590  
>               status = chip->waitfunc(mtd, chip); 2592                 /*
>     2593                 * See if operation failed and additional status
> checks are 2594                 * available
>     2595                 */
>     2596                 if ((status & NAND_STATUS_FAIL) &&
> (chip->errstat)) 2597                         status = chip->errstat(mtd,
> chip, FL_ERASING, 2598                                               
> status, page); 2600                 /* See if block erase succeeded */
>     2601                 if (status & NAND_STATUS_FAIL) {
>     2602                         DEBUG(MTD_DEBUG_LEVEL0, "%s: Failed erase,
> " 2603                                         "page 0x%08x\n", __func__,
> page); 2604                         instr->state = MTD_ERASE_FAILED;
>     2605                         instr->fail_addr =
>     2606                                 ((loff_t)page <<
> chip->page_shift); 2607                         goto erase_exit;
>     2608                 }
>         you can find that if block erase is failed(status==-1), it only
> mark the instr(we will not use the instr later), and go to the erase_exit.
> So there is no code to mark the oob of the phisical bad block, neither add
> it to the bad block table. so ,I add the code of writing oob of the
> phisical bad block when it is erased failed, such as below:
> chip->erase_cmd(mtd, page & chip->pagemask);2589
> 
> - Ignored:
>     2590                 status = chip->waitfunc(mtd, chip);
>     2592                 /*
>     2593                 * See if operation failed and additional status
> checks are 2594                 * available
>     2595                 */
>     2596                 if ((status & NAND_STATUS_FAIL) &&
> (chip->errstat)) 2597                         status = chip->errstat(mtd,
> chip, FL_ERASING, 2598                                               
> status, page); 2600                 /* See if block erase succeeded */
>     2601                 if (status & NAND_STATUS_FAIL) {
>     2602                         DEBUG(MTD_DEBUG_LEVEL0, "%s: Failed erase,
> " 2603                                         "page 0x%08x\n", __func__,
> page); 2604                         instr->state = MTD_ERASE_FAILED;
>     2605                         instr->fail_addr =
>     2606                                 ((loff_t)page <<
> chip->page_shift); nand_write_oob(addr);
>     2607                         goto erase_exit;
>     2608                 }
> 
>        Guys, what do you think of it , and what would you to if you  got
> this problem.

Can you please fix your mailer and send this stuff again? It's really hard to 
decode what you're asking please.

M

  reply	other threads:[~2011-11-25  8:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-24 13:36 [U-Boot] what to do when the uboot can not mark the phisical bad block of nand flash? liaohengquan1986
2011-11-25  8:51 ` Marek Vasut [this message]
     [not found] ` <18a422dc.11f19.133df8c393d.Coremail.liaohengquan1986@163.com>
2011-11-26 11:43   ` Marek Vasut
     [not found]   ` <55115875.ca03.133efb6f79a.Coremail.liaohengquan1986@163.com>
2011-11-29 14:31     ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201111250951.17247.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox