Re: GPMI iMX6ull timeout on DMA

Greg Ungerer
2021-01-29T12:44:37Z

Hi Michael,

On 28/1/21 7:45 pm, Michael Nazzareno Trimarchi wrote:
> Hi Greg
>
> On Tue, Aug 13, 2019 at 2:50 AM Greg Ungerer <gerg@kernel.org> wrote:
>>
>> Hi Boris,
>>
>> On 12/8/19 5:31 pm, Boris Brezillon wrote:
>>> On Mon, 12 Aug 2019 12:50:36 +1000
>> [snip]
>>> Hm, CTRL1 is identical. Can you dump all regs at the beginning and at
>>> the end of those funcs?
>>
>> Here is a more complete dump of registers. Trace points are at
>> entry and exit of the respective functions in the different
>> kernel versions. Register dumping code is identical for both.
>>
>>
>> Linux version 4.16.0 (gerg@goober) (gcc version 4.8.3 (GCC)) #10 Tue Aug 13 10:24:28 AEST 2019
>> ...
>
> I ran an overnight reboot process on linux-4.19.y tag: v4.19.169 and
> I'm not able to reproduce up to now.
>
> Do you have an update from your side?

I haven't seen the problem for a while now.
I pretty much only run modern kernels, I am currently using 5.10.
So I am guessing it was resolved somewhere at some point, but I
don't know exactly what change resolved it.

Regards
Greg

>> drivers/mtd/nand/gpmi-nand/gpmi-lib.c(1073): gpmi_begin(): ENTRY
>> HW_GPMI_CTRL0=0x00000000
>> HW_GPMI_CTRL1=0x01c4000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000400
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00010203
>> HW_GPMI_TIMING1=0x00000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x00000000
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000000
>> r->clock[0]=22000000
>> nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
>> nand: Micron MT29F2G08ABAEAWP
>> nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
>> gpmi-nand 1806000.gpmi-nand: enable the asynchronous EDO mode 5
>> drivers/mtd/nand/gpmi-nand/gpmi-lib.c(1073): gpmi_begin(): ENTRY
>> HW_GPMI_CTRL0=0x01800001
>> HW_GPMI_CTRL1=0x0104000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000000
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00010203
>> HW_GPMI_TIMING1=0x05000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x00000000
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000101
>> r->clock[0]=99000000
>> drivers/mtd/nand/gpmi-nand/gpmi-lib.c(1136): gpmi_begin(): EXIT
>> HW_GPMI_CTRL0=0x01800001
>> HW_GPMI_CTRL1=0x01c6800c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000000
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00010101
>> HW_GPMI_TIMING1=0x90000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x00000000
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000101
>> r->clock[0]=99000000
>> Scanning device for bad blocks
>> 5 ofpart partitions found on MTD device gpmi-nand
>> Creating 5 MTD partitions on "gpmi-nand":
>> 0x000000000000-0x000000500000 : "u-boot"
>> 0x000000500000-0x000000600000 : "u-boot-env"
>> 0x000000600000-0x000000800000 : "log"
>> 0x000000800000-0x000010000000 : "flash"
>> 0x000000000000-0x000010000000 : "all"
>> gpmi-nand 1806000.gpmi-nand: driver registered.
>> ...
>>
>> Note that the first ENTRY dump has no matching EXIT dump. From the
>> code I assume it is returning from gpmi_begin() at the
>> "if (!hw.sample_delay_factor)" check.
>>
>>
>> And for the 5.1.14 kernel:
>>
>> Linux version 5.1.14 (gerg@goober) (gcc version 4.8.3 (GCC)) #27 Tue Aug 13 10:20:32 AEST 2019
>> ...
>> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c(512): gpmi_nfc_apply_timings(): ENTRY
>> HW_GPMI_CTRL0=0x00000000
>> HW_GPMI_CTRL1=0x01c4000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000400
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00010203
>> HW_GPMI_TIMING1=0x00000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x00000000
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000000
>> r->clock[0]=22000000
>> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c(536): gpmi_nfc_apply_timings(): EXIT
>> HW_GPMI_CTRL0=0x00000000
>> HW_GPMI_CTRL1=0x0104000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000400
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00020101
>> HW_GPMI_TIMING1=0x60000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x00000000
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000000
>> r->clock[0]=22000000
>> random: fast init done
>> nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
>> nand: Micron MT29F2G08ABAEAWP
>> nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
>> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c(512): gpmi_nfc_apply_timings(): ENTRY
>> HW_GPMI_CTRL0=0x01800001
>> HW_GPMI_CTRL1=0x0104000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000000
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00020101
>> HW_GPMI_TIMING1=0x60000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x0000003f
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000101
>> r->clock[0]=22000000
>> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c(536): gpmi_nfc_apply_timings(): EXIT
>> HW_GPMI_CTRL0=0x01800001
>> HW_GPMI_CTRL1=0x0104000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000000
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00020101
>> HW_GPMI_TIMING1=0xb0000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x0000003f
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000101
>> r->clock[0]=22000000
>> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c(512): gpmi_nfc_apply_timings(): ENTRY
>> HW_GPMI_CTRL0=0x01800001
>> HW_GPMI_CTRL1=0x0104000c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000000
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00020101
>> HW_GPMI_TIMING1=0xb0000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x000000e0
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000000
>> r->clock[0]=22000000
>> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c(536): gpmi_nfc_apply_timings(): EXIT
>> HW_GPMI_CTRL0=0x01800001
>> HW_GPMI_CTRL1=0x01c6800c
>> HW_GPMI_COMPARE=0x00000000
>> HW_GPMI_ECCCTRL=0x00000000
>> HW_GPMI_ECCCOUNT=0x00000000
>> HW_GPMI_PAYLOAD=0x00000000
>> HW_GPMI_AUXILIARY=0x00000000
>> HW_GPMI_TIMING0=0x00010101
>> HW_GPMI_TIMING1=0xe0000000
>> HW_GPMI_TIMING2=0x23023336
>> HW_GPMI_DATA=0x000000e0
>> HW_GPMI_STAT=0xff000005
>> HW_GPMI_DEBUG=0x00000000
>> r->clock[0]=99000000
>> Scanning device for bad blocks
>> 5 fixed-partitions partitions found on MTD device gpmi-nand
>> Creating 5 MTD partitions on "gpmi-nand":
>> 0x000000000000-0x000000500000 : "u-boot"
>> 0x000000500000-0x000000600000 : "u-boot-env"
>> 0x000000600000-0x000000800000 : "log"
>> 0x000000800000-0x000010000000 : "flash"
>> 0x000000000000-0x000010000000 : "all"
>> gpmi-nand 1806000.gpmi-nand: driver registered.
>> ...
>>
>>
>> Regards
>> Greg
>>
>>