diff options
author | Alexei Fedorov <Alexei.Fedorov@arm.com> | 2019-05-09 12:14:40 +0100 |
---|---|---|
committer | Alexei Fedorov <Alexei.Fedorov@arm.com> | 2019-05-10 16:09:19 +0100 |
commit | 1461ad9febbcb625941a53d80e4fa792f21e6e65 (patch) | |
tree | ed51fe81522c15fc87b5ba8fcf5daa83aa2ecc9a /plat/arm | |
parent | f2f0846598909cb905de5d4380bac5b1d4c89d09 (diff) |
SMMUv3: Abort DMA transactions
For security DMA should be blocked at the SMMU by default
unless explicitly enabled for a device. SMMU is disabled
after reset with all streams bypassing the SMMU, and
abortion of all incoming transactions implements a default
deny policy on reset.
This patch also moves "bl1_platform_setup()" function from
arm_bl1_setup.c to FVP platforms' fvp_bl1_setup.c and
fvp_ve_bl1_setup.c files.
Change-Id: Ie0ffedc10219b1b884eb8af625bd4b6753749b1a
Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
Diffstat (limited to 'plat/arm')
-rw-r--r-- | plat/arm/board/fvp/fvp_bl1_setup.c | 13 | ||||
-rw-r--r-- | plat/arm/board/fvp/platform.mk | 3 | ||||
-rw-r--r-- | plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c | 5 | ||||
-rw-r--r-- | plat/arm/common/arm_bl1_setup.c | 8 |
4 files changed, 20 insertions, 9 deletions
diff --git a/plat/arm/board/fvp/fvp_bl1_setup.c b/plat/arm/board/fvp/fvp_bl1_setup.c index aa567166..420df455 100644 --- a/plat/arm/board/fvp/fvp_bl1_setup.c +++ b/plat/arm/board/fvp/fvp_bl1_setup.c @@ -1,11 +1,13 @@ /* - * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include <common/tbbr/tbbr_img_def.h> +#include <drivers/arm/smmu_v3.h> #include <drivers/arm/sp805.h> +#include <plat/arm/common/arm_config.h> #include <plat/arm/common/plat_arm.h> #include <plat/arm/common/arm_def.h> #include <plat/common/platform.h> @@ -41,3 +43,12 @@ void plat_arm_secure_wdt_stop(void) { sp805_stop(ARM_SP805_TWDG_BASE); } + +void bl1_platform_setup(void) +{ + arm_bl1_platform_setup(); + + /* On FVP RevC, initialize SMMUv3 */ + if ((arm_config.flags & ARM_CONFIG_FVP_HAS_SMMUV3) != 0U) + smmuv3_security_init(PLAT_FVP_SMMUV3_BASE); +} diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk index 9b128a56..dbc5c21b 100644 --- a/plat/arm/board/fvp/platform.mk +++ b/plat/arm/board/fvp/platform.mk @@ -119,7 +119,8 @@ else FVP_CPU_LIBS += lib/cpus/aarch32/cortex_a32.S endif -BL1_SOURCES += drivers/arm/sp805/sp805.c \ +BL1_SOURCES += drivers/arm/smmu/smmu_v3.c \ + drivers/arm/sp805/sp805.c \ drivers/io/io_semihosting.c \ lib/semihosting/semihosting.c \ lib/semihosting/${ARCH}/semihosting_call.S \ diff --git a/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c b/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c index 4338f6f2..736cf429 100644 --- a/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c +++ b/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c @@ -26,3 +26,8 @@ void plat_arm_secure_wdt_stop(void) { sp805_stop(ARM_SP805_TWDG_BASE); } + +void bl1_platform_setup(void) +{ + arm_bl1_platform_setup(); +} diff --git a/plat/arm/common/arm_bl1_setup.c b/plat/arm/common/arm_bl1_setup.c index 8e0c046f..8905bb05 100644 --- a/plat/arm/common/arm_bl1_setup.c +++ b/plat/arm/common/arm_bl1_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2019, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -19,7 +19,6 @@ /* Weak definitions may be overridden in specific ARM standard platform */ #pragma weak bl1_early_platform_setup #pragma weak bl1_plat_arch_setup -#pragma weak bl1_platform_setup #pragma weak bl1_plat_sec_mem_layout #pragma weak bl1_plat_prepare_exit #pragma weak bl1_plat_get_next_image_id @@ -162,11 +161,6 @@ void arm_bl1_platform_setup(void) #endif } -void bl1_platform_setup(void) -{ - arm_bl1_platform_setup(); -} - void bl1_plat_prepare_exit(entry_point_info_t *ep_info) { #if !ARM_DISABLE_TRUSTED_WDOG |