GPMI IMX6ull timeout on dma

Michael Nazzareno Trimarchi
2018-10-02T13:22:54Z

Hi all

I have a strange problem on booting an imx6ull system. The problem is
not systematic and seems that it depends on how bootloader is using
the nand on first stage boot. BTW kernel can not always pass to go to
edo time 5 (even 4). If I power off and power on the unit the nand
work properly.

[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.17.0-rc1 (michael@panicking) (gcc
version 6.4.0 (Buildroot 2018.02-rc2-00006-g39101b7)) #2 SMP Tue Oct 2
08:24:58 CEST 2018

[ 1.612357] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
[ 1.618905] nand: Micron MT29F2G08ABAEAH4
[ 1.623126] nand: 256 MiB, SLC, erase size: 128 KiB, page size:
2048, OOB size: 64
[ 2.651940] gpmi-nand 1806000.gpmi-nand: DMA timeout, last DMA :2
[ 2.658146] gpmi-nand 1806000.gpmi-nand: Show GPMI registers :
[ 2.664203] gpmi-nand 1806000.gpmi-nand: offset 0x000 : 0x20830002
[ 2.670474] gpmi-nand 1806000.gpmi-nand: offset 0x010 : 0x00000000
[ 2.676849] gpmi-nand 1806000.gpmi-nand: offset 0x020 : 0x00000000
[ 2.683217] gpmi-nand 1806000.gpmi-nand: offset 0x030 : 0x00000000
[ 2.689482] gpmi-nand 1806000.gpmi-nand: offset 0x040 : 0x00000000
[ 2.695840] gpmi-nand 1806000.gpmi-nand: offset 0x050 : 0x00000000
[ 2.702202] gpmi-nand 1806000.gpmi-nand: offset 0x060 : 0x01c6800c
[ 2.708470] gpmi-nand 1806000.gpmi-nand: offset 0x070 : 0x00010101
[ 2.714826] gpmi-nand 1806000.gpmi-nand: offset 0x080 : 0xe0000000
[ 2.721093] gpmi-nand 1806000.gpmi-nand: offset 0x090 : 0x23023336
[ 2.727450] gpmi-nand 1806000.gpmi-nand: offset 0x0a0 : 0x000001ee
[ 2.733812] gpmi-nand 1806000.gpmi-nand: offset 0x0b0 : 0xff000001
[ 2.740078] gpmi-nand 1806000.gpmi-nand: offset 0x0c0 : 0x00000000
[ 2.746437] gpmi-nand 1806000.gpmi-nand: offset 0x0d0 : 0x05020000
[ 2.752794] gpmi-nand 1806000.gpmi-nand: Show BCH registers :
[ 2.758626] gpmi-nand 1806000.gpmi-nand: offset 0x000 : 0x00000100
[ 2.764982] gpmi-nand 1806000.gpmi-nand: offset 0x010 : 0x00000010
[ 2.771247] gpmi-nand 1806000.gpmi-nand: offset 0x020 : 0x00000000
[ 2.777604] gpmi-nand 1806000.gpmi-nand: offset 0x030 : 0x00000000
[ 2.783961] gpmi-nand 1806000.gpmi-nand: offset 0x040 : 0x00000000
[ 2.790226] gpmi-nand 1806000.gpmi-nand: offset 0x050 : 0x00000000
[ 2.796582] gpmi-nand 1806000.gpmi-nand: offset 0x060 : 0x00000000
[ 2.802942] gpmi-nand 1806000.gpmi-nand: offset 0x070 : 0x00000000
[ 2.809208] gpmi-nand 1806000.gpmi-nand: offset 0x080 : 0x030a2080
[ 2.815564] gpmi-nand 1806000.gpmi-nand: offset 0x090 : 0x083e2080
[ 2.821924] gpmi-nand 1806000.gpmi-nand: offset 0x0a0 : 0x070a4080
[ 2.828191] gpmi-nand 1806000.gpmi-nand: offset 0x0b0 : 0x10da4080
[ 2.834546] gpmi-nand 1806000.gpmi-nand: offset 0x0c0 : 0x070a4080
[ 2.840813] gpmi-nand 1806000.gpmi-nand: offset 0x0d0 : 0x10da4080
[ 2.847170] gpmi-nand 1806000.gpmi-nand: offset 0x0e0 : 0x070a4080
[ 2.853527] gpmi-nand 1806000.gpmi-nand: offset 0x0f0 : 0x10da4080
[ 2.859794] gpmi-nand 1806000.gpmi-nand: offset 0x100 : 0x00000000
[ 2.866153] gpmi-nand 1806000.gpmi-nand: offset 0x110 : 0x00000000
[ 2.872513] gpmi-nand 1806000.gpmi-nand: offset 0x120 : 0x00000000
[ 2.878779] gpmi-nand 1806000.gpmi-nand: offset 0x130 : 0x00000000
[ 2.885135] gpmi-nand 1806000.gpmi-nand: offset 0x140 : 0x00000000
[ 2.891401] gpmi-nand 1806000.gpmi-nand: offset 0x150 : 0x20484342
[ 2.897759] gpmi-nand 1806000.gpmi-nand: offset 0x160 : 0x01000000
[ 2.904117] gpmi-nand 1806000.gpmi-nand: offset 0x170 : 0x00000000
[ 2.910400] gpmi-nand 1806000.gpmi-nand: BCH Geometry :
[ 2.910400] GF length : 13
[ 2.910400] ECC Strength : 8
[ 2.910400] Page Size in Bytes : 2110
[ 2.910400] Metadata Size in Bytes : 10
[ 2.910400] ECC Chunk Size in Bytes: 512
[ 2.910400] ECC Chunk Count : 4
[ 2.910400] Payload Size in Bytes : 2048
[ 2.910400] Auxiliary Size in Bytes: 16
[ 2.910400] Auxiliary Status Offset: 12
[ 2.910400] Block Mark Byte Offset : 1999
[ 2.910400] Block Mark Bit Offset : 0
[ 2.958231] gpmi-nand 1806000.gpmi-nand: Chip: 0, Error -110

What bootloader do is just attach the ubi and then boot the image

ubi0: attaching mtd1
ubi0: scanning is finished
ubi0: attached mtd1 (name "mtd=5", size 231 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 1844, bad PEBs: 4, corrupted PEBs: 0
ubi0: user volume: 4, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 4/2, WL threshold: 4096, image sequence number: 0
ubi0: available PEBs: 2, total reserved PEBs: 1842, PEBs reserved for
bad PEB handling: 36
Read 0 bytes from volume kernel to 82800000
No size specified -> Using max size (16887808)
## Loading kernel from FIT Image at 82800000 ...
Using 'conf@2' configuration
Verifying Hash Integrity ... OK
Trying 'kernel@1' kernel subimage
Description: kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x828000ac
Data Size: 6685920 Bytes = 6.4 MiB
Architecture: ARM
OS: Linux
Load Address: 0x80008000
Entry Point: 0x80008000
Hash algo: sha1
Hash value: 4646b0eea535d8ea9e2f7167bdeedc7668b2a948
Verifying Hash Integrity ... sha1+ OK
## Loading fdt from FIT Image at 82800000 ...
Using 'conf@2' configuration
Trying 'fdt@2' fdt subimage
Description: imx6ull-bammi.dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x82e67730
Data Size: 28667 Bytes = 28 KiB
Architecture: ARM
Hash algo: sha1
Hash value: 1cf147576a30eb901a6306172f9385d6a6b65753
Verifying Hash Integrity ... sha1+ OK
Booting using the fdt blob at 0x82e67730
Loading Kernel Image ... OK
Using Device Tree in place at 82e67730, end 82e7172a
Using Device Tree in place at 82e67730, end 82e7472a

Any idea?

Michael