2017-03-31 |
Add support for GCC stack protection
...
Introduce new build option ENABLE_STACK_PROTECTOR. It enables
compilation of all BL images with one of the GCC -fstack-protector-*
options.
A new platform function plat_get_stack_protector_canary() is introduced.
It returns a value that is used to initialize the canary for stack
corruption detection. Returning a random value will prevent an attacker
from predicting the value and greatly increase the effectiveness of the
protection.
A message is printed at the ERROR level when a stack corruption is
detected.
To be effective, the global data must be stored at an address
lower than the base of the stacks. Failure to do so would allow an
attacker to overwrite the canary as part of an attack which would void
the protection.
FVP implementation of plat_get_stack_protector_canary is weak as
there is no real source of entropy on the FVP. It therefore relies on a
timer's value, which could be predictable.
Change-Id: Icaaee96392733b721fa7c86a81d03660d3c1bc06
Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
Douglas Raillard
authored
on 24 Feb 2017
dp-arm
committed
on 31 Mar 2017
|
Add console_core_flush() in upstream platforms
...
It is needed to add placeholders for this function because, as this is
not a `plat_xxx()` function, there aren't weak definitions of it in any
file.
If `console_flush()` is used and there isn't an implementation of
`console_core_flush()` in any file, the compilation will fail.
Change-Id: I50eb56d085c4c9fbc85d40c343e86af6412f3020
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Antonio Nino Diaz
committed
on 31 Mar 2017
|
2017-03-27 |
Merge pull request #873 from dp-arm/dp/makefile-reorg
...
Move plat/common source file definitions to generic Makefiles
davidcunado-arm
authored
on 27 Mar 2017
GitHub
committed
on 27 Mar 2017
|
2017-03-20 |
Move plat/common source file definitions to generic Makefiles
...
These source file definitions should be defined in generic
Makefiles so that all platforms can benefit. Ensure that the
symbols are properly marked as weak so they can be overridden
by platforms.
NOTE: This change is a potential compatibility break for
non-upstream platforms.
Change-Id: I7b892efa9f2d6d216931360dc6c436e1d10cffed
Signed-off-by: dp-arm <dimitris.papastamos@arm.com>
dp-arm
committed
on 20 Mar 2017
|
plat/mediatek: Enable Cortex-A53 erratum 855873 workaround
...
The Mediatek 8173 SoC contains Cortex-A53 CPUs which are affected by
erratum 855873.
Enable the workaround that TF provides to fix this erratum.
Change-Id: I6e1c7822c320d81bdd46b8942d1d755883dac1f5
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Andre Przywara
committed
on 20 Mar 2017
|
2017-02-06 |
Introduce unified API to zero memory
...
Introduce zeromem_dczva function on AArch64 that can handle unaligned
addresses and make use of DC ZVA instruction to zero a whole block at a
time. This zeroing takes place directly in the cache to speed it up
without doing external memory access.
Remove the zeromem16 function on AArch64 and replace it with an alias to
zeromem. This zeromem16 function is now deprecated.
Remove the 16-bytes alignment constraint on __BSS_START__ in
firmware-design.md as it is now not mandatory anymore (it used to comply
with zeromem16 requirements).
Change the 16-bytes alignment constraints in SP min's linker script to a
8-bytes alignment constraint as the AArch32 zeromem implementation is now
more efficient on 8-bytes aligned addresses.
Introduce zero_normalmem and zeromem helpers in platform agnostic header
that are implemented this way:
* AArch32:
* zero_normalmem: zero using usual data access
* zeromem: alias for zero_normalmem
* AArch64:
* zero_normalmem: zero normal memory using DC ZVA instruction
(needs MMU enabled)
* zeromem: zero using usual data access
Usage guidelines: in most cases, zero_normalmem should be preferred.
There are 2 scenarios where zeromem (or memset) must be used instead:
* Code that must run with MMU disabled (which means all memory is
considered device memory for data accesses).
* Code that fills device memory with null bytes.
Optionally, the following rule can be applied if performance is
important:
* Code zeroing small areas (few bytes) that are not secrets should use
memset to take advantage of compiler optimizations.
Note: Code zeroing security-related critical information should use
zero_normalmem/zeromem instead of memset to avoid removal by
compilers' optimizations in some cases or misbehaving versions of GCC.
Fixes ARM-software/tf-issues#408
Change-Id: Iafd9663fc1070413c3e1904e54091cf60effaa82
Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
Douglas Raillard
committed
on 6 Feb 2017
|
2017-01-23 |
Remove use of all deprecated APIs
...
Now it's possbile to build BL31 for MT8173 with ERROR_DEPRECATED=1.
Signed-off-by: Koan-Sin Tan <koansin.tan@gmail.com>
Koan-Sin Tan
committed
on 23 Jan 2017
|
Get rid of use of old GIC APIs
...
Signed-off-by: Koan-Sin Tan <koansin.tan@gmail.com>
Koan-Sin Tan
committed
on 23 Jan 2017
|
Add support of PSCI_EXTENDED_STATE_ID to MT8173
...
Signed-off-by: Koan-Sin Tan <koansin.tan@gmail.com>
Koan-Sin Tan
committed
on 23 Jan 2017
|
Get rid of use of compatibility API
...
make 'make ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- PLAT=mt8173
ENABLE_PLAT_COMPAT=0' work.
Change-Id: I13f35d8aef23dfa0e65883fa0be43f1513c9fef5
Signed-off-by: Koan-Sin Tan <koansin.tan@gmail.com>
Koan-Sin Tan
committed
on 23 Jan 2017
|
Use #ifdef for IMAGE_BL* instead of #if
...
One nasty part of ATF is some of boolean macros are always defined
as 1 or 0, and the rest of them are only defined under certain
conditions.
For the former group, "#if FOO" or "#if !FOO" must be used because
"#ifdef FOO" is always true. (Options passed by $(call add_define,)
are the cases.)
For the latter, "#ifdef FOO" or "#ifndef FOO" should be used because
checking the value of an undefined macro is strange.
Here, IMAGE_BL* is handled by make_helpers/build_macro.mk like
follows:
$(eval IMAGE := IMAGE_BL$(call uppercase,$(3)))
$(OBJ): $(2)
@echo " CC $$<"
$$(Q)$$(CC) $$(TF_CFLAGS) $$(CFLAGS) -D$(IMAGE) -c $$< -o $$@
This means, IMAGE_BL* is defined when building the corresponding
image, but *undefined* for the other images.
So, IMAGE_BL* belongs to the latter group where we should use #ifdef
or #ifndef.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Masahiro Yamada
committed
on 23 Jan 2017
|
2017-01-18 |
Merge pull request #801 from masahir0y/cleanup
...
Macro cleanups
davidcunado-arm
authored
on 18 Jan 2017
GitHub
committed
on 18 Jan 2017
|
Move BL_COHERENT_RAM_BASE/END defines to common_def.h
...
We have lots of duplicated defines (and comment blocks too).
Move them to include/plat/common/common_def.h.
While we are here, suffix the end address with _END instead of
_LIMIT. The _END is a better fit to indicate the linker-derived
real end address.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Masahiro Yamada
committed
on 18 Jan 2017
|
2017-01-14 |
mt8173: Correct SPM MCDI firmware length
...
The actual length of the firmware is 1001 32 bit words.
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Paul Kocialkowski
committed
on 14 Jan 2017
|
2016-09-19 |
Remove MT6795 plat_sip_svc.c to fix Coverity analysis error.
Leon Chen
committed
on 19 Sep 2016
|
2016-09-12 |
Support for Mediatek MT6795 SoC
...
This patch support single core to boot to Linux kernel
through Trusted Firmware.
It also support 32 bit kernel and 64 bit kernel booting.
Leon Chen
committed
on 12 Sep 2016
|
2016-08-09 |
Migrate platform makefile to new console driver location
...
This patch migrates the upstream platform makefiles to include the
console drivers from the new location in ARM Trusted Firmware code
base.
Change-Id: I866d6c4951e475de1f836ce8a8c1d5e6da9577e3
Soby Mathew
committed
on 9 Aug 2016
|
2016-07-08 |
Introduce utils.h header file
...
This patch introduces a new header file: include/lib/utils.h.
Its purpose is to provide generic macros and helper functions that
are independent of any BL image, architecture, platform and even
not specific to Trusted Firmware.
For now, it contains only 2 macros: ARRAY_SIZE() and
IS_POWER_OF_TWO(). These were previously defined in bl_common.h and
xlat_tables.c respectively.
bl_common.h includes utils.h to retain compatibility for platforms
that relied on bl_common.h for the ARRAY_SIZE() macro. Upstream
platform ports that use this macro have been updated to include
utils.h.
Change-Id: I960450f54134f25d1710bfbdc4184f12c049a9a9
Sandrine Bailleux
committed
on 8 Jul 2016
|
2016-05-20 |
Replace MediaTek delay timer by generic one
...
Use the generic delay timer instead of having a specific platform
file for configuring it.
Change-Id: If6b8f60bc04230f4b85b2bcc1b670fc65461214e
Antonio Nino Diaz
committed
on 20 May 2016
|
Implement plat_get_syscnt_freq2 on platforms
...
Replaced plat_get_syscnt_freq by plat_get_syscnt_freq2 on all
upstream platforms.
Change-Id: I3248f3f65a16dc5e9720012a05c35b9e3ba6abbe
Antonio Nino Diaz
committed
on 20 May 2016
|
2016-05-12 |
MT8173: Add Sip function for MTK HW crypt driver
...
Change-Id: Idc40cc6243e532567ec4334ae37d97c003c90bfa
Signed-off-by: Yi Zheng <yi.zheng@mediatek.com>
Yi Zheng
authored
on 11 May 2016
Yidi Lin
committed
on 12 May 2016
|
mt8173: Reorganize plat SiP functions
...
Due to the changes in Mediatek platform common code, we need to move
plat related SiP functions to plat folder.
Change-Id: I6b14b988235205a5858b4bf49043bc79d0512b06
Signed-off-by: Jimmy Huang <jimmy.huang@mediatek.com>
Jimmy Huang
authored
on 11 May 2016
Yidi Lin
committed
on 12 May 2016
|
2016-05-04 |
Merge pull request #617 from leon-chen-mtk/refactor_common_1
...
Refactor MediaTek platform common code
danh-arm
committed
on 4 May 2016
|
Refactor MediaTek platform common code
...
Refactor MediaTek platform common code for further mt6795 upstream.
Leon Chen
committed
on 4 May 2016
|
2016-04-21 |
Move `plat_get_syscnt_freq()` to arm_common.c
...
This patch moves the definition for `plat_get_syscnt_freq()`
from arm_bl31_setup.c to arm_common.c. This could be useful
in case a delay timer needs to be installed based on the
generic timer in other BLs.
This patch also modifies the return type for this function
from `uint64_t` to `unsigned long long` within ARM and other
platform files.
Change-Id: Iccdfa811948e660d4fdcaae60ad1d700e4eda80d
Yatharth Kochar
committed
on 21 Apr 2016
|
2016-04-14 |
Dump platform-defined regs in crash reporting
...
It is up to the platform to implement the new plat_crash_print_regs macro to
report all relevant platform registers helpful for troubleshooting.
plat_crash_print_regs merges or calls previously defined plat_print_gic_regs
and plat_print_interconnect_regs macros for each existing platforms.
NOTE: THIS COMMIT REQUIRES ALL PLATFORMS THAT ENABLE THE `CRASH_REPORTING`
BUILD FLAG TO MIGRATE TO USE THE NEW `plat_crash_print_regs()` MACRO. BY
DEFAULT, `CRASH_REPORTING` IS ENABLED IN DEBUG BUILDS FOR ALL PLATFORMS.
Fixes: arm-software/tf-issues#373
Signed-off-by: Gerald Lejeune <gerald.lejeune@st.com>
Gerald Lejeune
committed
on 14 Apr 2016
|
Merge pull request #593 from mtk09422/mtcmos-fix
...
mt8173: Fix timing issue of mfg mtcmos power off
danh-arm
committed
on 14 Apr 2016
|
mt8173: Fix timing issue of mfg mtcmos power off
...
In mt8173, there are totally 10 non-cpu mtcmos, so we cannot tell
if SPM finished the power control flow by 10 status bits of PASR_PDP_3.
So, extend PASR_PDP_3 status bits from 10 to 20 so that we can
make sure if the control action has been done precisely.
Change-Id: Ifd4faaa4173c6e0543aa8471149adb9fe7fadedc
Signed-off-by: Fan Chen <fan.chen@mediatek.com>
Fan Chen
authored
on 1 Apr 2016
Yidi Lin
committed
on 14 Apr 2016
|
2016-04-13 |
Migrate platform ports to the new xlat_tables library
...
This patch modifies the upstream platform port makefiles to use the new
xlat_tables library files. This patch also makes mmap region setup common
between AArch64 and AArch32 for FVP platform port. The file `fvp_common.c`
is moved from the `plat/arm/board/fvp/aarch64` folder to the parent folder
as it is not specific to AArch64.
Change-Id: Id2e9aac45e46227b6f83cccfd1e915404018ea0b
Soby Mathew
committed
on 13 Apr 2016
|
2016-04-07 |
mt8173: fix spm driver build errors
...
To fix build errors in following build conditions,
DEBUG=1 LOG_LEVEL<40
DEBUG=0 LOG_LEVEL>=40
Change-Id: Ib34aed07b2ae0abd8a3a46948adc9fbeaae715aa
Signed-off-by: yt.lee <yt.lee@mediatek.com>
yt.lee
authored
on 7 Apr 2016
Yidi Lin
committed
on 7 Apr 2016
|