I'm working on a Windows driver, and currently running into issues with PCIe device addressing. The mSGDMA gets stuck in a busy state when a DMA is initiated with a non-internal address e.g. when a read is initiated from an external device on PCIe. I've got a timer that detects a prolonged busy state and requests a reset in those situations. However, the reset process does not seem to work.
When I request a reset by setting the reset dispatcher bit of the CSR Control Register, the Resetting bit of the Status Register is never deasserted. I remain stuck in a resetting state. One post (https://alteraforum.com/forum/showthread.php?t=52773&p=218059#post218059) on the forums suggested that there is a known bug and the Reset bit needs to be manually cleared for a reset procedure to properly take place. I'd appreciate any help in successfully completing a software reset of the mSGDMA.