Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
9 years ago

Avalon-MM PCIe DMA Controller busy forever with some hosts

I've been using Cyclone V device that communicates with a host PC via

PCI Express. The communication logic is built using Qsys "Avalon-MM

Cyclone V Hard IP for PCI Express". On the host PC (x86-64),

CentOS 6.x (Linux kernel 2.6.x) is running. The system has been working fine

for more than a year without problem.

Recently, however, I noticed that the DMA write (memory write

initiated by the device) does not work properly on CentOS 7.x (kernel

3.10.x). Note that other functions including PCI configuration read/write and

the host initiated memory read/write are working fine. DMA read is not

implemented and thus not tested.

Looking inside the status register of Qsys DMA Controller, I found that the

bit1 remains high forever, which means DMA is started but never completes.

I am sure the following registers are properly set before starting the

DMA. The value of address 03h (length register) does not decrement at

all, even a few minutes after the kicking off of the DMA.

01h readaddress RW start address of a read.

02h writeaddress RW start address of a write.

03h length RW length in bytes. decrements to 0 as the transfer proceeds.

06h control RW

So my question is: what can make the DMA controller busy forever?

If a wrong value is set to 02h (writeaddress), could that

cause the DMA controller behave like this?

Please help. Any idea or suggestion would be greatly appreciated.
No RepliesBe the first to reply