|
Update TFA and associated, tightly coupled components (TFTF and Hafnium)
to v2.10.
TFA's feature system has been been reworked to allow runtime detection
of (most) features. This is valuable for the FVP, where features can be
enabled/disabled with high granularity, and simplifies the per-arch
extension TFA directives that we have to carry in config/arch/vX.Y.yaml.
TFA's intent was that it should be possible to configure (almost) all
features as runtime-detected (the default for FVP platform) and
everything would just work. However, this was found not to work as
expected and I have instead had to explicitly set ARM_ARCH_MAJOR and
ARM_ARCH_MINOR for each arch version (this was intended only for
silicon). Setting these values cause TFA to compile-time enable all the
mandatory features for that arch version, leaving all the optional
features as runtime-detected. So in practice this fits the shrinkwrap
model quite well; as long as the TFA arch version is in sync with the
FVP arch version, we can then just enable optional features in the FVP
as required and TFA will runtime-detect them.
There are some rough edges though:
- PAUTH cannot be runtime detected as the compiler needs to know about
it, so we still explicitly set BRANCH_PROTECTION; its disabled until
v8.3, where PAUTH becomes mandatory, so we set it to 2 (PAUTH only).
Then at v8.5 where BTI becomes mandatory, we set BRANCH_PROTECTION to
1 (both PAUTH and BTI).
- TFA can't handle a v9.X major/minor (presumably due to a broken
makefile directive). So as a workaround, we always leave it set to
the highest equivalent v8.X version. (e.g. 9.0 <- 8.5, 9.1 <- 8.6,
etc).
TFTF and Hafnium are also upgraded to 2.10 since they are released in
lock-step with TFA.
Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
|