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