Author: Jim Rayner Date: To: Balloon Subject: [Balloon] Bad blocks caused by expiring mtd status poll loop in
2.6.29-rc7
I believe I have a repeatable defect with the nand status poll loop (in
nand_write, mtd/nand/nand_base.c) which only shows up in 2.6.29-rc7.
On my E1 Balloon3 board the loop expires before the status is ready, causing
bad block status and verification errors as bit 6 (ready) is often set due
to the previous status request.
For anyone else hitting this problem it is easy to fettle the loop to poll
over a increased number of jiffies (doubling the values worked) and unset
CONFIG_MTD_NAND_VERIFY_WRITE (ecc will handle any 1/2 bit errors).
I believe a better long term approach is to use the existing NAND_RNB
outputs. Although I believe currently I'm the only user experiencing these
problems, I assume that tolerances on most boards allow this polling loop to
work as expected.
Jim
Note: Even after these changes and a validated ready status, although more
usable, there is still a large disparity in retired blocks (avg 1 in 10)
compared with 2.6.25.2 (0 retired), using untouched code from Balloon svn.
...... Anyone fancy swapping a Balloon 3 board?