Any error event can be mapped to the high priority error interrupt. A high priority error interrupt is generated when an event is enabled to cause an interrupt (via the Error Group N Interrupt Enable Set Register) and mapped to the high priority error interrupt (via Error Group N Interrupt Priority Register) and the raw status is set (via the Error Group N Event Raw Status/Set Register).
When a high Priority Error Interrupt
is received, the acting processor is recommended to follow the outlined steps:
- Read the High Priority
Prioritized Register
- If both [31-16] PLS
(high_pulse_prio) or [15-0] LVL (high_level_prio) bit fields are
equal to 0xFFFF, then Interrupt is no longer asserted/pending.
- If either [31-16] PLS
(high_pulse_prio) or [15-0] LVL (high_level_prio) bit fields are not
equal to 0xFFFF, software has two options for determining what event
to service:
- First Option:
Record the value in high_pulse_prio and/or high_level_prio.
Determine which is higher priority. This is the Global Event
Number of the highest priority in high Priority Error
Event.
- Second
Option:
- Read
the High Priority Interrupt Status Register to
determine which Event Groups have pending high
Priority Interrupts.
- Read
the desired Error Group N Interrupt Enabled
Status/Clear Register.
- Identify which high Priority Interrupt to
service.
- Determine, based on the
global event map for the device find the error event source.
- Service the error event based
on the peripherals specification:
- The system takes
several actions including (but not limited to):
- Fixing the
error
- Resetting the
errored peripheral
- Resetting the
device
- Communicating
outside the device via the error pin for outside
intervention
Rest of the steps assume the error
handling is complete and system wants to clear the error event. Clearing of error
event is as described below :
Pulse Events
When a high priority error pulse event
has to be cleared, the acting processor must perform the following steps in order:
- Write 0x1 to the appropriate
bit in the Error Group N Interrupt Enabled Status/Clear Register.
This step clears the raw status and deassert the level interrupt.
- Write the end of interrupt
vector to the EOI Interrupt Register. In case there are enabled error events
pending then a new pulse is generated and level interrupt remains asserted
else no new pulse is generated.
- Clear the Error Event at the
source. The source generates a new pulse which shows up as a new error event
at the ESM.
- Write a CLEAR(0x5) to the
Error Pin Control Register. This step is optional if the event is not
enabled to influence the error pin (via the Error Pin Influence Set
Register), but recommended to be done regardless as an extra CLEAR is not
harmful.