DMA内存(前2 GB)

时间:2016-05-19 09:38:24

标签: linux-device-driver dma pci

我想为PCI设备和RAM之间的dma传输分配内存。我正在使用下一个函数来分配内存:

pci_alloc_consistent 

我想分配2GB以下的内存。否则,pci设备将失败。但是这个函数提供了我的ram(4GB)的任何地址。有没有解决方案?

BR

1 个答案:

答案 0 :(得分:2)

您可以在pci_set_coherent_dma_mask上致电struct pci_dev *,或者最好在dma_set_coherent_mask上致电pcidev->dev来设置屏蔽。将掩码设置为DMA_BIT_MASK(31)会将相干映射限制为前2 GiB。为了保持一致性,您可能还希望通过调用pci_set_dma_maskdma_set_mask来限制非连贯映射。

调用上述功能的好地方是来自PCI驱动程序“探测”功能。