summaryrefslogtreecommitdiff
path: root/plat
AgeCommit message (Collapse)Author
2017-10-16GIC: Add API to get running priorityJeenu Viswambharan
Document the API in separate platform interrupt controller API document. Change-Id: If18f208e10a8a243f5c59d226fcf48e985941949 Co-authored-by: Yousuf A <yousuf.sait@arm.com> Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
2017-10-05GICv3: add functions for save and restoreSoby Mathew
During system suspend, the GICv3 Distributor and Redistributor context can be lost due to power gating of the system power domain. This means that the GICv3 context needs to be saved prior to system suspend and restored on wakeup. Currently the consensus is that the Firmware should be in charge of this. See tf-issues#464 for more details. This patch introduces helper APIs in the GICv3 driver to save and restore the Distributor and Redistributor contexts. The GICv3 ITS context is not considered in this patch because the specification says that the details of ITS power management is implementation-defined. These APIs are expected to be appropriately invoked by the platform layer during system suspend. Fixes ARM-software/tf-issues#464 Change-Id: Iebb9c6770ab8c4d522546f161fa402d2fe02ec00 Signed-off-by: Soby Mathew <soby.mathew@arm.com> Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
2017-10-04Merge pull request #1109 from robertovargas-arm/mem_protectdavidcunado-arm
Mem protect
2017-10-04Merge pull request #1115 from jeenu-arm/tsp-mtdavidcunado-arm
TSP: Support multi-threading CPUs on FVP
2017-10-04TSP: Support multi-threading CPUs on FVPJeenu Viswambharan
Commit 11ad8f208db42f7729b0ce2bd16c631c293e665c added supporting multi-threaded CPUs on FVP platform, including modifications for calculating CPU IDs. This patch imports the strong definition of the same CPU ID calculation on FVP platform for TSP. Without this patch, TSP on FVP was using the default CPU ID calculation, which would end up being wrong on CPUs with multi-threading. Change-Id: If67fd492dfce1f57224c9e693988c4b0f89a9a9a Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
2017-10-02Merge pull request #1107 from geesun/qx/add_ecdsa_supportdavidcunado-arm
Add support for TBBR using ECDSA keys in ARM platforms
2017-09-27Uniphier: fix xlat tables lib inclusionDouglas Raillard
Uses the xlat tables library's Makefile instead of directly including the source files in the Uniphier platform port. Change-Id: I27294dd71bbf9bf3e82973c75324652b037e5bce Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
2017-09-25Merge pull request #1108 from sandrine-bailleux-arm/sb/fvp-utils-defdavidcunado-arm
FVP: Include utils_def.h instead of utils.h
2017-09-25mem_protect: Add DRAM2 to the list of mem protected rangesRoberto Vargas
On ARM platforms, the maximum size of the address space is limited to 32-bits as defined in arm_def.h. In order to access DRAM2, which is defined beyond the 32-bit address space, the maximum address space is increased to 36-bits in AArch64. It is possible to increase the virtual space for AArch32, but it is more difficult and not supported for now. NOTE - the actual maximum memory address space is platform dependent and is checked at run-time by querying the PARange field in the ID_AA64MMFR0_EL1 register. Change-Id: I6cb05c78a63b1fed96db9a9773faca04a5b93d67 Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
2017-09-25mem_protect: Add mem_protect support in Juno and FVP for DRAM1Roberto Vargas
mem_protect needs some kind of non-volatile memory because it has to remember its state across reset and power down events. The most suitable electronic part for this feature is a NVRAM which should be only accesible from the secure world. Juno and FVP lack such hardware and for this reason the MEM_PROTECT functionality is implemented with Flash EEPROM memory on both boards, even though this memory is accesible from the non-secure world. This is done only to show a full implementation of these PSCI features, but an actual system shouldn't use a non-secure NVRAM to implement it. The EL3 runtime software will write the mem_protect flag and BL2 will read and clear the memory ranges if enabled. It is done in BL2 because it reduces the time that TF needs access to the full non-secure memory. The memory layout of both boards is defined using macros which take different values in Juno and FVP platforms. Generic platform helpers are added that use the platform specific macros to generate a mem_region_t that is valid for the platform. Change-Id: I2c6818ac091a2966fa07a52c5ddf8f6fde4941e9 Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
2017-09-22Add support for TBBR using ECDSA keys in ARM platformsQixiang Xu
- fixed compile error when KEY_ALG=ecdsa - add new option ecdsa for TF_MBEDTLS_KEY_ALG - add new option devel_ecdsa for ARM_ROTPK_LOCATION - add ecdsa key at plat/arm/board/common/rotpk/ - reduce the mbedtls heap memory size to 13k Change-Id: I3f7a6170af93fdbaaa7bf2fffb4680a9f6113c13 Signed-off-by: Qixiang Xu <qixiang.xu@arm.com>
2017-09-22plat/arm : update BL size macros to give BL1 and BL2 more space for TBBQixiang Xu
For Trusted Board Boot, BL1 RW section and BL2 need more space to support the ECDSA algorithm. Specifically, PLAT_ARM_MAX_BL1_RW_SIZE is increased on ARM platforms. And on the Juno platform: - BL2 size, PLAT_ARM_MAX_BL2_SIZE is increased. - SCP_BL2 is loaded into the space defined by BL31_BASE -> BL31_RW_BASE. In order to maintain the same size space for SCP_BL2,PLAT_ARM_MAX_BL31_SIZE is increased. Change-Id: I379083f918b40ab1c765da4e71780d89f0058040 Co-Authored-By: David Cunado <david.cunado@arm.com> Signed-off-by: Qixiang Xu <qixiang.xu@arm.com>
2017-09-21FVP: Include utils_def.h instead of utils.hSandrine Bailleux
platform_def.h doesn't need all the definitions in utils.h, the ones in utils_def.h are enough. This patch is related to the changes introduced by commit 53d9c9c85b. Change-Id: I4b2ff237a2d7fe07a7230e0e49b44b3fc2ca8abe Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
2017-09-21Fix type of `unsigned long` constantsAntonio Nino Diaz
The type `unsigned long` is 32 bit wide in AArch32, but 64 bit wide in AArch64. This is inconsistent and that's why we avoid using it as per the Coding Guidelines. This patch changes all `UL` occurrences to `U` or `ULL` depending on the context so that the size of the constant is clear. This problem affected the macro `BIT(nr)`. As long as this macro is used to fill fields of registers, that's not a problem, since all registers are 32 bit wide in AArch32 and 64 bit wide in AArch64. However, if the macro is used to fill the fields of a 64-bit integer, it won't be able to set the upper 32 bits in AArch32. By changing the type of this macro to `unsigned long long` the behaviour is always the same regardless of the architecture, as this type is 64-bit wide in both cases. Some Tegra platform files have been modified by this patch. Change-Id: I918264c03e7d691a931f0d1018df25a2796cc221 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
2017-09-19Merge pull request #1102 from Xilinx/fpga_loaddavidcunado-arm
zynqmp: Sync function declaration and definition
2017-09-18zynqmp: Sync function declaration and definitionSoren Brinkmann
Synchronize argument order between function definition and declaration of pm_fpga_load. Fixes ARM-software/tf-issues#514 Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
2017-09-18Merge pull request #1093 from soby-mathew/eb/log_fwdavidcunado-arm
Implement log framework
2017-09-15Merge pull request #1089 from Leo-Yan/hikey_enable_debug_moduledavidcunado-arm
Hikey: enable CPU debug module
2017-09-14Merge pull request #1098 from vchong/boot_without_spddavidcunado-arm
hikey*: boot without spd
2017-09-14hikey*: Undef BL32_BASE when building without SPDVictor Chong
Otherwise, BL2 tries to load a BL32 image and triggers assert(result == 0) in plat_get_image_source() in hikey{960}_io_storage.c in a debug build, or displays ERROR: BL2: Failed to load image in a release build. Signed-off-by: Victor Chong <victor.chong@linaro.org>
2017-09-14hikey*: Fix typoVictor Chong
Signed-off-by: Victor Chong <victor.chong@linaro.org>
2017-09-13Merge pull request #1092 from jeenu-arm/errata-workaroundsdavidcunado-arm
Errata workarounds
2017-09-12Merge pull request #1088 from soby-mathew/sm/sds_scmidavidcunado-arm
Introduce SDS Driver
2017-09-11Implement log frameworkSoby Mathew
This patch gives users control over logging messages printed from the C code using the LOG macros defined in debug.h Users now have the ability to reduce the log_level at run time using the tf_log_set_max_level() function. The default prefix string can be defined by platform by overriding the `plat_log_get_prefix()` platform API which is also introduced in this patch. The new log framework results in saving of some RO data. For example, when BL1 is built for FVP with LOG_LEVEL=LOG_LEVEL_VERBOSE, resulted in saving 384 bytes of RO data and increase of 8 bytes of RW data. The framework also adds about 108 bytes of code to the release build of FVP. Fixes ARM-software/tf-issues#462 Change-Id: I476013d9c3deedfdd4c8b0b0f125665ba6250554 Co-authored-by: Eleanor Bonnici <Eleanor.bonnici@arm.com> Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2017-09-11Merge pull request #1086 from robertovargas-arm/dead_loopdavidcunado-arm
juno: Fix bug in plat_get_my_entrypoint
2017-09-07Juno: Disable 859971 and 859972 errata workaroundsEleanor Bonnici
Earlier patches added errata workarounds 859972 for Cortex-A72, and 859972 for Cortex-A57 CPUs. Explicitly disable the workaround for Juno. Also reorganize errata workaround flags. No functional changes. Change-Id: I3fe3745de57d77e5bf52012826d3969fe5d4844e Signed-off-by: Eleanor Bonnici <Eleanor.bonnici@arm.com> Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
2017-09-07Hikey: enable CPU debug moduleLeo Yan
Every CPU has its own debug module and this module is used by JTAG debugging and coresight tracing. If without enabling it, it's easily to introduce lockup issue when we enable debugging features. This patch is to enable CPU debug module when power on CPU; this allows connecting to all cores through JTAG and used by kernel coresight driver. Signed-off-by: Matthias Welwarsky <maw@sysgo.com> Signed-off-by: Leo Yan <leo.yan@linaro.org>
2017-09-07Merge pull request #1082 from vchong/load_img_v2_parse_optee_headerdavidcunado-arm
hikey*: Add LOAD_IMAGE_V2 and OP-TEE header parsing support
2017-09-07Merge pull request #1080 from soby-mathew/eb/RSA-PKCS1-5_support_1davidcunado-arm
Support legacy RSA PKCS#1 v1.5 in cert create
2017-09-06CSS: Changes for SDS frameworkSoby Mathew
This patch does the required changes to enable CSS platforms to build and use the SDS framework. Since SDS is always coupled with SCMI protocol, the preexisting SCMI build flag is now renamed to `CSS_USE_SCMI_SDS_DRIVER` which will enable both SCMI and SDS on CSS platforms. Also some of the workarounds applied for SCMI are now removed with SDS in place. Change-Id: I94e8b93f05e3fe95e475c5501c25bec052588a9c Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2017-09-06SDS: Introduce the sds driversSoby Mathew
This patch introduces the driver for Shared-Data-Structure (SDS) framework which will be used for communication between SCP and AP CPU. The SDS framework is intended to replace the Boot-Over-MHU (BOM) protocol used currently for the communication Change-Id: Ic174291121f4e581b174cce3389d22d6435f7269 Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2017-09-06Split CSS makefile for sp_min on JunoSoby Mathew
This patch factors out common files required for sp_min for all CSS platforms from the JUNO specific makefile to a the new `css_sp_min.mk` makefile. This also allows the common build options that affect CSS platforms to be configured in a central makefile for sp_min. Change-Id: Ida952d8833b1aa5eda77ae0a6664a4632aeab24c Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2017-09-06juno: Fix bug in plat_get_my_entrypointRoberto Vargas
plat_get_my_entrypoint was branching to juno_do_reset_to_aarch_32_state, which is not supposed to return, and in case of returning it implemented an infinite loop. The problem was that plat_get_my_entrypoint was using "b" instead of "bl", so juno_do_reset_to_aarch_32_state was returning to the caller of plat_get_my_entrypoint instead of stop the system with a panic. To avoid this problem juno_do_reset_to_aarch_32_state was modified to call directly to plat_panic_handler if it tries to return. Change-Id: I591cf2dd78d27d8568fb15b91366e4b3dce027b5 Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
2017-09-05Fix BL2 memory map when OP-TEE is the Secure PayloadSoby Mathew
The commit 3eb2d67 optimizes the memory map for BL2 when TSP is not present. But this also broke OP-TEE as it was reusing the TSP mapping. This patch fixes this problem by adding a separate mapping for OP-TEE in the BL2 memory map table. Change-Id: I130a2ea552b7b62d8478081feb1f4ddf5292a118 Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2017-09-04Merge pull request #1081 from masahir0y/uniphierdavidcunado-arm
uniphier: fix-up for PXs3 SoC
2017-09-01hikey*: Support Trusted OS extra image (OP-TEE header) parsingVictor Chong
Signed-off-by: Victor Chong <victor.chong@linaro.org>
2017-09-01hikey*: Add LOAD_IMAGE_V2 supportVictor Chong
Signed-off-by: Victor Chong <victor.chong@linaro.org> Signed-off-by: Leo Yan <leo.yan@linaro.org>
2017-09-01uniphier: work around Boot ROM bug for USB boot mode of PXs3 SoCMasahiro Yamada
Due to a bug in the Boot ROM, the USB load API turned out not working as expected. It is unfixable because the Boot ROM is hard-wired. Add work around code in TF to bypass the problematic Boot ROM code. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-09-01uniphier: fix code indent for conditional statementMasahiro Yamada
checkpatch.pl from Linux reports tons of coding style errors and warnings. I am just fixing under plat/socionext/uniphier/. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-08-31Merge pull request #1072 from sandrine-bailleux-arm/sb/tsp-mappingdanh-arm
ARM platforms: Map TSP only when TSPD is included
2017-08-31Export KEY_ALG as a user build optionSoby Mathew
The `KEY_ALG` variable is used to select the algorithm for key generation by `cert_create` tool for signing the certificates. This variable was previously undocumented and did not have a global default value. This patch corrects this and also adds changes to derive the value of `TF_MBEDTLS_KEY_ALG` based on `KEY_ALG` if it not set by the platform. The corresponding assignment of these variables are also now removed from the `arm_common.mk` makefile. Signed-off-by: Soby Mathew <soby.mathew@arm.com> Change-Id: I78e2d6f4fc04ed5ad35ce2266118afb63127a5a4
2017-08-31ARM platforms: Map TSP only when TSPD is includedSandrine Bailleux
This patch ensures that the ARM_MAP_TSP_SEC_MEM memory region is mapped in BL2 only if the TSPD has been included in the build. This saves one entry in the plat_arm_mmap[] array and avoids to map extra memory when it's not needed. Change-Id: I6ae60822ff8f0de198145925b0b0d45355179a94 Signed-off-by: Achin Gupta <achin.gupta@arm.com> Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
2017-08-31Merge pull request #1077 from soby-mathew/sm/fix_juno_assert_lvldanh-arm
Juno: Define PLAT_LOG_LEVEL_ASSERT to LOG_LEVEL_INFO
2017-08-31Juno: Define PLAT_LOG_LEVEL_ASSERT to LOG_LEVEL_INFOSoby Mathew
This patch fixes the PLAT_LOG_LEVEL_ASSERT to 40 which corresponds to LOG_LEVEL_INFO. Having this level of log for assertions means that the `assert()` will not generate the strings implied in the expression taken as parameter. This allows to save some memory when Juno is built for LOG_LEVEL = LOG_LEVEL_VERBOSE and DEBUG = 1. Fixes ARM-software/tf-issues#511 Change-Id: Id84a40f803ab07a5a8f6e587167af96694a07d04 Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2017-08-31Merge pull request #1069 from Leo-Yan/hikey_enable_watchdog_resetdanh-arm
Hikey: enable watchdog reset
2017-08-30Merge pull request #1075 from robertovargas-arm/fix_el3_payloaddanh-arm
Don't use zero_normalmem in bl2_platform_setup
2017-08-30Don't use zero_normalmem in bl2_platform_setupRoberto Vargas
zero_normalmem only can zero memory when caches are enabled and the target memory is a normal memory, otherwise an abort is generated. In the case of EL3_PAYLOAD_BASE bl2_platform_setup was calling zero_normalmem with device memory and it generated an abort. Change-Id: If013603f209a12af488a9c54481f97a8f395b26a Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
2017-08-30Merge pull request #1062 from jeenu-arm/cpu-fixesdanh-arm
Cpu macro fixes
2017-08-29Merge pull request #1071 from jeenu-arm/syntax-fixdanh-arm
plat/arm: Fix ARM_INSTANTIATE_LOCK syntax anomaly
2017-08-29Tegra: Rename CORTEX_A57_ACTLR_EL1 to *CPUACTLR*Eleanor Bonnici
CORTEX_A57_ACTLR_EL1 macro refers to the CPUACTLR_EL1 register. Since ACTLR_EL1 is a different register (not implemented in Cortex-A57) this patch renames this macro for clarity. Change-Id: I94d7d564cd2423ae032bbdd59a99d2dc535cdff6 Signed-off-by: Eleanor Bonnici <Eleanor.bonnici@arm.com>