diff options
author | Jaykumar Pitambarbhai Patel <jaykumar.pitambarbhaipatel@arm.com> | 2020-01-06 12:42:42 +0530 |
---|---|---|
committer | Edison Ai <edison.ai@arm.com> | 2020-01-10 09:50:47 +0800 |
commit | 98e6ce4967a3a2c81aee3bddc55579bda1fa6789 (patch) | |
tree | 37b622608cef7f4102734817177c164bee83ea6c | |
parent | cba90782908626f955fe361f803558181a85c6fc (diff) | |
download | trusted-firmware-m-98e6ce4967a3a2c81aee3bddc55579bda1fa6789.tar.gz |
Core: Initialize UART after programming the PPC/SAU
When the PSA API reset test was run, the test failed at reboot as
FVP AN521 has some problem with PPC setting over reset. It doesn't
reset the PPC setting over reset which causes the hard fault when
TFM programs the UART at reboot. Ideally, the access to any device
should be done after programming the necessary security components
such as PPC/SAU. The test passes when the patch was applied.
Change-Id: I98ffd2bf53580bb87cb27f4f542d2466f2bf4426
Signed-off-by: Jaykumar Pitambarbhai Patel <jaykumar.pitambarbhaipatel@arm.com>
-rw-r--r-- | secure_fw/core/tfm_core.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/secure_fw/core/tfm_core.c b/secure_fw/core/tfm_core.c index 548609e818..33a18de7b6 100644 --- a/secure_fw/core/tfm_core.c +++ b/secure_fw/core/tfm_core.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * Copyright (c) 2017-2020, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -75,6 +75,15 @@ int32_t tfm_core_init(void) return TFM_ERROR_GENERIC; } + /* + * Access to any peripheral should be performed after programming + * the necessary security components such as PPC/SAU. + */ + plat_err = tfm_spm_hal_init_isolation_hw(); + if (plat_err != TFM_PLAT_ERR_SUCCESS) { + return TFM_ERROR_GENERIC; + } + /* Performs platform specific initialization */ plat_err = tfm_spm_hal_post_init(); if (plat_err != TFM_PLAT_ERR_SUCCESS) { @@ -89,11 +98,6 @@ int32_t tfm_core_init(void) tfm_core_validate_boot_data(); - plat_err = tfm_spm_hal_init_isolation_hw(); - if (plat_err != TFM_PLAT_ERR_SUCCESS) { - return TFM_ERROR_GENERIC; - } - configure_ns_code(); /* Configures all interrupts to retarget NS state, except for |