Getting a DMA channel on x86 for a PCIe transfer

johannes at gnu-linux.rocks johannes at gnu-linux.rocks
Tue Aug 8 12:01:15 EDT 2023


Hi,
I want to transfer data from the RAM to a BAR with memory space of a PCIe Endpoint over a DMA on a x86 System.

But currently I am failing to get a channel of a DMA controller.

In the probe function, I tried to requst a DMA channel with:

dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE | DMA_PRIVATE, mask);
chan = dma_request_channel(mask, NULL, NULL);

and also with:

chan =  dma_request_chan(&pdev->dev, pci_name(pdev));

But in both cases IS_ERR_OR_NULL(chn) is true, so I am not getting a valid DMA channel.

What am I doing wrong? How to get a DMA channel on a x86 system?

Best regards,
Johannes



More information about the Kernelnewbies mailing list