Xilinx / dma_ip_drivers

Xilinx QDMA IP Drivers
https://xilinx.github.io/dma_ip_drivers/
526 stars 398 forks source link

Error when doing a dma transfer with XDMA driver after a partial reconfiguration with XVSEC mcap driver #243

Closed inigodiezulzu closed 4 months ago

inigodiezulzu commented 7 months ago

First of all with both drivers installed I use the XDMA driver for dma transfers and it works fine. Then I partially reconfigure the fpga successfully and when I do a dma transfer again I get an error. In order to be able to use the XDMA driver again I have to reinstall the kernel module.

Error:

dev/xdma0_h2c_0, write 0x8000 @ 0x80010000 failed -1.
write file: Unknown error 512

DMESG:

[1801353.974129] xvsec_gen_open success
[1801353.974147] xvsec_mcap_open: mcap_ctx address : 000000005ea1f029
[1801353.974153] xvsec_mcap_get_revision: vsec_id:1, rev_id: 1
[1801353.974230] Ctrl Data : 0x364, 0x10101
[1801353.974233] Bit File Name : /home/usuario/Escritorio/Inigo/vivado/WS1/matmul_v1/bitstreams/a3_matmul_a3_slot_1_partial.bit
[1801353.974234] Before fopen
[1801353.974236] file name : 00000000accb0d33
[1801353.974242] After fopen
[1801353.974246] After getsize
[1801353.974354] found sync pattern : 152
[1801354.333124] xvsec_gen_close success
[1801428.709298] xdma:xdma_xfer_submit: xfer 0x0000000057634671,32768, s 0x1 timed out, ep 0x80018000.
[1801428.709304] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x00000000a87248b8) = 0x1fc00006 (id).
[1801428.709307] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x00000000d3fcc344) = 0x00000006 (status).
[1801428.709310] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x0000000051fff017) = 0x00f83e1f (control)
[1801428.709313] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x00000000458cddc9) = 0xef490400 (first_desc_lo)
[1801428.709316] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x0000000027f32040) = 0x0000007c (first_desc_hi)
[1801428.709318] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x0000000035e4ffbb) = 0x00000007 (first_desc_adjacent).
[1801428.709321] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x000000000ee79abb) = 0x00000008 (completed_desc_count).
[1801428.709324] xdma:engine_reg_dump: 0-H2C0-MM: ioread32(0x00000000e933106d) = 0x00000000 (interrupt_enable_mask)
[1801428.709329] xdma:engine_status_dump: SG engine 0-H2C0-MM status: 0x00000006: DESC_STOPPED,DESC_COMPL
[1801428.709332] xdma:transfer_abort: abort transfer 0x0000000057634671, desc 8, engine desc queued 0.
[1801438.949274] xdma:xdma_xfer_submit: xfer 0x0000000057634671,16384, s 0x1 timed out, ep 0x8001c000.
[1801438.949281] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x00000000be4bb3da) = 0x1fc10006 (id).
[1801438.949284] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x0000000062fee91d) = 0x00000006 (status).
[1801438.949287] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x0000000005597473) = 0x00f83e1f (control)
[1801438.949290] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x000000009ab7caf6) = 0xf9370200 (first_desc_lo)
[1801438.949292] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x00000000bdc8a6f0) = 0x0000007c (first_desc_hi)
[1801438.949295] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x00000000cad9199c) = 0x00000003 (first_desc_adjacent).
[1801438.949298] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x0000000060ab1397) = 0x00000004 (completed_desc_count).
[1801438.949300] xdma:engine_reg_dump: 0-C2H0-MM: ioread32(0x0000000099983a03) = 0x00000000 (interrupt_enable_mask)
[1801438.949305] xdma:engine_status_dump: SG engine 0-C2H0-MM status: 0x00000006: DESC_STOPPED,DESC_COMPL
[1801438.949309] xdma:transfer_abort: abort transfer 0x0000000057634671, desc 4, engine desc queued 0.

Does anyone know the cause of this problem and give some suggestions?

inigodiezulzu commented 4 months ago

I have already solved this issue