Xilinx AXI DMA driver

Tags: dma xilinx linux axi

The Xilinx AXI DMA driver seems to have some quirks. I am not sure if they are bugs or not.

  1. There seems to be a hard limit set on the maximum transfer size for a CDMA transaction. The CDMA product guide states that the only limit on transaction size should be from the length of the BTT (bytes to transfer) field. At 26 bits, this should allow for a maximum transfer size of $2^{26}-1 = 67108863$ bytes. However, in the driver code, we find this:

    xdev->max_buffer_len = GENMASK(XILINX_DMA_MAX_TRANS_LEN_MAX - 1, 0);
    

    XILINX_DMA_MAX_TRANS_LEN_MAX is 23, so this sets max_buffer_len to 223 - 1 = 8388607. 8 MB instead of 64 MB!

NOTE: This note is subject to be out-of-date, depending on the source code in question