Commit graph

15292 commits

Author SHA1 Message Date
Chris Kay
3789c3c000 build: determine toolchain tools dynamically
Since the introduction of the toolchain detection framework into the
build system, we have done determination and identification of the
toolchain(s) used for the build at the initialization of the build
system.

This incurs a large cost to the build every time - for every toolchain
that has been requested by the current makefile, we try to identify each
tool in the list of known tool classes, even if that tool doesn't
actually see any use.

For the clean and check-like targets we worked around this by disabling
most of the toolchains if we detect these targets, but this is
inflexible and not very reliable, and it still means that when building
normal targets we are incurring that cost for all tools whether they are
used or not.

This change instead modifies the toolchain detection framework to only
initialize a tool for a given toolchain when it is first used. This does
mean that we can no longer warn about an incorrectly-configured
toolchain at the beginning of build system invocation, but it has the
advantage of substantially reducing build time and the complexity of
*using* the framework (at the cost of an increase in complexity in the
framework itself).

Change-Id: I7f3d06b2eb58c1b26a846791a13b0037f32c8013
Signed-off-by: Chris Kay <chris.kay@arm.com>
2024-09-10 09:47:06 +00:00
Chris Kay
14260dbfc2 build: properly namespace toolchain.mk variables
This is a simple change to ensure that everything in the `toolchain.mk`
makefile is adequately namespaced to avoid collisions.

Change-Id: I0b45966527e1a03200bbc6694fd6c7133e349314
Signed-off-by: Chris Kay <chris.kay@arm.com>
2024-09-06 13:41:12 +00:00
Olivier Deprez
eb366ee769 Merge "build: use ar over gcc-ar" into integration 2024-09-06 09:02:56 +02:00
Manish V Badarkhe
7dd66eec5a Merge changes from topic "jc/tcr2_asymmetric_support" into integration
* changes:
  feat(cm): handle asymmetry for FEAT_TCR2
  feat(tc): make TCR2 feature asymmetric
2024-09-05 18:30:22 +02:00
Jayanth Dodderi Chidanand
f4303d05ea feat(cm): handle asymmetry for FEAT_TCR2
With introduction of FEAT_STATE_CHECK_ASYMMETRIC, the asymmetry of cores
can be handled. FEAT_TCR2 is one of the features which can be
asymmetric across cores and the respective support is added here.

Adding a function to handle this asymmetry by re-visting the
feature presence on running core.
There are two possible cases:
 - If the primary core has the feature and secondary does not have it
   then the feature is disabled.
 - If the primary does not have the feature and secondary has it then,
   the feature need to be enabled in secondary cores.

Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
Change-Id: I73a70891d52268ddfa4effe40edf04115f5821ca
2024-09-05 16:28:23 +01:00
Jayanth Dodderi Chidanand
3e8a82a030 feat(tc): make TCR2 feature asymmetric
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
Change-Id: I6209dc46ddecaa09cc1220fe9488b3771ea6dc38
2024-09-05 14:11:11 +01:00
Madhukar Pappireddy
b76929825b Merge "fix(spmd): remove spmd_handle_spmc_message" into integration 2024-09-04 18:46:19 +02:00
Chris Kay
732c6bbe28 build: use ar over gcc-ar
It has been a sufficiently long time since the last release of binutils
did not automatically enable the LTO plugin. Migrate to `ar` rather than
using the `gcc-ar` build wrapper, which saves us some pain trying to
locate the proper archiver.

Change-Id: I6f8b895d6a470d2b7cd5b98ccb23c54b35d7ad12
Signed-off-by: Chris Kay <chris.kay@arm.com>
2024-09-04 14:08:00 +00:00
Joanna Farley
19bcffad58 Merge "fix(xilinx): optimize logic to read IPI response" into integration 2024-09-04 13:39:09 +02:00
Manish V Badarkhe
0c755a2c66 Merge changes from topic "mbedtls-config-cleanup" into integration
* changes:
  chore(qemu): remove duplicate define
  chore(imx): remove duplicate define
  chore(arm): remove duplicate defines
  chore(mbedtls): remove hash configs
2024-09-04 12:18:36 +02:00
Jens Wiklander
1f3ca0ef5b chore(qemu): remove duplicate define
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Change-Id: Id18abe80ab56fd51a9c2c1206b22d87f1e3871eb
2024-09-04 10:57:20 +02:00
Jimmy Brisson
d744e0f720 chore(imx): remove duplicate define
Signed-off-by: Jimmy Brisson <jimmy.brisson@arm.com>
Change-Id: If55d4e2777ca2cdcf55da3b2a60d99f694a2c94d
2024-09-04 10:55:54 +02:00
Jimmy Brisson
f8e31baa9c chore(arm): remove duplicate defines
Change-Id: I9eea1610660bfa92f7781deab60e29eae11c4ba6
Signed-off-by: Jimmy Brisson <jimmy.brisson@arm.com>
2024-09-04 10:55:41 +02:00
Jimmy Brisson
48ee4995c5 chore(mbedtls): remove hash configs
After the upgrade to mbedtls 3.6.0, some of these configuation limitations
are no longer present.

Size chages:
build config | executable | Delta
-------------|------------|-------
tbb ecdsa    | bl1        |  -176
-------------|------------|-------
tbb rsa      | bl1        |  -192
             | bl2        | -4096
-------------|------------|-------
drtm         | romlib     |  -576
-------------|------------|-------
spm          | romlib     |  -576
-------------|------------|-------
mb384        | romlib     | -1016

Change-Id: I019bc59adc93cf95f6f28ace9579e7bf1e785b62
Signed-off-by: Jimmy Brisson <jimmy.brisson@arm.com>
2024-09-04 10:55:15 +02:00
Kathleen Capella
6c378c2fef fix(spmd): remove spmd_handle_spmc_message
The function `spmd_handle_spmc_message` was added into SPMD for
potential cases of SPMC sending a message (through SMC conduit)
to the SPMD. There is no longer a use case for this scenario.

Instead, if such a message is received by SPMD, return FFA_ERROR.

Signed-off-by: Kathleen Capella <kathleen.capella@arm.com>
Change-Id: I74eda4cc0edf99c83a96d10981cf6d9e727207f8
2024-09-03 20:58:04 +02:00
Manish V Badarkhe
fb3314d9e3 Merge "fix(stm32mp2): remove mapping of BL2 DT area" into integration 2024-09-03 16:52:16 +02:00
Yann Gautier
60d0758411 fix(stm32mp2): remove mapping of BL2 DT area
To prevent from coding issues that could overwrite DT area, we were
mapping this area as read-only on STM32MP1. But on STM32MP2, we need
this area to put BL31 binary. We were then using dynamic mapping. But
the area is included in the whole SYSRAM memory mapping. This is not
allowed with dynamic mapping. As no other code is running at this step,
and we know what code is running in BL2, just remove this extra
read-only protection for STM32MP2. A message is added after the post
load process of FW-CONFIG file, as BL2 DT area will be overwritten
after that.
And remove the now useless macros DTB_BASE & DTB_LIMIT.
This corrects Coverity issue: CID 443168.

Change-Id: Ic01d6a443ecf7721380ef39dc570e2d1627008d0
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
2024-09-03 15:25:53 +02:00
Manish V Badarkhe
f280406368 Merge "fix(fdt): reserved memory: detect existing region" into integration 2024-09-03 13:12:32 +02:00
Olivier Deprez
e2c3611cf1 Merge changes from topic "mb/misc-fixes" into integration
* changes:
  docs: fix typos in cot binding
  fix(drtm): return proper values for DRTM get and set error SMCs
  fix(tools): update the fiptool and certtool to fix POSIX build
2024-09-02 17:12:01 +02:00
Yann Gautier
d2539074b6 Merge "feat(build): add ctags recipes for indexing assembly files" into integration 2024-09-02 14:44:11 +02:00
Jay Buddhabhatti
02943d0d8d fix(xilinx): optimize logic to read IPI response
Optimize logic to read IPI response from firmware and avoid using
temporary buffer. Also, use pointer instead of array as per standard
format to pass by reference in function.

Change-Id: I45ebaeacc932a11bbfd4b7d9b9c43b4ee8ee7df2
Signed-off-by: Jay Buddhabhatti <jay.buddhabhatti@amd.com>
2024-09-02 02:37:00 -07:00
Mark Dykes
97d48be016 Merge "fix(intel): update memcpy to memcpy_s" into integration 2024-08-30 20:09:24 +02:00
Madhukar Pappireddy
7e014f4710 Merge "feat(rdv3): set CTX_INCLUDE_SVE_REGS build flag for RD-V3 variants" into integration 2024-08-30 19:26:20 +02:00
Andre Przywara
42488064e1 fix(fdt): reserved memory: detect existing region
When fdt_add_reserved_memory() is called to add a memory region, we
unconditionally add a node for that region. However there might be an
existing region node in the DT already, or there might be an overlapping
region. The Linux kernel will complain in those cases.

Cover the simple case of the region already existing in the DT, as this
is what we actually see on the Allwinner H616: The mainline DT contains
a node reserving the memory for TF-A, in case the DT changed by TF-A
itself is not given to the kernel. Our code always adds a region, making
the kernel complain - albeit without further consequences.

Covering all cases of overlapping regions would blow up the generic DT
code too much, so just add a simple check for an existing region
completely containing the to-be-added region, simply bailing out in this
case.

This prevents the kernel warning for the Allwinner H616.

This code requires a function from fdt_wrappers.c, so we have to include
that file for platforms that use the fdt_add_reserved_memory() function
(rpi4 and versal2).

Change-Id: I98404889163316addbb42130d7177f1a21c8be06
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2024-08-30 11:14:55 +02:00
gaurav02
155183432a feat(rdv3): set CTX_INCLUDE_SVE_REGS build flag for RD-V3 variants
Commit 4242262(feat(simd):add sve state to simd ctxt struct)
introduced the CTX_INCLUDE_SVE_REGS build flag that needs to be set
if SVE is enabled for more than one world, which is the case for
RD-V3. This build flag enables SVE registers to be included when
saving and restoring the CPU context.

Change-Id: Ic491939061e42e8c87a805ded99e271308f90352
Signed-off-by: Gautham Ravichandran <gautham.ravichandran@arm.com>
2024-08-29 19:18:30 +01:00
Manish V Badarkhe
afcb696e20 docs: fix typos in cot binding
Fixed a few typos in the cot binding document.

Change-Id: I043187b3f4b516db944e82569307834df2c3c72a
Signed-off-by: sah01 <sahil@arm.com>
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2024-08-29 17:31:35 +01:00
Manish V Badarkhe
5e1fa57459 fix(drtm): return proper values for DRTM get and set error SMCs
The DRTM get and set error previously returned SMC_UNK when these
SMCs were issued. This has been corrected to return an appropriate
error code on failure, and success otherwise.
Also,align the error code values with the specification.

Change-Id: I8f11f94f1ab097245003dbde97365fa54e0097ba
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2024-08-29 17:31:35 +01:00
Manish V Badarkhe
ccbfd01d95 fix(tools): update the fiptool and certtool to fix POSIX build
This patch fixes below issue raised:

https://github.com/TrustedFirmware-A/trusted-firmware-a/issues/8
https://github.com/TrustedFirmware-A/trusted-firmware-a/issues/9
https://github.com/TrustedFirmware-A/trusted-firmware-a/issues/10

Change-Id: I521bf7410535ffe49198789ba183cc401b3b88a0
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2024-08-29 17:31:25 +01:00
Andre Przywara
54b773e183 feat(build): add ctags recipes for indexing assembly files
The "ctags" code referencing tool creates an index for all identifiers
used in a project. The builtin recipes handle our C files just fine, but
due to a lack of a standard for marking functions and variables in assembly
files, will fail including the assembly code.

Provide the regular expressions that match the function tags used in our
assembly files, alongside the syntax we use for macros and "equ"
defines.

This will include assembly code in a ctags cross reference session.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Change-Id: I47d531bfc6fafe9aeef9f4b66b7fdc4490b2e161
2024-08-29 15:58:24 +01:00
Manish V Badarkhe
8e9bdc5b1d Merge changes from topic "us_tc4_rebase_v2" into integration
* changes:
  feat(tc): bind DPU SMMU on TC4
  feat(tc): bind GPU SMMU on TC4
  feat(tc): update DT for Drage GPU
  feat(tc): enable SME and SME2 options for TC4
  feat(tc): add new TC4 RoS definitions
  feat(tc): add system generic timer register definition for TC4
  feat(tc): allow TARGET_VERSION=4
  feat(tc): add MHUv3 register addresses for TC4
  feat(tc): add device tree binding for TC4
2024-08-29 16:58:07 +02:00
Jackson Cooper-Driver
e365479d0d feat(tc): bind DPU SMMU on TC4
TC4 adds a new SMMU-700 specifically for the DPU (in the RoS). This is
used as the DPU SMMU instead of the existing SMMU used for both the GPU
and DPU. Update the devicetree to reflect this.

Note that the streamID values have also changes for this new SMMU. This
is because TC4 also updates the new SMMU to use a different streamID for
each DPU port - these must all be added to the device tree.

Change-Id: If2ce9749e40937fd1291346d071b691cfb662f2e
Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Leo Yan
11ec5de695 feat(tc): bind GPU SMMU on TC4
A SMMU-700 is used on TC4 for only GPU, on both FVP and FPGA. Add DT
binding for it.

Change-Id: I1b840676fd02c3961d4efdd769f12a4b01d459fb
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Leo Yan
b3a4f8cfcf feat(tc): update DT for Drage GPU
This patch incorporates the changes for Drage GPU to uses new access
window interface "IRQ_AW". As the interrupt properties are different
between TC4 and other TC platforms, this patch appends the interrupt
properties in platform specific DT binding file.

Change-Id: I2ca505846f03ce64b8e5f02fd202962dbfe39f25
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Jackson Cooper-Driver
9face2123a feat(tc): enable SME and SME2 options for TC4
Set the Make flags for TF-A to be able to enable SME and SME2 features.
Note that we enable these architectural features for both the secure and
non-secure worlds, which is required on TC4.

In the case of the non-secure world, we specify a value of 2 for the
flag which specifies that TF-A should check the feature register to
ensure that the feature is present before enabling it. This allows these
flags to be compatible with all platforms and stops TF-A doing anything
different if it does not detect that the feature is present.

Change-Id: I51f8c7e3eb1cf06767f4b155c93269e1f129f730
Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Jackson Cooper-Driver
e9e83e96bb feat(tc): add new TC4 RoS definitions
The TC4 uses a new RoS (Virtual Peripherals) and places them at
different address to that in TC3. Add these addresses to the DTS.

Change-Id: Ia62a670e47cdc98b3c113a670a21edc65905cafe
Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Jackson Cooper-Driver
d6b6a8b7cc feat(tc): add system generic timer register definition for TC4
Add new include (specific to TC4) to the TC platform file which
specifies the system generic timer base address and is used by the TF-a
for use as system counters.

Note that this include must come before arm_def.h. This is required
as it checks if ARM_SYS_CNTCTL macros are defined before defining
its own macros.

Change-Id: I56861e5737271b29f09c75d962533be620766b52
Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Jackson Cooper-Driver
e8e1b60820 feat(tc): allow TARGET_VERSION=4
Add basic support for TARGET_VERSION=4. It extends the existing 'if'
statements in the Makefile and the header to allow them to take the
value of 4 and also specifies the SCMI platform info to use for TC4.

Change-Id: I8d8257671314277a133e88ef65fae8fada93d00e
Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Leo Yan
36ffe3e1be feat(tc): add MHUv3 register addresses for TC4
Change-Id: I06351fc048d792943f338291f8f64827339e8e1c
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:21 +01:00
Leo Yan
3cedc47b1d feat(tc): add device tree binding for TC4
Since TC3 and TC4 share most components in the hardware design, they can
reuse the device tree binding. For this reason, this patch extracts the
common modules from tc3.dts and put into the file tc3-4-based.dtsi.

As a result, a new created tc4.dts file includes tc3-4-based.dtsi for
support DT binding for the TC4 platform.

Change-Id: Ib7497162cb131d94a722aeaa14a1a37fb0095829
Signed-off-by: Leo Yan <leo.yan@arm.com>
2024-08-29 14:39:08 +01:00
Olivier Deprez
241ec3a5af Merge changes from topic "mb/cot-fixes" into integration
* changes:
  fix(cot-dt2c): fix various breakages
  fix(cot-dt2c): use processed Device Tree source file as input
2024-08-29 12:06:50 +02:00
Soby Mathew
881b041e86 Merge "feat(rme): change the default max GPT block size to 512MB" into integration 2024-08-29 12:01:43 +02:00
Julius Werner
13be7c2f8e Merge "docs(maintainers): remove jwerner from Rockchip" into integration 2024-08-29 02:21:48 +02:00
Manish V Badarkhe
a12ff0393c Merge "fix(rpi3): use correct define for GPIO reg_clr" into integration 2024-08-28 16:53:09 +02:00
Manish Pandey
75c6935899 Merge "fix(sdei): fix a crash when attempting to bind more events than are available" into integration 2024-08-28 15:40:30 +02:00
Chris Kay
73f7b7ddbe fix(cot-dt2c): fix various breakages
This change fixes several breakages that were introduced in some build
configurations by the introduction of the cot-dt2c tool.

Some Python environments cannot be managed directly via `pip`, and
invocations of `make`, including `make distclean`, would cause errors
along the lines of:

    error: externally-managed-environment

    × This environment is externally managed
    ╰─> To install Python packages system-wide, try apt install
        python3-xyz, where xyz is the package you are trying to
        install.

This change has been resolved by ensuring that calls to the cot-dt2c
tool from the build system happen exclusively through Poetry, which
automatically sets up a virtual environment that *can* be modified.

Some environments saw the following error when building platforms where
the cot-dt2c tool was used:

    make: *** No rule to make target '<..>/debug/bl2_cot.c', needed
    by '<..>/debug/bl2/bl2_cot.o'.  Stop.

Additionally, environments with a more recent version of Python saw the
following error:

      File "<...>/lib/python3.12/site-packages/cot_dt2c/cot_parser.py",
      line 637, in img_to_c
        if ifdef:
           ^^^^^
    NameError: name 'ifdef' is not defined

Both of these errors have now been resolved by modifications to the
build system and the cot-dt2c tool to enable preprocessing of the device
tree source file before it is processed by the tool.

As a consequence of this change, the `pydevicetree` library is no longer
vendored into the repository tree, and we instead pull it in via a
dependency in Poetry.

This change also resolves several MyPy warnings and errors related to
missing type hints.

Change-Id: I72b2d01caca3fcb789d3fe2549f318a9c92d77d1
Signed-off-by: Chris Kay <chris.kay@arm.com>
2024-08-28 09:56:59 +00:00
Olivier Deprez
6b206d1dd8 Merge "fix(zynqmp): handle secure SGI at EL1 for OP-TEE" into integration 2024-08-28 09:14:38 +02:00
Olivier Deprez
8f20266a79 Merge "fix(intel): software workaround for bridge timeout" into integration 2024-08-28 08:37:23 +02:00
Olivier Deprez
26cadf59ea Merge "fix(poplar): use sysctrl module to reset" into integration 2024-08-28 08:35:48 +02:00
Yang Xiwen
c961e68e79 fix(poplar): use sysctrl module to reset
Use sysctrl module rather than watchdog0 to reset the entire system.
Sysctrl is more reliable and requires less resources such as clocks and
resets. Doing this also allows non-secure OS to use the watchdog.

Change-Id: I30ac2780cc70055d81b35e55e35c9cb7f58b40cc
Signed-off-by: Yang Xiwen <forbidden405@foxmail.com>
2024-08-28 08:34:48 +02:00
Olivier Deprez
6a398523b9 Merge "fix(poplar): shutdown wdt0 before powering off" into integration 2024-08-28 08:34:36 +02:00