If the gasket receives a response that it was not expecting then this interrupt will
be triggered. See Unexpected Response Reporting for a discussion of
unexpected responses. When this interrupt is triggered, information about the
unexpected response will be in the following registers:
- Error Transaction Valid/Dir/ID Register (Base Address + 0x38)
- Error Transaction RouteID/OrderID Register (Base Address + 0x3C)
- Error Transaction Bytecnt Register (Base Address + 0x40)
When servicing an Unexpected Response Error, software should perform the following
steps:
- Read the Unexpected Response Info Register (Base Address + 0x34) to
determine how many unexpected responses have occurred since last
serviced
- Read the Error Transaction Valid/Dir/ID Register (Base Address + 0x38)
- If the valid field is 0 or the type field is Timeout Error, then
these registers do not contain any information about the unexpected
response, skip to step 4
- Read the information from the following registers:
- Error Transaction RouteID/OrderID Register (Base Address +
0x3C)
- Error Transaction Bytecnt Register (Base Address + 0x40)
- Write the number of unexpected responses serviced this ISR (read in step 1)
to the Unexpected Response Info Register (Base Address + 0x34)
- Clear the interrupt by writing to the appropriate bit in the Error Interrupt
Enabled Status/Clear Register (Base Address + 0x24)
If the write in step 4 does not decrement the value to 0 (because a new unexpected
response has arrived), then the interrupt will re-issue after the write in step
5.
This section only describes how to service the interrupt. It is up to the system
integrator to decide what actions to take based on this information. Suggestions
are:
- Log the information for debug purposes
- Determine the slave that is unresponsive and take appropriate action
- Reset target slave
- Reset main SoC
- Reset whole device