Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎01-04-2021

AXI -DMA is not accessible in linux

I'm using ZCU-102, which is having PL logic  to perform DMA operations using AXI.

Issue: AXI VDMA - device has no channels while booting and unable to run axidmatest.

With reference to Linux Soft DMA Driver , in DTB, AXI DMA shall be in below format

axi_dma_1: dma@40400000 where as DTB generated using my XSA contains dma@a4000000.

a4000000 is the base address provided in PL design.

Compilation Setup : Petalinux 2019.2

Attached DTB, Boot log files and PL design block diagram.

Kindly suggest any solution to access the AXI DMA in PS.

Thanks in advance.

Address Allocation.jpg
IP Core config.jpg
0 Kudos
1 Reply
Registered: ‎03-12-2021

Hi ,

I'm also working to make axidmatest work. I saw some problems regarding your deign : 

1 : You have not connected mm2s and S2mm interrupts . That's why you have these messages when booting : 


[ 3.762324] xilinx-vdma a4000000.dma: Please ensure that IP supports buffer length > 23 bits
[ 3.770770] xilinx-vdma a4000000.dma: unable to request IRQ 0
[ 3.776520] xilinx-vdma a4000000.dma: unable to request IRQ 0
[ 3.782260] xilinx-vdma a4000000.dma: dma_async_device_register: device has no channels!
[ 3.790342] xilinx-vdma a4000000.dma: Xilinx AXI DMA Engine Driver Probed!!


2. Personnaly I did not use FIFO I just connect directly DMA in loopback ( S_AXIS_S2MM to MAXIS_MM2S) . Don't know it is an error or not . 

3. I can't see the test client in your Device tree !  you should add it manually 


 /* Node for axidma test client*/
   axidmatest_1: axidmatest@1 {
      compatible ="xlnx,axi-dma-test-1.00.a";
      dmas = <&axi_dma_lpbck 0
      &axi_dma_lpbck 1>;
      dma-names = "axidma0", "axidma1";


 In System-user.dtsi. Adapt the names with your project. 


Then I can't help you more as i failed to make the axidma test run too .  I followed the instructions in Linux Soft DMA Driver - Xilinx Wiki - Confluence (  : 



Running the dmatest client will display the message when the test is successful,
echo 1 > /sys/module/dmatest/parameters/verbose
echo dma1chan0 > /sys/module/dmatest/parameters/channel
echo 2000 > /sys/module/dmatest/parameters/timeout
echo 1 > /sys/module/dmatest/parameters/iterations
echo 1 > /sys/module/dmatest/parameters/run
[ 359.611486] dmatest: Started 1 threads using dma1chan0
[ 359.617245] dmatest: dma1chan0-copy0: result #1: 'test passed' with src_off=0x830 dst_off=0x368 len=0x3560 (0)
[ 359.629924] dmatest: dma1chan0-copy0: summary 1 tests, 0 failures 77 iops 1002 KB/s (0)



When i type these commands nothing happened for me ...  If you have some more info I would be verry happy to read you progression ! 




0 Kudos