This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DMA mask issue

Hello

I use 6636 multi core chip.

I tested a simple PCI-DMA communication program and linux device driver. form 6636 board to Custom FPGA board. but It's doesn't work

'dma_alloc_coherent' function is not working in my driver code.

DMESG  is   " pci 0000:04:00.0: coherent DMA mask 0xffffffff is smaller than system GFP_DMA mask 0x87fffffff"

Could you help me??

Thank you

Regards.

  • That system DMA mask looks wrong (but that would be a bug in the arch code).

    Try setting the coherent DMA mask to the same value.
  • Hi Shin,
    This thread has been to device forum for faster response.
    Thank you for your patience.
  • Hi,

    I have few questions and recommendation.

    1. What application it is? Who is the EP and RC?

    2 What is MCSDK version used?

    3. Are you running into issues on EVM or custom board? I would recommend you to run below example on EVM.

    4848.pciedemo.c

    The above PCIe example sets C6678 as endpoint which can be run on Keystone 2 DSP and calls dma_alloc_coherent.

  • Hello, Rajasekaran K

    I prepare for your question.

    1. The RC is C6636 custom board based on XTCIEVMK2x, and OS is Linux povided Keystone2 User guide.
    EP is Xilinx FPGA. and I have one PLX switch chip.

    2. I installed MCSDK 3.01.00.03. but I don't use the MCSDK, because RC system have Linux system.

    3. answer is included 1.

    anotherting. I can download 4848.pciedemo.c , permission denied.

    Thank you

    Regards.
  • Hello,

    I am developping a PCI driver and I have the same problem as k.s shin : "coherent DMA mask 0xffffffff is smaller than system GFP_DMA mask 0x87fffffff"
    Is there any way to fix this?

    i'm working on a keystone II with linux 3.10.61 for a custom FPGA and I don't use the MCSDK
    Thank you !

    Regards
  • Hello
    I think I use a DMA_BIT_MASK(64) instead of DMA_BIT_MASK(32) in my linux device driver. but I'm not sure because the project was canceled. I can't remeber cleary.
    Sorry.
    Regards.