1*a2c320a8SPaul Beesley/' 2*a2c320a8SPaul Beesley ' Copyright (c) 2017, 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 interrupt source" as SDEI 13*a2c320a8SPaul Beesley 14*a2c320a8SPaul Beesleyactivate EL2 15*a2c320a8SPaul BeesleyEL2->EL3: **SDEI_INTERRUPT_BIND**(irq) 16*a2c320a8SPaul BeesleyEL3->EL2: event number: ev 17*a2c320a8SPaul BeesleyEL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) 18*a2c320a8SPaul BeesleyEL3->EL2: success 19*a2c320a8SPaul BeesleyEL2->EL3: **SDEI_EVENT_ENABLE**(ev) 20*a2c320a8SPaul BeesleyEL3->EL2: success 21*a2c320a8SPaul BeesleyEL2->EL3: **SDEI_PE_UNMASK**() 22*a2c320a8SPaul BeesleyEL3->EL2: 1 23*a2c320a8SPaul Beesley 24*a2c320a8SPaul Beesley... <<Business as usual>> ... 25*a2c320a8SPaul Beesley 26*a2c320a8SPaul BeesleySDEI-->EL3: SDEI interrupt 27*a2c320a8SPaul Beesleyactivate SDEI #salmon 28*a2c320a8SPaul Beesleyactivate EL3 #red 29*a2c320a8SPaul Beesleynote over EL3: Prepare SDEI dispatch 30*a2c320a8SPaul BeesleyEL3->EL2: dispatch 31*a2c320a8SPaul Beesleyactivate EL2 #salmon 32*a2c320a8SPaul Beesleynote over EL2: SDEI handler 33*a2c320a8SPaul BeesleyEL2->EL3: **SDEI_EVENT_COMPLETE()** 34*a2c320a8SPaul Beesleydeactivate EL2 35*a2c320a8SPaul Beesleynote over EL3: Complete SDEI dispatch 36*a2c320a8SPaul BeesleyEL3-->SDEI: EOI 37*a2c320a8SPaul Beesleydeactivate SDEI 38*a2c320a8SPaul BeesleyEL3->EL2: resumes preempted execution 39*a2c320a8SPaul Beesleydeactivate EL3 40*a2c320a8SPaul Beesley 41*a2c320a8SPaul Beesley... <<Normal execution resumes>> ... 42*a2c320a8SPaul Beesley 43*a2c320a8SPaul Beesley@enduml 44