mtd-utils/flash_eraseall -j lockup

Thomas Jackson penguinroot at mac.com
Thu Sep 24 20:06:44 EDT 2009


Hi All,
I am experiencing lockups when using flash_eraseall –j command to write the clean markers on a Micron SLC NAND Flash Memory, part# MT29F4G08AAA.  Kernel is 2.6.26.8, proprietary on-chip NAND Flash Controller Driver, mtd-utils-1.2.0.  

The strange observation is that if I do a “nanddump” before performing a flash_eraseall –j format everything is ok and the clean markers are written.  There are no lockups if I use flash_eraseall without jffs2 formatting.  I am essentially using the generic nand_base.c in drivers/mtd/nand with an additional call to reset the Micron NAND after power up.  Just curious if the community is aware of any special sequences or patches to mtd-utils to resolve this lockup.   Any help in determining the cause of the lockup when using flash_eraseall will be appreciated.

Processor: ARM926EJ-S

# nanddump -p -l 0x200 /dev/mtd3
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 6
Number of bbt blockNAND: uncorrectable ECC error
NAND: uncorrectable ECC error
NAND: uncorrectable ECC error
NAND: uncorrectable ECC error
NAND: uncorrectable ECC error
NAND: uncorrectable ECC error
NAND: uncorrectable ECC error
NAND: uncorrectable ECC error
s: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00000200...
ECC: 1 uncorrectable bitflip(s) at offset 0x00000000
0x00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
…
 OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
#

# flash_eraseall -j /dev/mtd3
Erasing 128 Kibyte @ 560000 --  1 % complete. Cleanmarker written at 560000.
Skipping bad block at 0x00580000
Erasing 128 Kibyte @ 920000 --  1 % complete. Cleanmarker written at 920000.
Skipping bad block at 0x00940000
Erasing 128 Kibyte @ 4720000 -- 13 % complete. Cleanmarker written at 4720000.
Skipping bad block at 0x04740000
Erasing 128 Kibyte @ 8a40000 -- 27 % complete. Cleanmarker written at 8a40000.
Skipping bad block at 0x08a60000
Erasing 128 Kibyte @ 10fc0000 -- 53 % complete. Cleanmarker written at 10fc0000.
Skipping bad block at 0x10fe0000
Erasing 128 Kibyte @ 192a0000 -- 78 % complete. Cleanmarker written at 192a0000.
Skipping bad block at 0x192c0000
Erasing 128 Kibyte @ 20000000 -- 100 % complete.Cleanmarker written at 1ffe0000.
#

Thanks,
Thomas Jackson




More information about the linux-mtd mailing list