1/' 2 ' Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. 3 ' 4 ' SPDX-License-Identifier: BSD-3-Clause 5 '/ 6 7@startuml 8 9autonumber "<b>[#]</b>" 10participant "SDEI client" as EL2 11participant EL3 12participant SDEI 13participant "RAS Driver" as RAS 14 15activate EL2 16EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) 17EL3->EL2: success 18EL2->EL3: **SDEI_EVENT_ENABLE**(ev) 19EL3->EL2: success 20EL2->EL3: **SDEI_PE_UNMASK**() 21EL3->EL2: 1 22 23... <<Business as usual>> ... 24 25EL3<--]: **CRITICAL EVENT** 26activate EL3 #red 27note over EL3: Critical event triage 28EL3->RAS: dispatch to handle 29deactivate EL3 30activate RAS #salmon 31note over RAS: Critical event handling 32RAS-->SDEI: sdei_dispatch_event(ev) 33deactivate RAS 34activate SDEI #salmon 35note over SDEI: Prepare SDEI dispatch 36SDEI->EL2: dispatch 37activate EL2 #salmon 38note over EL2: SDEI handler 39EL2->SDEI: **SDEI_EVENT_COMPLETE()** 40deactivate EL2 41note over SDEI: Complete SDEI dispatch 42SDEI-->RAS: return 43deactivate SDEI 44activate RAS #salmon 45RAS->EL3: error handling done 46deactivate RAS 47EL3->EL2: resumes preempted execution 48 49... <<Normal execution resumes>> ... 50 51@enduml 52