If the gasket receives a response that it was not expecting then this interrupt is
triggered. See Section 3.3.6.2.1.12 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 re-issues after the write in step 5.
This section only describes how to service the interrupt. The system integrator must decide
what actions to take based on this information. Suggestions include:
- Log the information for debug purposes.
- Determine the target that is
unresponsive and take appropriate action:
- Reset target.
- Reset main SoC.
- Reset whole device.