armv8: psci: add ARMV8_PSCI_RELOCATE Kconfig option

There is an user-selectable SYS_HAS_ARMV8_SECURE_BASE, which has the
same meaning but is just for the ls1043ardb board. As no in-tree config
uses this, drop it and replace it with something more sophiticated:
ARMV8_PSCI_RELOCATE. This option will then enable the ARMV8_SECURE_BASE
option which is used as the base to relocate the PSCI code (or any code
in the secure region, but that is only PSCI). A SoC (or board) can now
opt-in into having such a secure region by enabling
SYS_HAS_ARMV8_SECURE_BASE. Enable it for the LS1043A SoC, where it was
possible to relocate the PSCI code before as well as on the LS1028A SoC
where there will be PSCI support soon.

Additionally, make ARMV8_PSCI and SEC_FIRMWARE_ARMV8_PSCI exclusive.

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
Michael Walle 2022-02-28 13:48:40 +01:00 committed by Priyanka Jain
parent de58ac49a5
commit 49bb245f1d
3 changed files with 23 additions and 21 deletions

View File

@ -90,6 +90,7 @@ config SPL_RECOVER_DATA_SECTION
config SEC_FIRMWARE_ARMV8_PSCI config SEC_FIRMWARE_ARMV8_PSCI
bool "PSCI implementation in secure monitor firmware" bool "PSCI implementation in secure monitor firmware"
depends on ARMV8_SEC_FIRMWARE_SUPPORT || SPL_ARMV8_SEC_FIRMWARE_SUPPORT depends on ARMV8_SEC_FIRMWARE_SUPPORT || SPL_ARMV8_SEC_FIRMWARE_SUPPORT
depends on ARMV8_PSCI=n
help help
This config enables the ARMv8 PSCI implementation in secure monitor This config enables the ARMv8 PSCI implementation in secure monitor
firmware. This is a private PSCI implementation and different from firmware. This is a private PSCI implementation and different from
@ -131,6 +132,9 @@ config PSCI_RESET
Select Y here to make use of PSCI calls for system reset Select Y here to make use of PSCI calls for system reset
config SYS_HAS_ARMV8_SECURE_BASE
bool
config ARMV8_PSCI config ARMV8_PSCI
bool "Enable PSCI support" if EXPERT bool "Enable PSCI support" if EXPERT
help help
@ -158,23 +162,27 @@ config ARMV8_PSCI_CPUS_PER_CLUSTER
A value 0 or no definition of it works for single cluster system. A value 0 or no definition of it works for single cluster system.
System with multi-cluster should difine their own exact value. System with multi-cluster should difine their own exact value.
config ARMV8_PSCI_RELOCATE
bool "Relocate PSCI code"
depends on ARMV8_PSCI
depends on SYS_HAS_ARMV8_SECURE_BASE
help
Relocate PSCI code, for example to a secure memory on the SoC. If not
set, the PSCI sections are placed together with the u-boot and the
regions will be marked as reserved before linux is started.
config ARMV8_SECURE_BASE
hex "Secure address for PSCI image"
depends on ARMV8_PSCI_RELOCATE
default 0x18000000 if ARCH_LS1028A
help
Address for placing the PSCI text, data and stack sections.
config ARMV8_EA_EL3_FIRST config ARMV8_EA_EL3_FIRST
bool "External aborts and SError interrupt exception are taken in EL3" bool "External aborts and SError interrupt exception are taken in EL3"
help help
Exception handling at all exception levels for External Abort and Exception handling at all exception levels for External Abort and
SError interrupt exception are taken in EL3. SError interrupt exception are taken in EL3.
if SYS_HAS_ARMV8_SECURE_BASE
config ARMV8_SECURE_BASE
hex "Secure address for PSCI image"
depends on ARMV8_PSCI
help
Address for placing the PSCI text, data and stack sections.
If not defined, the PSCI sections are placed together with the u-boot
but platform can choose to place PSCI code image separately in other
places such as some secure RAM built-in SOC etc.
endif
endif endif

View File

@ -55,6 +55,7 @@ config ARCH_LS1028A
select SYS_FSL_ERRATUM_A011334 select SYS_FSL_ERRATUM_A011334
select SYS_FSL_ESDHC_UNRELIABLE_PULSE_DETECTION_WORKAROUND select SYS_FSL_ESDHC_UNRELIABLE_PULSE_DETECTION_WORKAROUND
select RESV_RAM if GIC_V3_ITS select RESV_RAM if GIC_V3_ITS
select SYS_HAS_ARMV8_SECURE_BASE
imply PANIC_HANG imply PANIC_HANG
config ARCH_LS1043A config ARCH_LS1043A
@ -90,6 +91,7 @@ config ARCH_LS1043A
select SYS_I2C_MXC_I2C2 if !DM_I2C select SYS_I2C_MXC_I2C2 if !DM_I2C
select SYS_I2C_MXC_I2C3 if !DM_I2C select SYS_I2C_MXC_I2C3 if !DM_I2C
select SYS_I2C_MXC_I2C4 if !DM_I2C select SYS_I2C_MXC_I2C4 if !DM_I2C
select SYS_HAS_ARMV8_SECURE_BASE
imply CMD_PCI imply CMD_PCI
imply ID_EEPROM imply ID_EEPROM

View File

@ -13,14 +13,6 @@ config SYS_SOC
config SYS_CONFIG_NAME config SYS_CONFIG_NAME
default "ls1043ardb" default "ls1043ardb"
config SYS_HAS_ARMV8_SECURE_BASE
bool "Enable secure address for PSCI image"
depends on ARMV8_PSCI
help
PSCI image can be re-located to secure RAM.
If enabled, please also define the value for ARMV8_SECURE_BASE,
for LS1043ARDB, it could be some address in OCRAM.
if FSL_LS_PPA if FSL_LS_PPA
config SYS_LS_PPA_FW_ADDR config SYS_LS_PPA_FW_ADDR
hex "PPA Firmware Addr" hex "PPA Firmware Addr"