project/bcm63xx/atf.git
9 years agoMerge pull request #322 from athoelke/at/fix-bl1-assertions
danh-arm [Fri, 19 Jun 2015 13:17:14 +0000 (14:17 +0100)]
Merge pull request #322 from athoelke/at/fix-bl1-assertions

Fix incorrect assertions in bl1_main()

9 years agoMerge pull request #323 from athoelke/at/fix-aff-inst-overflow
danh-arm [Fri, 19 Jun 2015 13:16:40 +0000 (14:16 +0100)]
Merge pull request #323 from athoelke/at/fix-aff-inst-overflow

Fix integer extension in mpidr_set_aff_inst()

9 years agoFix incorrect assertions in bl1_main()
Andrew Thoelke [Thu, 11 Jun 2015 13:12:14 +0000 (14:12 +0100)]
Fix incorrect assertions in bl1_main()

The validation of the caching enable state in bl1_main() was
incorrect resulting in the state not being checked. Using the right
operator fixes this.

Change-Id: I2a99478f420281a1dcdf365d3d4fd8394cd21b51

9 years agoFix integer extension in mpidr_set_aff_inst()
Andrew Thoelke [Thu, 11 Jun 2015 13:22:07 +0000 (14:22 +0100)]
Fix integer extension in mpidr_set_aff_inst()

mpidr_set_aff_inst() is left shifting an int constant and an
unsigned char value to construct an MPIDR. For affinity level 3 a
shift of 32 would result in shifting out of the 32-bit type and
have no effect on the MPIDR.

These values need to be extended to unsigned long before shifting
to ensure correct results for affinity level 3.

Change-Id: I1ef40afea535f14cfd820c347a065a228e8f4536

9 years agoMerge pull request #320 from danh-arm/rh/timer-api-v10
danh-arm [Thu, 18 Jun 2015 15:55:47 +0000 (16:55 +0100)]
Merge pull request #320 from danh-arm/rh/timer-api-v10

Add delay timer API v10

9 years agoFVP: Add SP804 delay timer
Ryan Harkin [Tue, 17 Mar 2015 14:54:01 +0000 (14:54 +0000)]
FVP: Add SP804 delay timer

Add SP804 delay timer support to the FVP BSP.

This commit simply provides the 3 constants needed by the SP804
delay timer driver and calls sp804_timer_init() in
bl2_platform_setup(). The BSP does not currently use the delay
timer functions.

Note that the FVP SP804 is a normal world accessible peripheral
and should not be used by the secure world after transition
to the normal world.

Change-Id: I5f91d2ac9eb336fd81943b3bb388860dfb5f2b39
Co-authored-by: Dan Handley <dan.handley@arm.com>
9 years agoAdd SP804 delay timer driver
Ryan Harkin [Tue, 17 Mar 2015 14:52:39 +0000 (14:52 +0000)]
Add SP804 delay timer driver

Add a delay timer driver for the ARM SP804 dual timer.

This driver only uses the first timer, called timer 1 in the
SP804 Technical Reference Manual (ARM DDI 0271D).

To use this driver, the BSP must provide three constants:

*   The base address of the SP804 dual timer
*   The clock multiplier
*   The clock divider

The BSP is responsible for calling sp804_timer_init(). The SP804
driver instantiates a constant timer_ops_t and calls the generic
timer_init().

Change-Id: I49ba0a52bdf6072f403d1d0a20e305151d4bc086
Co-authored-by: Dan Handley <dan.handley@arm.com>
9 years agoMerge pull request #319 from vwadekar/tegra-video-mem-aperture-v3
danh-arm [Thu, 18 Jun 2015 13:58:33 +0000 (14:58 +0100)]
Merge pull request #319 from vwadekar/tegra-video-mem-aperture-v3

Reserve a Video Memory aperture in DRAM memory

9 years agoAdd a simple delay timer driver API
Ryan Harkin [Tue, 17 Mar 2015 14:50:05 +0000 (14:50 +0000)]
Add a simple delay timer driver API

The API is simple. The BSP or specific timer driver creates an
instance of timer_ops_t, fills in the timer specific data, then calls
timer_init(). The timer specific data includes a function pointer
to return the timer value and a clock multiplier/divider. The ratio
of the multiplier and the divider is the clock frequency in MHz.

After that, mdelay() or udelay() can be called to delay execution for
the specified time (milliseconds or microseconds, respectively).

Change-Id: Icf8a295e1d25874f789bf28b7412156329dc975c
Co-authored-by: Dan Handley <dan.handley@arm.com>
9 years agoMerge pull request #317 from vwadekar/run-bl32-on-tegra-v3
Achin Gupta [Fri, 12 Jun 2015 13:08:53 +0000 (14:08 +0100)]
Merge pull request #317 from vwadekar/run-bl32-on-tegra-v3

Run bl32 on tegra v3

9 years agoReserve a Video Memory aperture in DRAM memory
Varun Wadekar [Wed, 10 Jun 2015 08:34:32 +0000 (14:04 +0530)]
Reserve a Video Memory aperture in DRAM memory

This patch adds support to reserve a memory carveout region in the
DRAM on Tegra SoCs. The memory controller provides specific registers
to specify the aperture's base and size. This aperture can also be
changed dynamically in order to re-size the memory available for
DRM video playback. In case of the new aperture not overlapping
the previous one, the previous aperture has to be cleared before
setting up the new one. This means we do not "leak" any video data
to the NS world.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoMove dispatcher documents to the docs/spd folder
Varun Wadekar [Thu, 11 Jun 2015 09:18:10 +0000 (14:48 +0530)]
Move dispatcher documents to the docs/spd folder

This patch moves the optee-dispatcher.md and tlk-dispatcher.md to
docs/spd.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoBoot Trusted OS' on Tegra SoCs
Varun Wadekar [Fri, 5 Jun 2015 07:27:27 +0000 (12:57 +0530)]
Boot Trusted OS' on Tegra SoCs

This patch adds support to run a Trusted OS during boot time. The
previous stage bootloader passes the entry point information in
the 'bl32_ep_info' structure, which is passed over to the SPD.

The build system expects the dispatcher to be passed as an input
parameter using the 'SPD=<dispatcher>' option. The Tegra docs have
also been updated with this information.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoMerge pull request #314 from sandrine-bailleux/sb/css-data-structs
danh-arm [Tue, 9 Jun 2015 16:06:33 +0000 (17:06 +0100)]
Merge pull request #314 from sandrine-bailleux/sb/css-data-structs

Clarify some CSS data structures

9 years agoMerge pull request #312 from jcastillo-arm/jc/tf-issues/308
danh-arm [Tue, 9 Jun 2015 13:01:13 +0000 (14:01 +0100)]
Merge pull request #312 from jcastillo-arm/jc/tf-issues/308

Fix build option 'ARM_TSP_RAM_LOCATION' in user guide

9 years agoCSS: Remove the constants MHU_SECURE_BASE/SIZE
Sandrine Bailleux [Tue, 9 Jun 2015 10:53:33 +0000 (11:53 +0100)]
CSS: Remove the constants MHU_SECURE_BASE/SIZE

For CSS based platforms, the constants MHU_SECURE_BASE and
MHU_SECURE_SIZE used to define the extents of the Trusted Mailboxes.
As such, they were misnamed because the mailboxes are completely
unrelated to the MHU hardware.

This patch removes the MHU_SECURE_BASE and MHU_SECURE_SIZE #defines.
The address of the Trusted Mailboxes is now relative to the base of
the Trusted SRAM.

This patch also introduces a new constant, SCP_COM_SHARED_MEM_BASE,
which is the address of the first memory region used for communication
between AP and SCP. This is used by the BOM and SCPI protocols.

Change-Id: Ib200f057b19816bf05e834d111271c3ea777291f

9 years agoCSS: Clarify what the SCP boot config is
Sandrine Bailleux [Wed, 29 Apr 2015 12:02:46 +0000 (13:02 +0100)]
CSS: Clarify what the SCP boot config is

Add a comment explaining what the SCP boot configuration information
is on CSS based platforms like Juno. Also express its address
relatively to the base of the Trusted SRAM rather than hard-coding it.

Change-Id: I82cf708a284c8b8212933074ea8c37bdf48b403b

9 years agoFix build option 'ARM_TSP_RAM_LOCATION' in user guide
Juan Castillo [Mon, 8 Jun 2015 10:35:06 +0000 (11:35 +0100)]
Fix build option 'ARM_TSP_RAM_LOCATION' in user guide

The 'ARM_TSP_RAM_LOCATION_ID' option specified in the user guide
corresponds to the internal definition not visible to the final
user. The proper build option is 'ARM_TSP_RAM_LOCATION'. This
patch fixes it.

Fixes ARM-software/tf-issues#308

Change-Id: Ica8cb72c0c5e8b3503f60b5357d16698e869b1bd

9 years agoMerge pull request #309 from soby-mathew/sm/fix_fvp_get_entry
danh-arm [Fri, 5 Jun 2015 16:32:25 +0000 (17:32 +0100)]
Merge pull request #309 from soby-mathew/sm/fix_fvp_get_entry

FVP: Correct the PSYSR_WK bit width in platform_get_entrypoint

9 years agoFVP: Correct the PSYSR_WK bit width in platform_get_entrypoint
Soby Mathew [Thu, 30 Apr 2015 11:27:41 +0000 (12:27 +0100)]
FVP: Correct the PSYSR_WK bit width in platform_get_entrypoint

This patch fixes the incorrect bit width used to extract the wakeup
reason from PSYSR in platform_get_entrypoint() function. This defect
did not have any observed regression.

Change-Id: I42652dbffc99f5bf50cc86a5878f28d730720d9a

9 years agoMerge pull request #305 from achingupta/ag/tf-issues#306
Achin Gupta [Tue, 2 Jun 2015 14:17:05 +0000 (15:17 +0100)]
Merge pull request #305 from achingupta/ag/tf-issues#306

Ag/tf issues#306

9 years agoMerge pull request #307 from soby-mathew/sm/css_bit_width_fix
Achin Gupta [Tue, 2 Jun 2015 10:18:18 +0000 (11:18 +0100)]
Merge pull request #307 from soby-mathew/sm/css_bit_width_fix

CSS: Extract primary cpu id using the correct bit width

9 years agoMerge pull request #308 from vwadekar/tegra-soc-support-v4
Achin Gupta [Tue, 2 Jun 2015 10:06:01 +0000 (11:06 +0100)]
Merge pull request #308 from vwadekar/tegra-soc-support-v4

Tegra soc support v4

9 years agoSupport for NVIDIA's Tegra T210 SoCs
Varun Wadekar [Tue, 19 May 2015 11:18:04 +0000 (16:48 +0530)]
Support for NVIDIA's Tegra T210 SoCs

T210 is the latest chip in the Tegra family of SoCs from NVIDIA. It is an
ARM v8 dual-cluster (A57/A53) SoC, with any one of the clusters being active
at a given point in time.

This patch adds support to boot the Trusted Firmware on T210 SoCs. The patch
also adds support to boot secondary CPUs, enter/exit core power states for
all CPUs in the slow/fast clusters. The support to switch between clusters
is still not available in this patch and would be available later.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoDriver for 16550 UART interface
Varun Wadekar [Tue, 19 May 2015 11:14:17 +0000 (16:44 +0530)]
Driver for 16550 UART interface

This patch adds driver for the 16550 UART interface. The driver is exposed
as a console, which platforms can use to dump their boot/crash logs.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoCSS: Extract primary cpu id using the correct bit width
Soby Mathew [Tue, 26 May 2015 15:58:54 +0000 (16:58 +0100)]
CSS: Extract primary cpu id using the correct bit width

This patch fixes the incorrect bit width used to extract the primary
cpu id from `ap_data` exported by scp at SCP_BOOT_CFG_ADDR in
platform_is_primary_cpu().

Change-Id: I14abb361685f31164ecce0755fc1a145903b27aa

9 years agoMerge pull request #303 from danh-arm/dh/fix-fvp-setup-topology
danh-arm [Wed, 20 May 2015 10:32:15 +0000 (11:32 +0100)]
Merge pull request #303 from danh-arm/dh/fix-fvp-setup-topology

Fix return type of FVP plat_arm_topology_setup

9 years agoFix reporting of interrupt ID in ARM GIC driver
Achin Gupta [Mon, 18 May 2015 09:56:47 +0000 (10:56 +0100)]
Fix reporting of interrupt ID in ARM GIC driver

The ARM GIC driver treats the entire contents of the GICC_HPPIR as the interrupt
ID instead of just bits[9:0]. This could result in an SGI being treated as a
Group 1 interrupt on a GICv2 system.

This patch introduces a mask to retrieve only the ID from a read of GICC_HPPIR,
GICC_IAR and similar registers. The value read from these registers is masked
with this constant prior to use as an interrupt ID.

Fixes ARM-software/tf-issues#306

Change-Id: Ie3885157de33b71df9781a41f6ef015a30c4608d

9 years agoFix return type of FVP plat_arm_topology_setup
Dan Handley [Wed, 6 May 2015 13:47:40 +0000 (14:47 +0100)]
Fix return type of FVP plat_arm_topology_setup

Fix the return type of the FVP `plat_arm_topology_setup` function
to be `void` instead of `int` to match the declaration in
`plat_arm.h`.

This does not result in any change in behavior.

Change-Id: I62edfa7652b83bd26cffb7d167153959b38e37e7

9 years agoMerge pull request #301 from soby-mathew/sm/cpu_on_pend_state_fix
achingupta [Mon, 18 May 2015 17:32:38 +0000 (18:32 +0100)]
Merge pull request #301 from soby-mathew/sm/cpu_on_pend_state_fix

PSCI: Set ON_PENDING state early during CPU_ON

9 years agoFix handling of spurious interrupts in BL3_1
Achin Gupta [Wed, 13 May 2015 16:57:18 +0000 (17:57 +0100)]
Fix handling of spurious interrupts in BL3_1

There are couple of issues with how the interrupt routing framework in BL3_1
handles spurious interrupts.

1. In the macro 'handle_interrupt_exception', if a spurious interrupt is
   detected by plat_ic_get_pending_interrupt_type(), then execution jumps to
   'interrupt_exit_\label'. This macro uses the el3_exit() function to return to
   the original exception level. el3_exit() attempts to restore the SPSR_EL3 and
   ELR_EL3 registers with values from the current CPU context. Since these
   registers were not saved in this code path, it programs stale values into
   these registers. This leads to unpredictable behaviour after the execution of
   the ERET instruction.

2. When an interrupt is routed to EL3, it could be de-asserted before the
   GICC_HPPIR is read in plat_ic_get_pending_interrupt_type(). There could be
   another interrupt pending at the same time e.g. a non-secure interrupt. Its
   type will be returned instead of the original interrupt. This would result in
   a call to get_interrupt_type_handler(). The firmware will panic if the
   handler for this type of interrupt has not been registered.

This patch fixes the first problem by saving SPSR_EL3 and ELR_EL3 early in the
'handle_interrupt_exception' macro, instead of only doing so once the validity
of the interrupt has been determined.

The second problem is fixed by returning execution back to the lower exception
level through the 'interrupt_exit_\label' label instead of treating it as an
error condition. The 'interrupt_error_\label' label has been removed since it is
no longer used.

Fixes ARM-software/tf-issues#305

Change-Id: I81c729a206d461084db501bb81b44dff435021e8

9 years agoPSCI: Set ON_PENDING state early during CPU_ON
Soby Mathew [Mon, 11 May 2015 22:15:06 +0000 (23:15 +0100)]
PSCI: Set ON_PENDING state early during CPU_ON

In the debug build of the function get_power_on_target_afflvl(), there is a
check to ensure that the CPU is emerging from a SUSPEND or ON_PENDING state.
The state is checked without acquiring the lock for the CPU node. The state
could be updated to ON_PENDING in psci_afflvl_on() after the target CPU has
been powered up. This results in a race condition which could cause the
check for the ON_PENDING state in get_power_on_target_afflvl() to fail.
This patch resolves this race condition by setting the state of the target
CPU to ON_PENDING before the platform port attempts to power it on. The
target CPU is thus guaranteed to read the correct the state. In case
the power on operation fails, the state of the CPU is restored to OFF.

Fixes ARM-software/tf-issues#302

Change-Id: I3f2306a78c58d47b1a0fb7e33ab04f917a2d5044

9 years agoMerge pull request #297 from sandrine-bailleux/sb/move-up-deps
danh-arm [Wed, 29 Apr 2015 16:09:09 +0000 (17:09 +0100)]
Merge pull request #297 from sandrine-bailleux/sb/move-up-deps

Move up dependency versions

9 years agoMerge pull request #296 from danh-arm/sb/scpi-min-changes
danh-arm [Wed, 29 Apr 2015 16:07:40 +0000 (17:07 +0100)]
Merge pull request #296 from danh-arm/sb/scpi-min-changes

Move to the new ARM SCP Messaging Interfaces v2

9 years agoMerge pull request #295 from danh-arm/dh/plat-port-reorg
danh-arm [Wed, 29 Apr 2015 16:04:51 +0000 (17:04 +0100)]
Merge pull request #295 from danh-arm/dh/plat-port-reorg

ARM platform port reorganization

9 years agoFVP: update device tree idle state entries
Juan Castillo [Thu, 16 Apr 2015 13:17:49 +0000 (14:17 +0100)]
FVP: update device tree idle state entries

Device tree idle state bindings changed in kernel v3.18. This patch
updates the FVP DT files to use PSCI suspend as idle state.

The patch also updates the 'compatible' property in the PSCI node
and the 'entry-method' property in the idle-states node in the FVP
Foundation GICv2-legacy device tree.

Change-Id: Ie921d497c579f425c03d482f9d7b90e166106e2f

9 years agoMove up dependency versions in user guide
Sandrine Bailleux [Thu, 16 Apr 2015 10:05:47 +0000 (11:05 +0100)]
Move up dependency versions in user guide

Move up the version numbers in the user guide of:

 * DS-5 (to v5.21)
 * EDK2 (to v3.0)
 * Linux Kernel (to 1.6-Juno)
 * Linaro file-system (to 15.03)
 * Juno SCP binary (to v1.7.0 within board recovery image 0.11.3).

Change-Id: Ieb09e633acc2b33823ddf35f77f44e7da60b99ba

9 years agoDetect SCP version incompatibility
Sandrine Bailleux [Mon, 13 Apr 2015 10:47:48 +0000 (11:47 +0100)]
Detect SCP version incompatibility

There has been a breaking change in the communication protocols used
between the AP cores and the SCP on CSS based platforms like Juno.
This means both the AP Trusted Firmware and SCP firmware must be
updated at the same time.

In case the user forgets to update the SCP ROM firmware, this patch
detects when it still uses the previous version of the communication
protocol. It will then output a comprehensive error message that helps
trouble-shoot the issue.

Change-Id: I7baf8f05ec0b7d8df25e0ee53df61fe7be0207c2

9 years agoMove to the new ARM SCP Messaging Interfaces
Sandrine Bailleux [Wed, 18 Mar 2015 14:52:53 +0000 (14:52 +0000)]
Move to the new ARM SCP Messaging Interfaces

The communication protocol used between the AP cores and the SCP
in CSS-based platforms like Juno has undergone a number of changes.
This patch makes the required modifications to the SCP Boot Protocol,
SCPI Protocol and MHU driver code in shared CSS platform code so that
the AP cores are still able to communicate with the SCP.

This patch focuses on the mandatory changes to make it work. The
design of this code needs to be improved but this will come in
a subsequent patch.

The main changes are:

 - MHU communication protocol

   - The command ID and payload size are no longer written into the
     MHU registers directly. Instead, they are stored in the payload
     area. The MHU registers are now used only as a doorbell to kick
     off messages. Same goes for any command result, the AP has to
     pick it up from the payload area.

 - SCP Boot Protocol

   - The BL3-0 image is now expected to embed a checksum. This
     checksum must be passed to the SCP, which uses it to check the
     integrity of the image it received.

   - The BL3-0 image used to be transferred a block (4KB)
     at a time. The SCP now supports receiving up to 128KB at a
     time, which is more than the size of the BL3-0 image.
     Therefore, the image is now sent in one go.

   - The command IDs have changed.

 - SCPI Protocol

   - The size of the SCPI payload has been reduced down from 512
     bytes to 256 bytes. This changes the base address of the
     AP-to-SCP payload area.

   - For commands that have a response, the response is the same SCPI
     header that was sent, except for the size and the status, which
     both must be updated appropriately. Success/Failure of a command
     is determined by looking at the updated status code.

   - Some command IDs have changed.

NOTE: THIS PATCH BREAKS COMPATIBILITY WITH FORMER VERSIONS OF THE SCP
FIRMWARE AND THUS REQUIRES AN UPDATE OF THIS BINARY. THE LATEST SCP
BINARY CAN BE OBTAINED FROM THE ARM CONNECTED COMMUNITY WEBSITE.

Change-Id: Ia5f6b95fe32401ee04a3805035748e8ef6718da7

9 years agoDoc updates following platform port reorganization
Dan Handley [Thu, 19 Mar 2015 19:24:43 +0000 (19:24 +0000)]
Doc updates following platform port reorganization

Update the User Guide, Porting Guide and Firmware Design documents
to align them with the recent changes made to the FVP and Juno
platform ports.

Also fix some other historical inaccuracies.

Change-Id: I37aba4805f9044b1a047996d3e396c75f4a09176

9 years agoMove Juno port to plat/arm/board/juno
Dan Handley [Mon, 27 Apr 2015 18:34:53 +0000 (19:34 +0100)]
Move Juno port to plat/arm/board/juno

Move the Juno port from plat/juno to plat/arm/board/juno. Also rename
some of the files so they are consistently prefixed with juno_.
Update the platform makefiles accordingly.

Change-Id: I0af6cb52a5fee7ef209107a1188b76a3c33a2a9f

9 years agoMigrate Juno port to use common code
Dan Handley [Thu, 19 Mar 2015 19:22:44 +0000 (19:22 +0000)]
Migrate Juno port to use common code

Major update to the Juno platform port to use the common platform code
in (include/)plat/arm/* and (include/)plat/common/*. This mainly
consists of removing duplicated code but also introduces some small
behavioural changes where there was unnecessary variation between the
FVP and Juno ports. See earlier commit titled `Add common ARM and CSS
platform code` for details.

Also move the ARM SoC specific security setup (i.e. NIC-400 and PCIe
initialization) from BL1 to `plat_arm_security_setup()` in BL2,
where the other security setup is done.

Change-Id: Ic9fe01bae8ed382bfb04fc5839a4cfff332eb124

9 years agoMove FVP port to plat/arm/board/fvp
Dan Handley [Mon, 27 Apr 2015 18:17:18 +0000 (19:17 +0100)]
Move FVP port to plat/arm/board/fvp

Move the FVP port from plat/fvp to plat/arm/board/fvp. Also rename
some of the files so they are consistently prefixed with fvp_.
Update the platform makefiles accordingly.

Change-Id: I7569affc3127d66405f1548fc81b878a858e61b7

9 years agoMigrate FVP port to use common code
Dan Handley [Thu, 19 Mar 2015 19:17:53 +0000 (19:17 +0000)]
Migrate FVP port to use common code

Major update to the FVP platform port to use the common platform code
in (include/)plat/arm/* and (include/)plat/common/*. This mainly
consists of removing duplicated code but also introduces some small
behavioural changes where there was unnecessary variation between the
FVP and Juno ports. See earlier commit titled `Add common ARM and CSS
platform code` for details.

Also add support for Foundation FVP version 9.1 during FVP config
setup to prevent a warning being emitted in the console.

Change-Id: I254ca854987642ce09d1b924c9fd410a6e13e3bc

9 years agoAdd common ARM and CSS platform code
Dan Handley [Thu, 19 Mar 2015 18:58:55 +0000 (18:58 +0000)]
Add common ARM and CSS platform code

This major change pulls out the common functionality from the
FVP and Juno platform ports into the following categories:

*   (include/)plat/common. Common platform porting functionality that
typically may be used by all platforms.

*   (include/)plat/arm/common. Common platform porting functionality
that may be used by all ARM standard platforms. This includes all
ARM development platforms like FVP and Juno but may also include
non-ARM-owned platforms.

*   (include/)plat/arm/board/common. Common platform porting
functionality for ARM development platforms at the board
(off SoC) level.

*   (include/)plat/arm/css/common. Common platform porting
functionality at the ARM Compute SubSystem (CSS) level. Juno
is an example of a CSS-based platform.

*   (include/)plat/arm/soc/common. Common platform porting
functionality at the ARM SoC level, which is not already defined
at the ARM CSS level.

No guarantees are made about the backward compatibility of
functionality provided in (include/)plat/arm.

Also remove any unnecessary variation between the ARM development
platform ports, including:

*   Unify the way BL2 passes `bl31_params_t` to BL3-1. Use the
Juno implementation, which copies the information from BL2 memory
instead of expecting it to persist in shared memory.

*   Unify the TZC configuration. There is no need to add a region
for SCP in Juno; it's enough to simply not allow any access to
this reserved region. Also set region 0 to provide no access by
default instead of assuming this is the case.

*   Unify the number of memory map regions required for ARM
development platforms, although the actual ranges mapped for each
platform may be different. For the FVP port, this reduces the
mapped peripheral address space.

These latter changes will only be observed when the platform ports
are migrated to use the new common platform code in subsequent
patches.

Change-Id: Id9c269dd3dc6e74533d0e5116fdd826d53946dc8

9 years agoAdd linker symbol declarations to bl_common.h
Dan Handley [Mon, 27 Apr 2015 10:49:22 +0000 (11:49 +0100)]
Add linker symbol declarations to bl_common.h

Add extern declarations of linker symbols to bl_common.h. These are
used by platform ports to determine the memory layout of BL images.
Adding the declarations to this file facilitates removal of these
declarations from the platform porting source files in subsequent
patches.

Also remove the linker symbol declarations from common TSP source
code.

Change-Id: I8ed0426bc815317c4536b588e4e78bc15b4fe91c

9 years agoAllow deeper platform port directory structure
Dan Handley [Fri, 27 Mar 2015 17:44:35 +0000 (17:44 +0000)]
Allow deeper platform port directory structure

Update the top level makefile to allow platform ports to exist in
subdirectories at any level instead of one level under `plat/`. The
makefile recursively searches for all files called `platform.mk` in
all subdirectories of `plat/`. The directory containing
`platform.mk` is the platform name. Platform names must be unique
across the codebase.

Replace usage of HELP_PLATFORMS in the Makefile with PLATFORMS since
these are both used to report the same information back to the user.

Update the TSP and cert_create tool makefiles in a similar way
to support a deeper platform port directory structure.

Also add PLAT_<plat_name> as a define passed through the top level
makefile to the source files, to allow build time variation in common
platform code.

Change-Id: I213420164808c5ddb99a26144e8e3f141a7417b7

9 years agoSeparate out common console functionality
Dan Handley [Wed, 1 Apr 2015 15:51:20 +0000 (16:51 +0100)]
Separate out common console functionality

Separate out the common console functionality in
`drivers/arm/pl011/pl011_console.S` into a new source file
`drivers/console/console.S`. The former includes the latter to
provide backwards compatibility for platform make files.

Also add a skeleton console implementation for platforms that do not
want to use PL011.

Change-Id: I1ff963b2b54a872fbcf1eb0700797b9e9afa2538

9 years agoAdd header guards to asm macro files
Dan Handley [Wed, 1 Apr 2015 16:34:24 +0000 (17:34 +0100)]
Add header guards to asm macro files

Some assembly files containing macros are included like header files
into other assembly files. This will cause assembler errors if they
are included multiple times.

Add header guards to assembly macro files to avoid assembler errors.

Change-Id: Ia632e767ed7df7bf507b294982b8d730a6f8fe69

9 years agoRemove use of PLATFORM_CACHE_LINE_SIZE
Dan Handley [Mon, 30 Mar 2015 16:15:16 +0000 (17:15 +0100)]
Remove use of PLATFORM_CACHE_LINE_SIZE

The required platform constant PLATFORM_CACHE_LINE_SIZE is
unnecessary since CACHE_WRITEBACK_GRANULE effectively provides the
same information. CACHE_WRITEBACK_GRANULE is preferred since this
is an architecturally defined term and allows comparison with the
corresponding hardware register value.

Replace all usage of PLATFORM_CACHE_LINE_SIZE with
CACHE_WRITEBACK_GRANULE.

Also, add a runtime assert in BL1 to check that the provided
CACHE_WRITEBACK_GRANULE matches the value provided in CTR_EL0.

Change-Id: If87286be78068424217b9f3689be358356500dcd

9 years agoFix type mismatches in verbose logging
Dan Handley [Mon, 23 Mar 2015 18:13:33 +0000 (18:13 +0000)]
Fix type mismatches in verbose logging

Commit dad2504 adds support for type checking in printf-like
functions. Some of the VERBOSE logging statements were not updated
at that time.

Fix the type mismatches in the verbose logging statements.

Change-Id: Idd9a49e41cc0dc31f7698e220819d934e3d2d10e

9 years agoAdd TZC function to configure region 0
Dan Handley [Thu, 19 Mar 2015 19:26:52 +0000 (19:26 +0000)]
Add TZC function to configure region 0

Region 0 is special in TZC-400. It is possible to set the access
permissions for this but not the address range or filters to which
the permissions apply. Add a function for setting the region 0
access permissions.

Also add some VERBOSE logging and allow assembly files to include
the TZC header.

Change-Id: I4389261ba10a6e5e2e43ee93d55318dc507b6648

9 years agoMerge pull request #290 from soby-mathew/sm/AEM_crash_report_fix
danh-arm [Fri, 17 Apr 2015 14:42:46 +0000 (15:42 +0100)]
Merge pull request #290 from soby-mathew/sm/AEM_crash_report_fix

Fix recursive crash prints on FVP AEM model

9 years agoMerge pull request #289 from danh-arm/vw/tlkd-args-via-cpu-regs-v4
danh-arm [Mon, 13 Apr 2015 16:33:20 +0000 (17:33 +0100)]
Merge pull request #289 from danh-arm/vw/tlkd-args-via-cpu-regs-v4

Pass arguments/results between EL3/S-EL1 via CPU registers (x0-x7) v4

9 years agoMerge pull request #288 from danh-arm/sb/remove-arch-makefile
danh-arm [Mon, 13 Apr 2015 16:32:24 +0000 (17:32 +0100)]
Merge pull request #288 from danh-arm/sb/remove-arch-makefile

Remove the ARCH build configuration from the Makefile v2

9 years agoMerge pull request #287 from danh-arm/sb/bl2-loading-errors
danh-arm [Mon, 13 Apr 2015 16:31:05 +0000 (17:31 +0100)]
Merge pull request #287 from danh-arm/sb/bl2-loading-errors

Panic if platform specific BL3-0 handling fails v2

9 years agoFix recursive crash prints on FVP AEM model
Soby Mathew [Mon, 13 Apr 2015 15:57:12 +0000 (16:57 +0100)]
Fix recursive crash prints on FVP AEM model

This patch fixes an issue in the cpu specific register reporting
of FVP AEM model whereby crash reporting itself triggers an exception
thus resulting in recursive crash prints. The input to the
'size_controlled_print' in the crash reporting framework should
be a NULL terminated string. As there were no cpu specific register
to be reported on FVP AEM model, the issue was caused by passing 0
instead of NULL terminated string to the above mentioned function.

Change-Id: I664427b22b89977b389175dfde84c815f02c705a

9 years agoPass arguments/results between EL3/S-EL1 via CPU registers (x0-x7)
Varun Wadekar [Thu, 2 Apr 2015 09:27:47 +0000 (14:57 +0530)]
Pass arguments/results between EL3/S-EL1 via CPU registers (x0-x7)

This patch removes the need for a shared buffer between the EL3 and S-EL1
levels. We now use the CPU registers, x0-x7, while passing data between
the two levels. Since TLK is a 32-bit Trusted OS, tlkd has to unpack the
arguments in the x0-x7 registers. TLK in turn gets these values via r0-r7.

Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
9 years agoRemove the ARCH build configuration from the Makefile
Sandrine Bailleux [Wed, 18 Feb 2015 17:28:07 +0000 (17:28 +0000)]
Remove the ARCH build configuration from the Makefile

The ARCH variable, which defaults to 'aarch64', gives the wrong
impression that the Trusted Firmware can be built for other
architectures. This patch removes it. This doesn't have any
consequence on the rest of the build system because the variable
was unused.

Change-Id: I97130f11f7733a3cbdfc89989587f2ebecaf3294

9 years agoPanic if platform specific BL3-0 handling fails
Sandrine Bailleux [Thu, 26 Mar 2015 11:07:09 +0000 (11:07 +0000)]
Panic if platform specific BL3-0 handling fails

The return value of bl2_plat_handle_bl30() used to be ignored.
This patch modifies the function load_bl30() so that it now
checks this return value and returns it to bl2_main().

This patch also unifies the error handling code across the
load_blx() functions so that they return a status code in all
cases and bl2_main() has the sole responsibility of panicking
if appropriate.

Change-Id: I2b26cdf65afa443b48c7da1fa7da8db956071bfb

9 years agoMerge pull request #284 from kpet/kp/tf-issues-295
danh-arm [Thu, 9 Apr 2015 10:37:01 +0000 (11:37 +0100)]
Merge pull request #284 from kpet/kp/tf-issues-295

Add support to indicate size and end of assembly functions

9 years agoAdd support to indicate size and end of assembly functions
Kévin Petit [Tue, 24 Mar 2015 14:03:57 +0000 (14:03 +0000)]
Add support to indicate size and end of assembly functions

In order for the symbol table in the ELF file to contain the size of
functions written in assembly, it is necessary to report it to the
assembler using the .size directive.

To fulfil the above requirements, this patch introduces an 'endfunc'
macro which contains the .endfunc and .size directives. It also adds
a .func directive to the 'func' assembler macro.

The .func/.endfunc have been used so the assembler can fail if
endfunc is omitted.

Fixes ARM-Software/tf-issues#295

Change-Id: If8cb331b03d7f38fe7e3694d4de26f1075b278fc
Signed-off-by: Kévin Petit <kevin.petit@arm.com>
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