2014-07-10 |
fvp: Reuse BL1 and BL2 memory through image overlaying
...
This patch re-organizes the memory layout on FVP as to give the
BL3-2 image as much memory as possible.
Considering these two facts:
- not all images need to live in memory at the same time. Once
in BL3-1, the memory used by BL1 and BL2 can be reclaimed.
- when BL2 loads the BL3-1 and BL3-2 images, it only considers the
PROGBITS sections of those 2 images. The memory occupied by the
NOBITS sections will be touched only at execution of the BL3-x
images;
Then it is possible to choose the different base addresses such that
the NOBITS sections of BL3-1 and BL3-2 overlay BL1 and BL2.
On FVP we choose to put:
- BL1 and BL3-1 at the top of the Trusted RAM, with BL3-1 NOBITS
sections overlaying BL1;
- BL3-2 at the bottom of the Trusted RAM, with its NOBITS sections
overlaying BL2;
This is illustrated by the following diagram:
0x0404_0000 ------------ ------------------
| BL1 | <= | BL3-1 NOBITS |
------------ <= ------------------
| | <= | BL3-1 PROGBITS |
------------ ------------------
| BL2 | <= | BL3-2 NOBITS |
------------ <= ------------------
| | <= | BL3-2 PROGBITS |
0x0400_0000 ------------ ------------------
New platform-specific constants have been introduced to easily check
at link time that BL3-1 and BL3-2 PROGBITS sections don't overwrite
BL1 and BL2. These are optional and the platform code is free to define
them or not. If not defined, the linker won't attempt to check
image overlaying.
Fixes ARM-software/tf-issues#117
Change-Id: I5981d1c3d66ee70eaac8bd052630c9ac6dd8b042
Sandrine Bailleux
committed
on 10 Jul 2014
|
2014-07-01 |
fvp: Properly detect the location of BL1 R/W data
...
There was already a rudimentary mechanism to detect whether BL1
R/W data was loaded at the top or bottom of memory. Basically,
- either BL1 was loaded at the very end of the trusted RAM
- in all other cases BL1 was considered sitting at the bottom of
the memory and the memory usage structure was updated accordingly,
potentially resulting in critical memory waste.
For instance, if BL1 R/W base address was set to
(TZRAM_END - 4096 - bl1_size), it would virtually occupy the whole
memory.
This patch improves the mechanism to detect the location of BL1
to avoid such scenarios.
Change-Id: I224a9edf0fe8d34208545d84b28b63f2bb830d03
Sandrine Bailleux
committed
on 1 Jul 2014
|
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
Sandrine Bailleux
committed
on 1 Jul 2014
|
2014-06-26 |
Merge pull request #154 from athoelke/at/inline-mmio
...
Inline the mmio accessor functions
Andrew Thoelke
committed
on 26 Jun 2014
|
Merge pull request #153 from athoelke/at/remove-psci-mpidr
...
Remove current CPU mpidr from PSCI common code
Andrew Thoelke
committed
on 26 Jun 2014
|
2014-06-25 |
Remove current CPU mpidr from PSCI common code
...
Many of the interfaces internal to PSCI pass the current CPU
MPIDR_EL1 value from function to function. This is not required,
and with inline access to the system registers is less efficient
than requiring the code to read that register whenever required.
This patch remove the mpidr parameter from the affected interfaces
and reduces code in FVP BL3-1 size by 160 bytes.
Change-Id: I16120a7c6944de37232016d7e109976540775602
Andrew Thoelke
committed
on 25 Jun 2014
|
2014-06-24 |
Merge pull request #152 from jcastillo-arm/jc/tf-issues/073-v2
...
Remove all checkpatch errors from codebase
danh-arm
committed
on 24 Jun 2014
|
Merge pull request #150 from sandrine-bailleux/sb/fix-plat-print-gic-regs
...
fvp: Fix register name in 'plat_print_gic_regs' macro
danh-arm
committed
on 24 Jun 2014
|
Merge pull request #149 from sandrine-bailleux/sb/warn-missing-include-dirs
...
Compile with '-Wmissing-include-dirs' flag
danh-arm
committed
on 24 Jun 2014
|
Merge pull request #147 from athoelke/at/remove-bakery-mpidr
...
Remove calling CPU mpidr from bakery lock API
danh-arm
committed
on 24 Jun 2014
|
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
Andrew Thoelke
committed
on 24 Jun 2014
|
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
Juan Castillo
committed
on 24 Jun 2014
|
fvp: Fix register name in 'plat_print_gic_regs' macro
...
The 'plat_print_gic_regs' macro was accessing the GICC_CTLR register
using the GICD_CTLR offset. This still generates the right code in
the end because GICD_CTLR == GICC_CTLR but this patch fixes it for
the logic of the code.
Change-Id: I7b17af50e587f07bec0e4c933e346088470c96f3
Sandrine Bailleux
committed
on 24 Jun 2014
|
2014-06-23 |
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
Andrew Thoelke
committed
on 23 Jun 2014
|
Merge pull request #145 from athoelke/at/psci-memory-optimization-v2
...
PSCI memory optimizations (v2)
danh-arm
committed
on 23 Jun 2014
|
Merge pull request #144 from athoelke/at/init-context-v2
...
Initialise CPU contexts from entry_point_info (v2)
danh-arm
committed
on 23 Jun 2014
|
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
Andrew Thoelke
committed
on 23 Jun 2014
|
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
Andrew Thoelke
committed
on 23 Jun 2014
|
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
Andrew Thoelke
committed
on 23 Jun 2014
|
Merge pull request #143 from athoelke/at/remove-nsram
...
Remove NSRAM from FVP memory map
danh-arm
committed
on 23 Jun 2014
|
Merge pull request #140 from athoelke/at/psci_smc_handler
...
PSCI SMC handler improvements
danh-arm
committed
on 23 Jun 2014
|
Compile with '-Wmissing-include-dirs' flag
...
Add the '-Wmissing-include-dirs' flag to the CFLAGS and ASFLAGS
to make the build fail if the compiler or the assembler is given
a nonexistant directory in the list of directories to be searched
for header files.
Also remove 'include/bl1' and 'include/bl2' directories from the
search path for header files as they don't exist anymore.
Change-Id: I2475b78ba8b7b448b9d0afaa9ad975257f638b89
Sandrine Bailleux
committed
on 23 Jun 2014
|
Merge pull request #138 from athoelke/at/cpu-context
...
Move CPU context pointers into cpu_data
danh-arm
committed
on 23 Jun 2014
|
Merge pull request #137 from athoelke/at/no-early-exceptions
...
Remove early_exceptions from BL3-1
danh-arm
committed
on 23 Jun 2014
|
Merge pull request #136 from athoelke/at/cpu-data
...
Per-cpu data cache restructuring
danh-arm
committed
on 23 Jun 2014
|
Merge pull request #142 from athoelke/at/fix-console_putc
...
Remove broken assertion in console_putc()
danh-arm
committed
on 23 Jun 2014
|
2014-06-20 |
Remove NSRAM from FVP memory map
...
This memory is not used by the FVP port and requires an additional
4KB translation table.
This patch removes the entry from the memory map and reduces the
number of allocated translation tables.
Fixes ARM-software/tf-issues#196
Change-Id: I5b959e4fe92f5f892ed127c40dbe6c85eed3ed72
Andrew Thoelke
committed
on 20 Jun 2014
|
Remove broken assertion in console_putc()
...
The assertion in console_putc() would trigger a recursion that
exhausts the stack and eventually aborts.
This patch replaces the assertion with an error return if the
console has not been initialized yet.
Fixes ARM-software/tf-issues#208
Change-Id: I95f736ff215d69655eb5ba7ceac70dc1409d986a
Andrew Thoelke
committed
on 20 Jun 2014
|
2014-06-18 |
Merge pull request #135 from soby-mathew/sm/remove-reinit-of-timers
...
Remove re-initialisation of system timers after warm boot for FVP
danh-arm
committed
on 18 Jun 2014
|
Remove re-initialisation of system timers after warm boot for FVP
...
This patch removes the reinitialisation of memory mapped system timer
registers after a warm boot for the FVP. The system timers in FVP are
in the 'Always ON' power domain which meant the reinitialisation was
redundant and it could have conflicted with the setup the normal
world has done.
The programming of CNTACR(x) and CNTNSAR, the system timer registers,
are removed from the warm boot path with this patch.
Fixes ARM-software/tf-issues#169
Change-Id: Ie982eb03d1836b15ef3cf1568de2ea68a08b443e
Soby Mathew
committed
on 18 Jun 2014
|