The Completion Timeout (CTO) is a PCIe uncorrectable non-fatal error.
Non-Fatal Errors cause a particular transaction to be unreliable. but the link is otherwise fully functional. This provides related HW or SW an opportunity to recover the error without resetting the components on the link and disturbing other transactions in progress. Nevertheless, no data is returned (because CoreNet, marks the transaction result with “Bad Data” label) - i.e. core can’t finish the related load instruction.
In this case, the core takes a Synchronous Error Report Machine Check Interrupt:
- The Save/Restore Register contains pointer to this load instruction, in other words, the MCSRR0 contains the address of this load instruction
- The MCSR [LD] bit is set to reflect this situation
Further error handling is application-dependent.
Additional detail can be provided in a Technical Case:
https://community.nxp.com/thread/381898