dma_alloc_coherent()返回NULL指针

时间:2015-05-26 19:42:16

标签: c linux-kernel linux-device-driver dma

我正在为Linux 3.13.3的PCI设备编写驱动程序。我正在尝试使用DMA,但dma_alloc_coherent()始终返回NULL。我试图分配17 kB的内存(我试过两次),但总是失败,返回NULL指针。

context->dma_addr = dma_alloc_coherent(context->adev->device, 
        AESDEV_DMA_SIZE, &context->dma_handle, GFP_KERNEL);

这就是我如何设置DMA,一切都在那里成功:

pci_set_master(pdev);

ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
if (ret) {
    dev_err(&pdev->dev, "set_dma_mask failed\n");
    goto setup_dma_failed;
}

ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
if (ret) {
    dev_err(&pdev->dev, "set_consistent_dma_mask failed\n");
    goto setup_dma_failed;
}

0 个答案:

没有答案