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.

66AK2E05: 4K-Page NAND ECC errors

Part Number: 66AK2E05

Hello, I am testing a custom board with 66AK2E05 and a 4K-page NAND chip, Micron MT29F4G08ABBFAH4, with 4K pages, 256 OOB bytes per page and 256KiB PEB.

In order to adapt the software, I have done the following, starting from the K2E-EVM source:

U-boot:

  • Enabled CONFIG_SYS_NAND_PAGE_4K instead of CONFIG_SYS_NAND_PAGE_2K in the config header
  • changed 2048 to 4096 in args_ubi environment variable

Linux Kernel:

  • Commented out all "ti,cs-*" values in the .dts file to keep the settings configured by U-boot, in case the timings are too tight for the new NAND

The result is that I can program the NAND from U-boot, but in Linux if I try to do ubiattach -m 4 (the ubifs partition) I get a kernel error. This happers both after burning the ubi image from u-boot, and also formating the mtd partition using ubiformat:

[   96.019096] ubi0: attaching mtd4
[   96.026619] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
[   96.041697] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
[   96.057546] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
[   96.071115] ubi0 error: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read 64 bytes
[   96.081221] CPU: 0 PID: 574 Comm: ubiattach Tainted: G           O      4.19.59-g5f8c1c6121 #1
[   96.089853] Hardware name: Keystone
[   96.093346] Backtrace:
[   96.095805] [<c020ca30>] (dump_backtrace) from [<c020cd68>] (show_stack+0x18/0x1c)
[   96.103394]  r7:c1004c48 r6:60000013 r5:00000000 r4:c104555c
[   96.109070] [<c020cd50>] (show_stack) from [<c09d5a9c>] (dump_stack+0x90/0xa4)
[   96.116311] [<c09d5a0c>] (dump_stack) from [<c071f248>] (ubi_io_read+0x1bc/0x340)
[   96.123812]  r7:c1004c48 r6:00000040 r5:ffffffb6 r4:db710000
[   96.129486] [<c071f08c>] (ubi_io_read) from [<c071f5f0>] (ubi_io_read_ec_hdr+0x4c/0x204)
[   96.137597]  r10:00000000 r9:00000040 r8:db7a5d80 r7:00000000 r6:db710000 r5:db711000
[   96.145444]  r4:00000000
[   96.147984] [<c071f5a4>] (ubi_io_read_ec_hdr) from [<c07244f0>] (ubi_attach+0x1d8/0x1518)
[   96.156181]  r10:db711000 r9:00000000 r8:db7a5d80 r7:db710000 r6:db712000 r5:dc344f80
[   96.164028]  r4:00000000

Moreover, trying to read the NAND shows ECC errors in every block, eg.:

root@myboard:~# nanddump -l 0x4000 /dev/mtd4  > /dev/null 
ECC failed: 64
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 4
Block size 262144, page size 4096, OOB size 256
Dumping data starting at 0x00000000 and ending at 0x00004000...
ECC: 8 uncorrectable bitflip(s) at offset 0x00000000
ECC: 8 uncorrectable bitflip(s) at offset 0x00001000
ECC: 8 uncorrectable bitflip(s) at offset 0x00002000
ECC: 8 uncorrectable bitflip(s) at offset 0x00003000

Also, U-boot reports OOB size as 128B, though I assume this is not critical since it needs 80 bytes for the ECC.  Do I need to modify the ECC layout to take into account the larger OOB? This cannot be responsible for ubiattach crashing after ubiformat, so there must be something wrong (too) in the Linux code.

I suspect that the timing may also need relaxing, however I have not found a clear way to calculate the ns value required in the .dts (U-boot and Linux) based on the NAND specs. The interval names used in .dts are not clearly related to the NAND specs, am I missing some Application Note or other documentation on the subject?

Is there any TI experience / guidance with this or other similar NAND chips?

Any help appreciated.

  • Hi, Giannis,

    We haven't tried different NAND part for K2E, but there was a similar discussion on the other Keystone-2 family device. In that thread, it shows the ECC layout for Keystone-2 device. 

    https://e2e.ti.com/support/processors/f/791/p/545410/1992122#1992122

    Is this a 8-bit or 16-bit part? If 16-bit part, would it be possible to try a pin compatible 8-bit NAND?

    Rex

  • Hi Rex,

    the NAND part we are using is alerady 8-bit. The problem I have is with the Linux kernel driver, as I get ECC errors and crash even after ubiformat.

  • I did some more testing with Linux, erasing the first block, writing 4096 zeros to the first page and reading it back and it seems there is something weird with the OOB data usage (file zeros contains 4096 zeros):

    root@myboard:~# flash_erase /dev/mtd4 0 1
    Erasing 256 Kibyte @ 0 -- 100 % complete
    root@myboard:~# nandwrite  /dev/mtd4 < zeros
    Writing data to block 0 at offset 0x0
    root@myboard:~# nanddump /dev/mtd4 -l 0x1000 -s 0x000 -o -c
    ECC failed: 2915
    ECC corrected: 0
    Number of bad blocks: 0
    Number of bbt blocks: 4
    Block size 262144, page size 4096, OOB size 256
    Dumping data starting at 0x00000000 and ending at 0x00001000...
    ECC: 8 uncorrectable bitflip(s) at offset 0x00000000
    0x00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000001c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000002a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000002b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000002c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000002d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000002e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000002f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000003a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000003b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000003c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000003d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000003e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000003f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000004a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000004b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000004c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000004d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000004e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000004f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000005a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000005b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000005c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000005d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000005e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000005f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000006a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000006b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000006c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000006d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000006e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000006f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000007a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000007b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000007c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000007d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000007e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000007f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000810: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000840: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000008a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000008b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000008c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000008d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000008e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000008f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000009a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000009b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000009c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000009d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000009e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x000009f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000a90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000aa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000bb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000bd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000cc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000cf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000d90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000db0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000dc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000dd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000de0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000eb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ec0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ed0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000fa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
      OOB Data: 0a 9a b3 22 0c 65 41 eb f2 02 12 51 00 01 00 97  |...".eA....Q....|
    

    It seems that the Linux driver writes the ECC data to the last 128 OOB bytes. I tested again with ubiformat and the same nanddump command gives:

    ECC failed: 9043
    ECC corrected: 0
    Number of bad blocks: 0
    Number of bbt blocks: 4
    Block size 262144, page size 4096, OOB size 256
    Dumping data starting at 0x00000000 and ending at 0x00001000...
    ECC: 1 uncorrectable bitflip(s) at offset 0x00000000
    0x00000000: 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00  |UBI#............|
    0x00000010: 00 00 10 00 00 00 20 00 5e 7b 65 ee 00 00 00 00  |...... .^{e.....|
    0x00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    0x00000030: 00 00 00 00 00 00 00 00 00 00 00 00 ad 32 72 c7  |.............2r.|
    0x00000040: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000000a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000000b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000000c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000000d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000000e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000000f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000110: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000120: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000130: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000140: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000150: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000160: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000170: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000190: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000001a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000001b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000001c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000001d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000001e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000001f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000210: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000220: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000230: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000240: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000250: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000260: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000270: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000280: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000290: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000002a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000002b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000002c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000002d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000002e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000002f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000300: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000310: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000320: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000330: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000340: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000350: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000360: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000370: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000380: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000003a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000003b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000003c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000003d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000003e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000003f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000400: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000410: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000420: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000430: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000440: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000450: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000460: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000470: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000480: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000490: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000004a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000004b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000004c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000004d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000004e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000004f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000500: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000510: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000520: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000530: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000540: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000550: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000560: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000570: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000580: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000590: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000005a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000005b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000005c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000005d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000005e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000005f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000600: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000610: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000620: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000630: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000640: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000650: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000660: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000670: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000680: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000690: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000006a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000006b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000006c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000006d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000006e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000006f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000700: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000710: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000720: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000730: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000740: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000750: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000760: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000770: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000780: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000790: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000007a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000007b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000007c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000007d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000007e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000007f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000800: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000810: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000820: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000830: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000840: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000850: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000860: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000870: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000880: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000890: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000008a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000008b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000008c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000008d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000008e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000008f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000900: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000910: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000920: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000930: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000940: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000950: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000960: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000970: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000980: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000990: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000009a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000009b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000009c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000009d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000009e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x000009f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000a90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000aa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ab0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ac0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ad0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ae0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000af0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000b90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ba0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000bb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000bc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000bd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000be0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000bf0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000c90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ca0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000cb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000cc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000cd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ce0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000cf0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000d90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000da0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000db0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000dc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000dd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000de0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000df0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000e90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ea0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000eb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ec0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ed0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ee0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ef0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000f90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000fa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000fb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000fc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000fd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000fe0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    0x00000ff0: 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  |................|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
      OOB Data: 8e ad a6 01 ab 75 a3 2b 6a 6c 81 40 00 00 00 cc  |.....u.+jl.@....|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: 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  |................|
      OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  |................|
    

    So the first 16 bytes of the last 128 OOB bytes (i.e. OOB bytes 128-143) are non-FF,  due to only the first 512B ECC block being non-FF. Still, nanddump reports ECC read errors, right after ubiformat, like after nandwrite

  • So, I dug deeper and found out that the error seem to be related to the ECC/OOB layout:

    • The NAND chip supports optional on-die 8bit ECC, which is automatically written to bytes 128-255 of each page's OOB. I knew that but since it is optional I assumed it was off so didnt look much into it. Alas...
    • U-boot does not enable on-die ECC, assumes 128 bytes OOB size (instead of actual 256), and uses 80 bytes within bytes 0-127 for the ECC calculated by the Keystone/Davinci HW ECC engine.
    • In the Linux kernel the plot thickens: davinci_nand.c and nand_micron.c set the OOB layout, haven't check the order yet. More specificaly:
    • nand_micron.c also performe a SET_FEATURE call and enables NAND on-die ECC calculation/check, also updates the OOB layout so that bytes 0-1 reserved for bad block marker, bytes 2-127 are free for user/fs metadata and bytes 128-255 are allocated to ECC (calculated by the NAND on-die engine)
    • davinci_nand.c uses nand_ooblayout_lp_ops layout also seems to use the same ECC layout, but tries to write ECC bytes on the area used by on-die ECC engine, which is not permitted by the NAND device.

    It seems that the NAND chip I am using is not properly supported by the Linux kernel (v4.19.59) AND that there is inconcistency between U-boot and Linux in the way ECC is used. Moreover, the davinci_nand.c driver may not be ready to work with NAND devices with internal ECC engine. It is not clear to me in this case if the SoC ECC engine is even usefull in this case, its only purpose is to protect against AEMIF corruption, not NAND bit flips. Is there any experience with 8-bit ECC NAND with Keystone/Davinci SoCs?

  • I found that this issue (NAND on-die ECC vs SoC ECC) has already been asked about the AM225x devices more that two years ago and a solution by TI was supposed to be provided eventually, is there any progress on that?

    e2e.ti.com/.../755803

  • Hi, Giannis,

    Let me discuss this internally and see if I have info and also on the ECC layout.

    Rex

  • Hi, Giannis,

    Sorry for the slow response. I haven't heard back from my co-worker. When I reviewed your post,  I suspect the ECC layout may have something to do with the issue. In one of TI document, it describes how ECC layout is for the other device, but I think it applies to K2E as well.

    https://processors.wiki.ti.com/index.php/DM365_Nand_ECC_layout

    If the NAND chip you used has different layout, do you think the fields in nand_ecclayout should be modified accordingly?

    Rex

  • Hi Rex,

    though I am not certain, I understand that what needs to be done is use the on-die NAND ECC both in U-boot and Linux. After all, the NAND requires 8-bit ECC and the K2E can only offer 4-bit so it is not enough. For that I think both U-boot and Linux need adjustments:

    U-boot must enable the NAND ECC (it is disabled by default) before reading / writing from it, and check for ECC errors after each read in order to rewrite the sector or move the faulty page to another one. These should be probably done in the NAND device driver

    2. In Linux nand_micron.c must check for ECC errors after read. Maybe it already does that, not sure.

    K2E ECC must be either disabled (ecc-bits=0 I suppose) or adjusted to work independently of the NAND ECC, i.e. store the ECC bytes in the first 128 OOB bytes. However, if and how it can be easily combined with the NAND-specific ECC checking is not clear to me.

    I would like to know another view on these, before I start implementing them, in case there is a suitable solution more readily available.

    Giannis

  • Hi, Giannis,

    I am not familiar with this subject, and can't provide good suggestion. To enable the on-die ECC, would the entry, nand-ecc-mode="hw" good ? Current K2E only support 4 bit ECC, and yes, this will need to be modified. It seems to me that davinci_nand.c need to overhaul to reflect the new flash architecture.

    Rex