This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem with flashing JFFS2 rootfs to NAND flash (MT29F2G16)

Other Parts Discussed in Thread: AM3715

Hi, I've got problem with flashing JFFS2 rootfs to NAND flash (MT29F2G16) on custom board based on AM3715.

Software - AM35x-OMAP35x-LINUX-PSP-04.02.00.07 (x-loader, u-boot, kernel).
Rootfs built from buildroot-2011.05.

I've created fs binary via: mkfs.jffs2 -lqn -e128 -s2048 -p0x20000 -r target -o rootfs.jffs2
Than flashed it via commands from http://processors.wiki.ti.com/index.php/AM35x-OMAP35x-PSP_04.02.00.07_UserGuide#Flashing_JFFS2_filesystem_2
After that when I'm trying to mount /dev/mtdblock4 from NFS filesystem I'm getting following log:

[   33.982574] MTDSB: dev_name "/dev/mtdblock4"
[   33.987670] MTDSB: lookup_bdev() returned 0
[   33.993835] MTDSB: New superblock for device 4 ("File System - NAND")
[   34.003814] nand_do_read_oob: from = 0x00780000, len = 8
[   34.011810] UNCORRECTED_ERROR default
[   34.016265] ECC UNCORRECTED_ERROR B
[   34.020477] mtd->read(0x100 bytes from 0x0) returned ECC error
[   34.050506] UNCORRECTED_ERROR default
[   34.054931] UNCORRECTED_ERROR default
[   34.059417] UNCORRECTED_ERROR default
[   34.063812] ECC UNCORRECTED_ERROR B
[   34.074066] UNCORRECTED_ERROR default
[   34.078247] UNCORRECTED_ERROR default
[   34.082885] Correcting single bit ECC error at offset: 1, bit: 7
[   34.090026] UNCORRECTED_ERROR default
[   34.094787] Correcting single bit ECC error at offset: 2, bit: 6
[   34.101959] ECC UNCORRECTED_ERROR B
[   34.106262] ECC UNCORRECTED_ERROR 1
[   34.110412] ECC UNCORRECTED_ERROR B
[   34.114929] ECC UNCORRECTED_ERROR B
[   34.119079] ECC UNCORRECTED_ERROR B
[   34.123413] ECC UNCORRECTED_ERROR B
[   34.127532] ECC UNCORRECTED_ERROR B
[   34.132110] Correcting single bit ECC error at offset: 3, bit: 6
[   34.139251] ECC UNCORRECTED_ERROR B
[   34.143310] ECC UNCORRECTED_ERROR 1
[   34.147583] ECC UNCORRECTED_ERROR B
[   34.152069] UNCORRECTED_ERROR default
[   34.156524] UNCORRECTED_ERROR default
[   34.161132] Correcting single bit ECC error at offset: 3, bit: 2
[   34.168487] UNCORRECTED_ERROR default
[   34.173065] ECC UNCORRECTED_ERROR B
[   34.177429] UNCORRECTED_ERROR default
[   34.181793] ECC UNCORRECTED_ERROR B
[   34.185943] ECC UNCORRECTED_ERROR B
[   34.190399] UNCORRECTED_ERROR default
[   34.194885] UNCORRECTED_ERROR default
[   34.199462] UNCORRECTED_ERROR default
[   34.203765] UNCORRECTED_ERROR default
[   34.208587] ECC UNCORRECTED_ERROR B
[   34.212860] UNCORRECTED_ERROR default
[   34.217376] UNCORRECTED_ERROR default
[   34.221862] ECC UNCORRECTED_ERROR B
[   34.226409] UNCORRECTED_ERROR default
[   34.230773] UNCORRECTED_ERROR default
[   34.234863] ECC UNCORRECTED_ERROR B
[   34.239166] ECC UNCORRECTED_ERROR B
[   34.243499] Correcting single bit ECC error at offset: 35, bit: 6
[   34.250946] Correcting single bit ECC error at offset: 35, bit: 7
[   34.258209] UNCORRECTED_ERROR default
[   34.262695] UNCORRECTED_ERROR default
[   34.267303] Correcting single bit ECC error at offset: 2, bit: 0
[   34.274536] ECC UNCORRECTED_ERROR B
[   34.278778] UNCORRECTED_ERROR default
[   34.283142] ECC UNCORRECTED_ERROR B
[   34.287658] UNCORRECTED_ERROR default
[   34.292053] ECC UNCORRECTED_ERROR B
[   34.296081] ECC UNCORRECTED_ERROR B
[   34.300903] UNCORRECTED_ERROR default
[   34.305084] UNCORRECTED_ERROR default
[   34.309478] Correcting single bit ECC error at offset: 99, bit: 4
[   34.316802] UNCORRECTED_ERROR default
[   34.321563] UNCORRECTED_ERROR default
[   34.326049] ECC UNCORRECTED_ERROR B
[   34.330322] UNCORRECTED_ERROR default
[   34.335021] ECC UNCORRECTED_ERROR B
[   34.339569] UNCORRECTED_ERROR default
[   34.344116] ECC UNCORRECTED_ERROR B
[   34.348266] UNCORRECTED_ERROR default
[   34.352844] ECC UNCORRECTED_ERROR B
[   34.357391] UNCORRECTED_ERROR default
[   34.361633] UNCORRECTED_ERROR default
[   34.366149] UNCORRECTED_ERROR default
[   34.370849] Correcting single bit ECC error at offset: 4, bit: 3
[   34.378204] UNCORRECTED_ERROR default
[   34.382720] UNCORRECTED_ERROR default
[   34.387268] UNCORRECTED_ERROR default
[   34.391632] ECC UNCORRECTED_ERROR B
[   34.395843] ECC UNCORRECTED_ERROR B
[   34.400329] ECC UNCORRECTED_ERROR B
[   34.404907] ECC UNCORRECTED_ERROR B
[   34.409057] ECC UNCORRECTED_ERROR B
[   34.413238] ECC UNCORRECTED_ERROR B
[   34.417510] ECC UNCORRECTED_ERROR B
[   34.421936] Correcting single bit ECC error at offset: 9, bit: 0
[   34.429046] ECC UNCORRECTED_ERROR B
[   34.433135] UNCORRECTED_ERROR default
[   34.437744] ECC UNCORRECTED_ERROR B
[   34.442352] ECC UNCORRECTED_ERROR B
[   34.446350] UNCORRECTED_ERROR default
[   34.450805] Correcting single bit ECC error at offset: 98, bit: 0
[   34.458190] UNCORRECTED_ERROR default
[   34.462860] UNCORRECTED_ERROR default
[   34.467468] ECC UNCORRECTED_ERROR B
[   34.471527] Correcting single bit ECC error at offset: 3, bit: 2
[   34.478729] UNCORRECTED_ERROR default
[   34.483520] UNCORRECTED_ERROR default
[   34.488037] ECC UNCORRECTED_ERROR B
[   34.492126] ECC UNCORRECTED_ERROR B
[   34.496429] UNCORRECTED_ERROR default
[   34.501129] UNCORRECTED_ERROR default
[   34.505676] Correcting single bit ECC error at offset: 257, bit: 0
[   34.512847] UNCORRECTED_ERROR default
[   34.517150] UNCORRECTED_ERROR default
[   34.521759] UNCORRECTED_ERROR default
[   34.526092] Correcting single bit ECC error at offset: 5, bit: 4
[   34.533477] Correcting single bit ECC error at offset: 64, bit: 6
[   34.540649] UNCORRECTED_ERROR default
[   34.545318] ECC UNCORRECTED_ERROR B
[   34.549774] ECC UNCORRECTED_ERROR B
[   34.553924] UNCORRECTED_ERROR default
[   34.558258] UNCORRECTED_ERROR default
[   34.562866] UNCORRECTED_ERROR default
[   34.567291] ECC UNCORRECTED_ERROR B
[   34.571441] UNCORRECTED_ERROR default
[   34.575866] ECC UNCORRECTED_ERROR B
[   34.580352] Correcting single bit ECC error at offset: 3, bit: 0
[   34.587707] Correcting single bit ECC error at offset: 33, bit: 5
[   34.595062] UNCORRECTED_ERROR default
[   34.599517] UNCORRECTED_ERROR default
[   34.604156] UNCORRECTED_ERROR default
[   34.608673] UNCORRECTED_ERROR default
[   34.613098] Correcting single bit ECC error at offset: 33, bit: 6
[   34.620483] UNCORRECTED_ERROR default
[   34.625305] UNCORRECTED_ERROR default
[   34.629699] UNCORRECTED_ERROR default
[   34.634033] UNCORRECTED_ERROR default
[   34.638336] UNCORRECTED_ERROR default
[   34.642883] UNCORRECTED_ERROR default
[   34.647338] UNCORRECTED_ERROR default
[   34.651672] UNCORRECTED_ERROR default
[   34.656127] UNCORRECTED_ERROR default
[   34.660797] ECC UNCORRECTED_ERROR 1
[   34.665008] ECC UNCORRECTED_ERROR B
[   34.669219] UNCORRECTED_ERROR default
[   34.673645] UNCORRECTED_ERROR default
[   34.678222] ECC UNCORRECTED_ERROR B
[   34.682373] Correcting single bit ECC error at offset: 3, bit: 1
[   34.689727] ECC UNCORRECTED_ERROR B
[   34.694030] Correcting single bit ECC error at offset: 2, bit: 7
[   34.701538] ECC UNCORRECTED_ERROR 1
[   34.705566] UNCORRECTED_ERROR default
[   34.710113] UNCORRECTED_ERROR default
[   34.714569] UNCORRECTED_ERROR default
[   34.719329] ECC UNCORRECTED_ERROR B
[   34.723449] ECC UNCORRECTED_ERROR B
[   34.727630] ECC UNCORRECTED_ERROR B
[   34.732208] UNCORRECTED_ERROR default
[   34.736511] UNCORRECTED_ERROR default
[   34.741119] ECC UNCORRECTED_ERROR B
[   34.745330] UNCORRECTED_ERROR default
[   34.750213] Correcting single bit ECC error at offset: 3, bit: 3
[   34.757507] UNCORRECTED_ERROR default
[   34.762023] Correcting single bit ECC error at offset: 3, bit: 4
[   34.769195] ECC UNCORRECTED_ERROR B
[   34.773620] UNCORRECTED_ERROR default
[   34.778045] ECC UNCORRECTED_ERROR B
[   34.782531] UNCORRECTED_ERROR default
[   34.786895] ECC UNCORRECTED_ERROR B
[   34.791107] ECC UNCORRECTED_ERROR B
[   34.795501] UNCORRECTED_ERROR default
[   34.799804] UNCORRECTED_ERROR default
[   34.804229] UNCORRECTED_ERROR default
[   34.808654] UNCORRECTED_ERROR default
[   34.813171] UNCORRECTED_ERROR default
[   34.817565] UNCORRECTED_ERROR default
[   34.821807] ECC UNCORRECTED_ERROR B
[   34.825897] UNCORRECTED_ERROR default
[   34.830596] UNCORRECTED_ERROR default
[   34.834991] ECC UNCORRECTED_ERROR B
[   34.839111] UNCORRECTED_ERROR default
[   34.843627] Correcting single bit ECC error at offset: 35, bit: 4
[   34.851318] ECC UNCORRECTED_ERROR B
[   34.855468] UNCORRECTED_ERROR default
[   34.860015] ECC UNCORRECTED_ERROR B
[   34.864196] UNCORRECTED_ERROR default
[   34.868621] mtd->read(0x1ff20 bytes from 0xe0) returned ECC error
[   34.875854] jffs2_scan_dirent_node(): Node CRC failed on node at 0x000000e0: Read 0x0c001400, calculated 0xbebd06c6
[   34.902832] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000100: 0x1400 instead
[   34.902893] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000104: 0x0500 instead
[   34.902923] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000108: 0x0400 instead
[   34.902984] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000010c: 0x0900 instead
[   34.903015] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000114: 0x1908 instead
[   34.903045] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000120: 0x0100 instead
[   34.903076] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000012c: 0x0100 instead
[   34.903137] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000130: 0x0100 instead
[   34.903198] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000134: 0x0100 instead
[   34.903228] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000014c: 0x0d00 instead
[   34.903259] Further such events for this erase block will not be printed
[   35.026550] Old JFFS2 bitmask found at 0x0001885c
[   35.026580] You cannot use older JFFS2 filesystems with newer kernels
[   35.029327] Old JFFS2 bitmask found at 0x0001c290
[   35.029357] You cannot use older JFFS2 filesystems with newer kernels
[   35.030212] Old JFFS2 bitmask found at 0x0001d86c
[   35.030242] You cannot use older JFFS2 filesystems with newer kernels
[   35.230163] JFFS2 notice: (512) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   35.250091] ECC UNCORRECTED_ERROR B
[   35.254486] ECC UNCORRECTED_ERROR B
[   35.258728] mtd->read(0x790 bytes from 0x70) returned ECC error
[   35.266082] JFFS2 notice: (512) jffs2_get_inode_nodes: Node header CRC failed at 0x000070. {1900,e000,00000020,7d206e24}
[   35.279754] ECC UNCORRECTED_ERROR B
[   35.283996] ECC UNCORRECTED_ERROR B
[   35.288513] mtd->read(0x800 bytes from 0x0) returned ECC error
[   35.295501] JFFS2 notice: (512) jffs2_get_inode_nodes: Node header CRC failed at 0x000000. {1900,e000,00000020,7d206e24}
# [   35.366027] UNCORRECTED_ERROR default
[   35.370330] UNCORRECTED_ERROR default
[   35.374938] UNCORRECTED_ERROR default
[   35.379425] UNCORRECTED_ERROR default
[   35.383850] mtd->read(0x7f0 bytes from 0x810) returned ECC error
[   35.391326] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x000810. {0900,0000,00000020,10040901}
[   35.543090] UNCORRECTED_ERROR default
[   35.547485] UNCORRECTED_ERROR default
[   35.551849] UNCORRECTED_ERROR default
[   35.556152] UNCORRECTED_ERROR default
[   35.560699] mtd->read(0x7d4 bytes from 0x2c) returned ECC error
[   35.568756] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x00002c. {0900,0000,00000000,08040900}
[   35.582092] JFFS2 warning: (513) jffs2_do_read_inode_internal: no data nodes found for ino #2
[   35.592163]
[   35.592193] =========================
[   35.598297] [ BUG: held lock freed! ]
[   35.602844] -------------------------
[   35.607147] jffs2_gcd_mtd4/513 is freeing memory cfbcfc00-cfbcffff, with a lock still held there!
[   35.617950]  (&f->sem#2){+.+.+.}, at: [<c01bff48>] jffs2_do_crccheck_inode+0xac/0x104
[   35.627197] 2 locks held by jffs2_gcd_mtd4/513:
[   35.632720]  #0:  (&c->alloc_sem){+.+.+.}, at: [<c01c4be0>] jffs2_garbage_collect_pass+0x20/0x814
[   35.643249]  #1:  (&f->sem#2){+.+.+.}, at: [<c01bff48>] jffs2_do_crccheck_inode+0xac/0x104
[   35.653198]
[   35.653259] stack backtrace:
[   35.658447] [<c0046af0>] (unwind_backtrace+0x0/0xec) from [<c009df38>] (debug_check_no_locks_freed+0xe0/0x138)
[   35.670166] [<c009df38>] (debug_check_no_locks_freed+0xe0/0x138) from [<c00fbad4>] (kfree+0xb8/0x1ac)
[   35.681427] [<c00fbad4>] (kfree+0xb8/0x1ac) from [<c01bff80>] (jffs2_do_crccheck_inode+0xe4/0x104)
[   35.692138] [<c01bff80>] (jffs2_do_crccheck_inode+0xe4/0x104) from [<c01c4d84>] (jffs2_garbage_collect_pass+0x1c4/0x814)
[   35.704803] [<c01c4d84>] (jffs2_garbage_collect_pass+0x1c4/0x814) from [<c01c69a0>] (jffs2_garbage_collect_thread+0x168/0x1a0)
[   35.718353] [<c01c69a0>] (jffs2_garbage_collect_thread+0x168/0x1a0) from [<c008b950>] (kthread+0x80/0x88)
[   35.729461] [<c008b950>] (kthread+0x80/0x88) from [<c0041d10>] (kernel_thread_exit+0x0/0x8)
[   35.739532] Returned error for crccheck of ino #2. Expect badness...
[   35.808135] UNCORRECTED_ERROR default
[   35.812561] UNCORRECTED_ERROR default
[   35.817016] UNCORRECTED_ERROR default
[   35.821258] UNCORRECTED_ERROR default
[   35.825744] mtd->read(0x764 bytes from 0x9c) returned ECC error
[   35.832885] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x00009c. {0900,0000,00000000,08061908}
[   35.845916] JFFS2 warning: (513) jffs2_do_read_inode_internal: no data nodes found for ino #3
[   35.856048] Returned error for crccheck of ino #3. Expect badness...
[   35.924346] UNCORRECTED_ERROR default
[   35.928741] UNCORRECTED_ERROR default
[   35.933166] Correcting single bit ECC error at offset: 0, bit: 5
[   35.940368] UNCORRECTED_ERROR default
[   35.944763] mtd->read(0x7a4 bytes from 0xa05c) returned ECC error
[   35.952209] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x00a05c. {0900,0000,00000500,05000800}
[   35.969055] Correcting single bit ECC error at offset: 0, bit: 7
[   35.976318] UNCORRECTED_ERROR default
[   35.980682] UNCORRECTED_ERROR default
[   35.984985] UNCORRECTED_ERROR default
[   35.989318] mtd->read(0x528 bytes from 0x9ad8) returned ECC error
[   35.996612] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x009ad8. {0900,0000,00000500,08000700}
[   36.010467] Correcting single bit ECC error at offset: 3, bit: 7
[   36.017578] UNCORRECTED_ERROR default
[   36.022064] UNCORRECTED_ERROR default
[   36.026367] ECC UNCORRECTED_ERROR B
[   36.030700] mtd->read(0x2e0 bytes from 0x9520) returned ECC error
[   36.038146] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x009520. {1800,4000,00000030,00264820}
[   36.052551] UNCORRECTED_ERROR default
[   36.056732] ECC UNCORRECTED_ERROR B
[   36.061004] UNCORRECTED_ERROR default
[   36.065338] UNCORRECTED_ERROR default
[   36.069854] mtd->read(0xa8 bytes from 0x8f58) returned ECC error
[   36.076904] JFFS2 notice: (513) jffs2_get_inode_nodes: Node header CRC failed at 0x008f58. {0900,0002,00000500,01000020}
[   36.102508] JFFS2 warning: (513) jffs2_do_read_inode_internal: Truncating ino #20 to 613584 bytes failed because it only had 57344 bytes to start with!

I've tried to flash fs via Flash Tool from TI, but got the same result. Also I've tried to flash it from NFS filesystem but when I'd typed 'flash_eraseall /dev/mtd4' I've got following log:


Skipping bad block at 0x00000000
Skipping bad block at 0x00020000
Erasing 128 Kibyte @ 40000 --  0 % complete.
Erasing 128 Kibyte @ 60000 --  0 % complete.
Erasing 128 Kibyte @ 80000 --  0 % complete.
Skipping bad block at 0x000a0000
Skipping bad block at 0x000c0000
Skipping bad block at 0x000e0000
Skipping bad block at 0x00100000
Skipping bad block at 0x00120000
Skipping bad block at 0x00140000
--- many messages about bad blocks ---

--- but sometimes ---
Erasing 128 Kibyte @ e00000 --  5 % complete.
--- but sometimes ---

I've tried to switch to device with the same NAND flash, but got the same result. Also I've tried to flash device with different types of ECC, but didn't succeed.
Any ideas ?