Commit Graph

137 Commits

Author SHA1 Message Date
Jon Medhurst 7441ac3a24 juno: Implement PM ops to power on CPUs
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst dbf5789ea6 juno: Implement SCPI Set CSS Power State command
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 0aadcc0f19 juno: Add bootloader for SCP image
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 2e45bfd034 juno: Add SCPI interface and implement the SCP Ready command
The SCP Ready command is sent by the SCP to indicate that the BL3-0 RAM
Firmware image is successfully up and running.

Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 4d65df50de juno: Add MHU interface
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 12026727a2 juno: Initialise PCIe
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 06f1af9111 juno: Initialise TZC-400
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 0be17c44ca juno: Initialise NIC-400
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 29dfa23b0f juno: Initialise GIC
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 39fa81bc37 juno: Port plat_topology.c
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 1100a4f140 juno: Update GIC addresses
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst f5a885ff15 juno: Port mailbox initialisation
Note, on Juno mailboxes are 16 bytes because any bigger and they would
overlap the memory used for MHU payload data for SCP->AP transfers.

Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst c478ff5d1e juno: Port CCI
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst 4c47d98a44 juno: Override platform_get_core_pos and platform_is_primary_cpu
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Jon Medhurst c30556a13b juno: Update memory map and use generic MMU code
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 16:03:32 +00:00
Sandrine Bailleux 8f23fbc643 juno: Various tidyups 2014-03-12 16:03:26 +00:00
Sandrine Bailleux b34ce28272 juno: Improve compliance to Linux coding style 2014-03-12 16:02:19 +00:00
Sandrine Bailleux a40fc37c37 juno: Use the correct firmware image names in comments and messages 2014-03-12 16:01:40 +00:00
Jon Medhurst 241a8bb461 juno: Use static declaration of bl31_args
Juno doesn't have TZDRAM as FVP does, and there is real reason why we
need a special memory region for bl31_args anyway, assuming we take care
to copy it in BL31 before BL2's memory is reused.

Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 14:04:53 +00:00
Jon Medhurst 305680329c juno: Initialise architected timer in BL3-1 2014-03-12 14:04:53 +00:00
Jon Medhurst b86295169e juno: Create as a trimmed copy of plat/fvp
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-12 14:04:40 +00:00
Jeenu Viswambharan 1c297bf015 Move architecture timer setup to platform-specific code
At present, bl1_arch_setup() and bl31_arch_setup() program the counter
frequency using a value from the memory mapped generic timer. The
generic timer however is not necessarily present on all ARM systems
(although it is architected to be present on all server systems).

This patch moves the timer setup to platform-specific code and updates
the relevant documentation. Also, CNTR.FCREQ is set as the specification
requires the bit corresponding to the counter's frequency to be set when
enabling. Since we intend to use the base frequency, set bit 8.

Fixes ARM-software/tf-issues#24

Change-Id: I32c52cf882253e01f49056f47c58c23e6f422652
2014-03-10 14:17:59 +00:00
Jeenu Viswambharan 92a12866e6 Remove unused 'CPU present' flag
This patch removes the 'CPU present' flag that's being set but not
referred or used anywhere else.

Change-Id: Iaf82bdb354134e0b33af16c7ba88eb2259b2682a
2014-03-10 14:17:58 +00:00
Dan Handley 5cfa93d8d6 Remove change log instructions from contribution.md
Remove the instructions to update the change log from
contribution.md. The change log no longer contains a
"Detailed changes since last release" section.

Also, update the documentation links following recent
documentation changes.

Change-Id: Id9df43d666f7f9a60dcc6f663a8a85cdd2ff7cc4
2014-03-05 16:21:14 +00:00
Ryan Harkin ee9ad7856c bl_common: add image_size()
Fixes ARM-software/tf-issues#42

Some callers of load_image() may need to get the size of the image
before/after loading it.

Change-Id: I8dc067b69fc711433651a560ba5a8c3519445857
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
2014-03-05 16:21:14 +00:00
Ryan Harkin 48e2ca7967 fvp: plat_io_storage: remove duplicated code
Fixes ARM-software/tf-issues#41

The policy functions for each file to be loaded were implemented by
copy/pasting one method and then varying the data checked.

This patch creates a generic function to check the policy based on the
data stored in a table.

This removes the amount of duplicated code but also makes the code
simpler and more efficient.

Change-Id: I1c52eacf6f18a1442dabbb33edd03d4bb8bbeae0
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst 4bfc2d21a1 Enable platforms to omit some bootloaders
If a platform doesn't specify a BLx_SOURCE variable, then building
of the corresponding bootloader isn't attempted. Also allow BL3-3 to
be omitted from the FIP.

Note, this change also removes support for PLAT=all and the 'fip' target
from the 'all' recipe.

Fixes ARM-software/tf-issues#30

Change-Id: Ibdfead0440256eaf364617ecff65290ca6fe6240
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst fb05246201 Generate build time and date message at link time.
So it updates each time a bootloader changes, not just when bl*_main.c
files are recompiled.

Fixes ARM-software/tf-issues#33

Change-Id: Ie8e1a7bd7e1913d2e96ac268606284f76af8c5ab
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst 38aa76a87f fvp: Make use of the generic MMU translation table setup code
Change-Id: I559c5a4d86cad55ce3f6ad71285b538d3cfd76dc
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst c481c26987 Add generic functions for setting up aarch64 MMU translation tables
Change-Id: I5b8d040ebc6672e40e4f13925e2fd5bc124103f4
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst 6d55d109a3 Update Makefiles to get proper dependency checking working.
This change requires all platforms to now specify a list of source files
rather than object files.

New source files should preferably be specified by using the path as
well and we should add this in the future for all files so we can remove
use of vpath. This is desirable because vpath hides issues like the fact
that BL2 currently pulls in a BL1 file bl1/aarch64/early_exceptions.S
and if in the future we added bl2/aarch64/early_exceptions.S then it's
likely only one of the two version would be used for both bootloaders.

This change also removes the 'dump' build target and simply gets
bootloaders to always generate a dump file. At the same time the -x
option is added so the section headers and symbols table are listed.

Fixes ARM-software/tf-issues#11

Change-Id: Ie38f7be76fed95756c8576cf3f3ea3b7015a18dc
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst cf6eeb8a60 Fix implementation and users of gicd_set_ipriorityr()
Make gicd_set_ipriorityr() actually write to the priority register.

Also correct callers of this function which want the highest priority
to use the value zero as this is the highest priority value according
to the ARM Generic Interrupt Controller Architecture Specification.

To make this easier to get right, we introduce defines for the lowest
and highest priorities for secure and non-secure interrupts.

Fixes ARM-software/tf-issues#21

Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Jon Medhurst a4d9f26b00 Fix assert in bakery_lock_release()
bakery_lock_release() expects an mpidr as the first argument however
bakery_lock_release() is calling it with the 'entry' argument it has
calculated. Rather than fixing this to pass the mpidr value it would be
much more efficient to just replace the call with

   assert(bakery->owner == entry)

As this leaves no remaining users of bakery_lock_held(), we might as
well delete it.

Fixes ARM-software/tf-issues#27

Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-05 16:21:14 +00:00
Dan Handley b238849030 Add v0.3 release documentation
Update the readme.md and change-log.md with release information.

Also, remove the "Detailed changes since last release" section of
the change-log.md since the same information can be found in the
GIT commit messages. Fixes ARM-software/tf-issues#22.

Change-Id: I968cc8aaf588aa5c34ba8f1c12a5b797a46e04f5
2014-02-28 18:23:42 +00:00
Dan Handley 57de6d7274 Consolidate design and porting documentation
Consolidate firmware-design.md and porting-guide.pm so
that recently added sections fit better with
pre-existing sections. Make the documentation more
consistent in use of terminology.

Change-Id: Id87050b096122fbd845189dc2fe1cd17c3003468
2014-02-28 17:51:07 +00:00
Dan Handley 5e1e920075 Add EL3 runtime services and SPD documentation
1. Add design information on EL3 runtime services and
Secure-EL1 Payload Dispatchers (SPD) to
firmware-design.md.

2. Create new EL3 runtime service writer's guide
(rt-svc-writers-guide.md) to ease creation of new
runtime services.

Change-Id: I670aeb5fc246e25c6e599a15139aac886a0074fd
2014-02-28 17:51:07 +00:00
Dan Handley 247f60bcbc Separate firmware design out of user-guide.md
Move the firmware design documentation out of user-guide.md
and into a new file - firmware-design.md. Reformat the
section headers.

Change-Id: I664815dd47011c7c1cf2202aa4472a8fd78ebb92
2014-02-28 17:51:07 +00:00
Dan Handley 3505c044a2 Update versions of dependencies in user-guide.md
1. Update user-guide.md with the latest versions of dependent
components required by the tested configurations of ARM Trusted
Firmware. This includes the tested versions of Fixed Virtual
Platforms (FVPs), toolchain, EFI Development Kit 2(EDK2),
Linux kernel and Linux file system.

2. Remove the instructions to configure the Cortex Base FVP
with the legacy GICv2 memory map as this is no longer supported
since version 5.3 of the Base FVPs.

3. General tidyup of "Using the software" section.

Change-Id: If8264cd29036b59dc5ff435b5f8b1d072dd36ef0
2014-02-28 17:51:07 +00:00
Jeenu Viswambharan e3fff15380 Remove duplicate xlat_table descriptions
The BL31 and BL2 linker scripts ended up having duplicate descriptions
for xlat_tables section. This patch removes those duplicate
descriptions.

Change-Id: Ibbdda0902c57fca5ea4e91e0baefa6df8f0a9bb1
2014-02-26 19:53:48 +00:00
Sandrine Bailleux 20d284c08d fvp: Initialise UART earlier
The UART used to be initialised in bl1_platform_setup(). This is too
late because there are some calls to the assert() macro, which needs
to print some messages on the console, before that.

This patch moves the UART initialisation code to
bl1_early_platform_setup().

Fixes ARM-software/tf-issues#49

Change-Id: I98c83a803866372806d2a9c2e1ed80f2ef5b3bcc
2014-02-26 19:53:48 +00:00
Jeenu Viswambharan 090630e4bc Tolerate runtime service initialization failure
At present, the firmware panics if a runtime service fails to
initialize. An earlier patch had implemented late binding for all
runtime service handlers.

With that in place, this patch allows the firmware to proceed even when
a service fails to initialize.

Change-Id: I6cf4de2cecea9719f4cd48272a77cf459b080d4e
2014-02-26 19:53:48 +00:00
Jeenu Viswambharan 7f36660559 Implement late binding for runtime hooks
At present SPD power management hooks and BL3-2 entry are implemented
using weak references. This would have the handlers bound and registered
with the core framework at build time, but leaves them dangling if a
service fails to initialize at runtime.

This patch replaces implementation by requiring runtime handlers to
register power management and deferred initialization hooks with the
core framework at runtime. The runtime services are to register the
hooks only as the last step, after having all states successfully
initialized.

Change-Id: Ibe788a2a381ef39aec1d4af5ba02376e67269782
2014-02-26 19:53:48 +00:00
Dan Handley 9128ffe941 Update contributing.md to new CLA location
This commit updates contributing.md to point to the ARM website
for downloading copies of the Contribution License Agreement (CLA).
It is no longer necessary to email ARM for these.

Change-Id: Iaf58680631a626f26827577709ac5471e3b84566
2014-02-26 19:53:47 +00:00
Harry Liebel d19e4979bf Reduce GICv3 debug output
Change-Id: Ia8502f8d0566025d8bad150029f49cb63815261d
2014-02-26 19:53:47 +00:00
Jeenu Viswambharan 8aa559c071 Revert accidental removal of BL2 from help message
Commit 375f538a7 in Github accidentally removed the BL2 targets from the
Makefile help message. This patch reverts that change.

Change-Id: I825a9abe5b4ba0f15d02879dda1056912e2ad60c
2014-02-26 19:53:47 +00:00
Jeenu Viswambharan d59a6c6dbd Update .gitignore
This patch updates .gitignore file to ignore potential build products,
tool object files and binaries

Also fixes issue ARM-software/tf-issues#35

Change-Id: I053dfba4ec8fecbcca081cad5b4bf94f8abfb15c
2014-02-20 19:06:34 +00:00
Ryan Harkin cd52932098 Fix semihosting with latest toolchain
Fixes issues #10:

https://github.com/ARM-software/tf-issues/issues/10

This patch changes all/most variables of type int to be size_t or long
to fix the sizing and alignment problems found when building with the
newer toolchains such as Linaro GCC 13.12 or later.

Change-Id: Idc9d48eb2ff9b8c5bbd5b227e6907263d1ea188b
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
2014-02-20 19:06:34 +00:00
Jeenu Viswambharan 2f2cef4657 Cleanup FIP build targets and messages
At present the fip.bin depends on phony targets for BL images, resulting
in unconditional remake of fip.bin. Also the build messages doesn't
match with the rest of build system.

This patch modifies the fip.bin dependencies to the actual BL binary
images so that fip.bin is remade only when the component images are
rebuilt/modified. The build messages and FIP Makefile are modified to
match the style of rest of the build system.

Change-Id: I8dd08666ff766d106820a5b4b037c2161bcf140f
2014-02-20 19:06:34 +00:00
Jeenu Viswambharan 08c28d5385 Report recoverable errors as warnings
At present many recoverable failures are reported as errors. This patch
modifies all such failures to be reported as warnings instead.

Change-Id: I5141653c82498defcada9b90fdf7498ba496b2f2
2014-02-20 19:06:34 +00:00
Achin Gupta 916a2c1ec1 Rework arithmetic operations in Test Secure Payload
This patch reworks the service provided by the TSP to perform common
arithmetic operations on a set of arguments provided by the non-secure
world. For a addition, division, subtraction & multiplication operation
requested on two arguments in x0 and x1 the steps are:

1. TSPD saves the non-secure context and passes the operation and its
   arguments to the TSP.

2. TSP asks the TSPD to return the same arguments once again. This
   exercises an additional SMC path.

3. TSP now has two copies of both x0 and x1. It performs the operation
   on the corresponding copies i.e. in case of addition it returns x0+x0
   and x1+x1.

4. TSPD receives the result, saves the secure context, restores the
   non-secure context and passes the result back to the non-secure
   client.

Change-Id: I6eebfa2ae0a6f28b1d2e11a31f575c7a4b96724b
Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
2014-02-20 19:06:34 +00:00