]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
fix(qemu): enable dynamic feature detection of FEAT_SVE for NormalWorld
authorJayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
Fri, 31 Mar 2023 09:42:10 +0000 (10:42 +0100)
committerJayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
Mon, 3 Apr 2023 16:05:57 +0000 (17:05 +0100)
Currently, TF-A supports three states for feature flags:
0: FEAT_DISABLED
1: FEAT_STATE_ALWAYS ( for fixed/real platforms)
2: FEAT_STATE_CHECK  ( for configurable platforms)
to meet the feature detection requirements dynamically, mainly
targetting configurable/Fixed Virtual platforms.

With this mechanism in place, we are refactoring all the existing
feature flags to the FEAT_STATE_CHECK option(=2), including
FEAT_SVE explicitly for FVPs.

SVE Patch Reference:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/19888/25

This newly introduced change, breaks the existing behaviour especially
for virtual platforms, who have set the ENABLE_SVE_FOR_NS flag to 1.

Moving ahead, we advise the platforms to take the following steps while
enabling the features:

1. If the platform is configurable (virtual), and want to ensure feature
detection happens dynamically at runtime, set the build flags to
FEAT_STATE_CHECK(=2).

2. For real(fixed) platforms, depending on the features supported by the
hardware and platform wants to enable it, platforms could set build
flags to FEAT_STATE_ALWAYS(=1).

(Note: Only the non-secure world enablement related build flags have
been refactored to take the values within 0 to 2. As earlier Secure
world enablement flags will still remain boolean.)

Henceforth, in order to keep it aligned with this tri-state mechanism,
changing the qemu platform default to the now supported dynamic
option(=2), so the right decision can be made by the code at runtime.

Change-Id: Icc95b8b872378b7874d4345b631adfc314e4dada
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
plat/qemu/qemu/platform.mk
plat/qemu/qemu_sbsa/platform.mk

index c076aba0dc6d9de4deed532ab624eedef2f30324..3a0e1c01790e3e22707ec959f8b61bb293064d99 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2013-2022, ARM Limited and Contributors. All rights reserved.
+# Copyright (c) 2013-2023, Arm Limited and Contributors. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -306,8 +306,8 @@ ENABLE_FEAT_RNG                     := 2
 
 # Later QEMU versions support SME and SVE.
 ifneq (${ARCH},aarch32)
-       ENABLE_SVE_FOR_NS       := 1
-       ENABLE_SME_FOR_NS       := 1
+       ENABLE_SVE_FOR_NS       := 2
+       ENABLE_SME_FOR_NS       := 2
 endif
 
 qemu_fw.bios: bl1 fip
index fec83db56149a7488d60a2482ca2f218897dc755..7b3129c3b9c9c3b6cd805d7793849584c3fd84b6 100644 (file)
@@ -137,5 +137,5 @@ ARM_PRELOADED_DTB_BASE := PLAT_QEMU_DT_BASE
 $(eval $(call add_define,ARM_PRELOADED_DTB_BASE))
 
 # Later QEMU versions support SME and SVE.
-ENABLE_SVE_FOR_NS      := 1
-ENABLE_SME_FOR_NS      := 1
+ENABLE_SVE_FOR_NS      := 2
+ENABLE_SME_FOR_NS      := 2