ci: add EL3 SPMC binaries

Generate binaries from upstream TF-A v2.8 release [1].

[1] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.8

Change-Id: Ibbd9e42c67eef0d1838403349566907f0b8e0aff
Signed-off-by: Shruti Gupta <shruti.gupta@arm.com>
diff --git a/linux-aarch64/trusted-firmware-a-el3-spmc/LICENSE b/linux-aarch64/trusted-firmware-a-el3-spmc/LICENSE
new file mode 100644
index 0000000..80f1118
--- /dev/null
+++ b/linux-aarch64/trusted-firmware-a-el3-spmc/LICENSE
@@ -0,0 +1,90 @@
+License
+=======
+
+The software is provided under a BSD-3-Clause license (below). Contributions to
+this project are accepted under the same license with developer sign-off as
+described in the :ref:`Contributor's Guide`.
+
+::
+
+    Copyright (c) [XXXX-]YYYY, <OWNER>. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without modification,
+    are permitted provided that the following conditions are met:
+
+    -  Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+
+    -  Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+    -  Neither the name of Arm nor the names of its contributors may be used to
+    endorse or promote products derived from this software without specific
+    prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+    ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+    ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+SPDX Identifiers
+----------------
+
+Individual files contain the following tag instead of the full license text.
+
+::
+
+    SPDX-License-Identifier:    BSD-3-Clause
+
+This enables machine processing of license information based on the SPDX
+License Identifiers that are here available: http://spdx.org/licenses/
+
+
+Other Projects
+--------------
+
+This project contains code from other projects as listed below. The original
+license text is included in those source files.
+
+-  The libc source code is derived from `FreeBSD`_ and `SCC`_. FreeBSD uses
+   various BSD licenses, including BSD-3-Clause and BSD-2-Clause. The SCC code
+   is used under the BSD-3-Clause license with the author's permission.
+
+-  The libfdt source code is disjunctively dual licensed
+   (GPL-2.0+ OR BSD-2-Clause). It is used by this project under the terms of
+   the BSD-2-Clause license. Any contributions to this code must be made under
+   the terms of both licenses.
+
+-  The LLVM compiler-rt source code is disjunctively dual licensed
+   (NCSA OR MIT). It is used by this project under the terms of the NCSA
+   license (also known as the University of Illinois/NCSA Open Source License),
+   which is a permissive license compatible with BSD-3-Clause. Any
+   contributions to this code must be made under the terms of both licenses.
+
+-  The zlib source code is licensed under the Zlib license, which is a
+   permissive license compatible with BSD-3-Clause.
+
+-  Some STMicroelectronics platform source code is disjunctively dual licensed
+   (GPL-2.0+ OR BSD-3-Clause). It is used by this project under the terms of the
+   BSD-3-Clause license. Any contributions to this code must be made under the
+   terms of both licenses.
+
+-  Some source files originating from the Linux source tree, which are
+   disjunctively dual licensed (GPL-2.0 OR MIT), are redistributed under the
+   terms of the MIT license. These files are:
+
+   -  ``include/dt-bindings/interrupt-controller/arm-gic.h``
+   -  ``include/dt-bindings/interrupt-controller/irq.h``
+
+   See the original `Linux MIT license`_.
+
+.. _FreeBSD: http://www.freebsd.org
+.. _Linux MIT license: https://raw.githubusercontent.com/torvalds/linux/master/LICENSES/preferred/MIT
+.. _SCC: http://www.simple-cc.org/
diff --git a/linux-aarch64/trusted-firmware-a-el3-spmc/METADATA b/linux-aarch64/trusted-firmware-a-el3-spmc/METADATA
new file mode 100644
index 0000000..b032f1b
--- /dev/null
+++ b/linux-aarch64/trusted-firmware-a-el3-spmc/METADATA
@@ -0,0 +1,16 @@
+name: "trusted-firmware-a"
+description: "Trusted Firmware-A (TF-A) provides a reference implementation of secure world software for Armv7-A and Armv8-A."
+
+third_party {
+  url {
+    type: HOMEPAGE
+    value: "https://www.trustedfirmware.org/projects/tf-a"
+  }
+  url {
+    type: GIT
+    value: "https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git"
+  }
+  version: "2.8"
+  last_upgrade_date { year: 2023 month: 01 day: 17 }
+  license_type: NOTICE
+}
diff --git a/linux-aarch64/trusted-firmware-a-el3-spmc/README.md b/linux-aarch64/trusted-firmware-a-el3-spmc/README.md
new file mode 100644
index 0000000..a4d1454
--- /dev/null
+++ b/linux-aarch64/trusted-firmware-a-el3-spmc/README.md
@@ -0,0 +1,27 @@
+# Trusted Firmware-A
+
+TF-A is built with command line options to include the SPMD (FF-A Secure Partition Manager
+Dispatcher) into the BL31 image.
+Additional options are provided to support SPMC running at EL3.
+PIE and RESET_TO_BL31 options are used as test configurations don't assume BL1/BL2 bootloaders
+usage.
+
+Pick patches [1] and [2]
+
+[1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/19740
+[2] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/20259/1
+
+```
+$ make CROSS_COMPILE=aarch64-none-elf- PLAT=fvp SPD=spmd		\
+  ARM_SPMC_MANIFEST_DTS=plat/arm/board/fvp/fdts/fvp_tsp_sp_manifest.dts	\
+  SPMC_AT_EL3=1 SPMD_SPM_AT_SEL2=0  PRELOADED_BL33_BASE=0x80000000	\
+  ARM_LINUX_KERNEL_AS_BL33=1 ARM_PRELOADED_DTB_BASE=0x82000000		\
+  FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts RESET_TO_BL31=1	\
+  BRANCH_PROTECTION=1  CTX_INCLUDE_PAUTH_REGS=1 ARM_ARCH_MINOR=5	\
+  ENABLE_PIE=1 V=1 DEBUG=1 all fip -j8
+
+$ cp build/fvp/debug/bl31.bin ../hafnium/prebuilts/linux-aarch64/trusted-firmware-a-el3-spmc/bl31.bin
+$ cp build/fvp/debug/bl32.bin ../hafnium/prebuilts/linux-aarch64/trusted-firmware-a-el3-spmc/bl32.bin
+$ cp build/fvp/debug/fdts/fvp_tsp_sp_manifest.dtb \
+  ../hafnium/prebuilts/linux-aarch64/trusted-firmware-a-el3-spmc/fdts/fvp_tsp_sp_manifest.dtb
+```
diff --git a/linux-aarch64/trusted-firmware-a-el3-spmc/bl31.bin b/linux-aarch64/trusted-firmware-a-el3-spmc/bl31.bin
new file mode 100644
index 0000000..f0c57b3
--- /dev/null
+++ b/linux-aarch64/trusted-firmware-a-el3-spmc/bl31.bin
Binary files differ
diff --git a/linux-aarch64/trusted-firmware-a-el3-spmc/bl32.bin b/linux-aarch64/trusted-firmware-a-el3-spmc/bl32.bin
new file mode 100644
index 0000000..6ec5a31
--- /dev/null
+++ b/linux-aarch64/trusted-firmware-a-el3-spmc/bl32.bin
Binary files differ
diff --git a/linux-aarch64/trusted-firmware-a-el3-spmc/fdts/fvp_tsp_sp_manifest.dtb b/linux-aarch64/trusted-firmware-a-el3-spmc/fdts/fvp_tsp_sp_manifest.dtb
new file mode 100644
index 0000000..a248a25
--- /dev/null
+++ b/linux-aarch64/trusted-firmware-a-el3-spmc/fdts/fvp_tsp_sp_manifest.dtb
Binary files differ