| 6c0b45d1 | 19-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Correctly dimension the PSCI aff_map_node array
The array of affinity nodes is currently allocated for 32 entries with the PSCI_NUM_AFFS value defined in psci.h. This is not enough for large systems
Correctly dimension the PSCI aff_map_node array
The array of affinity nodes is currently allocated for 32 entries with the PSCI_NUM_AFFS value defined in psci.h. This is not enough for large systems, and will substantially over allocate the array for small systems.
This patch introduces an optional platform definition PLATFORM_NUM_AFFS to platform_def.h. If defined this value is used for PSCI_NUM_AFFS, otherwise a value of two times the number of CPU cores is used.
The FVP port defines PLATFORM_NUM_AFFS to be 10 which saves nearly 1.5KB of memory.
Fixes ARM-software/tf-issues#192
Change-Id: I68e30ac950de88cfbd02982ba882a18fb69c1445
show more ...
|
| 13ac44a5 | 19-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Eliminate psci_suspend_context array
psci_suspend_context is an array of cache-line aligned structures containing the single power_state integer per cpu. This array is the only structure indexed by
Eliminate psci_suspend_context array
psci_suspend_context is an array of cache-line aligned structures containing the single power_state integer per cpu. This array is the only structure indexed by the aff_map_node.data integer.
This patch saves 2KB of BL3-1 memory by placing the CPU power_state value directly in the aff_map_node structure. As a result, this value is now never cached and the cache clean when writing the value is no longer required.
Fixes ARM-software/tf-issues#195
Change-Id: Ib4c70c8f79eed295ea541e7827977a588a19ef9b
show more ...
|
| 167a9357 | 04-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Initialise CPU contexts from entry_point_info
Consolidate all BL3-1 CPU context initialization for cold boot, PSCI and SPDs into two functions: * The first uses entry_point_info to initialize the r
Initialise CPU contexts from entry_point_info
Consolidate all BL3-1 CPU context initialization for cold boot, PSCI and SPDs into two functions: * The first uses entry_point_info to initialize the relevant cpu_context for first entry into a lower exception level on a CPU * The second populates the EL1 and EL2 system registers as needed from the cpu_context to ensure correct entry into the lower EL
This patch alters the way that BL3-1 determines which exception level is used when first entering EL1 or EL2 during cold boot - this is now fully determined by the SPSR value in the entry_point_info for BL3-3, as set up by the platform code in BL2 (or otherwise provided to BL3-1).
In the situation that EL1 (or svc mode) is selected for a processor that supports EL2, the context management code will now configure all essential EL2 register state to ensure correct execution of EL1. This allows the platform code to run non-secure EL1 payloads directly without requiring a small EL2 stub or OS loader.
Change-Id: If9fbb2417e82d2226e47568203d5a369f39d3b0f
show more ...
|
| 5219862c | 23-Jun-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #140 from athoelke/at/psci_smc_handler
PSCI SMC handler improvements |
| ee94cc6f | 02-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Remove early_exceptions from BL3-1
The crash reporting support and early initialisation of the cpu_data allow the runtime_exception vectors to be used from the start in BL3-1, removing the need for
Remove early_exceptions from BL3-1
The crash reporting support and early initialisation of the cpu_data allow the runtime_exception vectors to be used from the start in BL3-1, removing the need for the additional early_exception vectors and 2KB of code from BL3-1.
Change-Id: I5f8997dabbaafd8935a7455910b7db174a25d871
show more ...
|
| 5e910074 | 02-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Per-cpu data cache restructuring
This patch prepares the per-cpu pointer cache for wider use by: * renaming the structure to cpu_data and placing in new header * providing accessors for this CPU, or
Per-cpu data cache restructuring
This patch prepares the per-cpu pointer cache for wider use by: * renaming the structure to cpu_data and placing in new header * providing accessors for this CPU, or other CPUs * splitting the initialization of the TPIDR pointer from the initialization of the cpu_data content * moving the crash stack initialization to a crash stack function * setting the TPIDR pointer very early during boot
Change-Id: Icef9004ff88f8eb241d48c14be3158087d7e49a3
show more ...
|
| 08ab89d3 | 14-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Provide cm_get/set_context() for current CPU
All callers of cm_get_context() pass the calling CPU MPIDR to the function. Providing a specialised version for the current CPU results in a reduction in
Provide cm_get/set_context() for current CPU
All callers of cm_get_context() pass the calling CPU MPIDR to the function. Providing a specialised version for the current CPU results in a reduction in code size and better readability.
The current function has been renamed to cm_get_context_by_mpidr() and the existing name is now used for the current-CPU version.
The same treatment has been done to cm_set_context(), although only both forms are used at present in the PSCI and TSPD code.
Change-Id: I91cb0c2f7bfcb950a045dbd9ff7595751c0c0ffb
show more ...
|
| 5003ecab | 10-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
PSCI SMC handler improvements
The SMC handler for PSCI was not correctly handling calls from secure states, or from AArch32.
This patch completes the handler implementation to correctly detect secu
PSCI SMC handler improvements
The SMC handler for PSCI was not correctly handling calls from secure states, or from AArch32.
This patch completes the handler implementation to correctly detect secure callers and to clear the top bits in parameters from AArch32 callers.
The patch also reorganises the switch statement to separate SMC64 and SMC32 function IDs which allows the compiler to generate much smaller code for the function.
Change-Id: I36b1ac81fb14253d257255d0477771d54fab0d11
show more ...
|
| a3781085 | 28-May-2014 |
Soby Mathew <soby.mathew@arm.com> |
Fix compilation issue for IMF_READ_INTERRUPT_ID build flag
This patch fixes the compilation issue for trusted firmware when the IMF_READ_INTERRUPT_ID is enabled.
Change-Id: I94ab613b9bc96a7c1935796
Fix compilation issue for IMF_READ_INTERRUPT_ID build flag
This patch fixes the compilation issue for trusted firmware when the IMF_READ_INTERRUPT_ID is enabled.
Change-Id: I94ab613b9bc96a7c1935796c674dc42246aaafee
show more ...
|
| 05b6edfe | 27-May-2014 |
Dan Handley <dan.handley@arm.com> |
Merge pull request #110 from soby-mathew:sm/support_normal_irq_in_tsp-v4 into for-v0.4 |
| 9865ac15 | 27-May-2014 |
Dan Handley <dan.handley@arm.com> |
Further renames of platform porting functions
Rename the ic_* platform porting functions to plat_ic_* to be consistent with the other functions in platform.h. Also rename bl31_get_next_image_info()
Further renames of platform porting functions
Rename the ic_* platform porting functions to plat_ic_* to be consistent with the other functions in platform.h. Also rename bl31_get_next_image_info() to bl31_plat_get_next_image_ep_info() and remove the duplicate declaration in bl31.h.
Change-Id: I4851842069d3cff14c0a468daacc0a891a7ede84
show more ...
|
| 10b65ecf | 27-May-2014 |
Soby Mathew <soby.mathew@arm.com> |
Fixup Standard SMC Resume Handling
This patch fixes a missed return and code alignment issues in TSP_FID_RESUME handling.
Change-Id: Icf8aeb76dfd6898745653ce039e3bac45e0a9b3a |
| dff8e47a | 16-May-2014 |
Dan Handley <dan.handley@arm.com> |
Add enable mmu platform porting interfaces
Previously, the enable_mmu_elX() functions were implicitly part of the platform porting layer since they were included by generic code. These functions hav
Add enable mmu platform porting interfaces
Previously, the enable_mmu_elX() functions were implicitly part of the platform porting layer since they were included by generic code. These functions have been placed behind 2 new platform functions, bl31_plat_enable_mmu() and bl32_plat_enable_mmu(). These are weakly defined so that they can be optionally overridden by platform ports.
Also, the enable_mmu_elX() functions have been moved to lib/aarch64/xlat_tables.c for optional re-use by platform ports. These functions are tightly coupled with the translation table initialization code.
Fixes ARM-software/tf-issues#152
Change-Id: I0a2251ce76acfa3c27541f832a9efaa49135cc1c
show more ...
|
| 5f0cdb05 | 14-May-2014 |
Dan Handley <dan.handley@arm.com> |
Split platform.h into separate headers
Previously, platform.h contained many declarations and definitions used for different purposes. This file has been split so that:
* Platform definitions used
Split platform.h into separate headers
Previously, platform.h contained many declarations and definitions used for different purposes. This file has been split so that:
* Platform definitions used by common code that must be defined by the platform are now in platform_def.h. The exact include path is exported through $PLAT_INCLUDES in the platform makefile.
* Platform definitions specific to the FVP platform are now in /plat/fvp/fvp_def.h.
* Platform API declarations specific to the FVP platform are now in /plat/fvp/fvp_private.h.
* The remaining platform API declarations that must be ported by each platform are still in platform.h but this file has been moved to /include/plat/common since this can be shared by all platforms.
Change-Id: Ieb3bb22fbab3ee8027413c6b39a783534aee474a
show more ...
|
| 7a9a5f2d | 14-May-2014 |
Dan Handley <dan.handley@arm.com> |
Remove unused data declarations
Some data variables were declared but not used. These have been removed.
Change-Id: I038632af3c32d88984cd25b886c43ff763269bf9 |
| c6bc0710 | 14-May-2014 |
Dan Handley <dan.handley@arm.com> |
Remove extern keyword from function declarations
Function declarations implicitly have external linkage so do not need the extern keyword.
Change-Id: Ia0549786796d8bf5956487e8996450a0b3d79f32 |
| 8957fc76 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #104 from athoelke:at/tsp-entrypoints-v2 |
| 65335d45 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #105 from athoelke:sm/support_normal_irq_in_tsp-v2 |
| 8545a874 | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #102 from achingupta:ag/tf-issues#104-v2 |
| db0de0eb | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #99 from vikramkanigiri:vk/tf-issues-133_V3 |
| 3ea8540d | 23-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #67 from achingupta:ag/psci_standby_bug_fix |
| 399fb08f | 20-May-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Use a vector table for TSP entrypoints
The TSP has a number of entrypoints used by the TSP on different occasions. These were provided to the TSPD as a table of function pointers, and required the T
Use a vector table for TSP entrypoints
The TSP has a number of entrypoints used by the TSP on different occasions. These were provided to the TSPD as a table of function pointers, and required the TSPD to read the entry in the table, which is in TSP memory, in order to program the exception return address.
Ideally, the TSPD has no access to the TSP memory.
This patch changes the table of function pointers into a vector table of single instruction entrypoints. This allows the TSPD to calculate the entrypoint address instead of read it.
Fixes ARM-software/tf-issues#160
Change-Id: Iec6e055d537ade78a45799fbc6f43765a4725ad3
show more ...
|
| 239b04fa | 09-May-2014 |
Soby Mathew <soby.mathew@arm.com> |
Non-Secure Interrupt support during Standard SMC processing in TSP
Implements support for Non Secure Interrupts preempting the Standard SMC call in EL1. Whenever an IRQ is trapped in the Secure worl
Non-Secure Interrupt support during Standard SMC processing in TSP
Implements support for Non Secure Interrupts preempting the Standard SMC call in EL1. Whenever an IRQ is trapped in the Secure world we securely handover to the Normal world to process the interrupt. The normal world then issues "resume" smc call to resume the previous interrupted SMC call. Fixes ARM-software/tf-issues#105
Change-Id: I72b760617dee27438754cdfc9fe9bcf4cc024858
show more ...
|
| b44a4435 | 09-May-2014 |
Achin Gupta <achin.gupta@arm.com> |
Add S-EL1 interrupt handling support in the TSPD
This patch adds support in the TSPD for registering a handler for S-EL1 interrupts. This handler ferries the interrupts generated in the non-secure s
Add S-EL1 interrupt handling support in the TSPD
This patch adds support in the TSPD for registering a handler for S-EL1 interrupts. This handler ferries the interrupts generated in the non-secure state to the TSP at 'tsp_fiq_entry'. Support has been added to the smc handler to resume execution in the non-secure state once interrupt handling has been completed by the TSP.
There is also support for resuming execution in the normal world if the TSP receives a EL3 interrupt. This code is currently unused.
Change-Id: I816732595a2635e299572965179f11aa0bf93b69
show more ...
|
| fa9c08b7 | 09-May-2014 |
Achin Gupta <achin.gupta@arm.com> |
Use secure timer to generate S-EL1 interrupts
This patch adds support in the TSP to program the secure physical generic timer to generate a EL-1 interrupt every half second. It also adds support for
Use secure timer to generate S-EL1 interrupts
This patch adds support in the TSP to program the secure physical generic timer to generate a EL-1 interrupt every half second. It also adds support for maintaining the timer state across power management operations. The TSPD ensures that S-EL1 can access the timer by programming the SCR_EL3.ST bit.
This patch does not actually enable the timer. This will be done in a subsequent patch once the complete framework for handling S-EL1 interrupts is in place.
Change-Id: I1b3985cfb50262f60824be3a51c6314ce90571bc
show more ...
|