我想为PCI设备和RAM之间的dma传输分配内存。我正在使用下一个函数来分配内存:
pci_alloc_consistent
我想分配2GB以下的内存。否则,pci设备将失败。但是这个函数提供了我的ram(4GB)的任何地址。有没有解决方案?
BR
答案 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_mask
或dma_set_mask
来限制非连贯映射。
调用上述功能的好地方是来自PCI驱动程序“探测”功能。