mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-11 07:04:22 +00:00

The erratum titled “Disabling of data prefetcher with outstanding prefetch TLB miss might cause a deadlock” should not be handled within TF-A. The current workaround attempts to follow option 2 but misapplies it. Specifically, it statically sets PF_MODE to conservative, which is not the recommended approach. According to the erratum documentation, PF_MODE should be configured in conservative mode only when we disable data prefetcher however this is not done in TF-A and thus the workaround is not needed in TF-A. The static setting of PF_MODE in TF-A does not correctly address the erratum and may introduce unnecessary performance degradation on platforms that adopt it without fully understanding its implications. To prevent incorrect or unintended use, the current implementation of this erratum workaround should be removed from TF-A and not adopted by platforms. List of Impacted CPU's with Errata Numbers and reference to SDEN - Cortex-A78 - 2132060 - https://developer.arm.com/documentation/SDEN1401784/latest Cortex-A78C - 2132064 - https://developer.arm.com/documentation/SDEN-2004089/latest Cortex-A710 - 2058056 - https://developer.arm.com/documentation/SDEN-1775101/latest Cortex-X2 - 2058056 - https://developer.arm.com/documentation/SDEN-1775100/latest Cortex-X3 - 2070301 - https://developer.arm.com/documentation/SDEN2055130/latest Neoverse-N2 - 2138953 - https://developer.arm.com/documentation/SDEN-1982442/latest Neoverse-V1 - 2108267 - https://developer.arm.com/documentation/SDEN-1401781/latest Neoverse-V2 - 2331132 - https://developer.arm.com/documentation/SDEN-2332927/latest Change-Id: Icf4048508ae070b2df073cc46c63be058b2779df Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
128 lines
3.8 KiB
Makefile
128 lines
3.8 KiB
Makefile
#
|
|
# Copyright (c) 2017-2025, Arm Limited and Contributors. All rights reserved.
|
|
# Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
|
|
# Make for SC7280 QTI platform.
|
|
|
|
QTI_PLAT_PATH := plat/qti
|
|
CHIPSET := ${PLAT}
|
|
|
|
# Turn On Separate code & data.
|
|
SEPARATE_CODE_AND_RODATA := 1
|
|
USE_COHERENT_MEM := 0
|
|
WARMBOOT_ENABLE_DCACHE_EARLY := 1
|
|
HW_ASSISTED_COHERENCY := 1
|
|
|
|
#Enable errata configs for cortex_a78 and cortex_a55
|
|
ERRATA_A55_1530923 := 1
|
|
ERRATA_A78_1941498 := 1
|
|
ERRATA_A78_1951500 := 1
|
|
|
|
# Disable the PSCI platform compatibility layer
|
|
ENABLE_PLAT_COMPAT := 0
|
|
|
|
# Enable PSCI v1.0 extended state ID format
|
|
PSCI_EXTENDED_STATE_ID := 1
|
|
ARM_RECOM_STATE_ID_ENC := 1
|
|
PSCI_OS_INIT_MODE := 1
|
|
|
|
COLD_BOOT_SINGLE_CPU := 1
|
|
PROGRAMMABLE_RESET_ADDRESS := 1
|
|
|
|
RESET_TO_BL31 := 0
|
|
|
|
QTI_SDI_BUILD := 0
|
|
$(eval $(call assert_boolean,QTI_SDI_BUILD))
|
|
$(eval $(call add_define,QTI_SDI_BUILD))
|
|
|
|
#disable CTX_INCLUDE_AARCH32_REGS to support sc7280 gold cores
|
|
override CTX_INCLUDE_AARCH32_REGS := 0
|
|
WORKAROUND_CVE_2017_5715 := 0
|
|
DYNAMIC_WORKAROUND_CVE_2018_3639 := 1
|
|
# Enable stack protector.
|
|
ENABLE_STACK_PROTECTOR := strong
|
|
|
|
|
|
QTI_EXTERNAL_INCLUDES := -I${QTI_PLAT_PATH}/${CHIPSET}/inc \
|
|
-I${QTI_PLAT_PATH}/common/inc \
|
|
-I${QTI_PLAT_PATH}/common/inc/$(ARCH) \
|
|
-I${QTI_PLAT_PATH}/qtiseclib/inc \
|
|
-I${QTI_PLAT_PATH}/qtiseclib/inc/${CHIPSET} \
|
|
|
|
QTI_BL31_SOURCES := $(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_helpers.S \
|
|
$(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_kryo6_silver.S \
|
|
$(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_kryo6_gold.S \
|
|
$(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_uart_console.S \
|
|
$(QTI_PLAT_PATH)/common/src/pm_ps_hold.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_stack_protector.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_common.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_bl31_setup.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_gic_v3.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_interrupt_svc.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_syscall.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_topology.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_pm.c \
|
|
$(QTI_PLAT_PATH)/common/src/qti_rng.c \
|
|
$(QTI_PLAT_PATH)/common/src/spmi_arb.c \
|
|
$(QTI_PLAT_PATH)/qtiseclib/src/qtiseclib_cb_interface.c \
|
|
|
|
|
|
PLAT_INCLUDES := -Iinclude/plat/common/ \
|
|
|
|
PLAT_INCLUDES += ${QTI_EXTERNAL_INCLUDES}
|
|
|
|
include lib/xlat_tables_v2/xlat_tables.mk
|
|
PLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} \
|
|
plat/common/aarch64/crash_console_helpers.S \
|
|
common/desc_image_load.c \
|
|
lib/bl_aux_params/bl_aux_params.c \
|
|
|
|
include lib/coreboot/coreboot.mk
|
|
|
|
#PSCI Sources.
|
|
PSCI_SOURCES := plat/common/plat_psci_common.c \
|
|
|
|
# GIC-600 configuration
|
|
GICV3_SUPPORT_GIC600 := 1
|
|
# Include GICv3 driver files
|
|
include drivers/arm/gic/v3/gicv3.mk
|
|
|
|
#Timer sources
|
|
TIMER_SOURCES := drivers/delay_timer/generic_delay_timer.c \
|
|
drivers/delay_timer/delay_timer.c \
|
|
|
|
#GIC sources.
|
|
GIC_SOURCES := plat/common/plat_gicv3.c \
|
|
${GICV3_SOURCES} \
|
|
|
|
CPU_SOURCES := lib/cpus/aarch64/cortex_a78.S \
|
|
lib/cpus/aarch64/cortex_a55.S \
|
|
|
|
BL31_SOURCES += ${QTI_BL31_SOURCES} \
|
|
${PSCI_SOURCES} \
|
|
${GIC_SOURCES} \
|
|
${TIMER_SOURCES} \
|
|
${CPU_SOURCES} \
|
|
|
|
LIB_QTI_PATH := ${QTI_PLAT_PATH}/qtiseclib/lib/${CHIPSET}
|
|
|
|
|
|
# Override this on the command line to point to the qtiseclib library which
|
|
# will be available in coreboot.org
|
|
QTISECLIB_PATH ?=
|
|
|
|
ifeq ($(QTISECLIB_PATH),)
|
|
# if No lib then use stub implementation for qtiseclib interface
|
|
$(warning QTISECLIB_PATH is not provided while building, using stub implementation. \
|
|
Please refer docs/plat/qti.rst for more details \
|
|
THIS FIRMWARE WILL NOT BOOT!)
|
|
BL31_SOURCES += plat/qti/qtiseclib/src/qtiseclib_interface_stub.c
|
|
else
|
|
# use library provided by QTISECLIB_PATH
|
|
LDFLAGS += -L $(dir $(QTISECLIB_PATH))
|
|
LDLIBS += -l$(patsubst lib%.a,%,$(notdir $(QTISECLIB_PATH)))
|
|
endif
|
|
|