project/bcm63xx/atf.git
9 years agoMerge pull request #277 from soby-mathew/sm/coh_lock_opt
danh-arm [Wed, 1 Apr 2015 10:39:56 +0000 (11:39 +0100)]
Merge pull request #277 from soby-mathew/sm/coh_lock_opt

Optimize the bakery lock implementation

9 years agoMerge pull request #279 from sandrine-bailleux/sb/fix-checkpatch
danh-arm [Wed, 1 Apr 2015 10:38:01 +0000 (11:38 +0100)]
Merge pull request #279 from sandrine-bailleux/sb/fix-checkpatch

Bug Fix: Fix checkpatch rule in Makefile

9 years agoMerge pull request #280 from vwadekar/tlkd-fixed-v3
danh-arm [Wed, 1 Apr 2015 10:36:08 +0000 (11:36 +0100)]
Merge pull request #280 from vwadekar/tlkd-fixed-v3

TLK dispatcher

9 years agoTLK-D documentation and add NVIDIA to the Acknowledgements file
Varun Wadekar [Mon, 23 Mar 2015 03:56:40 +0000 (09:26 +0530)]
TLK-D documentation and add NVIDIA to the Acknowledgements file

Include TLK Dispatcher's documentation and add NVIDIA to the
Acknowledgements file. TLK is now a supported Trusted OS with
the Trusted Firmware.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoOpen/Close TA sessions, send commands/events to TAs
Varun Wadekar [Fri, 13 Mar 2015 09:48:20 +0000 (15:18 +0530)]
Open/Close TA sessions, send commands/events to TAs

This patch adds support to open/close secure sessions with Trusted
Apps and later send commands/events. Modify TLK_NUM_FID to indicate
the total number of FIDs available to the NS world.

Change-Id: I3f1153dfa5510bd44fc25f1fee85cae475b1abf1
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoPreempt/Resume standard function ID calls
Varun Wadekar [Fri, 13 Mar 2015 09:40:54 +0000 (15:10 +0530)]
Preempt/Resume standard function ID calls

This patch allows servicing of the non-secure world IRQs when the
CPU is in the secure world. Once the interrupt is handled, the
non-secure world issues the Resume FID to allow the secure payload
complete the preempted standard FID.

Change-Id: Ia52c41adf45014ab51d8447bed6605ca2f935587
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoTranslate secure/non-secure virtual addresses
Varun Wadekar [Fri, 13 Mar 2015 09:29:03 +0000 (14:59 +0530)]
Translate secure/non-secure virtual addresses

This patch adds functionality to translate virtual addresses from
secure or non-secure worlds. This functionality helps Trusted Apps
to share virtual addresses directly and allows the NS world to
pass virtual addresses to TLK directly.

Change-Id: I77b0892963e0e839c448b5d0532920fb7e54dc8e
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoRegister NS shared memory for SP's activity logs and TA sessions
Varun Wadekar [Fri, 13 Mar 2015 08:49:11 +0000 (14:19 +0530)]
Register NS shared memory for SP's activity logs and TA sessions

This patch registers NS memory buffer with the secure payload using
two different functions IDs - REGISTER_LOGBUF, REGISTER_REQBUF.

a. The SP uses the log-buffer to store its activity logs, in a
pre-decided format. This helps in debugging secure payload's issues.
b. The SP uses the req-buffer to get the parameters required by
sessions with Trusted Applications.

Change-Id: I6b0247cf7790524132ee0da24f1f35b1fccec5d5
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoAdd TLK Dispatcher (tlkd) based on the Test Dispatcher (tspd)
Varun Wadekar [Fri, 13 Mar 2015 08:31:03 +0000 (14:01 +0530)]
Add TLK Dispatcher (tlkd) based on the Test Dispatcher (tspd)

TLK Dispatcher (tlkd) is based on the tspd and is the glue required
to run TLK as a Secure Payload with the Trusted Firmware.

Change-Id: I69e573d26d52342eb049feef773dd7d2a506f4ab
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoRemove the `owner` field in bakery_lock_t data structure
Soby Mathew [Fri, 20 Feb 2015 16:04:17 +0000 (16:04 +0000)]
Remove the `owner` field in bakery_lock_t data structure

This patch removes the `owner` field in bakery_lock_t structure which
is the data structure used in the bakery lock implementation that uses
coherent memory. The assertions to protect against recursive lock
acquisition were based on the 'owner' field. They are now done based
on the bakery lock ticket number. These assertions are also added
to the bakery lock implementation that uses normal memory as well.

Change-Id: If4850a00dffd3977e218c0f0a8d145808f36b470

9 years agoOptimize the bakery lock structure for coherent memory
Soby Mathew [Thu, 19 Feb 2015 16:23:51 +0000 (16:23 +0000)]
Optimize the bakery lock structure for coherent memory

This patch optimizes the data structure used with the bakery lock
implementation for coherent memory to save memory and minimize memory
accesses. These optimizations were already part of the bakery lock
implementation for normal memory and this patch now implements
it for the coherent memory implementation as well. Also
included in the patch is a cleanup to use the do-while loop while
waiting for other contenders to finish choosing their tickets.

Change-Id: Iedb305473133dc8f12126726d8329b67888b70f1

9 years agoBug Fix: Fix checkpatch rule in Makefile
Sandrine Bailleux [Thu, 26 Mar 2015 15:07:47 +0000 (15:07 +0000)]
Bug Fix: Fix checkpatch rule in Makefile

The shell command used to list all files but the libc's ones
introduced in commit 95d5353c33 was incorrect. It was listing
subdirectories without referencing their parent directories.
This patch fixes it.

Also, the command used to invoke the checkpatch.pl script is now
printed when V=1.

Change-Id: Ie2f1e74f60d77e38c25e717cffa44ca03baec7b2

9 years agoMerge pull request #274 from sandrine-bailleux/sb/juno-r1
achingupta [Thu, 26 Mar 2015 15:43:15 +0000 (15:43 +0000)]
Merge pull request #274 from sandrine-bailleux/sb/juno-r1

Add support for Juno r1 in the platform reset handler

9 years agoMerge pull request #273 from achingupta/ag/genfw-389
achingupta [Thu, 26 Mar 2015 15:42:28 +0000 (15:42 +0000)]
Merge pull request #273 from achingupta/ag/genfw-389

Set group status of PPIs and SGIs correctly on GICv3 systems

9 years agoAdd support for Juno r1 in the platform reset handler
Sandrine Bailleux [Wed, 4 Feb 2015 14:06:10 +0000 (14:06 +0000)]
Add support for Juno r1 in the platform reset handler

For Juno r0, the platform reset handler needs to:
 - Implement the workaround for defect #831273
 - Increase the L2 Data and Tag RAM latencies for Cortex-A57.

Defect #831273 does not affect Juno r1. Also, the default value
for the L2 Tag RAM latency for Cortex-A57 is suitable on Juno r1.
The L2 Data RAM latency for Cortex-A57 still needs to be
increased, though.

This patch modifies the Juno platform reset handler to detect
the board revision and skip the unnecessary steps on Juno r1.
The behaviour on Juno r0 is unchanged.

Change-Id: I27542917223e680ef923ee860900806ffcd0357b

9 years agoSet group status of PPIs and SGIs correctly on GICv3 systems
Achin Gupta [Mon, 9 Mar 2015 21:54:40 +0000 (21:54 +0000)]
Set group status of PPIs and SGIs correctly on GICv3 systems

On a GICv2 system, the group status of PPIs and SGIs is set in the GICD_IGROUPR0
register. On a GICv3 system, if affinity routing is enabled for the non-secure
state, then the group status of PPIs and SGIs should be set in the GICR_IGROUPR0
register. ARM Trusted firmware sets the group status using the GICv2
sequence. On a GICv3 system, if the group status of an interrupt is set to Group
1 through a write to the GICD_IGROUPR0, then the GICR_IGROUPR0 is updated as
well.

The current sequence is incorrect since it first marks all PPIs and SGIs as
Group 1. It then clears the bits in GICD_IGROUPR0 corresponding to secure
interrupts to set their group status to Group 0. This operation is a no-op. It
leaves the secure generic timer interrupt (#29) used by the TSP marked as Group
1. This causes the interrupt to interfere with the execution of non-secure
software. Once an interrupt has been marked as Group 1, the GICR_IGROUPR0 should
be programmed to change its group status.

This patch rectifies this issue by setting the group status of only the
non-secure PPI and SGIs to Group 1 in the first place. GICD_IGROUPR0 resets to
0. So secure interrupts are marked as Group 0 by default.

Change-Id: I958b4b15f3e2b2444ce4c17764def36216498d00

9 years agoMerge pull request #270 from vikramkanigiri/vk/a72_cpu_support
danh-arm [Thu, 19 Mar 2015 19:33:06 +0000 (19:33 +0000)]
Merge pull request #270 from vikramkanigiri/vk/a72_cpu_support

Add support for ARM Cortex-A72 processor

9 years agoAdd support for ARM Cortex-A72 processor
Vikram Kanigiri [Tue, 17 Feb 2015 11:50:28 +0000 (11:50 +0000)]
Add support for ARM Cortex-A72 processor

This patch adds support for ARM Cortex-A72 processor in the CPU
specific framework.

Change-Id: I5986855fc1b875aadf3eba8c36e989d8a05e5175

9 years agoMerge pull request #263 from jcastillo-arm/jc/tbb_sha256_int
danh-arm [Tue, 17 Mar 2015 14:47:05 +0000 (14:47 +0000)]
Merge pull request #263 from jcastillo-arm/jc/tbb_sha256_int

TBB: remove PolarSSL SHA1 functions from the binary

9 years agoMerge pull request #269 from vikramkanigiri/vk/common-cci
danh-arm [Tue, 17 Mar 2015 14:28:48 +0000 (14:28 +0000)]
Merge pull request #269 from vikramkanigiri/vk/common-cci

Common driver for ARM cache coherent Interconnects

9 years agoMerge pull request #268 from vikramkanigiri/vk/move_init_cpu_ops
danh-arm [Tue, 17 Mar 2015 14:23:46 +0000 (14:23 +0000)]
Merge pull request #268 from vikramkanigiri/vk/move_init_cpu_ops

Initialise cpu ops after enabling data cache

9 years agoMerge pull request #267 from sandrine-bailleux/sb/doc-fixes
danh-arm [Tue, 17 Mar 2015 14:22:15 +0000 (14:22 +0000)]
Merge pull request #267 from sandrine-bailleux/sb/doc-fixes

Documentation fixes in 'make help' message and User Guide

9 years agoMerge pull request #266 from sandrine-bailleux/sb/juno-disable-errata-806969
danh-arm [Tue, 17 Mar 2015 14:20:29 +0000 (14:20 +0000)]
Merge pull request #266 from sandrine-bailleux/sb/juno-disable-errata-806969

Juno: Disable workaround for Cortex-A57 erratum #806969

9 years agoMerge pull request #264 from jcastillo-arm/jc/tbb_fip_dep
danh-arm [Tue, 17 Mar 2015 14:19:48 +0000 (14:19 +0000)]
Merge pull request #264 from jcastillo-arm/jc/tbb_fip_dep

TBB: fix build target 'all' dependency on certificates

9 years agoMerge pull request #262 from sandrine-bailleux/sb/check-format-printf
danh-arm [Tue, 17 Mar 2015 14:18:09 +0000 (14:18 +0000)]
Merge pull request #262 from sandrine-bailleux/sb/check-format-printf

Enable type-checking of arguments passed to printf() et al.

9 years agoMerge pull request #265 from jcastillo-arm/jc/git_commit_id
danh-arm [Tue, 17 Mar 2015 14:16:11 +0000 (14:16 +0000)]
Merge pull request #265 from jcastillo-arm/jc/git_commit_id

checkpatch: ignore GIT_COMMIT_ID

9 years agoUse ARM CCI driver on FVP and Juno platforms
Vikram Kanigiri [Thu, 26 Feb 2015 15:25:58 +0000 (15:25 +0000)]
Use ARM CCI driver on FVP and Juno platforms

This patch updates the FVP and Juno platform ports to use the common
driver for ARM Cache Coherent Interconnects.

Change-Id: Ib142f456b9b673600592616a2ec99e9b230d6542

9 years agoCommon driver for ARM Cache Coherent Interconnects
Vikram Kanigiri [Tue, 23 Dec 2014 01:00:22 +0000 (01:00 +0000)]
Common driver for ARM Cache Coherent Interconnects

Even though both CCI-400 and CCI-500 IPs have different configurations
with respect to the number and types of supported interfaces, their
register offsets and programming sequences are similar. This patch
creates a common driver for enabling and disabling snoop transactions
and DVMs with both the IPs.

New platform ports which implement one of these IPs should use this
common driver. Existing platform ports which implement CCI-400 should
migrate to the common driver as the standalone CCI-400 will be
deprecated in the future.

Change-Id: I3ccd0eb7b062922d2e4a374ff8c21e79fa357556

9 years agoAdd macro to calculate number of elements in an array
Vikram Kanigiri [Wed, 4 Mar 2015 10:34:27 +0000 (10:34 +0000)]
Add macro to calculate number of elements in an array

This patch defines the ARRAY_SIZE macro for calculating number of elements
in an array and uses it where appropriate.

Change-Id: I72746a9229f0b259323972b498b9a3999731bc9b

9 years agoInitialise cpu ops after enabling data cache
Vikram Kanigiri [Thu, 29 Jan 2015 18:27:38 +0000 (18:27 +0000)]
Initialise cpu ops after enabling data cache

The cpu-ops pointer was initialized before enabling the data cache in the cold
and warm boot paths. This required a DCIVAC cache maintenance operation to
invalidate any stale cache lines resident in other cpus.

This patch moves this initialization to the bl31_arch_setup() function
which is always called after the data cache and MMU has been enabled.

This change removes the need:
 1. for the DCIVAC cache maintenance operation.
 2. to initialise the CPU ops upon resumption from a PSCI CPU_SUSPEND
    call since memory contents are always preserved in this case.

Change-Id: Ibb2fa2f7460d1a1f1e721242025e382734c204c6

9 years agocheckpatch: ignore GIT_COMMIT_ID
Juan Castillo [Wed, 11 Mar 2015 14:21:53 +0000 (14:21 +0000)]
checkpatch: ignore GIT_COMMIT_ID

By default, the checkpatch script requires that commit references
included in commit messages follow a predefined format. Github
merge commits do not follow this convention, causing the code
style test to fail when a new pull request is created.

This patch adds the ignore GIT_COMMIT_ID option to the checkpatch
parameters. This flag indicates the tool to ignore the commit
message format.

Change-Id: I37133cc5cf803f664b8ff00f62d458b39f06918c

9 years agoJuno: Disable workaround for Cortex-A57 erratum #806969
Sandrine Bailleux [Tue, 17 Feb 2015 10:33:41 +0000 (10:33 +0000)]
Juno: Disable workaround for Cortex-A57 erratum #806969

Cortex-A57 erratum #806969 applies to revision r0p0 of the CPU
but does not manifest itself on Juno r0. It is not applicable
to Juno r1 in any case.

This patch modifies the Juno platform Makefile to no longer
compile this erratum workaround in.

Change-Id: I32b16835b2ac897e639e869ab2b78b62a51a0139

9 years agoTBB: remove PolarSSL SHA1 functions from the binary
Juan Castillo [Tue, 10 Mar 2015 12:17:21 +0000 (12:17 +0000)]
TBB: remove PolarSSL SHA1 functions from the binary

Commit ea4ec3aad5e1 ("TBB: use SHA256 to generate the certificate
signatures") updated the cert_create tool to generate the
signatures using SHA256 instead of SHA1. Therefore, SHA1 is no
longer required.

This patch removes the SHA1 option from the PolarSSL configuration
file. The source file sha1.c is no longer needed and has been
excluded from the build. The SHA1 functions are no longer included
in the binary, reducing the memory footprint of BL1 and BL2 by
approximately 6 KB.

Change-Id: I72ea2cff03c0964c3eaadce148ec2ad2c6dde2e3

9 years agoUser guide: Add dependency on libssl-dev for cert_create tool
Sandrine Bailleux [Wed, 18 Feb 2015 17:24:53 +0000 (17:24 +0000)]
User guide: Add dependency on libssl-dev for cert_create tool

The 'libssl-dev' package must be installed on the host to build the
certificate generation tool. This patch adds it to the list of
required tools in the User Guide.

Change-Id: I018381fb14b7c2d2bd6f2b7929aaad0571f7eb2e

9 years agoUpdate help message printed by the Makefile
Sandrine Bailleux [Wed, 18 Feb 2015 16:18:00 +0000 (16:18 +0000)]
Update help message printed by the Makefile

The message printed by 'make help' is incomplete. It doesn't
mention all relevant supported targets. This patch updates it.

The format of the first line of the help message has been changed
so that it no longer lists all supported targets. This eases the
maintenance as we don't need to update the list in 2 places
anymore whenever a new target is added.

Also add a reference to the user guide to get the list of
supported options.

Change-Id: I79d8b815b0ffc0c43b4c05124378fce0e938365c

9 years agoEnable type-checking of arguments passed to printf() et al.
Sandrine Bailleux [Thu, 5 Feb 2015 15:42:31 +0000 (15:42 +0000)]
Enable type-checking of arguments passed to printf() et al.

This patch modifies the declarations of the functions printf() et al.
and adds the right GCC attribute to request the compiler to check
the type of the arguments passed to these functions against the given
format string. This will ensure that the compiler outputs warning
messages like the following whenever it detects an inconsistency:

 file.c:42: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’

It also fixes the type mismatch inconsistencies that it revealed
across the code base.

NOTE: THIS PATCH MAY FORCE PLATFORM PORTS OR SP/SPDS THAT USE THE
PRINTF FAMILY OF FUNCTIONS TO FIX ANY TYPE MISMATCH INCONSISTENCIES.

Change-Id: If36bb54ec7d6dd2cb4791d89b02a24ac13fd2df6

9 years agoMerge pull request #260 from jcastillo-arm/jc/tbb_sha256
danh-arm [Fri, 6 Mar 2015 12:28:59 +0000 (12:28 +0000)]
Merge pull request #260 from jcastillo-arm/jc/tbb_sha256

TBB: use SHA256 to generate the certificate signatures

9 years agoTBB: use SHA256 to generate the certificate signatures
Juan Castillo [Mon, 16 Feb 2015 10:34:28 +0000 (10:34 +0000)]
TBB: use SHA256 to generate the certificate signatures

This patch replaces SHA1 by SHA256 in the 'cert_create' tool, so
certificate signatures are generated according to the NSA Suite B
cryptographic algorithm requirements.

Documentation updated accordingly.

Change-Id: I7be79e6b2b62dac8dc78a4f4f5006e37686bccf6

9 years agoTBB: fix build target 'all' dependency on certificates
Juan Castillo [Mon, 2 Mar 2015 16:16:13 +0000 (16:16 +0000)]
TBB: fix build target 'all' dependency on certificates

Build target 'all' fails when GENERATE_COT=1 and no BL3-3 or
BL3-0 (if required) images are specified. The reason is that,
when GENERATE_COT=1, a dependency on the certificates is added
to the target 'all', and the certificates depend on the BL3-3
and BL3-0 images, causing the build process to fail if the
images are not specified.

This patch moves the dependency on the certificates from 'all' to
'fip'. Target 'all' may be used to build the individual images.
The certificates will be created by calling the target 'fip', where
BL3-3 and BL3-0 (if required) must be specified.

Change-Id: I870beb4e8f9f1bfad1d35b09c850a7ce3c9f4ec6

9 years agoMerge pull request #261 from sandrine-bailleux/sb/coding-style
danh-arm [Thu, 5 Mar 2015 15:02:41 +0000 (15:02 +0000)]
Merge pull request #261 from sandrine-bailleux/sb/coding-style

Ignore C library files when checking coding style
Fix violations to the coding style

9 years agoFix violations to the coding style
Sandrine Bailleux [Thu, 5 Mar 2015 10:54:34 +0000 (10:54 +0000)]
Fix violations to the coding style

All coding style violations have been fixed in a previous patch and
since then, each individual patch has been checked in this regard.
However, the latest version of the checkpatch.pl script from the Linux
kernel is more advanced and it is able to flag new errors in the
Trusted Firmware codebase. This patch fixes them.

Change-Id: I1f332f2440984be85d36b231bb83260368987077

9 years agoIgnore C library files when checking coding style
Sandrine Bailleux [Thu, 26 Feb 2015 11:22:40 +0000 (11:22 +0000)]
Ignore C library files when checking coding style

The C library source files embedded into the Trusted Firmware
tree are not required to comply to the Linux Coding Style.
Unfortunately, 'make checkpatch' does take them into account.

This patch modifies the Makefile so that the C library source
and header files are now ignored by 'make checkpatch'.

It also instructs the checkpatch.pl script to not treat the
presence of a 'Change-Id' line in the commit message as an error.

Change-Id: I38196202efe518bae3a57c2affe2ed7758c9f69c

9 years agoMerge pull request #259 from soby-mathew/sm/plat_max_afflvl
danh-arm [Wed, 25 Feb 2015 17:54:41 +0000 (09:54 -0800)]
Merge pull request #259 from soby-mathew/sm/plat_max_afflvl

Export maximum affinity using PLATFORM_MAX_AFFLVL macro

9 years agoMerge pull request #258 from rmurphy-arm/rm/dma-smmu
danh-arm [Wed, 25 Feb 2015 17:54:01 +0000 (09:54 -0800)]
Merge pull request #258 from rmurphy-arm/rm/dma-smmu

Juno: clear DMA-330 SMMU security state

9 years agoMerge pull request #257 from soby-mathew/sm/opt_mmap_reg
danh-arm [Thu, 19 Feb 2015 11:33:09 +0000 (03:33 -0800)]
Merge pull request #257 from soby-mathew/sm/opt_mmap_reg

Minimize MAX_MMAP_REGIONS for each BL stage

9 years agoJuno: clear DMA-330 SMMU security state
Robin Murphy [Fri, 9 Jan 2015 14:30:58 +0000 (14:30 +0000)]
Juno: clear DMA-330 SMMU security state

By default the SMMU for the DMA-330 is configured to mark some stream IDs
as always belonging to the Secure world. As a result, if EL1 software turns
the SMMU on, certain Non-Secure accesses get rewritten as Secure, making
them bypass translation and access Secure physical addresses directly.

Since the current Juno board firmware configures the DMA-330 hardware as
Non-Secure, rewrite the SMMU's default SSD table as well to prevent any
unexpected behaviour in EL1.

Change-Id: Iaa81d883eecf28d80eb182b9ce475684bf9c718c

9 years agoExport maximum affinity using PLATFORM_MAX_AFFLVL macro
Soby Mathew [Thu, 12 Feb 2015 14:45:02 +0000 (14:45 +0000)]
Export maximum affinity using PLATFORM_MAX_AFFLVL macro

This patch removes the plat_get_max_afflvl() platform API
and instead replaces it with a platform macro PLATFORM_MAX_AFFLVL.
This is done because the maximum affinity level for a platform
is a static value and it is more efficient for it to be defined
as a platform macro.

NOTE: PLATFORM PORTS NEED TO BE UPDATED ON MERGE OF THIS COMMIT

Fixes ARM-Software/tf-issues#265

Change-Id: I31d89b30c2ccda30d28271154d869060d50df7bf

9 years agoMinimize MAX_MMAP_REGIONS for each BL stage
Soby Mathew [Thu, 22 Jan 2015 11:22:22 +0000 (11:22 +0000)]
Minimize MAX_MMAP_REGIONS for each BL stage

This patch defines MAX_MMAP_REGIONS separately for each BL stage
as per its requirements. This minimizes the size of the mmap[]
array.

Fixes ARM-Software/tf-issues#201

Change-Id: I19b15e1a91a8365b2ecf24e2cd71937cb73916b2

9 years agoMerge pull request #256 from achingupta/ag/v1.1-rc2-fix
achingupta [Wed, 4 Feb 2015 16:18:20 +0000 (16:18 +0000)]
Merge pull request #256 from achingupta/ag/v1.1-rc2-fix

Fix model command line for legacy VE memory map

9 years agoFix model command line for legacy VE memory map
Achin Gupta [Wed, 4 Feb 2015 14:29:32 +0000 (14:29 +0000)]
Fix model command line for legacy VE memory map

The command line options specified in the User Guide to run the AEMv8 Base FVP
with the legacy VE memory map apply only when the model is configured to use GIC
v2.0. This patch adds the 'gicv3.gicv2-only=1' to the command line to ensure
that the right version of GIC is used.

Change-Id: I34c44e19fd42c29818b734ac8f6aa9bf97b4e891

9 years agoMerge pull request #254 from achingupta/ag/v1.1-doc-updates
danh-arm [Tue, 3 Feb 2015 13:13:16 +0000 (13:13 +0000)]
Merge pull request #254 from achingupta/ag/v1.1-doc-updates

Documentation for version 1.1

9 years agoMerge pull request #255 from jcastillo-arm/jc/cert_create_gerrit
danh-arm [Tue, 3 Feb 2015 13:12:06 +0000 (13:12 +0000)]
Merge pull request #255 from jcastillo-arm/jc/cert_create_gerrit

TBB: Add documentation for Trusted Board Boot

9 years agoTBB: Add documentation for Trusted Board Boot
Achin Gupta [Sun, 25 Jan 2015 22:44:23 +0000 (22:44 +0000)]
TBB: Add documentation for Trusted Board Boot

This patch updates the user-guide.md with the various build options related to
Trusted Board Boot and steps to build a FIP image which includes this
support. It also adds a trusted-board-boot.md which describes the scope and
design of this feature.

Change-Id: Ifb421268ebf7e06a135684c8ebb04c94835ce061

9 years agoDocumentation for version 1.1
Achin Gupta [Mon, 2 Feb 2015 17:31:42 +0000 (17:31 +0000)]
Documentation for version 1.1

Final updates to readme.md and change-log.md for ARM Trusted Firmware version
1.1. Also increment the version in the Makefile.

Change-Id: Ib001a6ec9a9c570985841d06f0ff80ed76c2996b

9 years agoMerge pull request #253 from danh-arm/dh/deps-for-v1.1
danh-arm [Mon, 2 Feb 2015 18:33:17 +0000 (18:33 +0000)]
Merge pull request #253 from danh-arm/dh/deps-for-v1.1

Move up dependency versions in user guide

9 years agoMove up dependency versions in user guide
Sandrine Bailleux [Wed, 14 Jan 2015 14:15:19 +0000 (14:15 +0000)]
Move up dependency versions in user guide

Move up the version numbers in the user guide of:

* DS-5 (to v5.20)
* EDK2 (to v2.1-rc0)
* Linux Kernel (to 1.3-Juno)
* Linaro file-system (to 14.12)
* Juno SCP binary (to 1.5.0-rc0 within board recovery image 0.10.1).
  Also remove duplicate information that is available from the
  ARM Connected Community website.
* Base FVP (to 6.2)
* Foundation FVP (to 9.1). Also update the name of the Foundation
  FVP binary since it has changed since version 2.1.

Co-Authored-By: Dan Handley <dan.handley@arm.com>
Change-Id: I1cf2f2b1a3f1b997ac905a4ab440876d265698c0

9 years agoMerge pull request #252 from sandrine-bailleux/v1.1-misc-doc-fixes
danh-arm [Mon, 2 Feb 2015 18:05:15 +0000 (18:05 +0000)]
Merge pull request #252 from sandrine-bailleux/v1.1-misc-doc-fixes

Miscellaneous doc fixes for v1.1

9 years agoMiscellaneous doc fixes for v1.1
Sandrine Bailleux [Wed, 28 Jan 2015 10:11:48 +0000 (10:11 +0000)]
Miscellaneous doc fixes for v1.1

Change-Id: Iaf9d6305edc478d39cf1b37c8a70ccdf723e8ef9

9 years agoMerge pull request #251 from soby-mathew/sm/reset_handler_fix_v2
danh-arm [Fri, 30 Jan 2015 15:31:17 +0000 (15:31 +0000)]
Merge pull request #251 from soby-mathew/sm/reset_handler_fix_v2

Fix the Cortex-A57 reset handler register usage v2

9 years agoFix the Cortex-A57 reset handler register usage
Soby Mathew [Thu, 29 Jan 2015 12:00:58 +0000 (12:00 +0000)]
Fix the Cortex-A57 reset handler register usage

The CPU specific reset handlers no longer have the freedom
of using any general purpose register because it is being invoked
by the BL3-1 entry point in addition to BL1. The Cortex-A57 CPU
specific reset handler was overwriting x20 register which was being
used by the BL3-1 entry point to save the entry point information.
This patch fixes this bug by reworking the register allocation in the
Cortex-A57 reset handler to avoid using x20. The patch also
explicitly mentions the register clobber list for each of the
callee functions invoked by the reset handler

Change-Id: I28fcff8e742aeed883eaec8f6c4ee2bd3fce30df

9 years agoMerge pull request #249 from danh-arm/jc/tbb_prototype
danh-arm [Wed, 28 Jan 2015 18:41:12 +0000 (18:41 +0000)]
Merge pull request #249 from danh-arm/jc/tbb_prototype

Trusted Board Boot Prototype

9 years agoTBB: authenticate BL3-x images and certificates
Juan Castillo [Wed, 28 Jan 2015 16:46:57 +0000 (16:46 +0000)]
TBB: authenticate BL3-x images and certificates

This patch adds support to authenticate the Trusted Key certificate
and the BL3-x certificates and images at BL2.

Change-Id: I69a8c13a14c8da8b75f93097d3a4576aed71c5dd

9 years agoFVP: initialize IO framework in bl2_early_platform_setup()
Juan Castillo [Wed, 28 Jan 2015 16:42:41 +0000 (16:42 +0000)]
FVP: initialize IO framework in bl2_early_platform_setup()

This patch moves fvp_io_setup() to bl2_early_platform_setup() in order
to allow BL2 to use the IO framework before bl2_platform_setup().

Change-Id: I75e1a772ab5f9b4727f6727822a2527c30f3c63d

9 years agoTBB: authenticate BL2 image and certificate
Juan Castillo [Wed, 7 Jan 2015 13:49:59 +0000 (13:49 +0000)]
TBB: authenticate BL2 image and certificate

This patch adds support to authenticate the BL2 content certificate
and image using the authentication module in BL1.

The FIP driver has been extended to include the BL2 certificate
UUID.

FVP and Juno ports include the BL2 certificate FIP file
definition.

Change-Id: I32680e9bd123c8db4a4193c14448c9b32b0e9325

9 years agoTBB: add authentication module interface
Juan Castillo [Tue, 13 Jan 2015 10:37:27 +0000 (10:37 +0000)]
TBB: add authentication module interface

This patch provides an API to access the authentication module that
will be used to verify the authenticity of the images loaded into
memory as part of the Trusted Board Boot process.

To include the authentication module as part of the build, set the
boolean build option TRUSTED_BOARD_BOOT. One single authentication
module must be registered at build time by setting the build option
AUTH_MOD=<mod_name>. All authentication modules will be located in
'common/auth/<mod_name>' and must present the <mod_name>.mk file that
will be included by the build system to compile the module sources.

To create an authentication module, an instance of auth_mod_t called
'auth_mod' must be declared in the module sources. The initialization
and verification functions provided by the module will be exported
through the function pointers specified when declaring this instance.

If an authentication module includes third party sources that do not
adhere to the C99 standard, the -pedantic option may be removed from
the build options by setting the flag DISABLE_PEDANTIC in the module
file <mod_name>.mk.

Change-Id: I080bb04bd421029bcdf22ec2c63807afbf061dcd

9 years agoTBB: add PolarSSL based authentication module
Juan Castillo [Tue, 13 Jan 2015 12:21:04 +0000 (12:21 +0000)]
TBB: add PolarSSL based authentication module

This patch implements an authentication module based on the
PolarSSL library (v1.3.9) to verify the Chain of Trust when
Trusted Boot is enabled.

PolarSSL sources must be fetched separately. The POLARSSL_DIR
build option may be used to indicate the path to the PolarSSL
main directory (this directory must contain the 'include' and
'library' subdirectories).

To be able to build PolarSSL sources as a part of the Trusted
Firmware build process, the DISABLE_PEDANTIC flag in polarssl.mk
will tell the build system to remove the -pedantic option from
the CFLAGS.

Inclusion of PolarSSL increases the memory requirements of the BL1
and BL2 images. The following are the changes made to the FVP and
Juno platforms to cater for this when TRUSTED_BOARD_BOOT is
defined:

Changes on FVP:

  - BL1 and BL2 stacks have been increased to 4 KB
  - BL1(rw) section has been increased to 32 KB.
  - BL2 memory region has been increased to 112 KB

Changes on Juno:

  - BL1 and BL2 stacks have been increased to 4 KB
  - BL1(rw) section has been increased to 32 KB.
  - Trusted ROM region in Flash has been increased to 128 KB.
  - BL2 memory region has been increased to 116 KB

Change-Id: Ie87d80d43408eb6239c4acd0ec5ab2120e4e9e80

9 years agostdlib: add missing features to build PolarSSL
Juan Castillo [Mon, 17 Nov 2014 17:27:41 +0000 (17:27 +0000)]
stdlib: add missing features to build PolarSSL

This patch adds the missing features to the C library included
in the Trusted Firmware to build PolarSSL:

  - strcasecmp() function
  - exit() function
  - sscanf()* function
  - time.h header file (and its dependencies)

* NOTE: the sscanf() function is not a real implementation. It just
returns the number of expected arguments by counting the number of
'%' characters present in the formar string. This return value is
good enough for PolarSSL because during the certificate parsing
only the return value is checked. The certificate validity period
is ignored.

Change-Id: I43bb3742f26f0bd458272fccc3d72a7f2176ab3d

9 years agoTBB: add a platform specific function to validate the ROTPK
Juan Castillo [Wed, 7 Jan 2015 10:39:25 +0000 (10:39 +0000)]
TBB: add a platform specific function to validate the ROTPK

This patch adds the function plat_match_rotpk() to the platform
porting layer to provide a Root Of Trust Public key (ROTPK)
verification mechanism. This function is called during the
Trusted Board Boot process and receives a supposed valid copy
of the ROTPK as a parameter, usually obtained from an external
source (for instance, a certificate). It returns 0 (success) if
that key matches the actual ROTPK stored in the system or any
other value otherwise.

The mechanism to access the actual ROTPK stored in the system
is platform specific and should be implemented as part of this
function. The format of the ROTPK is also platform specific
(to save memory, some platforms might store a hash of the key
instead of the whole key).

TRUSTED_BOARD_BOOT build option has been added to allow the user
to enable the Trusted Board Boot features. The implementation of
the plat_match_rotpk() funtion is mandatory when Trusted Board
Boot is enabled.

For development purposes, FVP and Juno ports provide a dummy
function that returns always success (valid key). A safe trusted
boot implementation should provide a proper matching function.

Documentation updated accordingly.

Change-Id: I74ff12bc2b041556c48533375527d9e8c035b8c3

9 years agoTBB: add support to include certificates in a FIP image
Juan Castillo [Tue, 4 Nov 2014 17:36:40 +0000 (17:36 +0000)]
TBB: add support to include certificates in a FIP image

This patch extends the FIP tool to include the certificates
generated by the 'cert_create' tool.

If GENERATE_COT build option is enabled, the Makefile adds the
certificates as dependencies to create the FIP file. Thus, make
target 'fip' will also build the certificates as part of the
Trusted Firmware build process.

Change-Id: I5eee500da7f7be6cfb6e3df0423599739d260074

9 years agoTBB: add tool to generate certificates
Juan Castillo [Tue, 21 Oct 2014 10:30:42 +0000 (11:30 +0100)]
TBB: add tool to generate certificates

This patch adds a tool that generates all the necessary elements
to establish the chain of trust (CoT) between the images.

The tool reads the binary images and signing keys and outputs the
corresponding certificates that will be used by the target at run
time to verify the authenticity of the images.

Note: the platform port must provide the file platform_oid.h. This
file will define the OIDs of the x509 extensions that will be added
to the certificates in order to establish the CoT.

Change-Id: I2734d6808b964a2107ab3a4805110698066a04be

9 years agoSkip reserving memory for non-executable and BL3-0 images
Juan Castillo [Mon, 19 Jan 2015 16:51:21 +0000 (16:51 +0000)]
Skip reserving memory for non-executable and BL3-0 images

This patch adds support to not reserve the memory where an image is
loaded if the image is:

  1. A non-executable image e.g. a certificate
  2. An executable image which is not meant to run on the
     application CPU (e.g. BL3-0)

Both types of images are characterized by a NULL entrypoint argument
to the load_image() function. It is used to distinguish them from
other type of images.

Important: Use this feature carefully. The caller is responsible for
providing a valid entrypoint while loading images which will execute
on the application CPU to prevent a potential overwrite of the
corresponding memory region.

Change-Id: Ied482280d9db714c529ec12c33a6c1d918d77a4e

9 years agoMerge pull request #248 from jcastillo-arm/jc/tf-issues/212_1
danh-arm [Wed, 28 Jan 2015 10:42:32 +0000 (10:42 +0000)]
Merge pull request #248 from jcastillo-arm/jc/tf-issues/212_1

Allow BL3-2 to be loaded into the secure region of DRAM

9 years agoMerge pull request #247 from achingupta/ag/tf-issues#275
danh-arm [Tue, 27 Jan 2015 09:48:18 +0000 (09:48 +0000)]
Merge pull request #247 from achingupta/ag/tf-issues#275

Call reset handlers upon BL3-1 entry.

9 years agoCall reset handlers upon BL3-1 entry.
Yatharth Kochar [Thu, 20 Nov 2014 18:09:41 +0000 (18:09 +0000)]
Call reset handlers upon BL3-1 entry.

This patch adds support to call the reset_handler() function in BL3-1 in the
cold and warm boot paths when another Boot ROM reset_handler() has already run.

This means the BL1 and BL3-1 versions of the CPU and platform specific reset
handlers may execute different code to each other. This enables a developer to
perform additional actions or undo actions already performed during the first
call of the reset handlers e.g. apply additional errata workarounds.

Typically, the reset handler will be first called from the BL1 Boot ROM. Any
additional functionality can be added to the reset handler when it is called
from BL3-1 resident in RW memory. The constant FIRST_RESET_HANDLER_CALL is used
to identify whether this is the first version of the reset handler code to be
executed or an overridden version of the code.

The Cortex-A57 errata workarounds are applied only if they have not already been
applied.

Fixes ARM-software/tf-issue#275

Change-Id: Id295f106e4fda23d6736debdade2ac7f2a9a9053

9 years agoMerge pull request #246 from soby-mathew/sm/route_IRQ_EL3
danh-arm [Mon, 26 Jan 2015 18:07:26 +0000 (18:07 +0000)]
Merge pull request #246 from soby-mathew/sm/route_IRQ_EL3

Demonstrate model for routing IRQs to EL3

9 years agoDemonstrate model for routing IRQs to EL3
Soby Mathew [Tue, 13 Jan 2015 15:48:26 +0000 (15:48 +0000)]
Demonstrate model for routing IRQs to EL3

This patch provides an option to specify a interrupt routing model
where non-secure interrupts (IRQs) are routed to EL3 instead of S-EL1.
When such an interrupt occurs, the TSPD arranges a return to
the normal world after saving any necessary context. The interrupt
routing model to route IRQs to EL3 is enabled only during STD SMC
processing. Thus the pre-emption of S-EL1 is disabled during Fast SMC
and Secure Interrupt processing.

A new build option TSPD_ROUTE_NS_INT_EL3 is introduced to change
the non secure interrupt target execution level to EL3.

Fixes ARM-software/tf-issues#225

Change-Id: Ia1e779fbbb6d627091e665c73fa6315637cfdd32

9 years agoMerge pull request #245 from danh-arm/sm/psci_version
danh-arm [Mon, 26 Jan 2015 12:52:46 +0000 (12:52 +0000)]
Merge pull request #245 from danh-arm/sm/psci_version

Increment the PSCI VERSION to 1.0 (PR v2)

9 years agoIncrement the PSCI VERSION to 1.0
Soby Mathew [Thu, 15 Jan 2015 11:49:58 +0000 (11:49 +0000)]
Increment the PSCI VERSION to 1.0

This patch:

   * Bumps the PSCI VERSION to 1.0. This means that
     the PSCI_VERSION API will now return the value 0x00010000
     to indicate the version as 1.0. The firmware remains
     compatible with PSCI v0.2 clients.

   * The firmware design guide is updated to document the
     APIs supported by the Trusted Firmware generic code.

   * The FVP Device Tree Sources (dts) and Blobs(dtb) are also
     updated to add "psci-1.0" and "psci-0.2" to the list of
     compatible PSCI versions.

Change-Id: Iafc2f549c92651dcd65d7e24a8aae35790d00f8a

9 years agoMerge pull request #244 from danh-arm/sm/psci_mig_feat
danh-arm [Mon, 26 Jan 2015 12:46:55 +0000 (12:46 +0000)]
Merge pull request #244 from danh-arm/sm/psci_mig_feat

Rework PSCI migrate APIs and implement the FEATURES API v2

9 years agoVerify capabilities before handling PSCI calls
Soby Mathew [Thu, 15 Jan 2015 11:49:49 +0000 (11:49 +0000)]
Verify capabilities before handling PSCI calls

This patch implements conditional checks in psci_smc_handler() to verify
that the psci function invoked by the caller is supported by the platform
or SPD implementation. The level of support is saved in the 'psci_caps'
variable. This check allows the PSCI implementation to return an error
early.

As a result of the above verification, the checks performed within the psci
handlers for the pm hooks are now removed and replaced with assertions.

Change-Id: I9b5b646a01d8566dc28c4d77dd3aa54e9bf3981a

9 years agoImplement PSCI_FEATURES API
Soby Mathew [Wed, 7 Jan 2015 11:10:22 +0000 (11:10 +0000)]
Implement PSCI_FEATURES API

This patch implements the PSCI_FEATURES function which is a mandatory
API in the PSCI 1.0 specification. A capability variable is
constructed during initialization by examining the plat_pm_ops and
spd_pm_ops exported by the platform and the Secure Payload Dispatcher.
This is used by the PSCI FEATURES function to determine which
PSCI APIs are supported by the platform.

Change-Id: I147ffc1bd5d90b469bd3cc4bbe0a20e95c247df7

9 years agoRework the PSCI migrate APIs
Soby Mathew [Thu, 23 Oct 2014 09:35:34 +0000 (10:35 +0100)]
Rework the PSCI migrate APIs

This patch reworks the PSCI MIGRATE, MIGRATE_INFO_TYPE and
MIGRATE_INFO_UP_CPU support for Trusted Firmware. The
implementation does the appropriate validation of parameters
and invokes the appropriate hook exported by the SPD.

The TSP is a MP Trusted OS. Hence the ability to actually
migrate a Trusted OS has not been implemented. The
corresponding function is not populated in the spd_pm_hooks
structure for the TSPD.

The `spd_pm_ops_t` has undergone changes with this patch.
SPD PORTS MAY NEED TO BE UPDATED.

Fixes ARM-software/tf-issues#249

Change-Id: Iabd87521bf7c530a5e4506b6d3bfd4f1bf87604f

9 years agoMerge pull request #243 from soby-mathew/sm/psci_cleanup_1
danh-arm [Mon, 26 Jan 2015 12:37:47 +0000 (12:37 +0000)]
Merge pull request #243 from soby-mathew/sm/psci_cleanup_1

Clean-up PSCI code and introduce early validation of parameters v3

9 years agoFVP: Allow BL3-2 to sit in the secure region of DRAM
Juan Castillo [Fri, 19 Dec 2014 09:51:00 +0000 (09:51 +0000)]
FVP: Allow BL3-2 to sit in the secure region of DRAM

This patch allows the secure payload (BL3-2) to be loaded in the
DRAM region secured by the TrustZone controller (top 16 MB of DRAM1).

The location of BL3-2 can be selected at build time by setting the
build flag FVP_TSP_RAM_LOCATION to one of the following options:

  - 'tsram' : Trusted SRAM (this is the default option)
  - 'tdram' : Trusted DRAM
  - 'dram'  : Secure region in DRAM1 (top 16MB configured by the
              TrustZone controller)

The number of MMU tables in BL3-2 depends on its location in
memory: 3 in case it is loaded in DRAM, 2 otherwise.

Documentation updated accordingly.

Fixes ARM-software/tf-issues#212

Change-Id: I371eef3a4159f06a0c9e3c6c1f4c905b2f93803a

9 years agoReturn success if an interrupt is seen during PSCI CPU_SUSPEND
Soby Mathew [Tue, 6 Jan 2015 21:36:55 +0000 (21:36 +0000)]
Return success if an interrupt is seen during PSCI CPU_SUSPEND

This patch adds support to return SUCCESS if a pending interrupt is
detected during a CPU_SUSPEND call to a power down state. The check
is performed as late as possible without losing the ability to return
to the caller. This reduces the overhead incurred by a CPU in
undergoing a complete power cycle when a wakeup interrupt is already
pending.

Fixes ARM-Software/tf-issues#102

Change-Id: I1aff04a74b704a2f529734428030d1d10750fd4b

9 years agoValidate power_state and entrypoint when executing PSCI calls
Soby Mathew [Thu, 2 Oct 2014 15:56:51 +0000 (16:56 +0100)]
Validate power_state and entrypoint when executing PSCI calls

This patch allows the platform to validate the power_state and
entrypoint information from the normal world early on in PSCI
calls so that we can return the error safely. New optional
pm_ops hooks `validate_power_state` and `validate_ns_entrypoint`
are introduced to do this.

As a result of these changes, all the other pm_ops handlers except
the PSCI_ON handler are expected to be successful. Also, the PSCI
implementation will now assert if a PSCI API is invoked without the
corresponding pm_ops handler being registered by the platform.

NOTE : PLATFORM PORTS WILL BREAK ON MERGE OF THIS COMMIT. The
pm hooks have 2 additional optional callbacks and the return type
of the other hooks have changed.

Fixes ARM-Software/tf-issues#229

Change-Id: I036bc0cff2349187c7b8b687b9ee0620aa7e24dc

9 years agoSave 'power_state' early in PSCI CPU_SUSPEND call
Soby Mathew [Tue, 30 Sep 2014 10:19:51 +0000 (11:19 +0100)]
Save 'power_state' early in PSCI CPU_SUSPEND call

This patch adds support to save the "power state" parameter before the
affinity level specific handlers are called in a CPU_SUSPEND call.
This avoids the need to pass the power_state as a parameter to the
handlers and Secure Payload Dispatcher (SPD) suspend spd_pm_ops.
The power_state arguments in the spd_pm_ops operations are now reserved
and must not be used. The SPD can query the relevant power_state fields
by using the psci_get_suspend_afflvl() & psci_get_suspend_stateid() APIs.

NOTE: THIS PATCH WILL BREAK THE SPD_PM_OPS INTERFACE. HENCE THE SECURE
PAYLOAD DISPATCHERS WILL NEED TO BE REWORKED TO USE THE NEW INTERFACE.

Change-Id: I1293d7dc8cf29cfa6a086a009eee41bcbf2f238e

9 years agoRework internal API to save non-secure entry point info
Soby Mathew [Tue, 6 Jan 2015 15:36:38 +0000 (15:36 +0000)]
Rework internal API to save non-secure entry point info

This patch replaces the internal psci_save_ns_entry() API with a
psci_get_ns_ep_info() API. The new function splits the work done by the
previous one such that it populates and returns an 'entry_point_info_t'
structure with the information to enter the normal world upon completion
of the CPU_SUSPEND or CPU_ON call. This information is used to populate
the non-secure context structure separately.

This allows the new internal API `psci_get_ns_ep_info` to return error
and enable the code to return safely.

Change-Id: Ifd87430a4a3168eac0ebac712f59c93cbad1b231

9 years agoPSCI: Check early for invalid CPU state during CPU ON
Soby Mathew [Mon, 12 Jan 2015 13:01:31 +0000 (13:01 +0000)]
PSCI: Check early for invalid CPU state during CPU ON

This patch moves the check for valid CPU state during
PSCI_CPU_ON to before the non secure entry point is programmed
so as to enable it to return early on error.

Change-Id: I1b1a21be421e2b2a6e33db236e91dee8688efffa

9 years agoRemove `ns_entrypoint` and `mpidr` from parameters in pm_ops
Soby Mathew [Fri, 26 Sep 2014 14:08:52 +0000 (15:08 +0100)]
Remove `ns_entrypoint` and `mpidr` from parameters in pm_ops

This patch removes the non-secure entry point information being passed
to the platform pm_ops which is not needed. Also, it removes the `mpidr`
parameter for  platform pm hooks which are meant to do power management
operations only on the current cpu.

NOTE: PLATFORM PORTS MUST BE UPDATED AFTER MERGING THIS COMMIT.

Change-Id: If632376a990b7f3b355f910e78771884bf6b12e7

9 years agoMerge pull request #240 from danh-arm/sm/rem_coh_mem
danh-arm [Thu, 22 Jan 2015 11:05:48 +0000 (11:05 +0000)]
Merge pull request #240 from danh-arm/sm/rem_coh_mem

Remove coherent memory v2

9 years agoRemove coherent memory from the BL memory maps
Soby Mathew [Thu, 8 Jan 2015 18:02:44 +0000 (18:02 +0000)]
Remove coherent memory from the BL memory maps

This patch extends the build option `USE_COHERENT_MEMORY` to
conditionally remove coherent memory from the memory maps of
all boot loader stages. The patch also adds necessary
documentation for coherent memory removal in firmware-design,
porting and user guides.

Fixes ARM-Software/tf-issues#106

Change-Id: I260e8768c6a5c2efc402f5804a80657d8ce38773

9 years agoMove bakery algorithm implementation out of coherent memory
Soby Mathew [Thu, 8 Jan 2015 18:02:19 +0000 (18:02 +0000)]
Move bakery algorithm implementation out of coherent memory

This patch moves the bakery locks out of coherent memory to normal memory.
This implies that the lock information needs to be placed on a separate cache
line for each cpu. Hence the bakery_lock_info_t structure is allocated in the
per-cpu data so as to minimize memory wastage. A similar platform per-cpu
data is introduced for the platform locks.

As a result of the above changes, the bakery lock api is completely changed.
Earlier, a reference to the lock structure was passed to the lock implementation.
Now a unique-id (essentially an index into the per-cpu data array) and an offset
into the per-cpu data for bakery_info_t needs to be passed to the lock
implementation.

Change-Id: I1e76216277448713c6c98b4c2de4fb54198b39e0

9 years agoAdd macros for domain specific barriers.
Soby Mathew [Tue, 30 Dec 2014 16:11:42 +0000 (16:11 +0000)]
Add macros for domain specific barriers.

This patch adds helper macros for barrier operations that specify
the type of barrier (dmb, dsb) and the shareability domain (system,
inner-shareable) it affects.

Change-Id: I4bf95103e79da212c4fbdbc13d91ad8ac385d9f5

9 years agoRemove the wfe() for bounded wait in bakery_lock
Soby Mathew [Tue, 18 Nov 2014 10:45:04 +0000 (10:45 +0000)]
Remove the wfe() for bounded wait in bakery_lock

This patch is an optimization in the bakery_lock_get() function
which removes the wfe() when waiting for other contenders to choose
their ticket i.e when their `entering` flag is set. Since the time
taken to execute bakery_get_ticket() by other contenders is bounded,
this wait is a bounded time wait. Hence the removal of wfe() and the
corresponding sev() and dsb() in bakery_get_ticket() may result
in better time performance during lock acquisition.

Change-Id: I141bb21294226b54cb6e89e7cac0175c553afd8d

9 years agoFVP: map non-secure DRAM1 in the MMU
Juan Castillo [Fri, 19 Dec 2014 09:28:30 +0000 (09:28 +0000)]
FVP: map non-secure DRAM1 in the MMU

This patch maps the non-secure region of DRAM1 in the MMU. The
non-secure region comprises the whole DRAM1 (0x80000000 -
0xffffffff) excluding the top 16 MB (0xff000000 - 0xffffffff).
The TrustZone controller configures this 16 MB region as secure
memory, so it can not be accessed in non-secure mode.

The number of MMU tables in BL2 has been increased to 3 because
the new size of the non-secure region in DRAM requires an extra L2
table.

Change-Id: I5ad080c6e181f6b6060e15cebb1d18b7fa128cf5

9 years agoMerge pull request #235 from soby-mathew/sm/inv_cpu_ops
danh-arm [Fri, 16 Jan 2015 17:57:47 +0000 (17:57 +0000)]
Merge pull request #235 from soby-mathew/sm/inv_cpu_ops

Invalidate the dcache after initializing cpu-ops

9 years agoMerge pull request #233 from jcastillo-arm/jc/tf-issues/254
danh-arm [Fri, 16 Jan 2015 17:55:45 +0000 (17:55 +0000)]
Merge pull request #233 from jcastillo-arm/jc/tf-issues/254

Juno: Add support for image overlaying in Trusted SRAM

9 years agoInvalidate the dcache after initializing cpu-ops
Soby Mathew [Tue, 18 Nov 2014 10:14:14 +0000 (10:14 +0000)]
Invalidate the dcache after initializing cpu-ops

This patch fixes a crash due to corruption of cpu_ops
data structure. During the secondary CPU boot, after the
cpu_ops has been initialized in the per cpu-data, the
dcache lines need to invalidated so that the update in
memory can be seen later on when the dcaches are turned ON.
Also, after initializing the psci per cpu data, the dcache
lines are flushed so that they are written back to memory
and dirty dcache lines are avoided.

Fixes ARM-Software/tf-issues#271

Change-Id: Ia90f55e9882690ead61226eea5a5a9146d35f313

9 years agoMerge pull request #232 from jcastillo-arm/jc/fix_doc_bl31
danh-arm [Mon, 12 Jan 2015 17:04:03 +0000 (17:04 +0000)]
Merge pull request #232 from jcastillo-arm/jc/fix_doc_bl31

Fix reset to BL3-1 instructions in user guide, part 3