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
Hide whitespace changes
Inline
Side-by-side
docs/plantuml/sdei_explicit_dispatch.puml
View file @
a2d60b20
...
...
@@ -9,7 +9,7 @@
autonumber "<b>[#]</b>"
participant "SDEI client" as EL2
participant EL3
participant
SEL1
participant
"Secure Partition" as SP
activate EL2
EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...)
...
...
@@ -24,11 +24,11 @@ EL3->EL2: 1
EL3<--]: **CRITICAL EVENT**
activate EL3 #red
note over EL3: Critical event triage
EL3->S
EL1
: dispatch
activate S
EL1
#salmon
note over S
EL1
: Critical event handling
S
EL1
->EL3: done
deactivate S
EL1
EL3->S
P
: dispatch
activate S
P
#salmon
note over S
P
: Critical event handling
S
P
->EL3: done
deactivate S
P
EL3-->EL3: sdei_dispatch_event(ev)
note over EL3: Prepare SDEI 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>
\ No newline at end of file
<?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
docs/sdei.rst
View file @
a2d60b20
...
...
@@ -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
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
involve Non-secure world in further handling, and therefore decides to
explicitly dispatch an event [10] (which the client had already registered for
[1]). The rest of the sequence is similar to that in the `general SDEI
dispatch`_: the requested event is dispatched to the client (assuming all the
conditions are met), and when the handler completes, the preempted execution
resumes.
to a Secure Partition [#secpart]_ for further handling [8]. The dispatch
completes, but intends to involve Non-secure world in further handling, and
therefore decides to explicitly dispatch an event [10] (which the client had
already registered for [1]). The rest of the sequence is similar to that in the
`general SDEI dispatch`_: the requested event is dispatched to the client
(assuming all the conditions are met), and when the handler completes, the
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
...
@@ -295,10 +302,6 @@ dispatcher:
context is resumed (as indicated by the ``preempted_sec_state`` parameter of
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
--------------------
...
...
include/services/sdei.h
View file @
a2d60b20
...
...
@@ -154,7 +154,7 @@ typedef struct sdei_ev_map {
int32_t
ev_num
;
/* Event number */
unsigned
int
intr
;
/* Physical interrupt number for a bound map */
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 */
}
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)
sdei_cpu_state_t
*
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
;
}
/* Can't dispatch if events are masked on this PE */
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)
/* Platform events are always bound, so set the bound flag */
if
(
is_map_dynamic
(
map
))
{
assert
(
map
->
intr
==
SDEI_DYN_IRQ
);
assert
(
is_event_normal
(
map
));
num_dyn_shrd_slots
++
;
}
else
{
/* Shared mappings must be bound to shared interrupt */
...
...
@@ -171,6 +172,7 @@ void sdei_class_init(sdei_class_t class)
if
(
map
->
ev_num
!=
SDEI_EVENT_0
)
{
if
(
is_map_dynamic
(
map
))
{
assert
(
map
->
intr
==
SDEI_DYN_IRQ
);
assert
(
is_event_normal
(
map
));
num_dyn_priv_slots
++
;
}
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