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?