| b3bcbcf1 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #103 from athoelke:dh/tf-issues#68-v3 |
| 1151c821 | 15-Apr-2014 |
Dan Handley <dan.handley@arm.com> |
Allow BL3-2 platform definitions to be optional
The generic image loading and IO FIP code no longer forces the platform to create BL3-2 (Secure-EL1 Payload) specific definitions. The BL3-2 loading c
Allow BL3-2 platform definitions to be optional
The generic image loading and IO FIP code no longer forces the platform to create BL3-2 (Secure-EL1 Payload) specific definitions. The BL3-2 loading code in bl2/bl2main.c is wrapped by a #ifdef BL32_BASE blocks, allowing the BL3-2 definitions to be optional. Similarly for the name_uuid array defintion in drivers/io/io_fip.c.
Also update the porting guide to reflect this change.
The BL3-2 platform definitions remain non-configurably present in the FVP port.
Fixes ARM-software/tf-issues#68
Change-Id: Iea28b4e94d87a31f5522f271e290919a8a955460
show more ...
|
| dce74b89 | 09-May-2014 |
Achin Gupta <achin.gupta@arm.com> |
Introduce interrupt handling framework in BL3-1
This patch adds a common handler for FIQ and IRQ exceptions in the BL3-1 runtime exception vector table. This function determines the interrupt type a
Introduce interrupt handling framework in BL3-1
This patch adds a common handler for FIQ and IRQ exceptions in the BL3-1 runtime exception vector table. This function determines the interrupt type and calls its handler. A crash is reported if an inconsistency in the interrupt management framework is detected. In the event of a spurious interrupt, execution resumes from the instruction where the interrupt was generated.
This patch also removes 'cm_macros.S' as its contents have been moved to 'runtime_exceptions.S'
Change-Id: I3c85ecf8eaf43a3fac429b119ed0bd706d2e2093
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 ...
|
| f860e2cf | 14-May-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Doc: Add the "Building the Test Secure Payload" section
Add a section in the user guide explaining how to compile the TSP image and include it into the FIP. This includes instructions to make the TS
Doc: Add the "Building the Test Secure Payload" section
Add a section in the user guide explaining how to compile the TSP image and include it into the FIP. This includes instructions to make the TSP run from Trusted DRAM (rather than Trusted SRAM) on FVP.
Change-Id: I04780757a149eeb5482a12a61e821be947b882c0
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 ...
|
| 39f6a68b | 22-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #85 from hliebel/hl/bl30-doc
Improve BL3-0 documentation |
| 36eb6a75 | 01-May-2014 |
Harry Liebel <Harry.Liebel@arm.com> |
Improve BL3-0 documentation
Provide some information about the expected use of BL3-0.
Fixes ARM-software/tf-issues#144
Change-Id: I5c8d59a675578394be89481ae4ec39ca37522750 |
| ec786cbc | 19-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #78 from jeenuv:tf-issues-148 |
| 2da8d8bf | 12-May-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
Add build configuration for timer save/restore
At present, non-secure timer register contents are saved and restored as part of world switch by BL3-1. This effectively means that the non-secure time
Add build configuration for timer save/restore
At present, non-secure timer register contents are saved and restored as part of world switch by BL3-1. This effectively means that the non-secure timer stops, and non-secure timer interrupts are prevented from asserting until BL3-1 switches back, introducing latency for non-secure services. Often, secure world might depend on alternate sources for secure interrupts (secure timer or platform timer) instead of non-secure timers, in which case this save and restore is unnecessary.
This patch introduces a boolean build-time configuration NS_TIMER_SWITCH to choose whether or not to save and restore non-secure timer registers upon world switch. The default choice is made not to save and restore them.
Fixes ARM-software/tf-issues#148
Change-Id: I1b9d623606acb9797c3e0b02fb5ec7c0a414f37e
show more ...
|
| c3c1e9b0 | 15-May-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
Document summary of build options in user guide
Change-Id: I6bd077955bf3780168a874705974bbe72ea0f5f1 |
| 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 ...
|
| 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 ...
|
| ce19cf1b | 01-Apr-2014 |
Harry Liebel <Harry.Liebel@arm.com> |
FVP secure memory support documentation
Fixes ARM-software/tf-issues#64
Change-Id: I4e56c25f9dc7f486fbf6fa2f7d8253874119b989 |
| 2bf28e62 | 20-Mar-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Allocate single stacks for BL1 and BL2
The BL images share common stack management code which provides one coherent and one cacheable stack for every CPU. BL1 and BL2 just execute on the primary CPU
Allocate single stacks for BL1 and BL2
The BL images share common stack management code which provides one coherent and one cacheable stack for every CPU. BL1 and BL2 just execute on the primary CPU during boot and do not require the additional CPU stacks. This patch provides separate stack support code for UP and MP images, substantially reducing the RAM usage for BL1 and BL2 for the FVP platform.
This patch also provides macros for declaring stacks and calculating stack base addresses to improve consistency where this has to be done in the firmware.
The stack allocation source files are now included via platform.mk rather than the common BLx makefiles. This allows each platform to select the appropriate MP/UP stack support for each BL image.
Each platform makefile must be updated when including this commit.
Fixes ARM-software/tf-issues#76
Change-Id: Ia251f61b8148ffa73eae3f3711f57b1ffebfa632
show more ...
|
| 9e86490f | 31-Mar-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Define frequency of system counter in platform code
BL3-1 architecture setup code programs the system counter frequency into the CNTFRQ_EL0 register. This frequency is defined by the platform, thoug
Define frequency of system counter in platform code
BL3-1 architecture setup code programs the system counter frequency into the CNTFRQ_EL0 register. This frequency is defined by the platform, though. This patch introduces a new platform hook that the architecture setup code can call to retrieve this information. In the ARM FVP port, this returns the first entry of the frequency modes table from the memory mapped generic timer.
All system counter setup code has been removed from BL1 as some platforms may not have initialized the system counters at this stage. The platform specific settings done exclusively in BL1 have been moved to BL3-1. In the ARM FVP port, this consists in enabling and initializing the System level generic timer. Also, the frequency change request in the counter control register has been set to 0 to make it explicit it's using the base frequency. The CNTCR_FCREQ() macro has been fixed in this context to give an entry number rather than a bitmask.
In future, when support for firmware update is implemented, there is a case where BL1 platform specific code will need to program the counter frequency. This should be implemented at that time.
This patch also updates the relevant documentation.
It properly fixes ARM-software/tf-issues#24
Change-Id: If95639b279f75d66ac0576c48a6614b5ccb0e84b
show more ...
|
| 65a9c0e9 | 31-Mar-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Revert "Move architecture timer setup to platform-specific code"
This reverts commit 1c297bf015226c182b66498d5a64b8b51c7624f5 because it introduced a bug: the CNTFRQ_EL0 register was no longer progr
Revert "Move architecture timer setup to platform-specific code"
This reverts commit 1c297bf015226c182b66498d5a64b8b51c7624f5 because it introduced a bug: the CNTFRQ_EL0 register was no longer programmed by all CPUs. bl31_platform_setup() function is invoked only in the cold boot path and consequently only on the primary cpu.
A subsequent commit will correctly implement the necessary changes to the counter frequency setup code.
Fixes ARM-software/tf-issues#125
Conflicts:
docs/firmware-design.md plat/fvp/bl31_plat_setup.c
Change-Id: Ib584ad7ed069707ac04cf86717f836136ad3ab54
show more ...
|
| 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 ...
|
| 64f6ea9b | 28-Feb-2014 |
Jeenu Viswambharan <jeenu.viswambharan@arm.com> |
Implement ARM Standard Service
This patch implements ARM Standard Service as a runtime service and adds support for call count, UID and revision information SMCs. The existing PSCI implementation is
Implement ARM Standard Service
This patch implements ARM Standard Service as a runtime service and adds support for call count, UID and revision information SMCs. The existing PSCI implementation is subsumed by the Standard Service calls and all PSCI calls are therefore dispatched by the Standard Service to the PSCI handler.
At present, PSCI is the only specification under Standard Service. Thus call count returns the number of PSCI calls implemented. As this is the initial implementation, a revision number of 0.1 is returned for call revision.
Fixes ARM-software/tf-issues#62
Change-Id: I6d4273f72ad6502636efa0f872e288b191a64bc1
show more ...
|
| 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 ...
|
| 4bfc2d21 | 13-Feb-2014 |
Jon Medhurst <tixy@linaro.org> |
Enable platforms to omit some bootloaders
If a platform doesn't specify a BLx_SOURCE variable, then building of the corresponding bootloader isn't attempted. Also allow BL3-3 to be omitted from the
Enable platforms to omit some bootloaders
If a platform doesn't specify a BLx_SOURCE variable, then building of the corresponding bootloader isn't attempted. Also allow BL3-3 to be omitted from the FIP.
Note, this change also removes support for PLAT=all and the 'fip' target from the 'all' recipe.
Fixes ARM-software/tf-issues#30
Change-Id: Ibdfead0440256eaf364617ecff65290ca6fe6240 Signed-off-by: Jon Medhurst <tixy@linaro.org>
show more ...
|
| b2388490 | 26-Feb-2014 |
Dan Handley <dan.handley@arm.com> |
Add v0.3 release documentation
Update the readme.md and change-log.md with release information.
Also, remove the "Detailed changes since last release" section of the change-log.md since the same in
Add v0.3 release documentation
Update the readme.md and change-log.md with release information.
Also, remove the "Detailed changes since last release" section of the change-log.md since the same information can be found in the GIT commit messages. Fixes ARM-software/tf-issues#22.
Change-Id: I968cc8aaf588aa5c34ba8f1c12a5b797a46e04f5
show more ...
|
| 57de6d72 | 27-Feb-2014 |
Dan Handley <dan.handley@arm.com> |
Consolidate design and porting documentation
Consolidate firmware-design.md and porting-guide.pm so that recently added sections fit better with pre-existing sections. Make the documentation more co
Consolidate design and porting documentation
Consolidate firmware-design.md and porting-guide.pm so that recently added sections fit better with pre-existing sections. Make the documentation more consistent in use of terminology.
Change-Id: Id87050b096122fbd845189dc2fe1cd17c3003468
show more ...
|
| 5e1e9200 | 25-Feb-2014 |
Dan Handley <dan.handley@arm.com> |
Add EL3 runtime services and SPD documentation
1. Add design information on EL3 runtime services and Secure-EL1 Payload Dispatchers (SPD) to firmware-design.md.
2. Create new EL3 runtime service wr
Add EL3 runtime services and SPD documentation
1. Add design information on EL3 runtime services and Secure-EL1 Payload Dispatchers (SPD) to firmware-design.md.
2. Create new EL3 runtime service writer's guide (rt-svc-writers-guide.md) to ease creation of new runtime services.
Change-Id: I670aeb5fc246e25c6e599a15139aac886a0074fd
show more ...
|