Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
a2d60b20
Unverified
Commit
a2d60b20
authored
Nov 22, 2017
by
davidcunado-arm
Committed by
GitHub
Nov 22, 2017
Browse files
Merge pull request #1161 from jeenu-arm/sdei-fixes
SDEI fixes
parents
ec04e0f4
1a0f8f39
Changes
6
Show whitespace changes
Inline
Side-by-side
docs/plantuml/sdei_explicit_dispatch.puml
View file @
a2d60b20
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
autonumber "<b>[#]</b>"
autonumber "<b>[#]</b>"
participant "SDEI client" as EL2
participant "SDEI client" as EL2
participant EL3
participant EL3
participant
SEL1
participant
"Secure Partition" as SP
activate EL2
activate EL2
EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...)
EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...)
...
@@ -24,11 +24,11 @@ EL3->EL2: 1
...
@@ -24,11 +24,11 @@ EL3->EL2: 1
EL3<--]: **CRITICAL EVENT**
EL3<--]: **CRITICAL EVENT**
activate EL3 #red
activate EL3 #red
note over EL3: Critical event triage
note over EL3: Critical event triage
EL3->S
EL1
: dispatch
EL3->S
P
: dispatch
activate S
EL1
#salmon
activate S
P
#salmon
note over S
EL1
: Critical event handling
note over S
P
: Critical event handling
S
EL1
->EL3: done
S
P
->EL3: done
deactivate S
EL1
deactivate S
P
EL3-->EL3: sdei_dispatch_event(ev)
EL3-->EL3: sdei_dispatch_event(ev)
note over EL3: Prepare SDEI dispatch
note over EL3: Prepare SDEI dispatch
EL3->EL2: dispatch
EL3->EL2: dispatch
...
...
docs/plantuml/sdei_explicit_dispatch.svg
View file @
a2d60b20
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
contentScriptType=
"application/ecmascript"
contentStyleType=
"text/css"
height=
"767px"
preserveAspectRatio=
"none"
style=
"width:692px;height:767px;"
version=
"1.1"
viewBox=
"0 0 692 767"
width=
"692px"
zoomAndPan=
"magnify"
><defs><filter
height=
"300%"
id=
"f13jg8eb0anesb"
width=
"300%"
x=
"-1"
y=
"-1"
><feGaussianBlur
result=
"blurOut"
stdDeviation=
"2.0"
/><feColorMatrix
in=
"blurOut"
result=
"blurOut2"
type=
"matrix"
values=
"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"
/><feOffset
dx=
"4.0"
dy=
"4.0"
in=
"blurOut2"
result=
"blurOut3"
/><feBlend
in=
"SourceGraphic"
in2=
"blurOut3"
mode=
"normal"
/></filter></defs><g><rect
fill=
"#FFFFFF"
filter=
"url(#f13jg8eb0anesb)"
height=
"174.7969"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"48.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"48.2969"
/><rect
fill=
"#FFFFFF"
filter=
"url(#f13jg8eb0anesb)"
height=
"412.5938"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"263.8984"
y2=
"676.4922"
/><rect
fill=
"#FFFFFF"
filter=
"url(#f13jg8eb0anesb)"
height=
"1"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"717.2969"
y2=
"718.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"717.2969"
y2=
"718.2969"
/><rect
fill=
"#FA8072"
filter=
"url(#f13jg8eb0anesb)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"61.5"
y=
"531.8281"
/><rect
fill=
"#FF0000"
filter=
"url(#f13jg8eb0anesb)"
height=
"383.4609"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"375.5"
y=
"284.8984"
/><rect
fill=
"#FA8072"
filter=
"url(#f13jg8eb0anesb)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"588.5"
y=
"353.1641"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"61"
x2=
"61"
y1=
"38.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"61"
x2=
"61"
y1=
"223.0938"
y2=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"61"
x2=
"61"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"61"
x2=
"61"
y1=
"676.4922"
y2=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"61"
x2=
"61"
y1=
"717.2969"
y2=
"727.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"380"
x2=
"380"
y1=
"38.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"380"
x2=
"380"
y1=
"223.0938"
y2=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"380"
x2=
"380"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"380"
x2=
"380"
y1=
"676.4922"
y2=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"380"
x2=
"380"
y1=
"717.2969"
y2=
"727.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"593.5"
x2=
"593.5"
y1=
"38.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"593.5"
x2=
"593.5"
y1=
"223.0938"
y2=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"593.5"
x2=
"593.5"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"593.5"
x2=
"593.5"
y1=
"676.4922"
y2=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"593.5"
x2=
"593.5"
y1=
"717.2969"
y2=
"727.2969"
/><rect
fill=
"#FEFECE"
filter=
"url(#f13jg8eb0anesb)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"87"
x=
"16"
y=
"3"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"73"
x=
"23"
y=
"22.9951"
>
SDEI client
</text><rect
fill=
"#FEFECE"
filter=
"url(#f13jg8eb0anesb)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"87"
x=
"16"
y=
"726.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"73"
x=
"23"
y=
"746.292"
>
SDEI client
</text><rect
fill=
"#FEFECE"
filter=
"url(#f13jg8eb0anesb)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"39"
x=
"359"
y=
"3"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"25"
x=
"366"
y=
"22.9951"
>
EL3
</text><rect
fill=
"#FEFECE"
filter=
"url(#f13jg8eb0anesb)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"39"
x=
"359"
y=
"726.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"25"
x=
"366"
y=
"746.292"
>
EL3
</text><rect
fill=
"#FEFECE"
filter=
"url(#f13jg8eb0anesb)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"48"
x=
"567.5"
y=
"3"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"34"
x=
"574.5"
y=
"22.9951"
>
SEL1
</text><rect
fill=
"#FEFECE"
filter=
"url(#f13jg8eb0anesb)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"48"
x=
"567.5"
y=
"726.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"34"
x=
"574.5"
y=
"746.292"
>
SEL1
</text><rect
fill=
"#FFFFFF"
filter=
"url(#f13jg8eb0anesb)"
height=
"174.7969"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"48.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"48.2969"
/><rect
fill=
"#FFFFFF"
filter=
"url(#f13jg8eb0anesb)"
height=
"412.5938"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"263.8984"
y2=
"676.4922"
/><rect
fill=
"#FFFFFF"
filter=
"url(#f13jg8eb0anesb)"
height=
"1"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"717.2969"
y2=
"718.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"717.2969"
y2=
"718.2969"
/><rect
fill=
"#FA8072"
filter=
"url(#f13jg8eb0anesb)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"61.5"
y=
"531.8281"
/><rect
fill=
"#FF0000"
filter=
"url(#f13jg8eb0anesb)"
height=
"383.4609"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"375.5"
y=
"284.8984"
/><rect
fill=
"#FA8072"
filter=
"url(#f13jg8eb0anesb)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"588.5"
y=
"353.1641"
/><polygon
fill=
"#A80036"
points=
"368.5,65.2969,378.5,69.2969,368.5,73.2969,372.5,69.2969"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"374.5"
y1=
"69.2969"
y2=
"69.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"73.5"
y=
"64.3638"
>
[1]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"164"
x=
"98.5"
y=
"64.3638"
>
SDEI_EVENT_REGISTER
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"101"
x=
"262.5"
y=
"64.3638"
>
(ev, handler, ...)
</text><polygon
fill=
"#A80036"
points=
"77.5,94.4297,67.5,98.4297,77.5,102.4297,73.5,98.4297"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"98.4297"
y2=
"98.4297"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"83.5"
y=
"93.4966"
>
[2]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"51"
x=
"108.5"
y=
"93.4966"
>
success
</text><polygon
fill=
"#A80036"
points=
"368.5,123.5625,378.5,127.5625,368.5,131.5625,372.5,127.5625"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"374.5"
y1=
"127.5625"
y2=
"127.5625"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"73.5"
y=
"122.6294"
>
[3]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"151"
x=
"98.5"
y=
"122.6294"
>
SDEI_EVENT_ENABLE
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"25"
x=
"249.5"
y=
"122.6294"
>
(ev)
</text><polygon
fill=
"#A80036"
points=
"77.5,152.6953,67.5,156.6953,77.5,160.6953,73.5,156.6953"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"156.6953"
y2=
"156.6953"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"83.5"
y=
"151.7622"
>
[4]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"51"
x=
"108.5"
y=
"151.7622"
>
success
</text><polygon
fill=
"#A80036"
points=
"368.5,181.8281,378.5,185.8281,368.5,189.8281,372.5,185.8281"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"374.5"
y1=
"185.8281"
y2=
"185.8281"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"73.5"
y=
"180.895"
>
[5]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"129"
x=
"98.5"
y=
"180.895"
>
SDEI_PE_UNMASK
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"10"
x=
"227.5"
y=
"180.895"
>
()
</text><polygon
fill=
"#A80036"
points=
"77.5,210.9609,67.5,214.9609,77.5,218.9609,73.5,214.9609"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"214.9609"
y2=
"214.9609"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"83.5"
y=
"210.0278"
>
[6]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"8"
x=
"108.5"
y=
"210.0278"
>
1
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"11"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"142"
x=
"256.5"
y=
"247.3042"
>
<<
Business as usual
>>
</text><polygon
fill=
"#A80036"
points=
"396.5,280.8984,386.5,284.8984,396.5,288.8984,392.5,284.8984"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"390.5"
x2=
"680"
y1=
"284.8984"
y2=
"284.8984"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"402.5"
y=
"279.9653"
>
[7]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"116"
x=
"427.5"
y=
"279.9653"
>
CRITICAL EVENT
</text><polygon
fill=
"#FBFB77"
filter=
"url(#f13jg8eb0anesb)"
points=
"306,298.0313,306,323.0313,451,323.0313,451,308.0313,441,298.0313,306,298.0313"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"441"
x2=
"441"
y1=
"298.0313"
y2=
"308.0313"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"451"
x2=
"441"
y1=
"308.0313"
y2=
"308.0313"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"124"
x=
"312"
y=
"315.0981"
>
Critical event triage
</text><polygon
fill=
"#A80036"
points=
"576.5,349.1641,586.5,353.1641,576.5,357.1641,580.5,353.1641"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"385.5"
x2=
"582.5"
y1=
"353.1641"
y2=
"353.1641"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"392.5"
y=
"348.231"
>
[8]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"54"
x=
"417.5"
y=
"348.231"
>
dispatch
</text><polygon
fill=
"#FBFB77"
filter=
"url(#f13jg8eb0anesb)"
points=
"510,366.2969,510,391.2969,672,391.2969,672,376.2969,662,366.2969,510,366.2969"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"662"
x2=
"662"
y1=
"366.2969"
y2=
"376.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"672"
x2=
"662"
y1=
"376.2969"
y2=
"376.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"141"
x=
"516"
y=
"383.3638"
>
Critical event handling
</text><polygon
fill=
"#A80036"
points=
"396.5,417.4297,386.5,421.4297,396.5,425.4297,392.5,421.4297"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"390.5"
x2=
"592.5"
y1=
"421.4297"
y2=
"421.4297"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"402.5"
y=
"416.4966"
>
[9]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"32"
x=
"427.5"
y=
"416.4966"
>
done
</text><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"385.5"
x2=
"427.5"
y1=
"450.6953"
y2=
"450.6953"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"427.5"
x2=
"427.5"
y1=
"450.6953"
y2=
"463.6953"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"386.5"
x2=
"427.5"
y1=
"463.6953"
y2=
"463.6953"
/><polygon
fill=
"#A80036"
points=
"396.5,459.6953,386.5,463.6953,396.5,467.6953,392.5,463.6953"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"392.5"
y=
"445.6294"
>
[10]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"155"
x=
"426.5"
y=
"445.6294"
>
sdei_dispatch_event(ev)
</text><polygon
fill=
"#FBFB77"
filter=
"url(#f13jg8eb0anesb)"
points=
"297,476.6953,297,501.6953,460,501.6953,460,486.6953,450,476.6953,297,476.6953"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"450"
x2=
"450"
y1=
"476.6953"
y2=
"486.6953"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"460"
x2=
"450"
y1=
"486.6953"
y2=
"486.6953"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"142"
x=
"303"
y=
"493.7622"
>
Prepare SDEI dispatch
</text><polygon
fill=
"#A80036"
points=
"82.5,527.8281,72.5,531.8281,82.5,535.8281,78.5,531.8281"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"76.5"
x2=
"374.5"
y1=
"531.8281"
y2=
"531.8281"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"88.5"
y=
"526.895"
>
[11]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"54"
x=
"122.5"
y=
"526.895"
>
dispatch
</text><polygon
fill=
"#FBFB77"
filter=
"url(#f13jg8eb0anesb)"
points=
"8,544.9609,8,569.9609,111,569.9609,111,554.9609,101,544.9609,8,544.9609"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"101"
x2=
"101"
y1=
"544.9609"
y2=
"554.9609"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"111"
x2=
"101"
y1=
"554.9609"
y2=
"554.9609"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"82"
x=
"14"
y=
"562.0278"
>
SDEI handler
</text><polygon
fill=
"#A80036"
points=
"363.5,596.0938,373.5,600.0938,363.5,604.0938,367.5,600.0938"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"369.5"
y1=
"600.0938"
y2=
"600.0938"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"73.5"
y=
"595.1606"
>
[12]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"184"
x=
"107.5"
y=
"595.1606"
>
SDEI_EVENT_COMPLETE()
</text><polygon
fill=
"#FBFB77"
filter=
"url(#f13jg8eb0anesb)"
points=
"291,613.2266,291,638.2266,466,638.2266,466,623.2266,456,613.2266,291,613.2266"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"456"
x2=
"456"
y1=
"613.2266"
y2=
"623.2266"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"466"
x2=
"456"
y1=
"623.2266"
y2=
"623.2266"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"154"
x=
"297"
y=
"630.2935"
>
Complete SDEI dispatch
</text><polygon
fill=
"#A80036"
points=
"77.5,664.3594,67.5,668.3594,77.5,672.3594,73.5,668.3594"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"668.3594"
y2=
"668.3594"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"83.5"
y=
"663.4263"
>
[13]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"197"
x=
"117.5"
y=
"663.4263"
>
resumes preempted execution
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"11"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"190"
x=
"232.5"
y=
"700.7026"
>
<<
Normal execution resumes
>>
</text></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
contentScriptType=
"application/ecmascript"
contentStyleType=
"text/css"
height=
"767px"
preserveAspectRatio=
"none"
style=
"width:692px;height:767px;"
version=
"1.1"
viewBox=
"0 0 692 767"
width=
"692px"
zoomAndPan=
"magnify"
><defs><filter
height=
"300%"
id=
"fueepysa066oi"
width=
"300%"
x=
"-1"
y=
"-1"
><feGaussianBlur
result=
"blurOut"
stdDeviation=
"2.0"
/><feColorMatrix
in=
"blurOut"
result=
"blurOut2"
type=
"matrix"
values=
"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"
/><feOffset
dx=
"4.0"
dy=
"4.0"
in=
"blurOut2"
result=
"blurOut3"
/><feBlend
in=
"SourceGraphic"
in2=
"blurOut3"
mode=
"normal"
/></filter></defs><g><rect
fill=
"#FFFFFF"
filter=
"url(#fueepysa066oi)"
height=
"174.7969"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"48.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"48.2969"
/><rect
fill=
"#FFFFFF"
filter=
"url(#fueepysa066oi)"
height=
"412.5938"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"263.8984"
y2=
"676.4922"
/><rect
fill=
"#FFFFFF"
filter=
"url(#fueepysa066oi)"
height=
"1"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"717.2969"
y2=
"718.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"717.2969"
y2=
"718.2969"
/><rect
fill=
"#FA8072"
filter=
"url(#fueepysa066oi)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"61.5"
y=
"531.8281"
/><rect
fill=
"#FF0000"
filter=
"url(#fueepysa066oi)"
height=
"383.4609"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"375.5"
y=
"284.8984"
/><rect
fill=
"#FA8072"
filter=
"url(#fueepysa066oi)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"588.5"
y=
"353.1641"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"61"
x2=
"61"
y1=
"38.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"61"
x2=
"61"
y1=
"223.0938"
y2=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"61"
x2=
"61"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"61"
x2=
"61"
y1=
"676.4922"
y2=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"61"
x2=
"61"
y1=
"717.2969"
y2=
"727.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"380"
x2=
"380"
y1=
"38.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"380"
x2=
"380"
y1=
"223.0938"
y2=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"380"
x2=
"380"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"380"
x2=
"380"
y1=
"676.4922"
y2=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"380"
x2=
"380"
y1=
"717.2969"
y2=
"727.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"593"
x2=
"593"
y1=
"38.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"593"
x2=
"593"
y1=
"223.0938"
y2=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"593"
x2=
"593"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;"
x1=
"593"
x2=
"593"
y1=
"676.4922"
y2=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"593"
x2=
"593"
y1=
"717.2969"
y2=
"727.2969"
/><rect
fill=
"#FEFECE"
filter=
"url(#fueepysa066oi)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"87"
x=
"16"
y=
"3"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"73"
x=
"23"
y=
"22.9951"
>
SDEI client
</text><rect
fill=
"#FEFECE"
filter=
"url(#fueepysa066oi)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"87"
x=
"16"
y=
"726.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"73"
x=
"23"
y=
"746.292"
>
SDEI client
</text><rect
fill=
"#FEFECE"
filter=
"url(#fueepysa066oi)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"39"
x=
"359"
y=
"3"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"25"
x=
"366"
y=
"22.9951"
>
EL3
</text><rect
fill=
"#FEFECE"
filter=
"url(#fueepysa066oi)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"39"
x=
"359"
y=
"726.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"25"
x=
"366"
y=
"746.292"
>
EL3
</text><rect
fill=
"#FEFECE"
filter=
"url(#fueepysa066oi)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"123"
x=
"530"
y=
"3"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"109"
x=
"537"
y=
"22.9951"
>
Secure Partition
</text><rect
fill=
"#FEFECE"
filter=
"url(#fueepysa066oi)"
height=
"30.2969"
style=
"stroke: #A80036; stroke-width: 1.5;"
width=
"123"
x=
"530"
y=
"726.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"14"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"109"
x=
"537"
y=
"746.292"
>
Secure Partition
</text><rect
fill=
"#FFFFFF"
filter=
"url(#fueepysa066oi)"
height=
"174.7969"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"48.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"223.0938"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"66.5"
y1=
"48.2969"
y2=
"48.2969"
/><rect
fill=
"#FFFFFF"
filter=
"url(#fueepysa066oi)"
height=
"412.5938"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"263.8984"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"263.8984"
y2=
"676.4922"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"263.8984"
y2=
"676.4922"
/><rect
fill=
"#FFFFFF"
filter=
"url(#fueepysa066oi)"
height=
"1"
style=
"stroke: #FFFFFF; stroke-width: 1.0;"
width=
"10"
x=
"56.5"
y=
"717.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"56.5"
x2=
"56.5"
y1=
"717.2969"
y2=
"718.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"66.5"
y1=
"717.2969"
y2=
"718.2969"
/><rect
fill=
"#FA8072"
filter=
"url(#fueepysa066oi)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"61.5"
y=
"531.8281"
/><rect
fill=
"#FF0000"
filter=
"url(#fueepysa066oi)"
height=
"383.4609"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"375.5"
y=
"284.8984"
/><rect
fill=
"#FA8072"
filter=
"url(#fueepysa066oi)"
height=
"68.2656"
style=
"stroke: #A80036; stroke-width: 1.0;"
width=
"10"
x=
"588.5"
y=
"353.1641"
/><polygon
fill=
"#A80036"
points=
"368.5,65.2969,378.5,69.2969,368.5,73.2969,372.5,69.2969"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"374.5"
y1=
"69.2969"
y2=
"69.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"73.5"
y=
"64.3638"
>
[1]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"164"
x=
"98.5"
y=
"64.3638"
>
SDEI_EVENT_REGISTER
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"101"
x=
"262.5"
y=
"64.3638"
>
(ev, handler, ...)
</text><polygon
fill=
"#A80036"
points=
"77.5,94.4297,67.5,98.4297,77.5,102.4297,73.5,98.4297"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"98.4297"
y2=
"98.4297"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"83.5"
y=
"93.4966"
>
[2]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"51"
x=
"108.5"
y=
"93.4966"
>
success
</text><polygon
fill=
"#A80036"
points=
"368.5,123.5625,378.5,127.5625,368.5,131.5625,372.5,127.5625"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"374.5"
y1=
"127.5625"
y2=
"127.5625"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"73.5"
y=
"122.6294"
>
[3]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"151"
x=
"98.5"
y=
"122.6294"
>
SDEI_EVENT_ENABLE
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"25"
x=
"249.5"
y=
"122.6294"
>
(ev)
</text><polygon
fill=
"#A80036"
points=
"77.5,152.6953,67.5,156.6953,77.5,160.6953,73.5,156.6953"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"156.6953"
y2=
"156.6953"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"83.5"
y=
"151.7622"
>
[4]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"51"
x=
"108.5"
y=
"151.7622"
>
success
</text><polygon
fill=
"#A80036"
points=
"368.5,181.8281,378.5,185.8281,368.5,189.8281,372.5,185.8281"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"374.5"
y1=
"185.8281"
y2=
"185.8281"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"73.5"
y=
"180.895"
>
[5]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"129"
x=
"98.5"
y=
"180.895"
>
SDEI_PE_UNMASK
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"10"
x=
"227.5"
y=
"180.895"
>
()
</text><polygon
fill=
"#A80036"
points=
"77.5,210.9609,67.5,214.9609,77.5,218.9609,73.5,214.9609"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"214.9609"
y2=
"214.9609"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"83.5"
y=
"210.0278"
>
[6]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"8"
x=
"108.5"
y=
"210.0278"
>
1
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"11"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"142"
x=
"256.5"
y=
"247.3042"
>
<<
Business as usual
>>
</text><polygon
fill=
"#A80036"
points=
"396.5,280.8984,386.5,284.8984,396.5,288.8984,392.5,284.8984"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"390.5"
x2=
"680"
y1=
"284.8984"
y2=
"284.8984"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"402.5"
y=
"279.9653"
>
[7]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"116"
x=
"427.5"
y=
"279.9653"
>
CRITICAL EVENT
</text><polygon
fill=
"#FBFB77"
filter=
"url(#fueepysa066oi)"
points=
"306,298.0313,306,323.0313,451,323.0313,451,308.0313,441,298.0313,306,298.0313"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"441"
x2=
"441"
y1=
"298.0313"
y2=
"308.0313"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"451"
x2=
"441"
y1=
"308.0313"
y2=
"308.0313"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"124"
x=
"312"
y=
"315.0981"
>
Critical event triage
</text><polygon
fill=
"#A80036"
points=
"576.5,349.1641,586.5,353.1641,576.5,357.1641,580.5,353.1641"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"385.5"
x2=
"582.5"
y1=
"353.1641"
y2=
"353.1641"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"392.5"
y=
"348.231"
>
[8]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"54"
x=
"417.5"
y=
"348.231"
>
dispatch
</text><polygon
fill=
"#FBFB77"
filter=
"url(#fueepysa066oi)"
points=
"510,366.2969,510,391.2969,672,391.2969,672,376.2969,662,366.2969,510,366.2969"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"662"
x2=
"662"
y1=
"366.2969"
y2=
"376.2969"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"672"
x2=
"662"
y1=
"376.2969"
y2=
"376.2969"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"141"
x=
"516"
y=
"383.3638"
>
Critical event handling
</text><polygon
fill=
"#A80036"
points=
"396.5,417.4297,386.5,421.4297,396.5,425.4297,392.5,421.4297"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"390.5"
x2=
"592.5"
y1=
"421.4297"
y2=
"421.4297"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"21"
x=
"402.5"
y=
"416.4966"
>
[9]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"32"
x=
"427.5"
y=
"416.4966"
>
done
</text><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"385.5"
x2=
"427.5"
y1=
"450.6953"
y2=
"450.6953"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"427.5"
x2=
"427.5"
y1=
"450.6953"
y2=
"463.6953"
/><line
style=
"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"
x1=
"386.5"
x2=
"427.5"
y1=
"463.6953"
y2=
"463.6953"
/><polygon
fill=
"#A80036"
points=
"396.5,459.6953,386.5,463.6953,396.5,467.6953,392.5,463.6953"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"392.5"
y=
"445.6294"
>
[10]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"155"
x=
"426.5"
y=
"445.6294"
>
sdei_dispatch_event(ev)
</text><polygon
fill=
"#FBFB77"
filter=
"url(#fueepysa066oi)"
points=
"297,476.6953,297,501.6953,460,501.6953,460,486.6953,450,476.6953,297,476.6953"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"450"
x2=
"450"
y1=
"476.6953"
y2=
"486.6953"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"460"
x2=
"450"
y1=
"486.6953"
y2=
"486.6953"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"142"
x=
"303"
y=
"493.7622"
>
Prepare SDEI dispatch
</text><polygon
fill=
"#A80036"
points=
"82.5,527.8281,72.5,531.8281,82.5,535.8281,78.5,531.8281"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"76.5"
x2=
"374.5"
y1=
"531.8281"
y2=
"531.8281"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"88.5"
y=
"526.895"
>
[11]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"54"
x=
"122.5"
y=
"526.895"
>
dispatch
</text><polygon
fill=
"#FBFB77"
filter=
"url(#fueepysa066oi)"
points=
"8,544.9609,8,569.9609,111,569.9609,111,554.9609,101,544.9609,8,544.9609"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"101"
x2=
"101"
y1=
"544.9609"
y2=
"554.9609"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"111"
x2=
"101"
y1=
"554.9609"
y2=
"554.9609"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"82"
x=
"14"
y=
"562.0278"
>
SDEI handler
</text><polygon
fill=
"#A80036"
points=
"363.5,596.0938,373.5,600.0938,363.5,604.0938,367.5,600.0938"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"66.5"
x2=
"369.5"
y1=
"600.0938"
y2=
"600.0938"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"73.5"
y=
"595.1606"
>
[12]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"184"
x=
"107.5"
y=
"595.1606"
>
SDEI_EVENT_COMPLETE()
</text><polygon
fill=
"#FBFB77"
filter=
"url(#fueepysa066oi)"
points=
"291,613.2266,291,638.2266,466,638.2266,466,623.2266,456,613.2266,291,613.2266"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"456"
x2=
"456"
y1=
"613.2266"
y2=
"623.2266"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"466"
x2=
"456"
y1=
"623.2266"
y2=
"623.2266"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"154"
x=
"297"
y=
"630.2935"
>
Complete SDEI dispatch
</text><polygon
fill=
"#A80036"
points=
"77.5,664.3594,67.5,668.3594,77.5,672.3594,73.5,668.3594"
style=
"stroke: #A80036; stroke-width: 1.0;"
/><line
style=
"stroke: #A80036; stroke-width: 1.0;"
x1=
"71.5"
x2=
"379.5"
y1=
"668.3594"
y2=
"668.3594"
/><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
font-weight=
"bold"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"30"
x=
"83.5"
y=
"663.4263"
>
[13]
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"13"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"197"
x=
"117.5"
y=
"663.4263"
>
resumes preempted execution
</text><text
fill=
"#000000"
font-family=
"sans-serif"
font-size=
"11"
lengthAdjust=
"spacingAndGlyphs"
textLength=
"190"
x=
"232.5"
y=
"700.7026"
>
<<
Normal execution resumes
>>
</text></g></svg>
\ No newline at end of file
\ No newline at end of file
docs/sdei.rst
View file @
a2d60b20
...
@@ -232,13 +232,20 @@ bound or dynamic events can't be explicitly dispatched (see the section below).
...
@@ -232,13 +232,20 @@ bound or dynamic events can't be explicitly dispatched (see the section below).
At a later point in time, a critical event [#critical-event]_ is trapped into
At a later point in time, a critical event [#critical-event]_ is trapped into
EL3 [7]. EL3 performs a first-level triage of the event, and decides to dispatch
EL3 [7]. EL3 performs a first-level triage of the event, and decides to dispatch
to Secure EL1 for further handling [8]. The dispatch completes, but intends to
to a Secure Partition [#secpart]_ for further handling [8]. The dispatch
involve Non-secure world in further handling, and therefore decides to
completes, but intends to involve Non-secure world in further handling, and
explicitly dispatch an event [10] (which the client had already registered for
therefore decides to explicitly dispatch an event [10] (which the client had
[1]). The rest of the sequence is similar to that in the `general SDEI
already registered for [1]). The rest of the sequence is similar to that in the
dispatch`_: the requested event is dispatched to the client (assuming all the
`general SDEI dispatch`_: the requested event is dispatched to the client
conditions are met), and when the handler completes, the preempted execution
(assuming all the conditions are met), and when the handler completes, the
resumes.
preempted execution resumes.
.. [#critical-event] Examples of critical event are *SError*, *Synchronous
External Abort*, *Fault Handling interrupt*, or *Error
Recovery interrupt* from one of RAS nodes in the system.
.. [#secpart] Dispatching to Secure Partition involves *Secure Partition
Manager*, which isn't depicted in the sequence.
Conditions for event dispatch
Conditions for event dispatch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
@@ -295,10 +302,6 @@ dispatcher:
...
@@ -295,10 +302,6 @@ dispatcher:
context is resumed (as indicated by the ``preempted_sec_state`` parameter of
context is resumed (as indicated by the ``preempted_sec_state`` parameter of
the API).
the API).
.. [#critical-event] Examples of critical event are *SError*, *Synchronous
External Abort*, *Fault Handling interrupt*, or *Error
Recovery interrupt* from one of RAS nodes in the system.
Porting requirements
Porting requirements
--------------------
--------------------
...
...
include/services/sdei.h
View file @
a2d60b20
...
@@ -154,7 +154,7 @@ typedef struct sdei_ev_map {
...
@@ -154,7 +154,7 @@ typedef struct sdei_ev_map {
int32_t
ev_num
;
/* Event number */
int32_t
ev_num
;
/* Event number */
unsigned
int
intr
;
/* Physical interrupt number for a bound map */
unsigned
int
intr
;
/* Physical interrupt number for a bound map */
unsigned
int
map_flags
;
/* Mapping flags, see SDEI_MAPF_* */
unsigned
int
map_flags
;
/* Mapping flags, see SDEI_MAPF_* */
unsigned
int
reg_count
;
/* Registration count */
int
reg_count
;
/* Registration count */
spinlock_t
lock
;
/* Per-event lock */
spinlock_t
lock
;
/* Per-event lock */
}
sdei_ev_map_t
;
}
sdei_ev_map_t
;
...
...
services/std_svc/sdei/sdei_intr_mgmt.c
View file @
a2d60b20
...
@@ -475,8 +475,10 @@ int sdei_dispatch_event(int ev_num, unsigned int preempted_sec_state)
...
@@ -475,8 +475,10 @@ int sdei_dispatch_event(int ev_num, unsigned int preempted_sec_state)
sdei_cpu_state_t
*
state
;
sdei_cpu_state_t
*
state
;
/* Validate preempted security state */
/* Validate preempted security state */
if
((
preempted_sec_state
!=
SECURE
)
||
(
preempted_sec_state
!=
NON_SECURE
))
if
((
preempted_sec_state
!=
SECURE
)
&&
(
preempted_sec_state
!=
NON_SECURE
))
{
return
-
1
;
return
-
1
;
}
/* Can't dispatch if events are masked on this PE */
/* Can't dispatch if events are masked on this PE */
state
=
sdei_get_this_pe_state
();
state
=
sdei_get_this_pe_state
();
...
...
services/std_svc/sdei/sdei_main.c
View file @
a2d60b20
...
@@ -120,6 +120,7 @@ void sdei_class_init(sdei_class_t class)
...
@@ -120,6 +120,7 @@ void sdei_class_init(sdei_class_t class)
/* Platform events are always bound, so set the bound flag */
/* Platform events are always bound, so set the bound flag */
if
(
is_map_dynamic
(
map
))
{
if
(
is_map_dynamic
(
map
))
{
assert
(
map
->
intr
==
SDEI_DYN_IRQ
);
assert
(
map
->
intr
==
SDEI_DYN_IRQ
);
assert
(
is_event_normal
(
map
));
num_dyn_shrd_slots
++
;
num_dyn_shrd_slots
++
;
}
else
{
}
else
{
/* Shared mappings must be bound to shared interrupt */
/* Shared mappings must be bound to shared interrupt */
...
@@ -171,6 +172,7 @@ void sdei_class_init(sdei_class_t class)
...
@@ -171,6 +172,7 @@ void sdei_class_init(sdei_class_t class)
if
(
map
->
ev_num
!=
SDEI_EVENT_0
)
{
if
(
map
->
ev_num
!=
SDEI_EVENT_0
)
{
if
(
is_map_dynamic
(
map
))
{
if
(
is_map_dynamic
(
map
))
{
assert
(
map
->
intr
==
SDEI_DYN_IRQ
);
assert
(
map
->
intr
==
SDEI_DYN_IRQ
);
assert
(
is_event_normal
(
map
));
num_dyn_priv_slots
++
;
num_dyn_priv_slots
++
;
}
else
{
}
else
{
/*
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment