| 6f3b195a | 20-Jun-2014 |
Dan Handley <dan.handley@arm.com> |
Refactor fvp_config into common platform header
Changed the fvp_config array in fvp_common.c into a struct and moved into a new optional common platform header, include/plat/common/plat_config.h. Re
Refactor fvp_config into common platform header
Changed the fvp_config array in fvp_common.c into a struct and moved into a new optional common platform header, include/plat/common/plat_config.h. Removed the config definitions in fvp_def.h and updated all references to the platform config.
This makes the interface to the platform config cleaner and uses a little less RAM.
Fixes ARM-software/tf-issues#180
Change-Id: I58dd7b3c150f24f7ee230a26fd57c827853ba803
show more ...
|
| 73ad2572 | 27-Jun-2014 |
Lin Ma <lin.ma@caviumnetworks.com> |
Calculate TCR bits based on VA and PA
Currently the TCR bits are hardcoded in xlat_tables.c. In order to map higher physical address into low virtual address, the TCR bits need to be configured acco
Calculate TCR bits based on VA and PA
Currently the TCR bits are hardcoded in xlat_tables.c. In order to map higher physical address into low virtual address, the TCR bits need to be configured accordingly.
This patch is to save the max VA and PA and calculate the TCR.PS/IPS and t0sz bits in init_xlat_tables function.
Change-Id: Ia7a58e5372b20200153057d457f4be5ddbb7dae4
show more ...
|
| 8f55dfb4 | 24-Jun-2014 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
Remove concept of top/bottom image loading
This concept is no longer required since we now support loading of images at fixed addresses only.
The image loader now automatically detects the position
Remove concept of top/bottom image loading
This concept is no longer required since we now support loading of images at fixed addresses only.
The image loader now automatically detects the position of the image inside the current memory layout and updates the layout such that memory fragmentation is minimised.
The 'attr' field of the meminfo data structure, which used to hold the bottom/top loading information, has been removed. Also the 'next' field has been removed as it wasn't used anywhere.
The 'init_bl2_mem_layout()' function has been moved out of common code and put in BL1-specific code. It has also been renamed into 'bl1_init_bl2_mem_layout'.
Fixes ARM-software/tf-issues#109
Change-Id: I3f54642ce7b763d5ee3b047ad0ab59eabbcf916d
show more ...
|
| 5e0f9bde | 26-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Merge pull request #154 from athoelke/at/inline-mmio
Inline the mmio accessor functions |
| e73af8ac | 24-Jun-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #152 from jcastillo-arm/jc/tf-issues/073-v2
Remove all checkpatch errors from codebase |
| 7eea1352 | 24-Jun-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #147 from athoelke/at/remove-bakery-mpidr
Remove calling CPU mpidr from bakery lock API |
| 5e113753 | 24-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Inline the mmio accessor functions
Making the simple mmio_read_*() and mmio_write_*() functions inline saves 360 bytes of code in FVP release build.
Fixes ARM-software/tf-issues#210
Change-Id: I65
Inline the mmio accessor functions
Making the simple mmio_read_*() and mmio_write_*() functions inline saves 360 bytes of code in FVP release build.
Fixes ARM-software/tf-issues#210
Change-Id: I65134f9069f3b2d8821d882daaa5fdfe16355e2f
show more ...
|
| 4f2104ff | 13-Jun-2014 |
Juan Castillo <juan.castillo@arm.com> |
Remove all checkpatch errors from codebase
Exclude stdlib files because they do not follow kernel code style.
Fixes ARM-software/tf-issues#73
Change-Id: I4cfafa38ab436f5ab22c277cb38f884346a267ab |
| 634ec6c2 | 09-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Remove calling CPU mpidr from bakery lock API
The bakery lock code currently expects the calling code to pass the MPIDR_EL1 of the current CPU.
This is not always done correctly. Also the change to
Remove calling CPU mpidr from bakery lock API
The bakery lock code currently expects the calling code to pass the MPIDR_EL1 of the current CPU.
This is not always done correctly. Also the change to provide inline access to system registers makes it more efficient for the bakery lock code to obtain the MPIDR_EL1 directly.
This change removes the mpidr parameter from the bakery lock interface, and results in a code reduction of 160 bytes for the ARM FVP port.
Fixes ARM-software/tf-issues#213
Change-Id: I7ec7bd117bcc9794a0d948990fcf3336a367d543
show more ...
|
| 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 ...
|
| 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 ...
|
| 5298f2cb | 23-Jun-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #138 from athoelke/at/cpu-context
Move CPU context pointers into cpu_data |
| 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 ...
|
| aaba4f28 | 02-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Move CPU context pointers into cpu_data
Moving the context pointers for each CPU into the per-cpu data allows for much more efficient access to the contexts for the current CPU.
Change-Id: Id784e21
Move CPU context pointers into cpu_data
Moving the context pointers for each CPU into the per-cpu data allows for much more efficient access to the contexts for the current CPU.
Change-Id: Id784e210d63cbdcddb44ac1591617ce668dbc29f
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 ...
|
| 30e3b312 | 16-Jun-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #131 from athoelke/at/cm_get_context
Provide cm_get/set_context() for current CPU |
| 5c633bdf | 16-Jun-2014 |
danh-arm <dan.handley@arm.com> |
Merge pull request #130 from athoelke/at/inline-asm-sysreg-v2
Make system register functions inline assembly v2 |
| 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 ...
|
| 5c3272a7 | 02-Jun-2014 |
Andrew Thoelke <andrew.thoelke@arm.com> |
Make system register functions inline assembly
Replace the current out-of-line assembler implementations of the system register and system instruction operations with inline assembler.
This enables
Make system register functions inline assembly
Replace the current out-of-line assembler implementations of the system register and system instruction operations with inline assembler.
This enables better compiler optimisation and code generation when accessing system registers.
Fixes ARM-software/tf-issues#91
Change-Id: I149af3a94e1e5e5140a3e44b9abfc37ba2324476
show more ...
|
| f984ce84 | 02-Jun-2014 |
Lin Ma <lin.ma@caviumnetworks.com> |
Enable mapping higher physical address
Current ATF uses a direct physical-to-virtual mapping, that is, a physical address is mapped to the same address in the virtual space. For example, physical ad
Enable mapping higher physical address
Current ATF uses a direct physical-to-virtual mapping, that is, a physical address is mapped to the same address in the virtual space. For example, physical address 0x8000_0000 is mapped to 0x8000_0000 virtual. This approach works fine for FVP as all its physical addresses fall into 0 to 4GB range. But for other platform where all I/O addresses are 48-bit long, If we follow the same direct mapping, we would need virtual address range from 0 to 0x8fff_ffff_ffff, which is about 144TB. This requires a significant amount of memory for MMU tables and it is not necessary to use that much virtual space in ATF.
The patch is to enable mapping a physical address range to an arbitrary virtual address range (instead of flat mapping) Changed "base" to "base_va" and added "base_pa" in mmap_region_t and modified functions such as mmap_add_region and init_xlation_table etc. Fixes ARM-software/tf-issues#158
show more ...
|
| 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 ...
|
| 0ad46911 | 27-May-2014 |
Dan Handley <dan.handley@arm.com> |
Remove FVP specific comments in platform.h
Remove the FVP specific comments in platform.h since this file is re-usable across all platforms.
Change-Id: Ifd4a4f72562adb3ecf8b9078b0150f170ef22dba |
| 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 ...
|
| dec5e0d1 | 15-May-2014 |
Dan Handley <dan.handley@arm.com> |
Move BL porting functions into platform.h
Some platform porting functions were in BL specific header files. These have been moved to platform.h so that all porting functions are in the same place. T
Move BL porting functions into platform.h
Some platform porting functions were in BL specific header files. These have been moved to platform.h so that all porting functions are in the same place. The functions are now grouped by BL. Obsolete BL headers files have been removed.
Also, the weak declaration of the init_bl2_mem_layout() function has been moved out the header file and into the source file (bl_common.c) using the more succinct #pragma syntax. This mitigates the risk of 2 weak definitions being created and the wrong one being picked up by the compiler.
Change-Id: Ib19934939fd755f3e5a5a5bceec88da684308a83
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 ...
|