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 (using the Error Group N Interrupt
Enable Set Register) and mapped to the high-priority error interrupt (using the
Error Group N Interrupt Priority Register) and the raw status is set (using
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 using 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:
Pulse EventsWhen 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 de-asserts
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 that 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 (using the Error Pin Influence
Set Register), but recommended to be done regardless as an extra CLEAR
is not harmful.