summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeenu Viswambharan <jeenu.viswambharan@arm.com>2017-01-04 13:51:42 +0000
committerJeenu Viswambharan <jeenu.viswambharan@arm.com>2017-03-02 11:00:20 +0000
commit3c251af392f2dfeedfe9c4595a8a33188c1d1d14 (patch)
tree640b4f93867da3edd6737faf259f5afa6132cf0b
parent56036edba1ec5ba1f3c6a21d9689915bea10ec7d (diff)
build: Define build option for hardware-assisted coherency
The boolean build option HW_ASSISTED_COHERENCY is introduced to enable various optimizations in ARM Trusted Software, when built for such systems. It's set to 0 by default. Change-Id: I638390da6e1718fe024dcf5b402e07084f1eb014 Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
-rw-r--r--Makefile2
-rw-r--r--docs/user-guide.md9
-rw-r--r--make_helpers/defaults.mk4
3 files changed, 15 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 932fb3b5..e00159a3 100644
--- a/Makefile
+++ b/Makefile
@@ -385,6 +385,7 @@ $(eval $(call assert_boolean,ENABLE_PSCI_STAT))
$(eval $(call assert_boolean,ENABLE_RUNTIME_INSTRUMENTATION))
$(eval $(call assert_boolean,ERROR_DEPRECATED))
$(eval $(call assert_boolean,GENERATE_COT))
+$(eval $(call assert_boolean,HW_ASSISTED_COHERENCY))
$(eval $(call assert_boolean,LOAD_IMAGE_V2))
$(eval $(call assert_boolean,NS_TIMER_SWITCH))
$(eval $(call assert_boolean,PL011_GENERIC_UART))
@@ -419,6 +420,7 @@ $(eval $(call add_define,ENABLE_PMF))
$(eval $(call add_define,ENABLE_PSCI_STAT))
$(eval $(call add_define,ENABLE_RUNTIME_INSTRUMENTATION))
$(eval $(call add_define,ERROR_DEPRECATED))
+$(eval $(call add_define,HW_ASSISTED_COHERENCY))
$(eval $(call add_define,LOAD_IMAGE_V2))
$(eval $(call add_define,LOG_LEVEL))
$(eval $(call add_define,NS_TIMER_SWITCH))
diff --git a/docs/user-guide.md b/docs/user-guide.md
index 091aeba0..4ed0e201 100644
--- a/docs/user-guide.md
+++ b/docs/user-guide.md
@@ -328,6 +328,15 @@ performed.
* `HANDLE_EA_EL3_FIRST`: When defined External Aborts and SError Interrupts
will be always trapped in EL3 i.e. in BL31 at runtime.
+* `HW_ASSISTED_COHERENCY`: On most ARM systems to-date, platform-specific
+ software operations are required for CPUs to enter and exit coherency.
+ However, there exists newer systems where CPUs' entry to and exit from
+ coherency is managed in hardware. Such systems require software to only
+ initiate the operations, and the rest is managed in hardware, minimizing
+ active software management. In such systems, this boolean option enables ARM
+ Trusted Firmware to carry out build and run-time optimizations during boot
+ and power management operations. This option defaults to 0.
+
* `LOAD_IMAGE_V2`: Boolean option to enable support for new version (v2) of
image loading, which provides more flexibility and scalability around what
images are loaded and executed during boot. Default is 0.
diff --git a/make_helpers/defaults.mk b/make_helpers/defaults.mk
index b47ea46e..de506be5 100644
--- a/make_helpers/defaults.mk
+++ b/make_helpers/defaults.mk
@@ -105,6 +105,10 @@ FWU_FIP_NAME := fwu_fip.bin
# For Chain of Trust
GENERATE_COT := 0
+# Whether system coherency is managed in hardware, without explicit software
+# operations.
+HW_ASSISTED_COHERENCY := 0
+
# Flag to enable new version of image loading
LOAD_IMAGE_V2 := 0