| 0796fe01 | 25-Mar-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Initialise UART console in all bootloader stages
This patch reworks the console driver to ensure that each bootloader stage initializes it independently. As a result, both BL3-1 and BL2 platform cod
Initialise UART console in all bootloader stages
This patch reworks the console driver to ensure that each bootloader stage initializes it independently. As a result, both BL3-1 and BL2 platform code now calls console_init() instead of relying on BL1 to perform console setup
Fixes ARM-software/tf-issues#120
Change-Id: Ic4d66e0375e40a2fc7434afcabc8bbb4715c14ab
show more ...
|
| c1df3be7 | 12-Mar-2014 |
Soby Mathew <soby.mathew@arm.com> |
Move console functions out of pl011.c
This commit isolates the accessor functions in pl011.c and builds a wrapper layer for console functions.
This also modifies the console driver to use the pl011
Move console functions out of pl011.c
This commit isolates the accessor functions in pl011.c and builds a wrapper layer for console functions.
This also modifies the console driver to use the pl011 FIFO.
Fixes ARM-software/tf-issues#63
Change-Id: I3b402171cd14a927831bf5e5d4bb310b6da0e9a8
show more ...
|
| d118f9f8 | 21-Mar-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Add standby state support in PSCI cpu_suspend api
This patch adds support in the generic PSCI implementation to call a platform specific function to enter a standby state using an example implementa
Add standby state support in PSCI cpu_suspend api
This patch adds support in the generic PSCI implementation to call a platform specific function to enter a standby state using an example implementation in ARM FVP port
Fixes ARM-software/tf-issues#94 Change-Id: Ic1263fcf25f28e09162ad29dca954125f9aa8cc9
show more ...
|
| 886278e5 | 20-Mar-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Semihosting: Fix file mode to load binaries on Windows
Trusted firmware binaries loaded via semihosting used to be opened using 'r' mode (i.e. read mode). This is fine on POSIX conforming systems (
Semihosting: Fix file mode to load binaries on Windows
Trusted firmware binaries loaded via semihosting used to be opened using 'r' mode (i.e. read mode). This is fine on POSIX conforming systems (including Linux) but for Windows it also means that the file should be opened in text mode. 'rb' mode must be specified instead for binary mode. On POSIX conforming systems, 'rb' mode is equivalent to 'r' mode so it does no harm.
Fixes ARM-software/tf-issues#69
Change-Id: Ifa53f2ecfd765f572dea5dd73191f9fe2b2c2011
show more ...
|
| 6ba0b6d6 | 11-Mar-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Remove partially qualified asm helper functions
Each ARM Trusted Firmware image should know in which EL it is running and it should use the corresponding register directly instead of reading current
Remove partially qualified asm helper functions
Each ARM Trusted Firmware image should know in which EL it is running and it should use the corresponding register directly instead of reading currentEL and knowing which asm register to read/write
Change-Id: Ief35630190b6f07c8fbb7ba6cb20db308f002945
show more ...
|
| 5132060c | 20-Mar-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Fix the disable_mmu code
Remove the hard coding of all the MMU related registers with 0 and disable MMU by clearing the M and C bit in SCTLR_ELx
Change-Id: I4a0b1bb14a604734b74c32eb31315d8504a7b8d8 |
| 1c297bf0 | 07-Jan-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
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 gener
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
show more ...
|
| 92a12866 | 07-Jan-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
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 |
| 48e2ca79 | 18-Feb-2014 |
Ryan Harkin <ryan.harkin@linaro.org> |
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 ch
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>
show more ...
|
| 38aa76a8 | 26-Feb-2014 |
Jon Medhurst <tixy@linaro.org> |
fvp: Make use of the generic MMU translation table setup code
Change-Id: I559c5a4d86cad55ce3f6ad71285b538d3cfd76dc Signed-off-by: Jon Medhurst <tixy@linaro.org> |
| 6d55d109 | 12-Feb-2014 |
Jon Medhurst <tixy@linaro.org> |
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
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>
show more ...
|
| cf6eeb8a | 11-Feb-2014 |
Jon Medhurst <tixy@linaro.org> |
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 us
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>
show more ...
|
| 20d284c0 | 21-Feb-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
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 c
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
show more ...
|
| 08c28d53 | 20-Feb-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
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: I5141653c8249
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
show more ...
|
| 375f538a | 18-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Add Test Secure Payload Dispatcher (TSPD) service
This patch adds the TSPD service which is responsible for managing communication between the non-secure state and the Test Secure Payload (TSP) exec
Add Test Secure Payload Dispatcher (TSPD) service
This patch adds the TSPD service which is responsible for managing communication between the non-secure state and the Test Secure Payload (TSP) executing in S-EL1.
The TSPD does the following:
1. Determines the location of the TSP (BL3-2) image and passes control to it for initialization. This is done by exporting the 'bl32_init()' function.
2. Receives a structure containing the various entry points into the TSP image as a response to being initialized. The TSPD uses this information to determine how the TSP should be entered depending on the type of operation.
3. Implements a synchronous mechanism for entering into and returning from the TSP image. This mechanism saves the current C runtime context on top of the current stack and jumps to the TSP through an ERET instruction. The TSP issues an SMC to indicate completion of the previous request. The TSPD restores the saved C runtime context and resumes TSP execution.
This patch also introduces a Make variable 'SPD' to choose the specific SPD to include in the build. By default, no SPDs are included in the build.
Change-Id: I124da5695cdc510999b859a1bf007f4d049e04f3 Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
show more ...
|
| 7c88f3f6 | 18-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Add Test Secure Payload (BL3-2) image
This patch adds a simple TSP as the BL3-2 image. The secure payload executes in S-EL1. It paves the way for the addition of the TSP dispatcher runtime service t
Add Test Secure Payload (BL3-2) image
This patch adds a simple TSP as the BL3-2 image. The secure payload executes in S-EL1. It paves the way for the addition of the TSP dispatcher runtime service to BL3-1. The TSP and the dispatcher service will serve as an example of the runtime firmware's ability to toggle execution between the non-secure and secure states in response to SMC request from the non-secure state. The TSP will be replaced by a Trusted OS in a real system.
The TSP also exports a set of handlers which should be called in response to a PSCI power management event e.g a cpu being suspended or turned off. For now it runs out of Secure DRAM on the ARM FVP port and will be moved to Secure SRAM later. The default translation table setup code assumes that the caller is executing out of secure SRAM. Hence the TSP exports its own translation table setup function.
The TSP only services Fast SMCs, is non-reentrant and non-interruptible. It does arithmetic operations on two sets of four operands, one set supplied by the non-secure client, and the other supplied by the TSP dispatcher in EL3. It returns the result according to the Secure Monitor Calling convention standard.
This TSP has two functional entry points:
- An initial, one-time entry point through which the TSP is initialized and prepares for receiving further requests from secure monitor/dispatcher
- A fast SMC service entry point through which the TSP dispatcher requests secure services on behalf of the non-secure client
Change-Id: I24377df53399307e2560a025eb2c82ce98ab3931 Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
show more ...
|
| 8aa0cd43 | 09-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Specify address of UART device to use as a console
This patch adds the ability to specify the base address of a UART device for initialising the console. This allows a boot loader stage to use a dif
Specify address of UART device to use as a console
This patch adds the ability to specify the base address of a UART device for initialising the console. This allows a boot loader stage to use a different UART device from UART0 (default) for the console.
Change-Id: Ie60b927389ae26085cfc90d22a564ff83ba62955
show more ...
|
| a0cd989d | 09-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Factor out translation table setup in ARM FVP port
This patch factors out the ARM FVP specific code to create MMU translation tables so that it is possible for a boot loader stage to create a differ
Factor out translation table setup in ARM FVP port
This patch factors out the ARM FVP specific code to create MMU translation tables so that it is possible for a boot loader stage to create a different set of tables instead of using the default ones. The default translation tables are created with the assumption that the calling boot loader stage executes out of secure SRAM. This might not be true for the BL3_2 stage in the future.
A boot loader stage can define the `fill_xlation_tables()` function as per its requirements. It returns a reference to the level 1 translation table which is used by the common platform code to setup the TTBR_EL3.
This patch is a temporary solution before a larger rework of translation table creation logic is introduced.
Change-Id: I09a075d5da16822ee32a411a9dbe284718fb4ff6
show more ...
|
| 35ca3511 | 19-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Add support for BL3-2 in BL3-1
This patch adds the following support to the BL3-1 stage:
1. BL3-1 allows runtime services to specify and determine the security state of the next image after BL3-
Add support for BL3-2 in BL3-1
This patch adds the following support to the BL3-1 stage:
1. BL3-1 allows runtime services to specify and determine the security state of the next image after BL3-1. This has been done by adding the `bl31_set_next_image_type()` & `bl31_get_next_image_type()` apis. The default security state is non-secure. The platform api `bl31_get_next_image_info()` has been modified to let the platform decide which is the next image in the desired security state.
2. BL3-1 exports the `bl31_prepare_next_image_entry()` function to program entry into the target security state. It uses the apis introduced in 1. to do so.
3. BL3-1 reads the information populated by BL2 about the BL3-2 image into its internal data structures.
4. BL3-1 introduces a weakly defined reference `bl32_init()` to allow initialisation of a BL3-2 image. A runtime service like the Secure payload dispatcher will define this function if present.
Change-Id: Icc46dcdb9e475ce6575dd3f9a5dc7a48a83d21d1
show more ...
|
| a3050ed5 | 19-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Add support for BL3-2 in BL2
This patch adds support for loading a BL3-2 image in BL2. In case a BL3-2 image is found, it also passes information to BL3-1 about where it is located and the extents o
Add support for BL3-2 in BL2
This patch adds support for loading a BL3-2 image in BL2. In case a BL3-2 image is found, it also passes information to BL3-1 about where it is located and the extents of memory available to it. Information about memory extents is populated by platform specific code.
The documentation has also been updated to reflect the above changes.
Change-Id: I526b2efb80babebab1318f2b02e319a86d6758b0 Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
show more ...
|
| e4d084ea | 19-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Rework BL2 to BL3-1 hand over interface
This patch reworks BL2 to BL3-1 hand over interface by introducing a composite structure (bl31_args) that holds the superset of information that needs to be p
Rework BL2 to BL3-1 hand over interface
This patch reworks BL2 to BL3-1 hand over interface by introducing a composite structure (bl31_args) that holds the superset of information that needs to be passed from BL2 to BL3-1.
- The extents of secure memory available to BL3-1 - The extents of memory available to BL3-2 (not yet implemented) and BL3-3 - Information to execute BL3-2 (not yet implemented) and BL3-3 images
This patch also introduces a new platform API (bl2_get_bl31_args_ptr) that needs to be implemented by the platform code to export reference to bl31_args structure which has been allocated in platform-defined memory.
The platform will initialize the extents of memory available to BL3-3 during early platform setup in bl31_args structure. This obviates the need for bl2_get_ns_mem_layout platform API.
BL2 calls the bl2_get_bl31_args_ptr function to get a reference to bl31_args structure. It uses the 'bl33_meminfo' field of this structure to load the BL3-3 image. It sets the entry point information for the BL3-3 image in the 'bl33_image_info' field of this structure. The reference to this structure is passed to the BL3-1 image.
Also fixes issue ARM-software/tf-issues#25
Change-Id: Ic36426196dd5ebf89e60ff42643bed01b3500517
show more ...
|
| ca823d2c | 02-Feb-2014 |
Achin Gupta <achin.gupta@arm.com> |
Increase coherent stack sizes
This patch increases coherent stack size for both debug and release builds in order to accommodate stack-heavy printf() and extended EL3 functionality
Change-Id: I30ef
Increase coherent stack sizes
This patch increases coherent stack size for both debug and release builds in order to accommodate stack-heavy printf() and extended EL3 functionality
Change-Id: I30ef30530a01517a97e63d703873374828c09f20
show more ...
|
| 74cbb839 | 17-Feb-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
Move translation tables into separate section
This patch moves the translation tables into their own section. This saves space that would otherwise have been lost in padding due to page table alignm
Move translation tables into separate section
This patch moves the translation tables into their own section. This saves space that would otherwise have been lost in padding due to page table alignment constraints. The BL31 and BL32 bases have been consequently adjusted.
Change-Id: Ibd65ae8a5ce4c4ea9a71a794c95bbff40dc63e65
show more ...
|
| 561cd33e | 14-Feb-2014 |
Harry Liebel <Harry.Liebel@arm.com> |
Add Firmware Image Package (FIP) driver
The Firmware Image Package (FIP) driver allows for data to be loaded from a FIP on platform storage. The FVP supports loading bootloader images from a FIP loc
Add Firmware Image Package (FIP) driver
The Firmware Image Package (FIP) driver allows for data to be loaded from a FIP on platform storage. The FVP supports loading bootloader images from a FIP located in NOR FLASH.
The implemented FVP policy states that bootloader images will be loaded from a FIP in NOR FLASH if available and fall back to loading individual images from semi-hosting.
NOTE: - BL3-3(e.g. UEFI) is loaded into DRAM and needs to be configured to run from the BL33_BASE address. This is currently set to DRAM_BASE+128MB for the FVP.
Change-Id: I2e4821748e3376b5f9e467cf3ec09509e43579a0
show more ...
|
| 9d72b4ea | 10-Feb-2014 |
James Morrissey <james.morrissey@arm.com> |
Implement load_image in terms of IO abstraction
The modified implementation uses the IO abstraction rather than making direct semi-hosting calls. The semi-hosting driver is now registered for the F
Implement load_image in terms of IO abstraction
The modified implementation uses the IO abstraction rather than making direct semi-hosting calls. The semi-hosting driver is now registered for the FVP platform during initialisation of each boot stage where it is used. Additionally, the FVP platform includes a straightforward implementation of 'plat_get_image_source' which provides a generic means for the 'load_image' function to determine how to access the image data.
Change-Id: Ia34457b471dbee990c7b3c79de7aee4ceea51aa6
show more ...
|