| /' |
| ' Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. |
| ' |
| ' SPDX-License-Identifier: BSD-3-Clause |
| '/ |
| |
| @startuml |
| |
| autonumber "<b>[#]</b>" |
| participant "SDEI client" as EL2 |
| participant EL3 |
| participant SDEI |
| participant "RAS Driver" as RAS |
| |
| activate EL2 |
| EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) |
| EL3->EL2: success |
| EL2->EL3: **SDEI_EVENT_ENABLE**(ev) |
| EL3->EL2: success |
| EL2->EL3: **SDEI_PE_UNMASK**() |
| EL3->EL2: 1 |
| |
| ... <<Business as usual>> ... |
| |
| EL3<--]: **CRITICAL EVENT** |
| activate EL3 #red |
| note over EL3: Critical event triage |
| EL3->RAS: dispatch to handle |
| deactivate EL3 |
| activate RAS #salmon |
| note over RAS: Critical event handling |
| RAS-->SDEI: sdei_dispatch_event(ev) |
| deactivate RAS |
| activate SDEI #salmon |
| note over SDEI: Prepare SDEI dispatch |
| SDEI->EL2: dispatch |
| activate EL2 #salmon |
| note over EL2: SDEI handler |
| EL2->SDEI: **SDEI_EVENT_COMPLETE()** |
| deactivate EL2 |
| note over SDEI: Complete SDEI dispatch |
| SDEI-->RAS: return |
| deactivate SDEI |
| activate RAS #salmon |
| RAS->EL3: error handling done |
| deactivate RAS |
| EL3->EL2: resumes preempted execution |
| |
| ... <<Normal execution resumes>> ... |
| |
| @enduml |