Hello TI experts,
I'm working on a product based on the AM3351 chip, with a "MT29F2G08ABAGAH4-IT:G" NAND.
Our early prototype was using sqfs-over-mtd but we are now moving to use ubifs/ubi for the system rootfs.
Everything seems to be okay, system is booting and running. However, if the kernel modifies the rootfs, it results in some weird ECC failures. And we suspect some ECC discrepancies between u-boot and the kernel.
It seems that the OOB data written by u-boot is much longer than the OOB data written by the kernel.
The problem can be reproduced as follow:
- use a ubifs rootfs,
- boot linux and remount the rootfs as rw (mount / -o remount,tw && touch /rootfs-was-writable)
- reboot linux - it fails which an avalanche of logs like the following:
[ 4.459922] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.466156] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.473037] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.479261] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.486006] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.492278] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.498976] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.505261] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.511986] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.518204] omap2-nand 8000000.nand: uncorrectable bit-flips found
[ 4.538076] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 129024 bytes from PEB 65:2048, read only 129024 bytes, retry
Here are the OOB area before (left) and after (right) we remount the filesystem a RW.
=> nand dump.oob 0xc00000 => nand dump.oob 0xc00000
Page 00c00000 dump: Page 00c00000 dump:
OOB: OOB:
ff ff 94 91 0b ab f2 07 ff ff f6 a9 b0 6e e3 38
f8 86 0a 1b b7 21 8b 25 06 68 7c bb ce c0 fe 98
e1 63 74 6c 9a 7e 7d 91 1d b0 22 71 74 64 e6 78
8e a3 49 49 ce df f4 14 f3 3d 43 0c ff ff ff ff
dd 17 ef a7 74 05 fa df ff ff ff ff ff ff ff ff
49 cd dd c1 bd ed ff 11 ff ff ff ff ff ff ff ff
b5 6c 45 04 00 d4 65 28 ff ff ff ff ff ff ff ff
10 6e 77 7f 04 08 f9 c5 ff ff ff ff ff ff ff ff
a3 60 b6 db 2f 8a fd 1c ff ff ff ff ff ff ff ff
a6 1f 1b 43 e1 df 8f d1 ff ff ff ff ff ff ff ff
65 28 10 6e 77 7f 04 08 ff ff ff ff ff ff ff ff
f9 c5 a3 60 b6 db 2f 8a ff ff ff ff ff ff ff ff
fd 1c a6 1f 1b 43 e1 df ff ff ff ff ff ff ff ff
8f d1 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
It looks like the kernel is writing much less data in the OOB.
In December, we received from TI a quite big patch to support 128b OOB area. (For reference, I'll attach the patch we received.)
We are probably missing a similar patch for the Linux kernel. Can TI provide a similar patch for the kernel?
I'll attach the DTS section for the GPMC for both the kernel and u-boot (at first sight, they seems to match).
Thanks in advance for your help on this issue,