12179 Commits

Author SHA1 Message Date
Bipin Ravi
00230e37e3 fix(cpus): workaround for Cortex-A78C erratum 2772121
Cortex-A78C erratum 2772121 is a Cat B erratum that applies to
all revisions <=r0p2 and is still open. The workaround is to
insert a dsb before the isb in the power down sequence.

SDEN documentation:
https://developer.arm.com/documentation/SDEN1707916/latest

Signed-off-by: Bipin Ravi <bipin.ravi@arm.com>
Change-Id: I0e190dabffc20c4d3b9b98d1abeb50f308b80bb9
2023-01-18 11:30:25 -06:00
Madhukar Pappireddy
5c5ea616ea Merge "fix: add parenthesis for tests in MIN, MAX and CLAMP macros" into integration 2023-01-18 18:06:38 +01:00
Waleed Elmelegy
60719e4e09 fix(plat/css): fix invalid redistributor poweroff
Commit 4d8c18196378824e388cf31ef991ba8fbbb09cbf
introduced an invalid redistributor power off
where we turn off the redistributor without
checking if the system power domain level is
turning off, otherwise we can turn off a
redistributor when other cores or clusters are
sharing it, also if it does indeed needs
powering off during suspend we do it twice.
This change fixes this by checking on the
system power state first then turning off
the redistributor.

Signed-off-by: Waleed Elmelegy <waleed.elmelegy@arm.com>
Change-Id: Id202bc2316ab7c516298fa33ea089ae2e221a933
2023-01-18 16:19:14 +02:00
Joanna Farley
95cde79501 Merge "fix(zynqmp): fix xck24 silicon ID" into integration 2023-01-18 13:33:02 +01:00
Manish Pandey
79c262327a Merge changes from topic "mtk_spm" into integration
* changes:
  refactor(mediatek): add new LPM API for further extension
  refactor(mediatek): change the parameters of LPM API
  refactor(mediatek): change LPM header file path for further extension
  feat(mt8188): keep infra and peri on when system suspend
  feat(mt8188): enable SPM and LPM
  feat(mt8188): add SPM feature support
  feat(mt8188): add MT8188 SPM support
  feat(mediatek): add SPM's SSPM notifier
  feat(mt8188): add the register definitions accessed by SPM
  feat(mediatek): add new features of LPM
2023-01-18 12:06:11 +01:00
Michal Simek
f156590767 fix(zynqmp): fix xck24 silicon ID
Origin ID code has changed from origin description. After receiving part
new ID code come up that's why fix it. The origin ID code has been added
by commit 86869f99d0c1 ("feat(zynqmp): add support for xck24 silicon").

Change-Id: I727bfe43fd7ef9e604f63bde5fa37fa3666db8c4
Signed-off-by: Michal Simek <michal.simek@amd.com>
2023-01-18 09:09:19 +01:00
Manish Pandey
28a8efd2e2 Merge changes from topic "st_dt_update" into integration
* changes:
  refactor(stm32mp15-fdts): remove unused PMIC nodes
  fix(stm32mp15-fdts): use interrupts-extended for i2c2
  style(stm32mp15-fdts): remove extra spaces on vbus
2023-01-17 17:43:29 +01:00
AlexeiFedorov
a97bfa5ff1 feat(rme): set DRAM information in Boot Manifest platform data
This patch adds support for setting configuration of DRAM banks
for FVP model in RMM-EL3 Boot Manifest structure.
Structure 'rmm_manifest' is extended with 'plat_dram' structure
which contains information about platform's DRAM layout:
- number of DRAM banks;
- pointer to 'dram_bank[]' array;
- check sum: two's complement 64-bit value of the sum of
  data in 'plat_dram' and 'dram_bank[] array.
Each 'dram_bank' structure holds information about DRAM
bank base address and its size. This values must be aligned
to 4KB page size.
The patch increases Boot Manifest minor version to 2 and
removes 'typedef rmm_manifest_t' as per
"3.4.15.1. Avoid anonymous typedefs of structs/enums in headers" of
https://trustedfirmware-a.readthedocs.io/en/latest/process/coding-style.html

Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
Change-Id: I5176caa5780e27d1e0daeb5dea3e40cf6ad5fd12
2023-01-17 16:35:41 +00:00
Madhukar Pappireddy
0185523948 Merge changes from topic "ti-k3-checks-and-refactor" into integration
* changes:
  fix(ti): fix typo in boot authentication message name
  refactor(ti): remove empty validate_ns_entrypoint function
  refactor(ti): use console_set_scope() rather than empty function hack
  refactor(ti): factor out common board code into common files
  feat(ti): add PSCI system_off support
  feat(ti): do not handle EAs in EL3
  feat(ti): set snoop-delayed exclusive handling on A72 cores
  feat(ti): disable L2 dataless UniqueClean evictions
  feat(ti): set L2 cache ECC and and parity on A72 cores
  feat(ti): set L2 cache data ram latency on A72 cores to 4 cycles
2023-01-16 21:46:50 +01:00
Manish Pandey
7f31629d5d Merge changes from topic "deprecate_io_drivers" into integration
* changes:
  refactor(st): remove unused io_mmc driver
  docs: deprecate io_dummy driver
2023-01-16 16:45:37 +01:00
Manish Pandey
c2c3ca12e5 Merge changes from topic "refactor_st_common" into integration
* changes:
  refactor(st): move board info in common code
  refactor(st): move GIC code to common directory
  refactor(st): move boot backup register management
2023-01-16 16:44:17 +01:00
Joanna Farley
caea096583 Merge "feat(versal-net): add support for uart1 console" into integration 2023-01-16 14:45:05 +01:00
Sandrine Bailleux
e64a26aaa2 Merge "docs(security): security advisory for CVE-2022-47630" into integration 2023-01-16 14:23:39 +01:00
Sandrine Bailleux
d7156d4123 docs(security): security advisory for CVE-2022-47630
Reported-by: Demi Marie Obenour <demiobenour@gmail.com>
Co-authored-by: Demi Marie Obenour <demiobenour@gmail.com>
Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Change-Id: I20be2d280437eb223c988e2bf59c4562515817a0
2023-01-16 14:07:29 +01:00
Akshay Belsare
2f1b4c5550 feat(versal-net): add support for uart1 console
Versal NET platform supports two UART(UART0, UART1)
Add support for UART1 to be used as console for Versal NET platform.

Change-Id: I3bc2034f54052e37cc480f98d48335fa5b2138bf
Signed-off-by: Akshay Belsare <akshay.belsare@amd.com>
2023-01-16 16:36:22 +05:30
Manish Pandey
f53a1b6735 Merge "refactor(el3_runtime): remove unnecessary assembly macros" into integration 2023-01-13 11:19:52 +01:00
Manish Pandey
e5d6cec86f Merge "fix(mpam): remove unwanted param for "endfunc" macro" into integration 2023-01-13 10:07:42 +01:00
Andrew Davis
81f525ecc7 fix(ti): fix typo in boot authentication message name
Fix AUTH_BOOT message identifier (s/IMIAGE/IMAGE).

Reported-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: I19eb1798c6b9dd8c3f59e05c59318c9c3be971a0
2023-01-12 18:45:48 -06:00
Andrew Davis
c06e78cb3e refactor(ti): remove empty validate_ns_entrypoint function
Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: I93165e9f26f5a5b600e7b6a9d48df75d62e89f17
2023-01-12 18:45:48 -06:00
Andrew Davis
7c85bfac1e refactor(ti): use console_set_scope() rather than empty function hack
Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: I62c1215bc02e95a7ea9fa1e2dfa9ef05e204fce1
2023-01-12 18:45:48 -06:00
Andrew Davis
4db96de45d refactor(ti): factor out common board code into common files
Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: Ibf7328418c5285a64608b80e7c430a8dee64fb1d
2023-01-12 18:45:48 -06:00
Andrew Davis
0bdef264c2 feat(ti): add PSCI system_off support
Send a TI-SCI control message to system firmware to power down the board.

Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: I6b8fa64baa94da078db82fc8e115630c9f200b3d
2023-01-12 18:44:54 -06:00
Andrew Davis
2fcd408bb3 feat(ti): do not handle EAs in EL3
This could be useful if we had extra information to print or
when RAS extensions are available, neither apply here so lets
not trap these in EL3 for now.

Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: Ia0334eb845686964e794afe45c7777ea64fd6b0b
2023-01-12 18:42:57 -06:00
Andrew Davis
5668db72b7 feat(ti): set snoop-delayed exclusive handling on A72 cores
Snoop requests should not be responded to during atomic operations. This
can be handled by the interconnect using its global monitor or by the
core's SCU delaying to check for the corresponding atomic monitor state.

TI SoCs take the second approach. Set the snoop-delayed exclusive handling
bit to inform the core it needs to delay responses to perform this check.

As J784s4 is currently the only SoC with multiple A72 clusters, limit
this delay to only that device.

Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: I875f64e4f53d47a9a0ccbf3415edc565be7f84d9
2023-01-12 18:42:57 -06:00
Andrew Davis
10d5cf1b26 feat(ti): disable L2 dataless UniqueClean evictions
Do this early before we enable caching as a workaround for ARM A72
Errata #854172.

Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: Ic878fdb49e598da0ea6ade012712f8f57023678e
2023-01-12 18:42:57 -06:00
Andrew Davis
81858a353f feat(ti): set L2 cache ECC and and parity on A72 cores
The Cortex-A72 based cores on K3 platforms have cache ECC and
parity protection, enable these.

Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: Icd00bc4aa9c1c48f0fb2a10ea66e75e0b146ef3c
2023-01-12 18:42:57 -06:00
Andrew Davis
aee2f33a67 feat(ti): set L2 cache data ram latency on A72 cores to 4 cycles
The Cortex-A72 based cores on K3 platforms can be clocked fast
enough that an extra latency cycle is needed to ensure correct
L2 access. Set the latency here for all A72 cores.

Signed-off-by: Andrew Davis <afd@ti.com>
Change-Id: I639091dd0d2de09572bf0f73ac404e306e336883
2023-01-12 18:42:57 -06:00
Manish V Badarkhe
74a3f9ecf4 Merge changes from topic "tonnad01/rdn2cfg3" into integration
* changes:
  feat(rdn2): add platform id value for rdn2 variant 3
  refactor(rdn2): reduce use of CSS_SGI_PLATFORM_VARIANT build flag
2023-01-12 22:15:40 +01:00
Sandrine Bailleux
5442a875ca Merge changes Id4570f91,Ibdf1af70 into integration
* changes:
  fix(auth): properly validate X.509 extensions
  fix(auth): avoid out-of-bounds read in auth_nvctr()
2023-01-12 20:36:08 +01:00
Tony K Nadackal
028c6190d9 feat(rdn2): add platform id value for rdn2 variant 3
The RD-N2-Cfg3 platform is a variant of the RD-N2 platform with the
significant difference being the number of ITS blocks and the use of a
different part number.

Signed-off-by: Tony K Nadackal <tony.nadackal@arm.com>
Change-Id: Id4c5faeae44f21da79cb59540558192d0b02b124
2023-01-12 17:26:00 +00:00
Tony K Nadackal
a9896306c1 refactor(rdn2): reduce use of CSS_SGI_PLATFORM_VARIANT build flag
The core count is one of the significant difference between the various
RD-N2 platform variants. The PLAT_ARM_CLUSTER_COUNT macro defines the
number of core/cluster for a variant. In preparation to add another
variant of RD-N2 platform, replace the use of CSS_SGI_PLATFORM_VARIANT
build flag, where applicable, with the PLAT_ARM_CLUSTER_COUNT macro.
This helps to reduce the changes required to add support for a new
variant.

Signed-off-by: Tony K Nadackal <tony.nadackal@arm.com>
Change-Id: I89b168308d1b5f7edd402205dd25d6c3a355e100
2023-01-12 17:26:00 +00:00
Joanna Farley
42c4760afa Merge changes from topic "fix-power-up-dwn-issue" into integration
* changes:
  fix(versal-net): enable wake interrupt during client suspend
  fix(versal-net): disable wakeup interrupt during client wakeup
  fix(versal-net): clear power down bit during wakeup
  fix(versal-net): fix setting power down state
  fix(versal-net): clear power down interrupt status before enable
  fix(versal-net): resolve misra rule 20.7 warnings
  fix(versal-net): resolve misra 10.6 warnings
2023-01-12 11:11:28 +01:00
Joanna Farley
3e15e67ca8 Merge "fix(versal): print proper atf handoff source" into integration 2023-01-12 11:08:52 +01:00
Madhukar Pappireddy
72020318f2 Merge "fix(cpus): workaround for Cortex-X2 erratum 2282622" into integration 2023-01-11 22:06:28 +01:00
Lauren Wehrmeister
fb79797473 Merge "fix(cpus): workaround for Cortex-A710 erratum 2282622" into integration 2023-01-11 20:57:27 +01:00
Bipin Ravi
f9c6301d74 fix(cpus): workaround for Cortex-X2 erratum 2282622
Cortex-X2 erratum 2282622 is a Cat B erratum that applies to
all revisions <=r2p1 and is still open. The workaround is to set
CPUACTLR2_EL1[0] to 1 to force PLDW/PFRM ST to behave like
PLD/PRFM LD and not cause invalidations to other PE caches.

SDEN documentation:
https://developer.arm.com/documentation/SDEN1775100/latest

Signed-off-by: Bipin Ravi <bipin.ravi@arm.com>
Change-Id: I43956aa4898a8608eedc5d0dd1471172c641a0c6
2023-01-11 11:34:19 -06:00
Andre Przywara
2e1241888e feat(fvp): enable FEAT_HCX by default
FEAT_HCX is one of the features for which Linux necessarily requires EL3
enablement, when the feature is present on a PE.

To cover the effect of different FVP command line parameters, include
the feature into the standard FVP build, but use FEAT_STATE_CHECK, to
always do runtime checks before accessing feature specific registers.

This prevents a Linux crash when the FVP is called with FEAT_HCX
enabled.

Change-Id: I01aaed15c5a6850176d092b2f0157744fe0a9e13
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2023-01-11 16:02:58 +00:00
Andre Przywara
c5a3ebbd3a refactor(context-mgmt): move FEAT_HCX save/restore into C
At the moment we save and restore the HCRX_EL2 register in assembly, and
just depend on the build time flags.
To allow runtime checking, and to avoid too much code in assembly, move
that over to C, and use the new combined build/runtime feature check.

This also allows to drop the assert, since this should now be covered by
the different FEAT_STATE_x options.

Change-Id: I3e20b9ba17121d423cd08edc20bbf4e7ae7c0178
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2023-01-11 16:02:58 +00:00
Andre Przywara
d242128c1d refactor(cpufeat): convert FEAT_HCX to new scheme
Use the generic check function in feat_detect.c, and split the feature
check into two functions, as done for FEAT_FGT before.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: I0a4f973427c10d5d15c414ff5e12b18b7e645fae
2023-01-11 16:02:58 +00:00
Andre Przywara
15107daad6 feat(fvp): enable FEAT_FGT by default
FEAT_FGT is one of the features for which Linux necessarily requires EL3
enablement, when the feature is present on a PE.

To cover the effect of different FVP command line parameters, include
the feature into the standard FVP build, but use FEAT_STATE_CHECK, to
always do runtime checks before accessing feature specific registers.

This prevents a Linux crash when the FVP is called with FEAT_FGT
enabled.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: I55fbb2706aefbc3ab67c476e3f8b6ea74ae0d66c
2023-01-11 16:02:58 +00:00
Andre Przywara
bb7b85a397 refactor(context-mgmt): move FEAT_FGT save/restore code into C
At the moment we do the EL2 context save/restore sequence in assembly,
where it is just guarded by #ifdef statement for the build time flags.
This does not cover the FEAT_STATE_CHECK case, where we need to check
for the runtime availability of a feature.

To simplify this extension, and to avoid writing too much code in
assembly, move that sequence into C: it is called from C context
anyways.

This protects the C code with the new version of the is_xxx_present()
check, which combines both build time and runtime check, as necessary,
and allows the compiler to optimise the calls aways, if we don't need
them.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: I7c91bec60efcc00a43429dc0381f7e1c203be780
2023-01-11 16:02:58 +00:00
Andre Przywara
f0deb4c8c7 refactor(amu): convert FEAT_AMUv1 to new scheme
For the FGT context save/restore operation, we need to look at the AMUv1
feature, so migrate this one over to the new scheme.
This uses the generic check function in feat_detect.c, and splits the
feature check into two functions, as was done before for FEAT_FGT.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: I95ad797f15001b2c9d1800c9d4af33fba79e136f
2023-01-11 16:02:58 +00:00
Andre Przywara
ce4859554c refactor(cpufeat): decouple FGT feature detection and build flags
Split the feature check for FEAT_FGT into two parts:
- A boolean function that just evaluates whether the feature is usable.
  This takes build time flags into account, and only evaluates the CPU
  feature ID registers when the flexible FEAT_STATE_CHECK method is
  used.
- A "raw" function that returns the unfiltered CPU feature ID register.

Change the callers where needed, to give them the version they actually
want.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: I9a041132d280451f5d9f653a62904f603b2a916d
2023-01-11 16:02:58 +00:00
Andre Przywara
b45dd74e3a refactor(cpufeat): check FEAT_FGT in a new way
To implement proper runtime checking of features, and to be able to
extend feat_detect.c to catch other cases, rework the FEAT_FGT check to
directly call a generic function instead of providing a trivial specific
one. The #ifdef is moved into the function, and rewritten as a proper C
if statement.
We need to force the compiler to inline that function, otherwise the
optimisation won't work, once we exceed a certain number of callers.

This starts with FEAT_FGT, but all the other features will be moved over
eventually, in separate patches.

For all features checked this way, we delay the panic() until after
every feature has been checked, to list them all during one run.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: Ic576922ff2c4f8d3c1b87b5843b3626729fe4514
2023-01-11 16:02:58 +00:00
Andre Przywara
69c17f52f9 refactor(cpufeat): move helpers into .c file, rename FEAT_STATE_
The FEATURE_DETECTION functionality had some definitions in a header
file, although they were only used internally in the .c file.
Move them over there, since there are of no interest to other users.

Also use the opportuntiy to rename the less telling FEAT_STATE_[12]
names, and let the "0" case join the game. We use DISABLED, ALWAYS, and
CHECK now, so that the casual reader has some idea what those numbers
are supposed to mean.

feature_panic() becomes "static inline", since disabling all features
makes it unused, so the compiler complains otherwise.

Finally add a new category "cpufeat" to cover CPU feature related
changes.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: If0c8ba91ad22440260ccff383c33bdd055eefbdc
2023-01-11 16:02:58 +00:00
Andre Przywara
c2fb8ef66c feat(aarch64): make ID system register reads non-volatile
Our system register access function wrappers are using "volatile"
inline assembly instructions. On the first glance this is a good idea,
since many system registers have side effects, and we don't want the
compiler to optimise or reorder them (what "volatile" prevents).

However this also naturally limits the compiler's freedom to optimise
code better, and those volatile properties don't apply to every type of
system register. One example are the CPU ID registers, which have
constant values, are side-effect free and read-only.

Introduce a new wrapper type that drops the volatile keyword, and use
that for the wrappers instantiating ID register accessors.

This allows the compiler to freely optimise those instructions away, if
their result isn't actually used, which can trigger further
optimisations.

Change-Id: I3c64716ae4f4bf603f0ea57b652bd50bcc67bb0e
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2023-01-11 16:02:57 +00:00
Raef Coles
6ef63af65f feat(rss): add TC platform UUIDs for RSS images
Add platform fiptool and UUIDs to the TC platform, to allow RSS images
to be inserted into and used from FIPs

Change-Id: Ic8e11bd4a766bdc616af7dee60d44fc5d1f6e7b6
Signed-off-by: Raef Coles <raef.coles@arm.com>
2023-01-11 13:27:19 +00:00
Sandrine Bailleux
fa27d1162a docs: change security advisories notification channel
Our documentation currently says that new security advisories will be
announced on the project's issue tracker. However, this issue tracker
is barely used by TF-A community and the software it is based on is
getting deprecated. Thus from now on, security advisories will rather
be announced on the project's mailing list.

Update TF-A documentation to reflect that.

Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Change-Id: If2f635795e0af4c794015a025899bfcc7116ab38
2023-01-11 11:38:10 +01:00
Akshay Belsare
0fe002c9be fix(versal): print proper atf handoff source
Versal uses PLM in the boot flow and printing FSBL in the log for
handoff parameters is misleading. Print proper source of TF-A
handoff parameters.

Change-Id: I331e2eac2f5d30beed8573940ae02094254a759b
Signed-off-by: Akshay Belsare <akshay.belsare@amd.com>
2023-01-11 15:35:17 +05:30
Yann Gautier
28dc82580e fix(libc): remove __putchar alias
This issue was triggered by sparse tool:
lib/libc/putchar.c:9:5: warning:
 symbol '__putchar' was not declared. Should it be static?
Instead of setting __putchar as static, just remove the function and
directly use putchar() with a weak attribute.

Signed-off-by: Yann Gautier <yann.gautier@st.com>
Change-Id: Ib35e4ba064f06010851bb860269b08462fe3d3bd
2023-01-11 09:18:50 +01:00