SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
This event is registered when a transaction completes. Its corresponding flag (SATA_PxIS[5] DPS) is set whenever a PRD with the I bit set transfers all of its data.
The PRD interrupt is an opportunistic interrupt and should not be used to definitely indicate the end of a transfer. Two PRD interrupts can happen close in time so that the second interrupt is missed while the first PRD interrupt is being cleared.
When a PRD entry is exhausted, the HBA can be directed to generate an interrupt through the I bit in the PRD entry (although a PRD is not considered exhausted until all data FISs that transfer data pointed to by that PRD entry is complete). For example, if the data FIS is 8 KiB, and this is covered by three PRD entries, the data is not considered valid at the end of the first or second PRD because the CRC has not been checked, even though the data has been copied to memory or to the device. Therefore, if the I bit is set in the PRD entry, the HBA must hold onto it internally and not set PxIS.DPS until the data FIS is complete and the CRC is correct. Once correct, PxIS.DPS can be set and, if PxIE.DPE and GHC.IE are set, the HBA generates an interrupt.
Conversely, if the PRD entry is 16 KiB and two 8 KiB Data FISS are used to transfer all of the data pointed to by the PRD entry, the PRD interrupt associated with that PRD entry is not signaled until after the second data FIS transfer completes successfully.