| a37255a2 | 22-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Make the memory layout more flexible
Currently the platform code gets to define the base address of each boot loader image. However, the linker scripts couteract this flexibility by enforcing a fixe
Make the memory layout more flexible
Currently the platform code gets to define the base address of each boot loader image. However, the linker scripts couteract this flexibility by enforcing a fixed overall layout of the different images. For example, they require that the BL3-1 image sits below the BL2 image. Choosing BL3-1 and BL2 base addresses in such a way that it violates this constraint makes the build fail at link-time.
This patch requires the platform code to now define a limit address for each image. The linker scripts check that the image fits within these bounds so they don't rely anymore on the position of a given image in regard to the others.
Fixes ARM-software/tf-issues#163
Change-Id: I8c108646825da19a6a8dfb091b613e1dd4ae133c
show more ...
|
| 4f59d835 | 22-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Make BL1 RO and RW base addresses configurable
BL1 RO and RW base address used to be fixed, respectively to the first address of the Trusted ROM and the first address of the Trusted RAM.
Introduce
Make BL1 RO and RW base addresses configurable
BL1 RO and RW base address used to be fixed, respectively to the first address of the Trusted ROM and the first address of the Trusted RAM.
Introduce new platform defines to configure the BL1 RO and RW base addresses.
Change-Id: If26616513a47798593a4bb845a4b0fb37c867cd6
show more ...
|
| 8957fc76 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #104 from athoelke:at/tsp-entrypoints-v2 |
| 8545a874 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #102 from achingupta:ag/tf-issues#104-v2 |
| 92535302 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #100 from jcastillo-arm:jc/tf-issues/149-v4 |
| 445fe84f | 22-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Limit BL3-1 read/write access to SRAM
At present BL3-1 has access to all of the SRAM, including regions that are mapped as read-only and non-cacheable by other firmware images.
This patch restricts
Limit BL3-1 read/write access to SRAM
At present BL3-1 has access to all of the SRAM, including regions that are mapped as read-only and non-cacheable by other firmware images.
This patch restricts BL3-1 to only be able to read/write from memory used for its own data sections
Change-Id: I26cda1b9ba803d91a9eacda768f3ce7032c6db94
Conflicts:
plat/fvp/bl31_plat_setup.c
show more ...
|
| 6cf89021 | 09-May-2014 |
Achin Gupta <achin.gupta@arm.com> |
Add support for synchronous FIQ handling in TSP
This patch adds support in the TSP for handling S-EL1 interrupts handed over by the TSPD. It includes GIC support in its platform port, updates variou
Add support for synchronous FIQ handling in TSP
This patch adds support in the TSP for handling S-EL1 interrupts handed over by the TSPD. It includes GIC support in its platform port, updates various statistics related to FIQ handling, exports an entry point that the TSPD can use to hand over interrupts and defines the handover protocol w.r.t what context is the TSP expected to preserve and the state in which the entry point is invoked by the TSPD.
Change-Id: I93b22e5a8133400e4da366f5fc862f871038df39
show more ...
|
| dcc1816c | 04-May-2014 |
Achin Gupta <achin.gupta@arm.com> |
Introduce platform api to access an ARM GIC
This patch introduces a set of functions which allow generic firmware code e.g. the interrupt management framework to access the platform interrupt contro
Introduce platform api to access an ARM GIC
This patch introduces a set of functions which allow generic firmware code e.g. the interrupt management framework to access the platform interrupt controller. APIs for finding the type and id of the highest pending interrupt, acknowledging and EOIing an interrupt and finding the security state of an interrupt have been added. It is assumed that the platform interrupt controller implements the v2.0 of the ARM GIC architecture specification. Support for v3.0 of the specification for managing interrupts in EL3 and the platform port will be added in the future.
Change-Id: Ib3a01c2cf3e3ab27806930f1be79db2b29f91bcf
show more ...
|
| e1333f75 | 09-May-2014 |
Achin Gupta <achin.gupta@arm.com> |
Introduce interrupt registration framework in BL3-1
This patch introduces a framework for registering interrupts routed to EL3. The interrupt routing model is governed by the SCR_EL3.IRQ and FIQ bit
Introduce interrupt registration framework in BL3-1
This patch introduces a framework for registering interrupts routed to EL3. The interrupt routing model is governed by the SCR_EL3.IRQ and FIQ bits and the security state an interrupt is generated in. The framework recognizes three type of interrupts depending upon which exception level and security state they should be handled in i.e. Secure EL1 interrupts, Non-secure interrupts and EL3 interrupts. It provides an API and macros that allow a runtime service to register an handler for a type of interrupt and specify the routing model. The framework validates the routing model and uses the context management framework to ensure that it is applied to the SCR_EL3 prior to entry into the target security state. It saves the handler in internal data structures. An API is provided to retrieve the handler when an interrupt of a particular type is asserted. Registration is expected to be done once by the primary CPU. The same handler and routing model is used for all CPUs.
Support for EL3 interrupts will be added to the framework in the future. A makefile flag has been added to allow the FVP port choose between ARM GIC v2 and v3 support in EL3. The latter version is currently unsupported.
A framework for handling interrupts in BL3-1 will be introduced in subsequent patches. The default routing model in the absence of any handlers expects no interrupts to be routed to EL3.
Change-Id: Idf7c023b34fcd4800a5980f2bef85e4b5c29e649
show more ...
|
| 53514b29 | 20-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
fvp: Move TSP from Secure DRAM to Secure SRAM
The TSP used to execute from secure DRAM on the FVPs because there was not enough space in Trusted SRAM to fit it in. Thanks to recent RAM usage enhance
fvp: Move TSP from Secure DRAM to Secure SRAM
The TSP used to execute from secure DRAM on the FVPs because there was not enough space in Trusted SRAM to fit it in. Thanks to recent RAM usage enhancements being implemented, we have made enough savings for the TSP to execute in SRAM.
However, there is no contiguous free chunk of SRAM big enough to hold the TSP. Therefore, the different bootloader images need to be moved around to reduce memory fragmentation. This patch keeps the overall memory layout (i.e. keeping BL1 R/W at the bottom, BL2 at the top and BL3-1 in between) but moves the base addresses of all the bootloader images in such a way that: - memory fragmentation is reduced enough to fit BL3-2 in; - new base addresses are suitable for release builds as well as debug ones; - each image has a few extra kilobytes for future growth. BL3-1 and BL3-2 are the images which received the biggest slice of the cake since they will most probably grow the most.
A few useful numbers for reference (valid at the time of this patch): |-----------------------|------------------------------- | image size (debug) | extra space for the future --------|-----------------------|------------------------------- BL1 R/W | 20 KB | 4 KB BL2 | 44 KB | 4 KB BL3-1 | 108 KB | 12 KB BL3-2 | 56 KB | 8 KB --------|-----------------------|------------------------------- Total | 228 KB | 28 KB = 256 KB --------|-----------------------|-------------------------------
Although on FVPs the TSP now executes from Trusted SRAM by default, this patch keeps the option to execute it from Trusted DRAM. This is controlled by the build configuration 'TSP_RAM_LOCATION'.
Fixes ARM-Software/tf-issues#81
Change-Id: Ifb9ef2befa9a2d5ac0813f7f79834df7af992b94
show more ...
|
| 2467f70f | 20-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
TSP: Let the platform decide which secure memory to use
The TSP's linker script used to assume that the TSP would execute from secure DRAM. Although it is currently the case on FVPs, platforms are f
TSP: Let the platform decide which secure memory to use
The TSP's linker script used to assume that the TSP would execute from secure DRAM. Although it is currently the case on FVPs, platforms are free to use any secure memory they wish.
This patch introduces the flexibility to load the TSP into any secure memory. The platform code gets to specify the extents of this memory in the platform header file, as well as the BL3-2 image limit address. The latter definition allows to check in a generic way that the BL3-2 image fits in its bounds.
Change-Id: I9450f2d8b32d74bd00b6ce57a0a1542716ab449c
show more ...
|
| 364daf93 | 16-May-2014 |
Juan Castillo <juan.castillo@arm.com> |
Reserve some DDR DRAM for secure use on FVP platforms
TZC-400 is configured to set the last 16MB of DRAM1 as secure memory and the rest of DRAM as non-secure. Non-secure software must not attempt to
Reserve some DDR DRAM for secure use on FVP platforms
TZC-400 is configured to set the last 16MB of DRAM1 as secure memory and the rest of DRAM as non-secure. Non-secure software must not attempt to access the 16MB secure area.
Device tree files (sources and binaries) have been updated to match this configuration, removing that memory from the Linux physical memory map.
To use UEFI and Linux with this patch, the latest version of UEFI and the updated device tree files are required. Check the user guide in the documentation for more details.
Replaced magic numbers with #define for memory region definition in the platform security initialization function.
Fixes ARM-software/tf-issues#149
Change-Id: Ia5d070244aae6c5288ea0e6c8e89d92859522bfe
show more ...
|
| dbad1bac | 24-Apr-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Add support for BL3-1 as a reset vector
This change adds optional reset vector support to BL3-1 which means BL3-1 entry point can detect cold/warm boot, initialise primary cpu, set up cci and mail b
Add support for BL3-1 as a reset vector
This change adds optional reset vector support to BL3-1 which means BL3-1 entry point can detect cold/warm boot, initialise primary cpu, set up cci and mail box.
When using BL3-1 as a reset vector it is assumed that the BL3-1 platform code can determine the location of the BL3-2 images, or load them as there are no parameters that can be passed to BL3-1 at reset.
It also fixes the incorrect initialisation of mailbox registers on the FVP platform
This feature can be enabled by building the code with make variable RESET_TO_BL31 set as 1
Fixes ARM-software/TF-issues#133 Fixes ARM-software/TF-issues#20
Change-Id: I4e23939b1c518614b899f549f1e8d412538ee570
show more ...
|
| 6871c5d3 | 16-May-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Rework memory information passing to BL3-x images
The issues addressed in this patch are:
1. Remove meminfo_t from the common interfaces in BL3-x, expecting that platform code will find a suitable
Rework memory information passing to BL3-x images
The issues addressed in this patch are:
1. Remove meminfo_t from the common interfaces in BL3-x, expecting that platform code will find a suitable mechanism to determine the memory extents in these images and provide it to the BL3-x images.
2. Remove meminfo_t and bl31_plat_params_t from all FVP BL3-x code as the images use link-time information to determine memory extents.
meminfo_t is still used by common interface in BL1/BL2 for loading images
Change-Id: I4e825ebf6f515b59d84dc2bdddf6edbf15e2d60f
show more ...
|
| 4112bfa0 | 15-Apr-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Populate BL31 input parameters as per new spec
This patch is based on spec published at https://github.com/ARM-software/tf-issues/issues/133
It rearranges the bl31_args struct into bl31_params and
Populate BL31 input parameters as per new spec
This patch is based on spec published at https://github.com/ARM-software/tf-issues/issues/133
It rearranges the bl31_args struct into bl31_params and bl31_plat_params which provide the information needed for Trusted firmware and platform specific data via x0 and x1
On the FVP platform BL3-1 params and BL3-1 plat params and its constituents are stored at the start of TZDRAM.
The information about memory availability and size for BL3-1, BL3-2 and BL3-3 is moved into platform specific data.
Change-Id: I8b32057a3d0dd3968ea26c2541a0714177820da9
show more ...
|
| 29fb905d | 15-May-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Rework handover interface between BL stages
This patch reworks the handover interface from: BL1 to BL2 and BL2 to BL3-1. It removes the raise_el(), change_el(), drop_el() and run_image() functions a
Rework handover interface between BL stages
This patch reworks the handover interface from: BL1 to BL2 and BL2 to BL3-1. It removes the raise_el(), change_el(), drop_el() and run_image() functions as they catered for code paths that were never exercised. BL1 calls bl1_run_bl2() to jump into BL2 instead of doing the same by calling run_image(). Similarly, BL2 issues the SMC to transfer execution to BL3-1 through BL1 directly. Only x0 and x1 are used to pass arguments to BL31. These arguments and parameters for running BL3-1 are passed through a reference to a 'el_change_info_t' structure. They were being passed value in general purpose registers earlier.
Change-Id: Id4fd019a19a9595de063766d4a66295a2c9307e1
show more ...
|
| a43d431b | 07-Apr-2014 |
Soby Mathew <soby.mathew@arm.com> |
Rework BL3-1 unhandled exception handling and reporting
This patch implements the register reporting when unhandled exceptions are taken in BL3-1. Unhandled exceptions will result in a dump of regis
Rework BL3-1 unhandled exception handling and reporting
This patch implements the register reporting when unhandled exceptions are taken in BL3-1. Unhandled exceptions will result in a dump of registers to the console, before halting execution by that CPU. The Crash Stack, previously called the Exception Stack, is used for this activity. This stack is used to preserve the CPU context and runtime stack contents for debugging and analysis.
This also introduces the per_cpu_ptr_cache, referenced by tpidr_el3, to provide easy access to some of BL3-1 per-cpu data structures. Initially, this is used to provide a pointer to the Crash stack.
panic() now prints the the error file and line number in Debug mode and prints the PC value in release mode.
The Exception Stack is renamed to Crash Stack with this patch. The original intention of exception stack is no longer valid since we intend to support several valid exceptions like IRQ and FIQ in the trusted firmware context. This stack is now utilized for dumping and reporting the system state when a crash happens and hence the rename.
Fixes ARM-software/tf-issues#79 Improve reporting of unhandled exception
Change-Id: I260791dc05536b78547412d147193cdccae7811a
show more ...
|
| ef27980d | 16-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #69 from sandrine-bailleux:sb/split-mmu-fcts-per-el |
| 84dbf6ff | 09-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Fixes for TZC configuration on FVP
The TZC configuration on FVP was incorrectly allowing both secure and non-secure accesses to the DRAM, which can cause aliasing problems for software. It was also
Fixes for TZC configuration on FVP
The TZC configuration on FVP was incorrectly allowing both secure and non-secure accesses to the DRAM, which can cause aliasing problems for software. It was also not enabling virtio access on some models.
This patch fixes both of those issues. The patch also enabless non-secure access to the DDR RAM for all devices with defined IDs.
The third region of DDR RAM has been removed from the configuration as this is not used in any of the FVP models.
Fixes ARM-software/tf-issues#150 Fixes ARM-software/tf-issues#151
Change-Id: I60ad5daaf55e14f178affb8afd95d17e7537abd7
show more ...
|
| b793e431 | 09-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
fvp: Provide per-EL MMU setup functions
Instead of having a single version of the MMU setup functions for all bootloader images that can execute either in EL3 or in EL1, provide separate functions f
fvp: Provide per-EL MMU setup functions
Instead of having a single version of the MMU setup functions for all bootloader images that can execute either in EL3 or in EL1, provide separate functions for EL1 and EL3. Each bootloader image can then call the appropriate version of these functions. The aim is to reduce the amount of code compiled in each BL image by embedding only what's needed (e.g. BL1 to embed only EL3 variants).
Change-Id: Ib86831d5450cf778ae78c9c1f7553fe91274c2fa
show more ...
|
| b3254e85 | 09-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Introduce IS_IN_ELX() macros
The goal of these macros is to improve code readability by providing a concise way to check whether we are running in the expected exception level.
Change-Id: If9aebadf
Introduce IS_IN_ELX() macros
The goal of these macros is to improve code readability by providing a concise way to check whether we are running in the expected exception level.
Change-Id: If9aebadfb6299a5196e9a582b442f0971d9909b1
show more ...
|
| 60bc4bbd | 08-May-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #65 from vikramkanigiri/vk/console_init
Ensure a console is initialized before it is used |
| 770de65f | 27-Mar-2014 |
Vikram Kanigiri <vikram.kanigiri@arm.com> |
Ensure a console is initialized before it is used
This patch moves console_init() to bl32_early_platform_setup(). It also ensures that console_init() is called in each blX_early_platform_setup() fun
Ensure a console is initialized before it is used
This patch moves console_init() to bl32_early_platform_setup(). It also ensures that console_init() is called in each blX_early_platform_setup() function before the console is used e.g. through a printf call in an assert() statement.
Fixes ARM-software/TF-issues#127
Change-Id: I5b1f17e0152bab674d807d2a95ff3689c5d4794e
show more ...
|
| 8067ae3f | 08-May-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #61 from athoelke/use-mrs-msr-from-assembler-v2
Use MRS/MSR instructions in assembler code v2 |
| a1ec2f4c | 08-May-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #60 from athoelke/disable-mmu-v2
Replace disable_mmu with assembler version v2 |