/' ' Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. ' ' SPDX-License-Identifier: BSD-3-Clause '/ @startuml autonumber "[#]" 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 ... <> ... 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 ... <> ... @enduml