diff --git a/docs/components/exception-handling.rst b/docs/components/exception-handling.rst index a89a05c..30600f9 100644 --- a/docs/components/exception-handling.rst +++ b/docs/components/exception-handling.rst @@ -107,7 +107,7 @@ .. _ehf-figure: -.. image:: ../draw.io/ehf.svg +.. image:: ../resources/diagrams/draw.io/ehf.svg A priority level is *active* when a handler at that priority level is currently executing in EL3, or has delegated the execution to a lower EL. For interrupts, diff --git a/docs/components/firmware-update.rst b/docs/components/firmware-update.rst index 608803d..31f5917 100644 --- a/docs/components/firmware-update.rst +++ b/docs/components/firmware-update.rst @@ -400,5 +400,5 @@ .. _Authentication Framework Design: ./auth-framework.rst .. _Universally Unique Identifier: https://tools.ietf.org/rfc/rfc4122.txt -.. |Flow Diagram| image:: diagrams/fwu_flow.png?raw=true -.. |FWU state machine| image:: diagrams/fwu_states.png?raw=true +.. |Flow Diagram| image:: ../resources/diagrams/fwu_flow.png +.. |FWU state machine| image:: ../resources/diagrams/fwu_states.png diff --git a/docs/components/ras.rst b/docs/components/ras.rst index 9d56e63..137c0c3 100644 --- a/docs/components/ras.rst +++ b/docs/components/ras.rst @@ -39,7 +39,7 @@ .. _ras-figure: -.. image:: ../draw.io/ras.svg +.. image:: ../resources/diagrams/draw.io/ras.svg See more on `Engaging the RAS framework`_. diff --git a/docs/components/romlib-design.rst b/docs/components/romlib-design.rst index ab39723..a70ed17 100644 --- a/docs/components/romlib-design.rst +++ b/docs/components/romlib-design.rst @@ -23,7 +23,7 @@ Index file ~~~~~~~~~~ -.. image:: diagrams/romlib_design.png +.. image:: ../resources/diagrams/romlib_design.png :width: 600 Library at ROM is described by an index file with the list of functions to be @@ -54,7 +54,7 @@ Wrapper functions ~~~~~~~~~~~~~~~~~ -.. image:: diagrams/romlib_wrapper.png +.. image:: ../resources/diagrams/romlib_wrapper.png :width: 600 When invoking a function of the "library at ROM", the calling sequence is as diff --git a/docs/components/sdei.rst b/docs/components/sdei.rst index 7b6cc91..845a295 100644 --- a/docs/components/sdei.rst +++ b/docs/components/sdei.rst @@ -26,7 +26,7 @@ at EL2 and an event dispatch resulting from the triggering of a bound interrupt. A commentary is provided below: -.. image:: ../plantuml/sdei_general.svg +.. image:: ../resources/diagrams/plantuml/sdei_general.svg As part of initialisation, the SDEI client binds a Non-secure interrupt [1], and the SDEI dispatcher returns a platform dynamic event number [2]. The client then @@ -234,7 +234,7 @@ The following figure depicts a scenario involving explicit dispatch of SDEI event. A commentary is provided below: -.. image:: ../plantuml/sdei_explicit_dispatch.svg +.. image:: ../resources/diagrams/plantuml/sdei_explicit_dispatch.svg As part of initialisation, the SDEI client registers a handler for a platform event [1], enables the event [3], and unmasks the current PE [5]. Note that, diff --git a/docs/components/secure-partition-manager-design.rst b/docs/components/secure-partition-manager-design.rst index 88052c5..ac1172c 100644 --- a/docs/components/secure-partition-manager-design.rst +++ b/docs/components/secure-partition-manager-design.rst @@ -814,5 +814,5 @@ .. _SDEI Specification: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf .. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf -.. |Image 1| image:: ../diagrams/secure_sw_stack_tos.png -.. |Image 2| image:: ../diagrams/secure_sw_stack_sp.png +.. |Image 1| image:: ../resources/diagrams/secure_sw_stack_tos.png +.. |Image 2| image:: ../resources/diagrams/secure_sw_stack_sp.png diff --git a/docs/components/xlat-tables-lib-v2-design.rst b/docs/components/xlat-tables-lib-v2-design.rst index a78d351..786dd3b 100644 --- a/docs/components/xlat-tables-lib-v2-design.rst +++ b/docs/components/xlat-tables-lib-v2-design.rst @@ -418,4 +418,4 @@ .. _aarch32/xlat_tables_arch.c: ../../lib/xlat_tables_v2/aarch32/xlat_tables_arch.c .. _aarch64/xlat_tables_arch.c: ../../lib/xlat_tables_v2/aarch64/xlat_tables_arch.c .. _Porting Guide: ../getting_started/porting-guide.rst -.. |Alignment Example| image:: ../diagrams/xlat_align.png?raw=true +.. |Alignment Example| image:: ../resources/diagrams/xlat_align.png diff --git a/docs/design/firmware-design.rst b/docs/design/firmware-design.rst index e9384e6..710d26d 100644 --- a/docs/design/firmware-design.rst +++ b/docs/design/firmware-design.rst @@ -2679,4 +2679,4 @@ .. _ROMLIB Design: romlib-design.rst .. _Trusted Board Boot Requirements CLIENT (TBBR-CLIENT) Armv8-A (ARM DEN0006D): https://developer.arm.com/docs/den0006/latest/trusted-board-boot-requirements-client-tbbr-client-armv8-a -.. |Image 1| image:: diagrams/rt-svc-descs-layout.png?raw=true +.. |Image 1| image:: ../resources/diagrams/rt-svc-descs-layout.png diff --git a/docs/design/interrupt-framework-design.rst b/docs/design/interrupt-framework-design.rst index d4057ea..b19f7f7 100644 --- a/docs/design/interrupt-framework-design.rst +++ b/docs/design/interrupt-framework-design.rst @@ -1015,5 +1015,5 @@ .. _Porting Guide: ../getting_started/porting-guide.rst .. _SMC calling convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html -.. |Image 1| image:: diagrams/sec-int-handling.png?raw=true -.. |Image 2| image:: diagrams/non-sec-int-handling.png?raw=true +.. |Image 1| image:: ../resources/diagrams/sec-int-handling.png +.. |Image 2| image:: ../resources/diagrams/non-sec-int-handling.png diff --git a/docs/design/reset-design.rst b/docs/design/reset-design.rst index c38f627..b5c9bb4 100644 --- a/docs/design/reset-design.rst +++ b/docs/design/reset-design.rst @@ -154,7 +154,7 @@ .. _Firmware Design: firmware-design.rst .. _User Guide: ../getting_started/user-guide.rst -.. |Default reset code flow| image:: ../diagrams/default_reset_code.png?raw=true -.. |Reset code flow with programmable reset address| image:: ../diagrams/reset_code_no_boot_type_check.png?raw=true -.. |Reset code flow with single CPU released out of reset| image:: ../diagrams/reset_code_no_cpu_check.png?raw=true -.. |Reset code flow with programmable reset address and single CPU released out of reset| image:: ../diagrams/reset_code_no_checks.png?raw=true +.. |Default reset code flow| image:: ../resources/diagrams/default_reset_code.png +.. |Reset code flow with programmable reset address| image:: ../resources/diagrams/reset_code_no_boot_type_check.png +.. |Reset code flow with single CPU released out of reset| image:: ../resources/diagrams/reset_code_no_cpu_check.png +.. |Reset code flow with programmable reset address and single CPU released out of reset| image:: ../resources/diagrams/reset_code_no_checks.png diff --git a/docs/diagrams/Makefile b/docs/diagrams/Makefile deleted file mode 100644 index de7d8f3..0000000 --- a/docs/diagrams/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -# -# Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. -# -# SPDX-License-Identifier: BSD-3-Clause -# -# -# This Makefile generates the image files used in the ARM Trusted Firmware -# document from the dia file. -# -# The PNG files in the present directory have been generated using Dia version -# 0.97.2, which can be obtained from https://wiki.gnome.org/Apps/Dia/Download -# - -# generate_image use the tool dia generate png from dia file -# $(1) = layers -# $(2) = image file name -# $(3) = image file format -# $(4) = addition opts -# $(5) = dia source file -define generate_image - dia --show-layers=$(1) --filter=$(3) --export=$(2) $(4) $(5) -endef - -RESET_DIA = reset_code_flow.dia -RESET_PNGS = \ - default_reset_code.png \ - reset_code_no_cpu_check.png \ - reset_code_no_boot_type_check.png \ - reset_code_no_checks.png \ - -# The $(RESET_DIA) file is organized in several layers. -# Each image is generated by combining and exporting the appropriate set of -# layers. -default_reset_code_layers = "Frontground,Background,cpu_type_check,boot_type_check" -reset_code_no_cpu_check_layers = "Frontground,Background,no_cpu_type_check,boot_type_check" -reset_code_no_boot_type_check_layers= "Frontground,Background,cpu_type_check,no_boot_type_check" -reset_code_no_checks_layers = "Frontground,Background,no_cpu_type_check,no_boot_type_check" - -default_reset_code_opts = -reset_code_no_cpu_check_opts = -reset_code_no_boot_type_check_opts = -reset_code_no_checks_opts = - -INT_DIA = int_handling.dia -INT_PNGS = \ - sec-int-handling.png \ - non-sec-int-handling.png - -# The $(INT_DIA) file is organized in several layers. -# Each image is generated by combining and exporting the appropriate set of -# layers. -non-sec-int-handling_layers = "non_sec_int_bg,legend,non_sec_int_note,non_sec_int_handling" -sec-int-handling_layers = "sec_int_bg,legend,sec_int_note,sec_int_handling" - -non-sec-int-handling_opts = --size=1692x -sec-int-handling_opts = --size=1570x - -XLAT_DIA = xlat_align.dia -XLAT_PNG = xlat_align.png - -xlat_align_layers = "bg,translations" -xlat_align_opts = - -all:$(RESET_PNGS) $(INT_PNGS) $(XLAT_PNG) - -$(RESET_PNGS):$(RESET_DIA) - $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) - -$(INT_PNGS):$(INT_DIA) - $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) - -$(XLAT_PNG):$(XLAT_DIA) - $(call generate_image,$($(patsubst %.png,%_layers,$@)),$(patsubst %.png,%.svg,$@),svg,$($(patsubst %.png,%_opts,$@)),$<) - inkscape -z $(patsubst %.png,%.svg,$@) -e $@ -d 45 diff --git a/docs/diagrams/default_reset_code.png b/docs/diagrams/default_reset_code.png deleted file mode 100644 index d8675e4..0000000 --- a/docs/diagrams/default_reset_code.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/fwu_flow.png b/docs/diagrams/fwu_flow.png deleted file mode 100644 index 534095f..0000000 --- a/docs/diagrams/fwu_flow.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/fwu_states.png b/docs/diagrams/fwu_states.png deleted file mode 100644 index fda4d8f..0000000 --- a/docs/diagrams/fwu_states.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/int_handling.dia b/docs/diagrams/int_handling.dia deleted file mode 100644 index 12aa186..0000000 --- a/docs/diagrams/int_handling.dia +++ /dev/null Binary files differ diff --git a/docs/diagrams/non-sec-int-handling.png b/docs/diagrams/non-sec-int-handling.png deleted file mode 100644 index 64082c9..0000000 --- a/docs/diagrams/non-sec-int-handling.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/psci-suspend-sequence.png b/docs/diagrams/psci-suspend-sequence.png deleted file mode 100644 index 1703ea6..0000000 --- a/docs/diagrams/psci-suspend-sequence.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/reset_code_flow.dia b/docs/diagrams/reset_code_flow.dia deleted file mode 100644 index 133c9cf..0000000 --- a/docs/diagrams/reset_code_flow.dia +++ /dev/null Binary files differ diff --git a/docs/diagrams/reset_code_no_boot_type_check.png b/docs/diagrams/reset_code_no_boot_type_check.png deleted file mode 100644 index 23e865f..0000000 --- a/docs/diagrams/reset_code_no_boot_type_check.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/reset_code_no_checks.png b/docs/diagrams/reset_code_no_checks.png deleted file mode 100644 index 26a179b..0000000 --- a/docs/diagrams/reset_code_no_checks.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/reset_code_no_cpu_check.png b/docs/diagrams/reset_code_no_cpu_check.png deleted file mode 100644 index 4150dbe..0000000 --- a/docs/diagrams/reset_code_no_cpu_check.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/romlib_design.dia b/docs/diagrams/romlib_design.dia deleted file mode 100755 index d12eec0..0000000 --- a/docs/diagrams/romlib_design.dia +++ /dev/null Binary files differ diff --git a/docs/diagrams/romlib_design.png b/docs/diagrams/romlib_design.png deleted file mode 100755 index bfffcde..0000000 --- a/docs/diagrams/romlib_design.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/romlib_wrapper.dia b/docs/diagrams/romlib_wrapper.dia deleted file mode 100755 index 30cfbd8..0000000 --- a/docs/diagrams/romlib_wrapper.dia +++ /dev/null Binary files differ diff --git a/docs/diagrams/romlib_wrapper.png b/docs/diagrams/romlib_wrapper.png deleted file mode 100755 index ec3a441..0000000 --- a/docs/diagrams/romlib_wrapper.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/rt-svc-descs-layout.png b/docs/diagrams/rt-svc-descs-layout.png deleted file mode 100644 index 1a9fa5b..0000000 --- a/docs/diagrams/rt-svc-descs-layout.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/sec-int-handling.png b/docs/diagrams/sec-int-handling.png deleted file mode 100644 index fa5c340..0000000 --- a/docs/diagrams/sec-int-handling.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/secure_sw_stack_sp.png b/docs/diagrams/secure_sw_stack_sp.png deleted file mode 100644 index 5cb2ca7..0000000 --- a/docs/diagrams/secure_sw_stack_sp.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/secure_sw_stack_tos.png b/docs/diagrams/secure_sw_stack_tos.png deleted file mode 100644 index 1f2d555..0000000 --- a/docs/diagrams/secure_sw_stack_tos.png +++ /dev/null Binary files differ diff --git a/docs/diagrams/xlat_align.dia b/docs/diagrams/xlat_align.dia deleted file mode 100644 index bd88c0c..0000000 --- a/docs/diagrams/xlat_align.dia +++ /dev/null Binary files differ diff --git a/docs/diagrams/xlat_align.png b/docs/diagrams/xlat_align.png deleted file mode 100644 index cffd3c1..0000000 --- a/docs/diagrams/xlat_align.png +++ /dev/null Binary files differ diff --git a/docs/draw.io/ehf.svg b/docs/draw.io/ehf.svg deleted file mode 100644 index c98090f..0000000 --- a/docs/draw.io/ehf.svg +++ /dev/null @@ -1,2 +0,0 @@ - -
Interrupt Management Framework
Interrupt Management Framework
Interrupt
Type
[Not supported by viewer]
Interrupt
Interrupt
NS
NS
S-EL1
S-EL1
EL3
EL3
SPD handlers
SPD handlers
Exception Handling Framework
Exception Handling Framework
GIC PMR
GIC PMR
RAS
RAS
SPM
[Not supported by viewer]
SDEI Critical
SDEI Critical
SDEI Normal
SDEI Normal
NS priorities
NS priorities
0xFF
0xFF
0x0
[Not supported by viewer]
Interrupt Priority
[Not supported by viewer]
EHF APIs
EHF APIs
Non-interrupt exceptions use EHF APIs to program GIC PMR to arbitrate priority levels
Non-interrupt exceptions use EHF APIs to program GIC PMR to arbitrate priority levels
Decreasing Priority
Decreasing Priority
Secure Priority levels
Secure Priority levels
\ No newline at end of file diff --git a/docs/draw.io/ehf.xml b/docs/draw.io/ehf.xml deleted file mode 100644 index db1f91d..0000000 --- a/docs/draw.io/ehf.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/draw.io/ras.svg b/docs/draw.io/ras.svg deleted file mode 100644 index ff58198..0000000 --- a/docs/draw.io/ras.svg +++ /dev/null @@ -1,2 +0,0 @@ - -

<div><br></div>
plat_ea_handler()
plat_ea_handler()
ras_ea_handler()
ras_ea_handler()
ras_interrupt_handler()
ras_interrupt_handler()
Exception Handling Framework
Exception Handling Framework
RAS
priority level handler
[Not supported by viewer]
RAS error records
RAS error records
RAS interrupts array
RAS interrupts array
RAS framework
RAS framework
Iterate and probe
<i>Iterate and probe</i>
Error handler
Error handler
Bisect and lookup
<i>Bisect and lookup</i>
Error handler
Error handler
SER helpers
SER helpers
External Abort
External Abort
Interrupt
[Not supported by viewer]
Interrupt Priority
Interrupt Priority
EHF APIs
EHF APIs
\ No newline at end of file diff --git a/docs/draw.io/ras.xml b/docs/draw.io/ras.xml deleted file mode 100644 index ce6df3a..0000000 --- a/docs/draw.io/ras.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/plantuml/plantuml_to_svg.sh b/docs/plantuml/plantuml_to_svg.sh deleted file mode 100755 index 0bf8588..0000000 --- a/docs/plantuml/plantuml_to_svg.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Convert all PlantUML files in this directory to SVG files. The plantuml_jar -# environment variable must be set to the path to PlantUML JAR file. - -if [ -z "$plantuml_jar" ]; then - echo "Usage: plantuml_jar=/path/to/plantuml.jar $0 *.puml" >&2 - exit 1 -fi - -java -jar "$plantuml_jar" -nometadata -tsvg "$@" - -# vim:set noet sts=8 tw=80: diff --git a/docs/plantuml/sdei_explicit_dispatch.puml b/docs/plantuml/sdei_explicit_dispatch.puml deleted file mode 100644 index 90ff23c..0000000 --- a/docs/plantuml/sdei_explicit_dispatch.puml +++ /dev/null @@ -1,51 +0,0 @@ -/' - ' Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. - ' - ' SPDX-License-Identifier: BSD-3-Clause - '/ - -@startuml - -autonumber "[#]" -participant "SDEI client" as EL2 -participant EL3 -participant SDEI -participant "RAS Driver" as RAS - -activate EL2 -EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) -EL3->EL2: success -EL2->EL3: **SDEI_EVENT_ENABLE**(ev) -EL3->EL2: success -EL2->EL3: **SDEI_PE_UNMASK**() -EL3->EL2: 1 - -... <> ... - -EL3<--]: **CRITICAL EVENT** -activate EL3 #red -note over EL3: Critical event triage -EL3->RAS: dispatch to handle -deactivate EL3 -activate RAS #salmon -note over RAS: Critical event handling -RAS-->SDEI: sdei_dispatch_event(ev) -deactivate RAS -activate SDEI #salmon -note over SDEI: Prepare SDEI dispatch -SDEI->EL2: dispatch -activate EL2 #salmon -note over EL2: SDEI handler -EL2->SDEI: **SDEI_EVENT_COMPLETE()** -deactivate EL2 -note over SDEI: Complete SDEI dispatch -SDEI-->RAS: return -deactivate SDEI -activate RAS #salmon -RAS->EL3: error handling done -deactivate RAS -EL3->EL2: resumes preempted execution - -... <> ... - -@enduml diff --git a/docs/plantuml/sdei_explicit_dispatch.svg b/docs/plantuml/sdei_explicit_dispatch.svg deleted file mode 100644 index e12cae2..0000000 --- a/docs/plantuml/sdei_explicit_dispatch.svg +++ /dev/null @@ -1 +0,0 @@ -SDEI clientSDEI clientEL3EL3SDEISDEIRAS DriverRAS Driver[1]SDEI_EVENT_REGISTER(ev, handler, ...)[2]success[3]SDEI_EVENT_ENABLE(ev)[4]success[5]SDEI_PE_UNMASK()[6]1<<Business as usual>>[7]CRITICAL EVENTCritical event triage[8]dispatch to handleCritical event handling[9]sdei_dispatch_event(ev)Prepare SDEI dispatch[10]dispatchSDEI handler[11]SDEI_EVENT_COMPLETE()Complete SDEI dispatch[12]return[13]error handling done[14]resumes preempted execution<<Normal execution resumes>> \ No newline at end of file diff --git a/docs/plantuml/sdei_general.puml b/docs/plantuml/sdei_general.puml deleted file mode 100644 index ab6929a..0000000 --- a/docs/plantuml/sdei_general.puml +++ /dev/null @@ -1,43 +0,0 @@ -/' - ' Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. - ' - ' SPDX-License-Identifier: BSD-3-Clause - '/ - -@startuml - -autonumber "[#]" -participant "SDEI client" as EL2 -participant EL3 -participant "SDEI interrupt source" as SDEI - -activate EL2 -EL2->EL3: **SDEI_INTERRUPT_BIND**(irq) -EL3->EL2: event number: ev -EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) -EL3->EL2: success -EL2->EL3: **SDEI_EVENT_ENABLE**(ev) -EL3->EL2: success -EL2->EL3: **SDEI_PE_UNMASK**() -EL3->EL2: 1 - -... <> ... - -SDEI-->EL3: SDEI interrupt -activate SDEI #salmon -activate EL3 #red -note over EL3: Prepare SDEI dispatch -EL3->EL2: dispatch -activate EL2 #salmon -note over EL2: SDEI handler -EL2->EL3: **SDEI_EVENT_COMPLETE()** -deactivate EL2 -note over EL3: Complete SDEI dispatch -EL3-->SDEI: EOI -deactivate SDEI -EL3->EL2: resumes preempted execution -deactivate EL3 - -... <> ... - -@enduml diff --git a/docs/plantuml/sdei_general.svg b/docs/plantuml/sdei_general.svg deleted file mode 100644 index e172112..0000000 --- a/docs/plantuml/sdei_general.svg +++ /dev/null @@ -1 +0,0 @@ -SDEI clientSDEI clientEL3EL3SDEI interrupt sourceSDEI interrupt source[1]SDEI_INTERRUPT_BIND(irq)[2]event number: ev[3]SDEI_EVENT_REGISTER(ev, handler, ...)[4]success[5]SDEI_EVENT_ENABLE(ev)[6]success[7]SDEI_PE_UNMASK()[8]1<<Business as usual>>[9]SDEI interruptPrepare SDEI dispatch[10]dispatchSDEI handler[11]SDEI_EVENT_COMPLETE()Complete SDEI dispatch[12]EOI[13]resumes preempted execution<<Normal execution resumes>> \ No newline at end of file diff --git a/docs/resources/diagrams/Makefile b/docs/resources/diagrams/Makefile new file mode 100644 index 0000000..de7d8f3 --- /dev/null +++ b/docs/resources/diagrams/Makefile @@ -0,0 +1,74 @@ +# +# Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# +# +# This Makefile generates the image files used in the ARM Trusted Firmware +# document from the dia file. +# +# The PNG files in the present directory have been generated using Dia version +# 0.97.2, which can be obtained from https://wiki.gnome.org/Apps/Dia/Download +# + +# generate_image use the tool dia generate png from dia file +# $(1) = layers +# $(2) = image file name +# $(3) = image file format +# $(4) = addition opts +# $(5) = dia source file +define generate_image + dia --show-layers=$(1) --filter=$(3) --export=$(2) $(4) $(5) +endef + +RESET_DIA = reset_code_flow.dia +RESET_PNGS = \ + default_reset_code.png \ + reset_code_no_cpu_check.png \ + reset_code_no_boot_type_check.png \ + reset_code_no_checks.png \ + +# The $(RESET_DIA) file is organized in several layers. +# Each image is generated by combining and exporting the appropriate set of +# layers. +default_reset_code_layers = "Frontground,Background,cpu_type_check,boot_type_check" +reset_code_no_cpu_check_layers = "Frontground,Background,no_cpu_type_check,boot_type_check" +reset_code_no_boot_type_check_layers= "Frontground,Background,cpu_type_check,no_boot_type_check" +reset_code_no_checks_layers = "Frontground,Background,no_cpu_type_check,no_boot_type_check" + +default_reset_code_opts = +reset_code_no_cpu_check_opts = +reset_code_no_boot_type_check_opts = +reset_code_no_checks_opts = + +INT_DIA = int_handling.dia +INT_PNGS = \ + sec-int-handling.png \ + non-sec-int-handling.png + +# The $(INT_DIA) file is organized in several layers. +# Each image is generated by combining and exporting the appropriate set of +# layers. +non-sec-int-handling_layers = "non_sec_int_bg,legend,non_sec_int_note,non_sec_int_handling" +sec-int-handling_layers = "sec_int_bg,legend,sec_int_note,sec_int_handling" + +non-sec-int-handling_opts = --size=1692x +sec-int-handling_opts = --size=1570x + +XLAT_DIA = xlat_align.dia +XLAT_PNG = xlat_align.png + +xlat_align_layers = "bg,translations" +xlat_align_opts = + +all:$(RESET_PNGS) $(INT_PNGS) $(XLAT_PNG) + +$(RESET_PNGS):$(RESET_DIA) + $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) + +$(INT_PNGS):$(INT_DIA) + $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) + +$(XLAT_PNG):$(XLAT_DIA) + $(call generate_image,$($(patsubst %.png,%_layers,$@)),$(patsubst %.png,%.svg,$@),svg,$($(patsubst %.png,%_opts,$@)),$<) + inkscape -z $(patsubst %.png,%.svg,$@) -e $@ -d 45 diff --git a/docs/resources/diagrams/default_reset_code.png b/docs/resources/diagrams/default_reset_code.png new file mode 100644 index 0000000..d8675e4 --- /dev/null +++ b/docs/resources/diagrams/default_reset_code.png Binary files differ diff --git a/docs/resources/diagrams/draw.io/ehf.svg b/docs/resources/diagrams/draw.io/ehf.svg new file mode 100644 index 0000000..c98090f --- /dev/null +++ b/docs/resources/diagrams/draw.io/ehf.svg @@ -0,0 +1,2 @@ + +
Interrupt Management Framework
Interrupt Management Framework
Interrupt
Type
[Not supported by viewer]
Interrupt
Interrupt
NS
NS
S-EL1
S-EL1
EL3
EL3
SPD handlers
SPD handlers
Exception Handling Framework
Exception Handling Framework
GIC PMR
GIC PMR
RAS
RAS
SPM
[Not supported by viewer]
SDEI Critical
SDEI Critical
SDEI Normal
SDEI Normal
NS priorities
NS priorities
0xFF
0xFF
0x0
[Not supported by viewer]
Interrupt Priority
[Not supported by viewer]
EHF APIs
EHF APIs
Non-interrupt exceptions use EHF APIs to program GIC PMR to arbitrate priority levels
Non-interrupt exceptions use EHF APIs to program GIC PMR to arbitrate priority levels
Decreasing Priority
Decreasing Priority
Secure Priority levels
Secure Priority levels
\ No newline at end of file diff --git a/docs/resources/diagrams/draw.io/ehf.xml b/docs/resources/diagrams/draw.io/ehf.xml new file mode 100644 index 0000000..db1f91d --- /dev/null +++ b/docs/resources/diagrams/draw.io/ehf.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/resources/diagrams/draw.io/ras.svg b/docs/resources/diagrams/draw.io/ras.svg new file mode 100644 index 0000000..ff58198 --- /dev/null +++ b/docs/resources/diagrams/draw.io/ras.svg @@ -0,0 +1,2 @@ + +

<div><br></div>
plat_ea_handler()
plat_ea_handler()
ras_ea_handler()
ras_ea_handler()
ras_interrupt_handler()
ras_interrupt_handler()
Exception Handling Framework
Exception Handling Framework
RAS
priority level handler
[Not supported by viewer]
RAS error records
RAS error records
RAS interrupts array
RAS interrupts array
RAS framework
RAS framework
Iterate and probe
<i>Iterate and probe</i>
Error handler
Error handler
Bisect and lookup
<i>Bisect and lookup</i>
Error handler
Error handler
SER helpers
SER helpers
External Abort
External Abort
Interrupt
[Not supported by viewer]
Interrupt Priority
Interrupt Priority
EHF APIs
EHF APIs
\ No newline at end of file diff --git a/docs/resources/diagrams/draw.io/ras.xml b/docs/resources/diagrams/draw.io/ras.xml new file mode 100644 index 0000000..ce6df3a --- /dev/null +++ b/docs/resources/diagrams/draw.io/ras.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/resources/diagrams/fwu_flow.png b/docs/resources/diagrams/fwu_flow.png new file mode 100644 index 0000000..534095f --- /dev/null +++ b/docs/resources/diagrams/fwu_flow.png Binary files differ diff --git a/docs/resources/diagrams/fwu_states.png b/docs/resources/diagrams/fwu_states.png new file mode 100644 index 0000000..fda4d8f --- /dev/null +++ b/docs/resources/diagrams/fwu_states.png Binary files differ diff --git a/docs/resources/diagrams/int_handling.dia b/docs/resources/diagrams/int_handling.dia new file mode 100644 index 0000000..12aa186 --- /dev/null +++ b/docs/resources/diagrams/int_handling.dia Binary files differ diff --git a/docs/resources/diagrams/non-sec-int-handling.png b/docs/resources/diagrams/non-sec-int-handling.png new file mode 100644 index 0000000..64082c9 --- /dev/null +++ b/docs/resources/diagrams/non-sec-int-handling.png Binary files differ diff --git a/docs/resources/diagrams/plantuml/plantuml_to_svg.sh b/docs/resources/diagrams/plantuml/plantuml_to_svg.sh new file mode 100644 index 0000000..0bf8588 --- /dev/null +++ b/docs/resources/diagrams/plantuml/plantuml_to_svg.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Convert all PlantUML files in this directory to SVG files. The plantuml_jar +# environment variable must be set to the path to PlantUML JAR file. + +if [ -z "$plantuml_jar" ]; then + echo "Usage: plantuml_jar=/path/to/plantuml.jar $0 *.puml" >&2 + exit 1 +fi + +java -jar "$plantuml_jar" -nometadata -tsvg "$@" + +# vim:set noet sts=8 tw=80: diff --git a/docs/resources/diagrams/plantuml/sdei_explicit_dispatch.puml b/docs/resources/diagrams/plantuml/sdei_explicit_dispatch.puml new file mode 100644 index 0000000..90ff23c --- /dev/null +++ b/docs/resources/diagrams/plantuml/sdei_explicit_dispatch.puml @@ -0,0 +1,51 @@ +/' + ' Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. + ' + ' SPDX-License-Identifier: BSD-3-Clause + '/ + +@startuml + +autonumber "[#]" +participant "SDEI client" as EL2 +participant EL3 +participant SDEI +participant "RAS Driver" as RAS + +activate EL2 +EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) +EL3->EL2: success +EL2->EL3: **SDEI_EVENT_ENABLE**(ev) +EL3->EL2: success +EL2->EL3: **SDEI_PE_UNMASK**() +EL3->EL2: 1 + +... <> ... + +EL3<--]: **CRITICAL EVENT** +activate EL3 #red +note over EL3: Critical event triage +EL3->RAS: dispatch to handle +deactivate EL3 +activate RAS #salmon +note over RAS: Critical event handling +RAS-->SDEI: sdei_dispatch_event(ev) +deactivate RAS +activate SDEI #salmon +note over SDEI: Prepare SDEI dispatch +SDEI->EL2: dispatch +activate EL2 #salmon +note over EL2: SDEI handler +EL2->SDEI: **SDEI_EVENT_COMPLETE()** +deactivate EL2 +note over SDEI: Complete SDEI dispatch +SDEI-->RAS: return +deactivate SDEI +activate RAS #salmon +RAS->EL3: error handling done +deactivate RAS +EL3->EL2: resumes preempted execution + +... <> ... + +@enduml diff --git a/docs/resources/diagrams/plantuml/sdei_explicit_dispatch.svg b/docs/resources/diagrams/plantuml/sdei_explicit_dispatch.svg new file mode 100644 index 0000000..e12cae2 --- /dev/null +++ b/docs/resources/diagrams/plantuml/sdei_explicit_dispatch.svg @@ -0,0 +1 @@ +SDEI clientSDEI clientEL3EL3SDEISDEIRAS DriverRAS Driver[1]SDEI_EVENT_REGISTER(ev, handler, ...)[2]success[3]SDEI_EVENT_ENABLE(ev)[4]success[5]SDEI_PE_UNMASK()[6]1<<Business as usual>>[7]CRITICAL EVENTCritical event triage[8]dispatch to handleCritical event handling[9]sdei_dispatch_event(ev)Prepare SDEI dispatch[10]dispatchSDEI handler[11]SDEI_EVENT_COMPLETE()Complete SDEI dispatch[12]return[13]error handling done[14]resumes preempted execution<<Normal execution resumes>> \ No newline at end of file diff --git a/docs/resources/diagrams/plantuml/sdei_general.puml b/docs/resources/diagrams/plantuml/sdei_general.puml new file mode 100644 index 0000000..ab6929a --- /dev/null +++ b/docs/resources/diagrams/plantuml/sdei_general.puml @@ -0,0 +1,43 @@ +/' + ' Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + ' + ' SPDX-License-Identifier: BSD-3-Clause + '/ + +@startuml + +autonumber "[#]" +participant "SDEI client" as EL2 +participant EL3 +participant "SDEI interrupt source" as SDEI + +activate EL2 +EL2->EL3: **SDEI_INTERRUPT_BIND**(irq) +EL3->EL2: event number: ev +EL2->EL3: **SDEI_EVENT_REGISTER**(ev, handler, ...) +EL3->EL2: success +EL2->EL3: **SDEI_EVENT_ENABLE**(ev) +EL3->EL2: success +EL2->EL3: **SDEI_PE_UNMASK**() +EL3->EL2: 1 + +... <> ... + +SDEI-->EL3: SDEI interrupt +activate SDEI #salmon +activate EL3 #red +note over EL3: Prepare SDEI dispatch +EL3->EL2: dispatch +activate EL2 #salmon +note over EL2: SDEI handler +EL2->EL3: **SDEI_EVENT_COMPLETE()** +deactivate EL2 +note over EL3: Complete SDEI dispatch +EL3-->SDEI: EOI +deactivate SDEI +EL3->EL2: resumes preempted execution +deactivate EL3 + +... <> ... + +@enduml diff --git a/docs/resources/diagrams/plantuml/sdei_general.svg b/docs/resources/diagrams/plantuml/sdei_general.svg new file mode 100644 index 0000000..e172112 --- /dev/null +++ b/docs/resources/diagrams/plantuml/sdei_general.svg @@ -0,0 +1 @@ +SDEI clientSDEI clientEL3EL3SDEI interrupt sourceSDEI interrupt source[1]SDEI_INTERRUPT_BIND(irq)[2]event number: ev[3]SDEI_EVENT_REGISTER(ev, handler, ...)[4]success[5]SDEI_EVENT_ENABLE(ev)[6]success[7]SDEI_PE_UNMASK()[8]1<<Business as usual>>[9]SDEI interruptPrepare SDEI dispatch[10]dispatchSDEI handler[11]SDEI_EVENT_COMPLETE()Complete SDEI dispatch[12]EOI[13]resumes preempted execution<<Normal execution resumes>> \ No newline at end of file diff --git a/docs/resources/diagrams/psci-suspend-sequence.png b/docs/resources/diagrams/psci-suspend-sequence.png new file mode 100644 index 0000000..1703ea6 --- /dev/null +++ b/docs/resources/diagrams/psci-suspend-sequence.png Binary files differ diff --git a/docs/resources/diagrams/reset_code_flow.dia b/docs/resources/diagrams/reset_code_flow.dia new file mode 100644 index 0000000..133c9cf --- /dev/null +++ b/docs/resources/diagrams/reset_code_flow.dia Binary files differ diff --git a/docs/resources/diagrams/reset_code_no_boot_type_check.png b/docs/resources/diagrams/reset_code_no_boot_type_check.png new file mode 100644 index 0000000..23e865f --- /dev/null +++ b/docs/resources/diagrams/reset_code_no_boot_type_check.png Binary files differ diff --git a/docs/resources/diagrams/reset_code_no_checks.png b/docs/resources/diagrams/reset_code_no_checks.png new file mode 100644 index 0000000..26a179b --- /dev/null +++ b/docs/resources/diagrams/reset_code_no_checks.png Binary files differ diff --git a/docs/resources/diagrams/reset_code_no_cpu_check.png b/docs/resources/diagrams/reset_code_no_cpu_check.png new file mode 100644 index 0000000..4150dbe --- /dev/null +++ b/docs/resources/diagrams/reset_code_no_cpu_check.png Binary files differ diff --git a/docs/resources/diagrams/romlib_design.dia b/docs/resources/diagrams/romlib_design.dia new file mode 100644 index 0000000..d12eec0 --- /dev/null +++ b/docs/resources/diagrams/romlib_design.dia Binary files differ diff --git a/docs/resources/diagrams/romlib_design.png b/docs/resources/diagrams/romlib_design.png new file mode 100644 index 0000000..bfffcde --- /dev/null +++ b/docs/resources/diagrams/romlib_design.png Binary files differ diff --git a/docs/resources/diagrams/romlib_wrapper.dia b/docs/resources/diagrams/romlib_wrapper.dia new file mode 100644 index 0000000..30cfbd8 --- /dev/null +++ b/docs/resources/diagrams/romlib_wrapper.dia Binary files differ diff --git a/docs/resources/diagrams/romlib_wrapper.png b/docs/resources/diagrams/romlib_wrapper.png new file mode 100644 index 0000000..ec3a441 --- /dev/null +++ b/docs/resources/diagrams/romlib_wrapper.png Binary files differ diff --git a/docs/resources/diagrams/rt-svc-descs-layout.png b/docs/resources/diagrams/rt-svc-descs-layout.png new file mode 100644 index 0000000..1a9fa5b --- /dev/null +++ b/docs/resources/diagrams/rt-svc-descs-layout.png Binary files differ diff --git a/docs/resources/diagrams/sec-int-handling.png b/docs/resources/diagrams/sec-int-handling.png new file mode 100644 index 0000000..fa5c340 --- /dev/null +++ b/docs/resources/diagrams/sec-int-handling.png Binary files differ diff --git a/docs/resources/diagrams/secure_sw_stack_sp.png b/docs/resources/diagrams/secure_sw_stack_sp.png new file mode 100644 index 0000000..5cb2ca7 --- /dev/null +++ b/docs/resources/diagrams/secure_sw_stack_sp.png Binary files differ diff --git a/docs/resources/diagrams/secure_sw_stack_tos.png b/docs/resources/diagrams/secure_sw_stack_tos.png new file mode 100644 index 0000000..1f2d555 --- /dev/null +++ b/docs/resources/diagrams/secure_sw_stack_tos.png Binary files differ diff --git a/docs/resources/diagrams/xlat_align.dia b/docs/resources/diagrams/xlat_align.dia new file mode 100644 index 0000000..bd88c0c --- /dev/null +++ b/docs/resources/diagrams/xlat_align.dia Binary files differ diff --git a/docs/resources/diagrams/xlat_align.png b/docs/resources/diagrams/xlat_align.png new file mode 100644 index 0000000..cffd3c1 --- /dev/null +++ b/docs/resources/diagrams/xlat_align.png Binary files differ