[BUG] pxa3xx: wait time out when scanning for bb

Miquel RAYNAL miquel.raynal at free-electrons.com
Fri Dec 8 01:21:48 PST 2017


Hi Sean,

> > As you may know, I am actively working on a new interface in the
> > NAND core called ->exec_op() (see [1] and [2]) and the first driver
> > to implement this interface is a rework of pxa3xx_nand.c renamed
> > marvell_nand.c (see [3]).
> >
> > May I suggest you to test these changes and report me if it fails? I
> > prepared a branch ready to be tested (just add your own device
> > tree), available on my Github at [4].
> >
> > If you have failures, it would be great to enable dynamic debug in
> > the core (put #define DEBUG before all #includes in
> > drivers/mtd/nand/nand_core.c) and report on the mailing list what
> > you get. Otherwise, you may stack this commits on top of your
> > branch, or wait for 4.16 to be released (hopefully).
> >
> > Thanks,
> > Miquèl
> >
> > [1] https://www.spinics.net/lists/arm-kernel/msg619633.html
> > [2]
> > http://lists.infradead.org/pipermail/linux-mtd/2017-December/077965.html
> > [3]
> > http://lists.infradead.org/pipermail/linux-mtd/2017-December/077973.html
> > [4]
> > https://github.com/miquelraynal/linux/tree/marvell/nand-next/nfc-rework 
> Thanks I didn't know about that :-)
> 
> I had a look at it and I have rebased my stuff on top of your branch.
> I have edited my devicetree to look like this:
> &nand_controller {
>      status = "okay";
>      pinctrl-names = "default";
>      pinctrl-0 = <&nand_pins>, <&nand_rb>;
> 
>      nand at 0 {
>          reg = <0>;
>          label = "pxa3xx_nand-0";
>          marvell,rb = <0>;
>          marvell,nand-keep-config;
>          nand-on-flash-bbt;
>          nand-ecc-strength = <4>;
>          nand-ecc-step-size = <512>;
>      };
> };
> 
> It produces a lot of bad eraseblocks entrys
> [    2.693343] nand: device found, Manufacturer ID: 0x2c, Chip ID:
> 0xda [    2.699717] nand: Micron MT29F2G08ABAEAH4
> [    2.703772] nand: 256 MiB, SLC, erase size: 128 KiB, page size:
> 2048, OOB size: 64
> [    2.714286] Bad block table not found for chip 0
> [    2.721509] Bad block table not found for chip 0
> [    2.726139] Scanning device for bad blocks
> [    2.730583] Bad eraseblock 0 at 0x000000000000
> [    2.735365] Bad eraseblock 1 at 0x000000020000
> [    2.740145] Bad eraseblock 2 at 0x000000040000
> [    2.744934] Bad eraseblock 3 at 0x000000060000
> [    2.749714] Bad eraseblock 4 at 0x000000080000
> 
> Is my devicetree correct?

It depends:
  - Did you already use bad block tables before ?
  - Is your bootloader using 4b/512B ECC strength ?

Besides:

  - What filesystem are you booting? Is it UBIFS or JFFS2 or
something else?
  - Did you show the 5 first bad eraseblocks only or all of them?
  - Do you have good blocks ?
  - Can you make use of the NAND chip after?

Thanks,
Miquèl



More information about the linux-mtd mailing list