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