【问题标题】:DMA engine is not responding correctly on PowerPC linuxDMA 引擎在 PowerPC linux 上没有正确响应
【发布时间】:2013-08-05 11:16:24
【问题描述】:

DMA 引擎在PowerPC linux 上没有正确响应。当我的PCIe 设备向主机发送读/写请求时,会发生超时。我在较低的地址范围内有 1GB 的 RAM。 我调用了以下函数

pci_device_enable()
pci_set_master()

DMA 内存分配在0x0F00_0000,并且能够从主机的用户空间访问该内存。我该如何调试这个问题。可能是什么原因?

【问题讨论】:

    标签: linux powerpc dma pci-e


    【解决方案1】:

    请检查 PCIe 设备是否使用正确的 DMA 内存地址。您只提到了一个地址,但用户和内核空间中的 DMA 内存地址将不同于从 PCIe 总线看到的 DMA 内存地址。

    你没有说你是如何分配 DMA 内存的,有几种不同的方法。 例如,如果您使用以下调用来获取 DMA 内存,则 dma_addr_t 是地址 在 PCIe 设备中使用。

    void *pci_alloc_consistent(struct pci_dev *dev, size_t size,
                   dma_addr_t *dma_handle);
    

    【讨论】:

      【解决方案2】:

      检查您是否在内核配置中定义了 CONFIG_FSL_DMA 部分来编译 DMA 驱动程序。还要确保您的设备树具有片上 DMA 设备的条目。

      【讨论】:

        猜你喜欢
        • 2016-03-31
        • 2016-09-04
        • 1970-01-01
        • 2011-05-20
        • 2016-10-13
        • 2018-09-01
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        相关资源
        最近更新 更多