Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20677 Discussions

How to reset Arria 10 PCIe Internal DMA controller without PC reboot?

ttan
Beginner
1,425 Views

According to the user guide, the Descriptor Base cannot be​ changed until all descriptor entries are exhausted. I have descriptor memory allocated and managed by host application. The application flushes DMA descriptors with dummy DMA transfers before it exits. However, in the case where the application crashed or terminated forcefully (Ctrl-C), it does not flush the DMA. Upon re-start of application, descriptor memory from previous run no longer available. Since not all descriptor entries were used, and I cannot update Descriptor Base without exhausting the entries, the DMA controller is stuck in deadlock. PC reboot solves the problem, but it is an annoying non-solution. I do not find a way to reset only DMA controller alone from the manual. How should I solve the issue?

0 Kudos
3 Replies
Nathan_R_Intel
Employee
381 Views

Hie,

 

Currently, there is no method available to change the descriptor base for Arria 10 PCIe internal DMA controller until all descriptor entries are exhausted.

There is no way to reset the DMA controller alone.

 

Because the DMA Descriptor Controller uses FIFOs to store descriptor table entries, you cannot

reprogram the DMA Descriptor Controller once it begins the transfers specifed in the descriptor

table.

 

Hence, if your application crashes, currently the only solution is to reboot PC.

 

 

Regards,

Nathan

0 Kudos
ttan
Beginner
381 Views

Imagine that the device is installed in a server. It is likely that a user application could be terminated anytime. It is fair expectation that server is not allowed to reboot. What is your recommendation to workaround the issue?

0 Kudos
Nathan_R_Intel
Employee
381 Views

​For now, this is the limitation of the DMA descriptor controller offered with Arria 10. The workaround we can recommend is to get host to reset the link whenever a user application is terminated.

0 Kudos
Reply