project/bcm63xx/atf.git
6 years agomaintainers.rst: separate maintainership of uniphier and synquacer
Masahiro Yamada [Fri, 22 Jun 2018 16:09:51 +0000 (01:09 +0900)]
maintainers.rst: separate maintainership of uniphier and synquacer

Socionext has multiple product lines.  The UniPhier is not the only
platform any more.  Correct the maintainership.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
6 years agoMerge pull request #1443 from jeenu-arm/sdei-fixes
Dimitris Papastamos [Fri, 22 Jun 2018 11:42:17 +0000 (12:42 +0100)]
Merge pull request #1443 from jeenu-arm/sdei-fixes

SDEI client EL determination fix

6 years agoSDEI: Fix name of internal function
Jeenu Viswambharan [Fri, 22 Jun 2018 11:03:44 +0000 (12:03 +0100)]
SDEI: Fix name of internal function

The function end_sdei_explicit_dispatch() was intended to be
end_sdei_synchronous_dispatch() which does the opposite of
begin_sdei_synchronous_dispatch(). This patch fixes that.

No functional changes.

Change-Id: I141bd91eb342ecf4ddfd05b49513eee4549e7a56
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoSDEI: Fix determining client EL
Jeenu Viswambharan [Fri, 22 Jun 2018 11:00:20 +0000 (12:00 +0100)]
SDEI: Fix determining client EL

commit 2ccfcb2ea555eb86122e7780010cc50fcee08f54 ("SDEI: Determine client
EL from NS context's SCR_EL3") intended to read from SCR_EL3, but
wrongly read from SPSR_EL3 instead. This patch fixes that.

Change-Id: I8ffea39cc98ef59cb8e7a4c6ef4cb12011c58536
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoMerge pull request #1442 from jeenu-arm/sdei-dispatch-fix
Dimitris Papastamos [Fri, 22 Jun 2018 10:38:12 +0000 (11:38 +0100)]
Merge pull request #1442 from jeenu-arm/sdei-dispatch-fix

SDEI: Fix dispatch bug

6 years agoSDEI: Fix dispatch bug
Jeenu Viswambharan [Fri, 22 Jun 2018 10:21:35 +0000 (11:21 +0100)]
SDEI: Fix dispatch bug

The Commit cdb6ac94ecb3c4caa784cd4d7580cf6252146196 introduced a bug
because of which the SDEI dispatcher wrongly panic when an SDEI event
dispatched earlier as a result of interrupt. This patch fixes the check
for a bound interrupt.

Change-Id: If55c8f0422ff781731248bbbc9c1b59fa0d3c4b0
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoMerge pull request #1437 from jeenu-arm/ras-remaining
Dimitris Papastamos [Fri, 22 Jun 2018 08:36:59 +0000 (09:36 +0100)]
Merge pull request #1437 from jeenu-arm/ras-remaining

SDEI dispatch changes to enable RAS use cases

6 years agoMerge pull request #1440 from antonio-nino-diaz-arm/an/xlat-enums
Dimitris Papastamos [Fri, 22 Jun 2018 08:36:45 +0000 (09:36 +0100)]
Merge pull request #1440 from antonio-nino-diaz-arm/an/xlat-enums

xlat: Remove mmap_attr_t enum type

6 years agoMerge pull request #1427 from b49020/integration
Dimitris Papastamos [Fri, 22 Jun 2018 08:36:15 +0000 (09:36 +0100)]
Merge pull request #1427 from b49020/integration

Add support for Socionext Synquacer SC2A11 SoC based Developerbox platform.

6 years agoxlat: Remove mmap_attr_t enum type
Antonio Nino Diaz [Thu, 21 Jun 2018 13:39:16 +0000 (14:39 +0100)]
xlat: Remove mmap_attr_t enum type

The values defined in this type are used in logical operations, which
goes against MISRA Rule 10.1: "Operands shall not be of an inappropriate
essential type".

Now, `unsigned int` is used instead. This also allows us to move the
dynamic mapping bit from 30 to 31. It was an undefined behaviour in the
past because an enum is signed by default, and bit 31 corresponds to the
sign bit. It is undefined behaviour to modify the sign bit. Now, bit 31
is free to use as it was originally meant to be.

mmap_attr_t is now defined as an `unsigned int` for backwards
compatibility.

Change-Id: I6b31218c14b9c7fdabebe432de7fae6e90a97f34
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agoMerge pull request #1436 from antonio-nino-diaz-arm/an/spm-sync
Dimitris Papastamos [Thu, 21 Jun 2018 15:34:42 +0000 (16:34 +0100)]
Merge pull request #1436 from antonio-nino-diaz-arm/an/spm-sync

SPM: Allow entering the SP without needing a SMC

6 years agoArm platforms: Remove common RAS configuration source
Jeenu Viswambharan [Fri, 8 Jun 2018 07:44:36 +0000 (08:44 +0100)]
Arm platforms: Remove common RAS configuration source

The file arm_ras.c intended to provide common platform-specific RAS
configuration for Arm platforms. Because this file has symbol
definitions, it's proving difficult to provide a common definition.

This patch therefore renames and makes the file specific to FVP. Other
platforms shall provide their own configuration in similar fashion.

Change-Id: I766fd238946e3e49cdb659680e1b45f41b237901
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoSDEI: Make dispatches synchronous
Jeenu Viswambharan [Fri, 16 Feb 2018 12:07:48 +0000 (12:07 +0000)]
SDEI: Make dispatches synchronous

SDEI event dispatches currently only sets up the Non-secure context
before returning to the caller. The actual dispatch only happens upon
exiting EL3 next time.

However, for various error handling scenarios, it's beneficial to have
the dispatch happen synchronously. I.e. when receiving SDEI interrupt,
or for a successful sdei_dispatch_event() call, the event handler is
executed; and upon the event completion, dispatcher execution resumes
after the point of dispatch. The jump primitives introduced in the
earlier patch facilitates this feature.

With this patch:

  - SDEI interrupts and calls to sdei_dispatch_event prepares the NS
    context for event dispatch, then sets a jump point, and immediately
    exits EL3. This results in the client handler executing in
    Non-secure.

  - When the SDEI client completes the dispatched event, the SDEI
    dispatcher does a longjmp to the jump pointer created earlier. For
    the caller of the sdei_dispatch_event() in particular, this would
    appear as if call returned successfully.

The dynamic workaround for CVE_2018_3639 is slightly shifted around as
part of related minor refactoring. It doesn't affect the workaround
functionality.

Documentation updated.

NOTE: This breaks the semantics of the explicit dispatch API, and any
exiting usages should be carefully reviewed.

Change-Id: Ib9c876d27ea2af7fb22de49832e55a0da83da3f9
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoBL31: Introduce jump primitives
Jeenu Viswambharan [Fri, 16 Feb 2018 11:54:24 +0000 (11:54 +0000)]
BL31: Introduce jump primitives

This patch introduces setjmp() and ongjmp() primitives to enable
standard setjmp/longjmp style execution. Both APIs parameters take a
pointer to struct jmpbuf type, which hosts CPU registers saved/restored
during jump.

As per the standard usage:

  - setjmp() return 0 when a jump is setup; and a non-zero value when
    returning from jump.

  - The caller of setjmp() must not return, or otherwise update stack
    pointer since.

Change-Id: I4af1d32e490cfa547979631b762b4cba188d0551
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoSDEI: Determine client EL from NS context's SCR_EL3
Jeenu Viswambharan [Thu, 21 Jun 2018 07:47:42 +0000 (08:47 +0100)]
SDEI: Determine client EL from NS context's SCR_EL3

Currently, the dispatcher reads from SCR_EL3 register directly to
determine the EL of SDEI client. This is with the assumption that
SCR_EL3 is not modified throughout. However, with RAS work flows, it's
possible that SCR_EL3 register contains values corresponding to Secure
world, and therefore EL determination can go wrong. To mitigate this,
always read the register from the saved Non-secure context.

Change-Id: Ic85e4021deb18eb58757f676f9a001174998543a
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoSDEI: Allow platforms to define explicit events
Jeenu Viswambharan [Wed, 17 Jan 2018 12:30:11 +0000 (12:30 +0000)]
SDEI: Allow platforms to define explicit events

The current macros only allow to define dynamic and statically-bound
SDEI events. However, there ought be a mechanism to define SDEI events
that are explicitly dispatched; i.e., events that are dispatched as a
result of a previous secure interrupt or other exception

This patch introduces SDEI_EXPLICIT_EVENT() macro to define an explicit
event. They must be placed under private mappings. Only the priority
flags are allowed to be additionally specified.

Documentation updated.

Change-Id: I2e12f5571381195d6234c9dfbd5904608ad41db3
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoMerge pull request #1439 from dp-arm/dp/bl2_size
Dimitris Papastamos [Thu, 21 Jun 2018 15:03:05 +0000 (16:03 +0100)]
Merge pull request #1439 from dp-arm/dp/bl2_size

fvp: Increase BL2 size for TBBR builds

6 years agofvp: Increase BL2 size for TBBR builds
Dimitris Papastamos [Thu, 21 Jun 2018 14:49:08 +0000 (15:49 +0100)]
fvp: Increase BL2 size for TBBR builds

Change-Id: I67e64bb79cc984ea3263f069e22738a42321c46d
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
6 years agoMerge pull request #1428 from jeenu-arm/mbedtls
Dimitris Papastamos [Thu, 21 Jun 2018 13:35:54 +0000 (14:35 +0100)]
Merge pull request #1428 from jeenu-arm/mbedtls

Move to mbedtls-2.10.0 tag

6 years agoMerge pull request #1434 from soby-mathew/sm/fix_cntfrq
Dimitris Papastamos [Thu, 21 Jun 2018 12:42:45 +0000 (13:42 +0100)]
Merge pull request #1434 from soby-mathew/sm/fix_cntfrq

ARM Platforms: Update CNTFRQ register in CNTCTLBase frame

6 years agoMerge pull request #1435 from antonio-nino-diaz-arm/an/xlat-fix
Dimitris Papastamos [Thu, 21 Jun 2018 12:35:48 +0000 (13:35 +0100)]
Merge pull request #1435 from antonio-nino-diaz-arm/an/xlat-fix

xlat_v2: Fix descriptor debug print

6 years agoMerge pull request #1433 from sivadur/integration
Dimitris Papastamos [Thu, 21 Jun 2018 11:55:27 +0000 (12:55 +0100)]
Merge pull request #1433 from sivadur/integration

xilinx: fix zynqmp build when tsp is enabled

6 years agoxlat_v2: Fix descriptor debug print
Antonio Nino Diaz [Thu, 21 Jun 2018 09:52:44 +0000 (10:52 +0100)]
xlat_v2: Fix descriptor debug print

The XN, PXN and UXN bits are part of the upper attributes, not the
lower attributes.

Change-Id: Ia5e83f06f2a8de88b551f55f1d36d694918ccbc0
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agosynquacer: Add platform makefile and documentation
Sumit Garg [Thu, 21 Jun 2018 05:58:18 +0000 (11:28 +0530)]
synquacer: Add platform makefile and documentation

Add Makefile and plaform definations file.
My thanks to Daniel Thompson and Ard Biesheuvel for the bits and pieces
I've taken from their earlier work regarding build and deploy steps for
Developerbox based on Synquacer SoCs. They deserve much of the credit
for this work although, since I assembled and tested things, any blame
is probably mine.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Daniel Thompson <daniel.thompson@linaro.org>
Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
6 years agosynquacer: Enable PSCI framework
Sumit Garg [Fri, 15 Jun 2018 09:59:02 +0000 (15:29 +0530)]
synquacer: Enable PSCI framework

PSCI framework uses SCPI driver to communicate to SCP firmware for
various power management operations. Following PSCI operations are
supported:
- CPU ON
- CPU OFF
- CPU STANDBY
- SYSTEM RESET
- SYSTEM OFF

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Retrieve DRAM info from SCP firmware
Ard Biesheuvel [Fri, 15 Jun 2018 09:55:42 +0000 (15:25 +0530)]
synquacer: Retrieve DRAM info from SCP firmware

Retrieve DRAM info from SCP firmware using SCPI driver. Board supports
multiple DRAM slots so its required to fetch DRAM info from SCP firmware
and pass this info to UEFI via non-secure SRAM.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Add SCPI driver
Sumit Garg [Fri, 15 Jun 2018 09:50:53 +0000 (15:20 +0530)]
synquacer: Add SCPI driver

Add System Control and Power Interface (SCPI) driver which provides APIs
for PSCI framework to work. SCPI driver uses MHU driver APIs to communicate
with SCP firmware for various system control and power operations.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Add MHU driver
Sumit Garg [Fri, 15 Jun 2018 09:47:10 +0000 (15:17 +0530)]
synquacer: Add MHU driver

Add Message Handling Unit (MHU) driver used to communicate among
Application Processors (AP) and System Control Processor (SCP).

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Enable MMU using xlat_tables_v2 library
Sumit Garg [Fri, 15 Jun 2018 09:40:16 +0000 (15:10 +0530)]
synquacer: Enable MMU using xlat_tables_v2 library

BL31 runs from SRAM which is a non-coherent memory on synquacer. So
enable MMU with SRAM memory marked as Non-Cacheable and mark page tables
kept on SRAM as Non-Cacheable via XLAT_TABLE_NC flag. Also add page tables
for Device address space.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Enable System level Generic timer
Sumit Garg [Fri, 15 Jun 2018 09:32:31 +0000 (15:02 +0530)]
synquacer: Enable System level Generic timer

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Enable GICv3 support
Sumit Garg [Fri, 15 Jun 2018 09:28:25 +0000 (14:58 +0530)]
synquacer: Enable GICv3 support

synquacer uses GICv3 compliant GIC500. So enable proper GICv3 driver
initialization.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Enable CCN driver support
Sumit Garg [Fri, 15 Jun 2018 09:20:19 +0000 (14:50 +0530)]
synquacer: Enable CCN driver support

synquacer has CCN-512 interconnect. So enable proper CCN driver
initialization.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Implement topology functions
Sumit Garg [Fri, 15 Jun 2018 09:13:35 +0000 (14:43 +0530)]
synquacer: Implement topology functions

These functions describe the layout of the cores and clusters in order
to support the PSCI framework.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Populate BL32 and BL33 entrypoints
Sumit Garg [Fri, 15 Jun 2018 09:08:50 +0000 (14:38 +0530)]
synquacer: Populate BL32 and BL33 entrypoints

As this platform supports direct entry to BL31 and no BL2, so
populate BL32 and BL33 entrypoints with static memory load info.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Enable PL011 UART Console
Sumit Garg [Fri, 15 Jun 2018 09:04:42 +0000 (14:34 +0530)]
synquacer: Enable PL011 UART Console

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Add platform core management helpers
Sumit Garg [Fri, 15 Jun 2018 08:18:11 +0000 (13:48 +0530)]
synquacer: Add platform core management helpers

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agosynquacer: Introduce basic platform support
Sumit Garg [Fri, 15 Jun 2018 08:11:59 +0000 (13:41 +0530)]
synquacer: Introduce basic platform support

synquacer supports direct entry to BL31 without BL1 and BL2 as
SCP firmware does similar work. So this patch adds BL31 stub APIs.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
6 years agoplat: xilinx: zynqmp: Get chipid from registers for BL32
Siva Durga Prasad Paladugu [Wed, 20 Jun 2018 11:33:57 +0000 (17:03 +0530)]
plat: xilinx: zynqmp: Get chipid from registers for BL32

This patch reads the chipid registers directly instead of making
pm call when running at BL32. User should ensure that these registers
should always be accessed from APU in their system configuration.

Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
6 years agoplat: xilinx: zynqmp: Build for DDR if SPD is enabled
Siva Durga Prasad Paladugu [Wed, 20 Jun 2018 11:31:13 +0000 (17:01 +0530)]
plat: xilinx: zynqmp: Build for DDR if SPD is enabled

This patch builds ATF to DDR if SPD is enabled as it cant fit in
On chip memory(OCM) with SPD enabled. This solves the issue
of build failure with SPD enabled for ZynqMP platform.

Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
6 years agoMerge pull request #1403 from glneo/for-upstream-k3
Dimitris Papastamos [Wed, 20 Jun 2018 15:37:01 +0000 (16:37 +0100)]
Merge pull request #1403 from glneo/for-upstream-k3

TI K3 platform support

6 years agoMerge pull request #1421 from Yann-lms/cpp_dtc
Dimitris Papastamos [Wed, 20 Jun 2018 15:36:00 +0000 (16:36 +0100)]
Merge pull request #1421 from Yann-lms/cpp_dtc

Build: add cpp build processing for dtb

6 years agoMerge pull request #1413 from grandpaul/paulliu-rpi3-0
Dimitris Papastamos [Wed, 20 Jun 2018 15:34:10 +0000 (16:34 +0100)]
Merge pull request #1413 from grandpaul/paulliu-rpi3-0

rpi3: BL32 optee support

6 years agoSPM: Allow entering the SP without needing a SMC
Antonio Nino Diaz [Wed, 20 Jun 2018 11:05:02 +0000 (12:05 +0100)]
SPM: Allow entering the SP without needing a SMC

It may be needed to enter the Secure Partition through other means than
an MM_COMMUNICATE SMC. This patch enables this behaviour by extracting
the necessary code from mm_communicate() and allowing other parts of the
code to use it.

Change-Id: I59f6638d22d9c9d0baff0984f39d056298a8dc8e
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agoARM Platforms: Update CNTFRQ register in CNTCTLBase frame
Soby Mathew [Mon, 11 Jun 2018 15:21:30 +0000 (16:21 +0100)]
ARM Platforms: Update CNTFRQ register in CNTCTLBase frame

Currently TF-A doesn't initialise CNTFRQ register in CNTCTLBase
frame of the system timer. ARM ARM states that "The instance of
the register in the CNTCTLBase frame must be programmed with this
value as part of system initialization."

The psci_arch_setup() updates the CNTFRQ system register but
according to the ARM ARM, this instance of the register is
independent of the memory mapped instance. This is only an issue
for Normal world software which relies on the memory mapped
instance rather than the system register one.

This patch resolves the issue for ARM platforms.

The patch also solves a related issue on Juno, wherein
CNTBaseN.CNTFRQ can be written and does not reflect the value of
the register in CNTCTLBase frame. Hence this patch additionally
updates CNTFRQ register in the Non Secure frame of the CNTBaseN.

Fixes ARM-Software/tf-issues#593

Change-Id: I09cebb6633688b34d5b1bc349fbde4751025b350
Signed-off-by: Soby Mathew <soby.mathew@arm.com>
6 years agoMerge pull request #1423 from chandnich/sgi-575/dyncfg
Dimitris Papastamos [Wed, 20 Jun 2018 08:50:56 +0000 (09:50 +0100)]
Merge pull request #1423 from chandnich/sgi-575/dyncfg

Sgi 575/dyncfg

6 years agoti: k3: Introduce basic generic board support
Nishanth Menon [Wed, 20 Sep 2017 06:32:13 +0000 (01:32 -0500)]
ti: k3: Introduce basic generic board support

While it would be useful to have a device tree based build, the
required components are not in place yet, so support just a simple
statically defined configuration to begin with.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Add PSCI stubs
Benjamin Fair [Fri, 14 Oct 2016 01:13:46 +0000 (01:13 +0000)]
ti: k3: common: Add PSCI stubs

These functions are used for the PSCI implementation and are needed to
build BL31, but we cannot implement them until we add several more drivers
related to ti-sci so these are only stubs for now.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Enable GICv3 support
Nishanth Menon [Fri, 14 Oct 2016 01:13:49 +0000 (01:13 +0000)]
ti: k3: common: Enable GICv3 support

Do proper initialization of GIC V3. This will allow CP15 access to GIC
from "normal world" (aka HLOS) via mrc/mcr calls.

K3 SoC family uses GICv3 compliant GIC500 without compatibility for
legacy GICv2.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Program A53 arch timer frequency
Nishanth Menon [Fri, 14 Oct 2016 01:13:48 +0000 (01:13 +0000)]
ti: k3: common: Program A53 arch timer frequency

Provide K3_TIMER_FREQUENCY for the platform configuration if the GTC
clock is selected statically and override option if the platform has a
different configuration.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benjamin Fair <b-fair@ti.com>
6 years agoti: k3: common: Add console initialization base
Nishanth Menon [Fri, 14 Oct 2016 01:13:44 +0000 (01:13 +0000)]
ti: k3: common: Add console initialization base

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Enable MMU using xlat_tables_v2 library
Nishanth Menon [Fri, 14 Oct 2016 01:13:45 +0000 (01:13 +0000)]
ti: k3: common: Enable MMU using xlat_tables_v2 library

This library will be used to properly set up mappings from different
bootloaders at different exception levels. It ensures that memory mapped
devices such as UARTs are still accessible and memory regions have the
correct access permissions.

Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Implement topology functions
Benjamin Fair [Fri, 14 Oct 2016 01:13:47 +0000 (01:13 +0000)]
ti: k3: common: Implement topology functions

These functions describe the layout of the cores and clusters in order to
support the PSCI framework.

Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Populate BL32 and BL33 entrypoint
Benjamin Fair [Fri, 14 Oct 2016 01:13:52 +0000 (01:13 +0000)]
ti: k3: common: Populate BL32 and BL33 entrypoint

Because there is no BL2, BL31 must determine the entrypoint and memory
location of BL32 and BL33 on its own.

BL32_BASE and PRELOADED_BL33_BASE will be set in the corresponding board
makefile. We also allow a DTB address to be specified for cases when BL33
is a Linux image.

NOTE: It is possible to pull in this information from device tree as
well, however libfdt does not contain the required hooks to make this
happen at this point in time.

Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: common: Add platform core management helpers
Benjamin Fair [Tue, 18 Oct 2016 19:32:06 +0000 (14:32 -0500)]
ti: k3: common: Add platform core management helpers

The K3 family of SoCs has multiple interconnects. The key interconnect
for high performance processors is the MSMC3 interconnect. This is
an io-coherent interconnect which exports multiple ports for each
processor cluster.

Sometimes, port 0 of the MSMC may not have an ARM cluster OR is isolated
such that the instance of ATF does not manage it. Define macros
in platform_def.h to help handle this.

Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoti: k3: Setup initial files for platform
Nishanth Menon [Fri, 14 Oct 2016 01:13:34 +0000 (01:13 +0000)]
ti: k3: Setup initial files for platform

Create the baseline Makefile, platform definitions file and platform
specific assembly macros file. This includes first set of constants
for the platform including cache sizes and linker format and a stub for
BL31 and the basic memory layout

K3 SoC family of processors do not use require a BL1 or BL2 binary,
since such functions are provided by an system controller on the SoC.
This lowers the burden of ATF to purely managing the local ARM cores
themselves.

Signed-off-by: Benjamin Fair <b-fair@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
6 years agoMerge pull request #1410 from Anson-Huang/master
Dimitris Papastamos [Tue, 19 Jun 2018 14:10:23 +0000 (15:10 +0100)]
Merge pull request #1410 from Anson-Huang/master

Add NXP's i.MX8QX and i.MX8QM SoC support

6 years agoMerge pull request #1425 from jts-arm/panic
Dimitris Papastamos [Tue, 19 Jun 2018 14:09:43 +0000 (15:09 +0100)]
Merge pull request #1425 from jts-arm/panic

Panic in BL1 when TB_FW_CONFIG is invalid

6 years agoMerge pull request #1430 from dp-arm/dp/cpulib
Dimitris Papastamos [Tue, 19 Jun 2018 14:07:30 +0000 (15:07 +0100)]
Merge pull request #1430 from dp-arm/dp/cpulib

cpulib: Add ISBs or comment why they are unneeded

6 years agoMerge pull request #1418 from antonio-nino-diaz-arm/an/arm-multi-console
Dimitris Papastamos [Tue, 19 Jun 2018 13:00:07 +0000 (14:00 +0100)]
Merge pull request #1418 from antonio-nino-diaz-arm/an/arm-multi-console

 plat/arm: Migrate AArch64 port to the multi console driver

6 years agoMerge pull request #1420 from Yann-lms/mm_cursor_size_check
Dimitris Papastamos [Tue, 19 Jun 2018 12:39:55 +0000 (13:39 +0100)]
Merge pull request #1420 from Yann-lms/mm_cursor_size_check

xlat_v2: add a check on mm_cursor->size to avoid infinite loop

6 years agocpulib: Add ISBs or comment why they are unneeded
Dimitris Papastamos [Thu, 7 Jun 2018 12:20:19 +0000 (13:20 +0100)]
cpulib: Add ISBs or comment why they are unneeded

Change-Id: I18a41bb9fedda635c3c002a7f112578808410ef6
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
6 years agorpi3: update documentation for OP-TEE support
Ying-Chun Liu (PaulLiu) [Wed, 13 Jun 2018 12:53:08 +0000 (20:53 +0800)]
rpi3: update documentation for OP-TEE support

Describe how to use BL32 build variable to load OP-TEE into FIP.

Signed-off-by: Ying-Chun Liu (PaulLiu) <paulliu@debian.org>
6 years agorpi3: add OPTEE support
Ying-Chun Liu (PaulLiu) [Sat, 9 Jun 2018 18:00:27 +0000 (02:00 +0800)]
rpi3: add OPTEE support

Support for loading optee images as BL32 secure payload.

Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
6 years agoplat/arm: Migrate AArch64 port to the multi console driver
Antonio Nino Diaz [Tue, 19 Jun 2018 08:29:36 +0000 (09:29 +0100)]
plat/arm: Migrate AArch64 port to the multi console driver

The old API is deprecated and will eventually be removed.

Arm platforms now use the multi console driver for boot and runtime
consoles. However, the crash console uses the direct console API because
it doesn't need any memory access to work. This makes it more robust
during crashes.

The AArch32 port of the Trusted Firmware doesn't support this new API
yet, so it is only enabled in AArch64 builds. Because of this, the
common code must maintain compatibility with both systems. SP_MIN
doesn't have to be updated because it's only used in AArch32 builds.
The TSP is only used in AArch64, so it only needs to support the new
API without keeping support for the old one.

Special care must be taken because of PSCI_SYSTEM_SUSPEND. In Juno, this
causes the UARTs to reset (except for the one used by the TSP). This
means that they must be unregistered when suspending and re-registered
when resuming. This wasn't a problem with the old driver because it just
restarted the UART, and there were no problems associated with
registering and unregistering consoles.

The size reserved for BL2 has been increased.

Change-Id: Icefd117dd1eb9c498921181a21318c2d2435c441
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agoMerge pull request #1400 from Andre-ARM/allwinner/v1
Dimitris Papastamos [Tue, 19 Jun 2018 08:16:07 +0000 (09:16 +0100)]
Merge pull request #1400 from Andre-ARM/allwinner/v1

Allwinner platform support

6 years agoSupport for NXP's i.MX8QM SoC
Anson Huang [Mon, 11 Jun 2018 04:54:05 +0000 (12:54 +0800)]
Support for NXP's i.MX8QM SoC

NXP's i.MX8QM is an ARMv8 SoC with 2 clusters, 2 Cortex-A72
cores in one cluster and 4 Cortex-A53 in the other cluster,
and also has system controller (Cortex-M4) inside, documentation
can be found in below link:

https://www.nxp.com/products/processors-and-microcontrollers/
applications-processors/i.mx-applications-processors/i.mx-8-processors:IMX8-SERIES

This patch adds support for booting up SMP linux kernel (v4.9).

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
6 years agoSupport for NXP's i.MX8QX SoC
Anson Huang [Tue, 5 Jun 2018 08:13:45 +0000 (16:13 +0800)]
Support for NXP's i.MX8QX SoC

NXP's i.MX8QX is an ARMv8 SoC with 4 Cortex-A35 cores and
system controller (Cortex-M4) inside, documentation can
be found in below link:

https://www.nxp.com/products/processors-and-microcontrollers/
applications-processors/i.mx-applications-processors/i.mx-8-processors:IMX8-SERIES

This patch adds support for booting up SMP linux kernel (v4.9).

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
6 years agoSupport for NXP's imx SoC common function
Anson Huang [Tue, 5 Jun 2018 08:12:27 +0000 (16:12 +0800)]
Support for NXP's imx SoC common function

This patch adds support for NXP's imx SoC common
function support like topology, gic implementation.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
6 years agoSupport for NXP's imx SoC debug uart
Anson Huang [Tue, 5 Jun 2018 08:11:24 +0000 (16:11 +0800)]
Support for NXP's imx SoC debug uart

Add NXP's imx SoC debug uart driver.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
6 years agoSupport for NXP's i.MX8 SoCs IPC
Anson Huang [Tue, 5 Jun 2018 08:05:59 +0000 (16:05 +0800)]
Support for NXP's i.MX8 SoCs IPC

NXP's i.MX8 SoCs have system controller (M4 core)
which takes control of clock management, power management,
partition management, PAD management etc., other
clusters like Cortex-A35 can send out command via MU
(Message Unit) to system controller for clock/power
management etc..

This patch adds basic IPC(inter-processor communication) support.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
6 years agoBuild: add cpp build processing for dtb
Yann Gautier [Mon, 18 Jun 2018 14:00:23 +0000 (16:00 +0200)]
Build: add cpp build processing for dtb

This is an add-on feature that allows processing
device tree with external includes.

"-Iinclude" is also added to INCLUDES.
It allows inclusion of dt-bindings files either in dts files or drivers,
as those files will be in include/dt-bindings/.

"-i fdts" is added to the DTC command line.
As the pre-processed files are in build directory, the DT source directory
has to be explicitely included, to manages /include/ directives.

fixes arm-software/tf-issues#595

Signed-off-by: Lionel Debieve <lionel.debieve@st.com>
Signed-off-by: Yann Gautier <yann.gautier@st.com>
6 years agoMerge pull request #1426 from antonio-nino-diaz-arm/an/spm-sync
Dimitris Papastamos [Mon, 18 Jun 2018 08:44:26 +0000 (09:44 +0100)]
Merge pull request #1426 from antonio-nino-diaz-arm/an/spm-sync

SPM: Refactor entry and exit of the SP

6 years agoMerge pull request #1422 from Yann-lms/genmask
Dimitris Papastamos [Mon, 18 Jun 2018 08:43:56 +0000 (09:43 +0100)]
Merge pull request #1422 from Yann-lms/genmask

Genmask

6 years agoMove to mbedtls-2.10.0 tag
Jeenu Viswambharan [Thu, 7 Jun 2018 14:14:42 +0000 (15:14 +0100)]
Move to mbedtls-2.10.0 tag

To build with the new release, we pick couple of more files from mbedTLS
library.

Change-Id: I77dfe5723284cb26d4e5c717fb0e6f6dd803cb6b
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
6 years agoSPM: Refactor entry and exit of the SP
Antonio Nino Diaz [Fri, 15 Jun 2018 15:21:01 +0000 (16:21 +0100)]
SPM: Refactor entry and exit of the SP

Only use synchronous calls to enter the Secure Partition in order to
simplify the SMC handling code.

Change-Id: Ia501a045585ee0836b9151141ad3bd11d0971be2
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agoPanic in BL1 when TB_FW_CONFIG is invalid
John Tsichritzis [Fri, 15 Jun 2018 10:43:02 +0000 (11:43 +0100)]
Panic in BL1 when TB_FW_CONFIG is invalid

In Arm platforms, when using dynamic configuration, the necessary
parameters are made available as a DTB. The DTB is loaded by BL1 and,
later on, is parsed by BL1, BL2 or even both, depending on when
information from the DTB is needed.

When the DTB is going to be parsed, it must be validated first, to
ensure that it is properly structured. If an invalid DTB is detected
then:
  - BL1 prints a diagnostic but allows execution to continue,
  - BL2 prints a diagnostic and panics.

Now the behaviour of BL1 is changed so for it also to panic. Thus, the
behaviour of BL1 and BL2 is now similar.

Keep in mind that if BL1 only loads the DTB but it doesn't need to
read/write it, then it doesn't validate it. The validation is done only
when the DTB is actually going to be accessed.

Change-Id: Idcae6092e6dbeab7248dd5e041d6cbb7784fe410
Signed-off-by: John Tsichritzis <john.tsichritzis@arm.com>
6 years agoallwinner: Add security setup
Andre Przywara [Fri, 1 Jun 2018 01:01:39 +0000 (02:01 +0100)]
allwinner: Add security setup

Some peripherals are TrustZone aware, so they need to be configured to
be accessible from non-secure world, as we don't need any of them being
exclusive to the secure world.
This affects some clocks, DMA channels and the Secure Peripheral
Controller (SPC). The latter controls access to most devices, but is not
active unless booting with the secure boot fuse burnt.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
6 years agoallwinner: Add platform PSCI functions required for SMP
Samuel Holland [Sat, 12 Aug 2017 09:07:39 +0000 (04:07 -0500)]
allwinner: Add platform PSCI functions required for SMP

The reset vector entry point is preserved across CPU resets, so it only
needs to be set once at boot.

Hotplugged CPUs are not actually powered down, but are put in a wfi with
the GIC disconnected.

With this commit, Linux is able to enable, hotplug and use all four CPUs.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
6 years agoallwinner: Add functions to control CPU power/reset
Samuel Holland [Sat, 12 Aug 2017 09:07:39 +0000 (04:07 -0500)]
allwinner: Add functions to control CPU power/reset

sun50i_cpu_on will be used by the PSCI implementation to initialize
secondary cores for SMP. Unfortunately, sun50i_cpu_off is not usable by
PSCI directly, because it is not possible for a CPU to use this function
to power itself down. Power cannot be shut off until the outputs are
clamped, and MMIO does not work once the outputs are clamped.

But at least CPU0 can shutdown the other cores early in the BL31 boot
process and before shutting down the system.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
6 years agoallwinner: Add Allwinner A64 support
Samuel Holland [Sat, 12 Aug 2017 09:07:39 +0000 (04:07 -0500)]
allwinner: Add Allwinner A64 support

The Allwinner A64 SoC is quite popular on single board computers.
It comes with four Cortex-A53 cores in a singe cluster and the usual
peripherals for set-top box/tablet SoC.

The ATF platform target is called "sun50i_a64".

[Andre: adapted to amended directory layout, removed unneeded definitions ]

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
6 years agoallwinner: Introduce basic platform support
Samuel Holland [Sat, 12 Aug 2017 09:07:39 +0000 (04:07 -0500)]
allwinner: Introduce basic platform support

This platform supports Allwinner's SoCs with ARMv8 cores. So far they
all sport a single cluster of Cortex-A53 cores.

"sunxi" is the original code name used for this platform, and since it
appears in the Linux kernel and in U-Boot as well, we use it here as a
short file name prefix and for identifiers.

This port includes BL31 support only. U-Boot's SPL takes the role of the
primary loader, also doing the DRAM initialization. It then loads the
rest of the firmware, namely ATF and U-Boot (BL33), then hands execution
over to ATF.

This commit includes the basic platform code shared across all SoCs.
There is no platform.mk yet.

[Andre: moved files into proper directories, supported RESET_TO_BL31,
various clean ups and simplifications ]

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
6 years agosgi/mmap: Remove SGI specific MMAP functions
Chandni Cherukuri [Thu, 14 Jun 2018 11:17:43 +0000 (16:47 +0530)]
sgi/mmap: Remove SGI specific MMAP functions

Remove the redundant SGI functions which map memory
for BL1 and BL2.

Change-Id: I651a06d0eb6d28263a56f59701bb3815f1ba93dc
Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
6 years agosgi/dyncfg: add system-id node in hw-config dtb
Chandni Cherukuri [Thu, 10 May 2018 06:33:50 +0000 (12:03 +0530)]
sgi/dyncfg: add system-id node in hw-config dtb

Append a node to hw-config dtb which will include a property to hold
the value of the SSC_VERSION register. This will be used by the BL33
stage to determine the platform-id and the config-id of the platform
it is executing on.

Change-Id: Ie7b1e5d8c1bbe0efdb7ef0714f14b7794ec6058e
Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
6 years agosgi/dyncfg: add dts files to enable support for dynamic config
Chandni Cherukuri [Thu, 10 May 2018 04:46:42 +0000 (10:16 +0530)]
sgi/dyncfg: add dts files to enable support for dynamic config

Remove the existing method of populating the platform id in arg2 of
BL33 which is no longer needed with dynamic configuration feature
enabled as the BL33 will get this information directly via the config
files. Add the tb_fw_config and hw_config dts files.

Change-Id: I3c93fec2aedf9ef1f774a5f0969d2d024e47ed2c
Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
6 years agoutils: Add BIT_32 and BIT_64 macros
Yann Gautier [Thu, 14 Jun 2018 11:28:31 +0000 (13:28 +0200)]
utils: Add BIT_32 and BIT_64 macros

When applying some MISRA rules, lots of issues are raised with BIT macro
on AARCH32, and cast on uint32_t would be required (Rule 10.3).
The macros BIT_32 and BIT_64 are then created for 32bit and 64bit.
Then the BIT macro defaults on BIT_64 on AARCH64,
and on BIT_32 on AARCH32.

Signed-off-by: Yann Gautier <yann.gautier@st.com>
6 years agoAdd GENMASK macros
Yann Gautier [Thu, 14 Jun 2018 16:35:33 +0000 (18:35 +0200)]
Add GENMASK macros

Import GENMASK_32 and GENMASK_64 macros from optee-os (permissive license).
And default GENMASK is set to GENMASK_32 for AARCH32,
and to GENMASK_64 for 64bit arch.

fixes arm-software/tf-issues#596

Signed-off-by: Yann Gautier <yann.gautier@st.com>
Signed-off-by: Nicolas Le Bayon <nicolas.le.bayon@st.com>
6 years agoMerge pull request #1414 from antonio-nino-diaz-arm/an/fix-rpi3-doc
Dimitris Papastamos [Thu, 14 Jun 2018 13:40:24 +0000 (14:40 +0100)]
Merge pull request #1414 from antonio-nino-diaz-arm/an/fix-rpi3-doc

rpi3: Fix kernel boot documentation

6 years agoMerge pull request #1419 from danielboulby-arm/db/docs
Dimitris Papastamos [Thu, 14 Jun 2018 13:35:17 +0000 (14:35 +0100)]
Merge pull request #1419 from danielboulby-arm/db/docs

Correct ordering of log levels in documentation

6 years agoMerge pull request #1417 from paulkocialkowski/integration
Dimitris Papastamos [Thu, 14 Jun 2018 13:34:46 +0000 (14:34 +0100)]
Merge pull request #1417 from paulkocialkowski/integration

rockchip: Move stdint header to the offending header file

6 years agoMerge pull request #1415 from antonio-nino-diaz-arm/an/spm-fixes
Dimitris Papastamos [Thu, 14 Jun 2018 13:33:13 +0000 (14:33 +0100)]
Merge pull request #1415 from antonio-nino-diaz-arm/an/spm-fixes

Minor fixes to SPM

6 years agoMerge pull request #1412 from masahir0y/uniphier
Dimitris Papastamos [Thu, 14 Jun 2018 13:32:41 +0000 (14:32 +0100)]
Merge pull request #1412 from masahir0y/uniphier

uniphier: fix CCI-500 connection for LD20

6 years agoxlat_v2: add a check on mm_cursor->size to avoid infinite loop
Yann Gautier [Thu, 14 Jun 2018 12:36:20 +0000 (14:36 +0200)]
xlat_v2: add a check on mm_cursor->size to avoid infinite loop

The issue can occur if end_va is equal to the max architecture address,
and when mm_cursor point to the last entry of mmap_region_t table: {0}.
The first line of the while will then be true, e.g. on AARCH32, we have:
mm_cursor->base_va (=0) + mm_cursor->size (=0) - 1 == end_va (=0xFFFFFFFF)
And the mm_cursor->size = 0 will be lesser than mm->size

A check on mm_cursor->size != 0 should be done as in the previous while,
to avoid such kind of infinite loop.

fixes arm-software/tf-issues#594

Signed-off-by: Yann Gautier <yann.gautier@st.com>
6 years agoCorrect ordering of log levels in documentation
Daniel Boulby [Thu, 14 Jun 2018 09:07:40 +0000 (10:07 +0100)]
Correct ordering of log levels in documentation

Changed the ordering of the log levels in the documentation to
mate the code

Change-Id: Ief1930b73d833fdf675b039c98046591c0c264c1
Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
6 years agorockchip: Move stdint header to the offending header file
Paul Kocialkowski [Wed, 13 Jun 2018 18:37:25 +0000 (20:37 +0200)]
rockchip: Move stdint header to the offending header file

The stdint header was introduced to rk3399's plat_sip_calls.c in order
to fix missing stdint definitions. However, ordering headers
alphabetically caused the fix to be ineffective, as stint was then
included after the offending header file (dfs.h).

Move the stdint include to that header to properly fix the issue.

Change-Id: Ieaad37a7932786971488ab58fc5b169bfa79e197
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
6 years agorpi3: Fix kernel boot documentation
Antonio Nino Diaz [Wed, 13 Jun 2018 12:34:46 +0000 (13:34 +0100)]
rpi3: Fix kernel boot documentation

The order of the arguments of memmap was swapped. The old command was
reserving 256 MiB from the 16 MiB barrier, it should be reserving only
16 MiB at the 256 MiB barrier.

It worked because the memory used by the Trusted Firmware was reserved
anyway.

Change-Id: I3fefcfc0105ecf05ba5606517bc3236f4eb24ceb
Tested-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agoMerge pull request #1402 from glneo/for-upstream-uart
Dimitris Papastamos [Wed, 13 Jun 2018 13:19:53 +0000 (14:19 +0100)]
Merge pull request #1402 from glneo/for-upstream-uart

drivers: ti: uart: Add TI specific 16550 initialization

6 years agoMerge pull request #1399 from danielboulby-arm/db/MISRA
Dimitris Papastamos [Wed, 13 Jun 2018 12:32:14 +0000 (13:32 +0100)]
Merge pull request #1399 from danielboulby-arm/db/MISRA

MISRA 5.1, 5.3 & 5.7 compliance changes

6 years agoSPM: Treat SP xlat tables the same as others
Sandrine Bailleux [Wed, 6 Jun 2018 14:35:40 +0000 (16:35 +0200)]
SPM: Treat SP xlat tables the same as others

The translation tables allocated for the Secure Partition do not need
to be treated as a special case. They can be put amongst the other
tables mapping BL31's general purpose memory. They will be mapped with
the same attributes as them, which is fine.

The explicit alignment constraint in BL31's linker script to pad the
last page of memory allocated to the Secure Partition's translation
tables is useless too, as page tables are per se pages, thus their
end address is naturally aligned on a page-boundary.

In fact, this patch does not change the existing behaviour. Since
patch 22282bb68a31 ("SPM: Move all SP-related info to SP context
struct"), the secure_partition.c file has been renamed into sp_xlat.c
but the linker script has not been properly updated. As a result, the
SP translation tables are not specifically put at the start of the
xlat_table linker section, the __SP_IMAGE_XLAT_TABLES_START__/_END__
symbols have the same value, the size of the resulting mmap_region
covering these xlat tables is 0 and so it is ignored.

Change-Id: I4cf0a4cc090298811cca53fc9cee74df0f2b1512
Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
6 years agoxlat v2: Introduce xlat granule size helpers
Antonio Nino Diaz [Mon, 11 Jun 2018 12:40:32 +0000 (13:40 +0100)]
xlat v2: Introduce xlat granule size helpers

The function xlat_arch_is_granule_size_supported() can be used to check
if a specific granule size is supported. In Armv8, AArch32 only supports
4 KiB pages. AArch64 supports 4 KiB, 16 KiB or 64 KiB depending on the
implementation, which is detected at runtime.

The function xlat_arch_get_max_supported_granule_size() returns the max
granule size supported by the implementation.

Even though right now they are only used by SPM, they may be useful in
other places in the future. This patch moves the code currently in SPM
to the xlat tables lib so that it can be reused.

Change-Id: If54624a5ecf20b9b9b7f38861b56383a03bbc8a4
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
6 years agoSPM: Initialize SP args as expected by cm library
Antonio Nino Diaz [Mon, 11 Jun 2018 10:01:54 +0000 (11:01 +0100)]
SPM: Initialize SP args as expected by cm library

In the context management library, cm_setup_context() takes the
information in ep_info to fill the registers x0-x7. This patch replaces
the current code that sets them manually by the correct initialization
code.

Change-Id: Id1fdf4681b154026c2e3af1f9b05b19582b7d16d
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>