DMA chain execution failed

      DMA chain execution failed

      I have created custom SPI controller slave driver. When the driver is running I sporadically get the following errors:

      ​DMA chain execution failed
      UBI error: ubi_io_write: error -5 while writing 2048 bytes to PEB 135:20480, written 0 bytes
      UBI warning: ubi_eba_write_leb: failed to write data to PEB 135
      UBI: recover PEB 135, move data to PEB 710
      DMA chain execution failed
      UBI error: ubi_io_write: error -5 while writing 2048 bytes to PEB 710:2048, written 0 bytes
      UBI warning: recover_peb: failed to write to PEB 710
      UBI: try again
      UBI: run torture test for PEB 710
      UBI: recover PEB 135, move data to PEB 711
      DMA chain execution failed
      UBI error: ubi_io_write: error -5 while writing 131072 bytes to PEB 710:0, written 8192 bytes
      UBI error: erase_worker: failed to erase PEB 710, error -5
      UBI: mark PEB 710 as bad
      DMA chain execution failed
      UBI error: ubi_io_write: error -5 while writing 18432 bytes to PEB 711:4096, written 2048 bytes
      UBI warning: recover_peb: failed to write to PEB 711
      UBI: try again
      UBI: recover PEB 135, move data to PEB 712
      DMA chain execution failed
      UBI error: ubi_io_write: error -5 while writing 18432 bytes to PEB 712:4096, written 2048 bytes
      UBI warning: recover_peb: failed to write to PEB 712
      UBI: try again
      UBI: recover PEB 135, move data to PEB 713
      BCH timeout, last DMA: 1
      Show GPMI registers :
      offset 0x000 : 0x03800000
      offset 0x010 : 0x00000000
      offset 0x020 : 0x00000000
      offset 0x030 : 0x00000840
      offset 0x040 : 0x181fc000
      offset 0x050 : 0x181fc800
      offset 0x060 : 0x0104000c
      offset 0x070 : 0x00010203
      offset 0x080 : 0xffff0000
      offset 0x090 : 0x03023336
      offset 0x0a0 : 0xc1000030
      offset 0x0b0 : 0xff000005
      offset 0x0c0 : 0x01000101
      offset 0x0d0 : 0x05010000
      BCH Geometry :
      GF length : 14
      ECC Strength : 8
      Page Size in Bytes : 2048
      Metadata Size in Bytes : 32
      ECC Chunk Size in Bytes: 1024
      ECC Chunk Count : 2
      DMA chain execution failed
      UBI error: ubi_io_write: error -5 while writing 2048 bytes to PEB 713:2048, written 0 bytes
      UBI: 7 PEBs left in the reserve
      UBI: run torture test for PEB 711
      UBI warning: recover_peb: failed to write to PEB 713
      UBI warning: ubi_ro_mode: switch to read-only mode
      UBIFS error (pid 1136): ubifs_wbuf_sync_nolock: cannot write 2048 bytes to LEB 383:16384
      UBI error: ubi_io_write: read-only mode
      UBI error: erase_worker: failed to erase PEB 711, error -30
      UBI error: do_work: work failed with error code -30
      # UBI error: ubi_thread: ubi_bgt0d: work failed with error code -30
      UBIFS error (pid 1098): ubifs_wbuf_sync_nolock: cannot write 2048 bytes to LEB 10:22528
      UBIFS warning (pid 1098): ubifs_ro_mode: switched to read-only mode, error -30
      UBIFS: cannot re-mount R/O due to prior errors
      UBIFS error (pid 1181): ubifs_wbuf_sync_nolock: cannot write 2048 bytes to LEB 371:112640
      UBIFS error (pid 1181): ubifs_wbuf_sync_nolock: cannot write 2048 bytes to LEB 371:112640
      UBIFS error (pid 1181): ubifs_wbuf_sync_nolock: cannot write 2048 bytes to LEB 383:16384
      UBIFS error (pid 1181): ubifs_write_node: cannot write 2048 bytes to LEB 1:10240, error -30
      UBIFS warning (pid 1181): ubifs_ro_mode: switched to read-only mode, error -30


      Flash blocks are marked as bad, but after using nand scrub from U-boot, the flash seems OK.

      My driver has an interrupt service routine which copies data from the SPI controller into a memory buffer. The SPI clock rate is 6.25 MHz.

      The "DMA chain execution failed" message comes from the "F&S i.MX6 GPMI NAND flash driver". What may cause this error?

      Hein Gustavsen
      Miros AS
      You are lucky, we have found a solution to this issue just this week. Can you try the attached patch? It should solve this DMA chain execution error.

      Go to the top directory of the Linux kernel and apply with

      Source Code

      1. patch -p 1 < 0001-Fix-F-S-gpmi-nand-fus.c-driver.patch


      Please note the '<' for input redirection. Then recompile the kernel.


      Your F&S Support Team
      Files
      F&S Elektronik Systeme GmbH
      As this is an international forum, please try to post in English.
      Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.