I am trying to DMA from a custom ASIC over PCIe and cannot get it to work. If I take the Hypervisor out of the equation (by just booting Linux), the DMA seems to work fine. When I add in the Hypervisor, I get a "Transmit Error" from the Freescale ELO driver (fsldma.c).
fsl-elo-dma ffe100300.dma0: chan0: Transfer Error!
fsl-elo-dma ffe100300.dma0: chan0: irq: unhandled sr 0x00000080
According to the t1042 reference manual, the cause of this error could be a few different things:
On a transfer error (for example, non-correctable ECC errors on memory accesses, parity
errors on flash controller, address mapping errors, and so on), the DMA halts by setting
SRn[TE] and generates an interrupt if MRn[EIE] is set.
Unfortunately, I don't see any method to retrieve more information on what is actually the issue. Hypervisor prints out no errors or warnings when this happens. I've read through the Infocenter information on the Hypervisor, and believe I've setup everything correctly. I have a DMA window setup for the RAM area I would like to DMA into (I also tried setting up a DMA window at the address of the ASIC in PCIe space where I am DMAing from, but that also did not help).
I can forward on my Hypervisor DTS file, the Linux DTS file and also a dump of the Guest device tree if that would help. I'm really just looking for any clues of where my issue might be or things I could look for to help debug the problem.