sdei_explicit_dispatch.puml 1.1 KB

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