mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-07-19 16:57:09 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ff9b6f29bf | |||
| 00ceaafc72 | |||
| 8185ca9c20 | |||
| 387f32242e | |||
| dd5a968d3d | |||
| 99e1bf8229 | |||
| a41572a032 | |||
| 5fd87e47f6 | |||
| 8d35c5b539 | |||
| 9e2de7dacc | |||
| 3651527f57 | |||
| 4ee457693e | |||
| 46e8092b6b | |||
| f312adf47b | |||
| d3541b1e29 | |||
| 952dee0de9 | |||
| 9e17830b84 | |||
| bb02720fd7 | |||
| b4dfea8e28 | |||
| e4a5809373 |
@@ -26,13 +26,7 @@ env:
|
||||
|
||||
local_conf_header:
|
||||
base: |
|
||||
BB_SERVER_TIMEOUT = "60"
|
||||
CONF_VERSION = "2"
|
||||
BB_NUMBER_THREADS = "16"
|
||||
PARALLEL_MAKE = "-j16"
|
||||
XZ_MEMLIMIT = "25%"
|
||||
XZ_THREADS = "16"
|
||||
ZSTD_THREADS = "16"
|
||||
LICENSE_FLAGS_ACCEPTED += "Arm-FVP-EULA"
|
||||
setup: |
|
||||
PACKAGE_CLASSES = "package_ipk"
|
||||
|
||||
@@ -4,7 +4,6 @@ header:
|
||||
repos:
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
refspec: master
|
||||
layers:
|
||||
meta-filesystems:
|
||||
meta-networking:
|
||||
|
||||
@@ -5,7 +5,7 @@ distro: poky-tiny
|
||||
|
||||
defaults:
|
||||
repos:
|
||||
refspec: master
|
||||
refspec: langdale
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
@@ -16,7 +16,6 @@ repos:
|
||||
|
||||
poky:
|
||||
url: https://git.yoctoproject.org/git/poky
|
||||
refspec: master
|
||||
layers:
|
||||
meta:
|
||||
meta-poky:
|
||||
@@ -24,7 +23,6 @@ repos:
|
||||
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
refspec: master
|
||||
layers:
|
||||
meta-oe:
|
||||
meta-python:
|
||||
|
||||
@@ -46,3 +46,5 @@ FVP_TERMINALS[extsys0.extsys_terminal] ?= "Cortex M3"
|
||||
FVP_CONFIG[board.msd_mmc.card_type] ?= "SDHC"
|
||||
FVP_CONFIG[board.msd_mmc.p_fast_access] ?= "0"
|
||||
FVP_CONFIG[board.msd_mmc.diagnostics] ?= "2"
|
||||
FVP_CONFIG[board.msd_mmc.p_max_block_count] ?= "0xFFFF"
|
||||
FVP_CONFIG[board.msd_config.pl180_fifo_depth] ?= "16"
|
||||
|
||||
@@ -10,10 +10,10 @@ require conf/machine/include/arm/arch-armv8a.inc
|
||||
TUNE_FEATURES = "aarch64"
|
||||
|
||||
PREFERRED_VERSION_u-boot ?= "2022.04"
|
||||
PREFERRED_VERSION_linux-yocto ?= "5.15%"
|
||||
PREFERRED_VERSION_linux-yocto-rt ?= "5.15%"
|
||||
|
||||
# FVP u-boot configuration
|
||||
UBOOT_MACHINE = "vexpress_aemv8a_semi_defconfig"
|
||||
|
||||
KERNEL_IMAGETYPE = "Image"
|
||||
|
||||
FVP_CONFIG[bp.virtio_rng.enabled] ?= "1"
|
||||
|
||||
@@ -9,8 +9,6 @@ require conf/machine/include/arm/armv8r/arch-armv8r64.inc
|
||||
EXTRA_IMAGEDEPENDS += "boot-wrapper-aarch64"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
|
||||
PREFERRED_VERSION_linux-yocto ?= "5.15%"
|
||||
PREFERRED_VERSION_linux-yocto-rt ?= "5.15%"
|
||||
PREFERRED_VERSION_u-boot ?= "2022.07"
|
||||
|
||||
KERNEL_IMAGETYPE = "Image"
|
||||
|
||||
@@ -8,7 +8,73 @@ Change Log
|
||||
##########
|
||||
|
||||
This document contains a summary of the new features, changes and
|
||||
fixes in each release of corstone1000 software stack.
|
||||
fixes in each release of Corstone-1000 software stack.
|
||||
|
||||
******************
|
||||
Version 2022.11.10
|
||||
******************
|
||||
|
||||
Changes
|
||||
=======
|
||||
|
||||
- Booting the External System (Cortex-M3) with RTX RTOS
|
||||
- Adding MHU communication between the HOST (Cortex-A35) and the External System
|
||||
- Adding a Linux application to test the External System
|
||||
- Adding ESRT (EFI System Resource Table) support
|
||||
- Upgrading the SW stack recipes
|
||||
- Upgrades for the U-Boot FF-A driver and MM communication
|
||||
|
||||
Corstone-1000 components versions
|
||||
=======================================
|
||||
|
||||
+-------------------------------------------+------------+
|
||||
| arm-ffa-tee | 1.1.1 |
|
||||
+-------------------------------------------+------------+
|
||||
| arm-ffa-user | 5.0.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| corstone1000-external-sys-tests | 1.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| external-system | 0.1.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| linux-yocto | 5.19 |
|
||||
+-------------------------------------------+------------+
|
||||
| u-boot | 2022.07 |
|
||||
+-------------------------------------------+------------+
|
||||
| optee-client | 3.18.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| optee-os | 3.18.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| trusted-firmware-a | 2.7.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| trusted-firmware-m | 1.6.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| ts-newlib | 4.1.0 |
|
||||
+-------------------------------------------+------------+
|
||||
| ts-psa-{crypto, iat, its. ps}-api-test | 451aa087a4 |
|
||||
+-------------------------------------------+------------+
|
||||
| ts-sp-{se-proxy, smm-gateway} | 3d4956770f |
|
||||
+-------------------------------------------+------------+
|
||||
|
||||
Yocto distribution components versions
|
||||
=======================================
|
||||
|
||||
+-------------------------------------------+---------------------+
|
||||
| meta-arm | langdale |
|
||||
+-------------------------------------------+---------------------+
|
||||
| poky | langdale |
|
||||
+-------------------------------------------+---------------------+
|
||||
| meta-openembedded | langdale |
|
||||
+-------------------------------------------+---------------------+
|
||||
| busybox | 1.35.0 |
|
||||
+-------------------------------------------+---------------------+
|
||||
| musl | 1.2.3+git37e18b7bf3 |
|
||||
+-------------------------------------------+---------------------+
|
||||
| gcc-arm-none-eabi-native | 11.2-2022.02 |
|
||||
+-------------------------------------------+---------------------+
|
||||
| gcc-cross-aarch64 | 12.2 |
|
||||
+-------------------------------------------+---------------------+
|
||||
| openssl | 3.0.5 |
|
||||
+-------------------------------------------+---------------------+
|
||||
|
||||
******************
|
||||
Version 2022.04.04
|
||||
@@ -26,10 +92,10 @@ Version 2022.02.25
|
||||
|
||||
Changes
|
||||
=======
|
||||
- Building and running psa-arch-tests on corstone1000 FVP
|
||||
- Enabled smm-gateway partition in Trusted Service on corstone1000 FVP
|
||||
- Enabled MHU driver in Trusted Service on corstone1000 FVP
|
||||
- Enabled OpenAMP support in SE proxy SP on corstone1000 FVP
|
||||
- Building and running psa-arch-tests on Corstone-1000 FVP
|
||||
- Enabled smm-gateway partition in Trusted Service on Corstone-1000 FVP
|
||||
- Enabled MHU driver in Trusted Service on Corstone-1000 FVP
|
||||
- Enabled OpenAMP support in SE proxy SP on Corstone-1000 FVP
|
||||
|
||||
******************
|
||||
Version 2022.02.21
|
||||
@@ -48,7 +114,7 @@ Changes
|
||||
=======
|
||||
- psa-arch-tests: change master to main for psa-arch-tests
|
||||
- U-Boot: fix null pointer exception for get_image_info
|
||||
- TF-M: fix capsule instability issue for corstone1000
|
||||
- TF-M: fix capsule instability issue for Corstone-1000
|
||||
|
||||
******************
|
||||
Version 2022.01.07
|
||||
@@ -56,9 +122,9 @@ Version 2022.01.07
|
||||
|
||||
Changes
|
||||
=======
|
||||
- corstone1000: fix SystemReady-IR ACS test (SCT, FWTS) failures.
|
||||
- Corstone-1000: fix SystemReady-IR ACS test (SCT, FWTS) failures.
|
||||
- U-Boot: send bootcomplete event to secure enclave.
|
||||
- U-Boot: support populating corstone1000 image_info to ESRT table.
|
||||
- U-Boot: support populating Corstone-1000 image_info to ESRT table.
|
||||
- U-Boot: add ethernet device and enable configs to support bootfromnetwork SCT.
|
||||
|
||||
******************
|
||||
@@ -67,7 +133,7 @@ Version 2021.12.15
|
||||
|
||||
Changes
|
||||
=======
|
||||
- Enabling corstone1000 FPGA support on:
|
||||
- Enabling Corstone-1000 FPGA support on:
|
||||
- Linux 5.10
|
||||
- OP-TEE 3.14
|
||||
- Trusted Firmware-A 2.5
|
||||
@@ -83,7 +149,7 @@ Version 2021.10.29
|
||||
|
||||
Changes
|
||||
=======
|
||||
- Enabling corstone1000 FVP support on:
|
||||
- Enabling Corstone-1000 FVP support on:
|
||||
- Linux 5.10
|
||||
- OP-TEE 3.14
|
||||
- Trusted Firmware-A 2.5
|
||||
@@ -95,4 +161,4 @@ Changes
|
||||
|
||||
--------------
|
||||
|
||||
*Copyright (c) 2021, Arm Limited. All rights reserved.*
|
||||
*Copyright (c) 2022, Arm Limited. All rights reserved.*
|
||||
|
||||
@@ -7,23 +7,45 @@
|
||||
Release notes
|
||||
#############
|
||||
|
||||
**************************
|
||||
Release notes - 2022.11.10
|
||||
**************************
|
||||
|
||||
Known Issues or Limitations
|
||||
---------------------------
|
||||
- The external-system can not be reset individually on (or using) AN550_v1 FPGA release. However, the system-wide reset still applies to the external-system.
|
||||
- FPGA supports Linux distro install and boot through installer. However, FVP only supports openSUSE raw image installation and boot.
|
||||
- Due to the performance uplimit of MPS3 FPGA and FVP, some Linux distros like Fedora Rawhide can not boot on Corstone-1000 (i.e. user may experience timeouts or boot hang).
|
||||
- Below SCT FAILURE is a known issues in the FVP:
|
||||
UEFI Compliant - Boot from network protocols must be implemented -- FAILURE
|
||||
- Known limitations regarding ACS tests: The behavior after running ACS tests on FVP is not consistent. Both behaviors are expected and are valid;
|
||||
The system might boot till the Linux prompt. Or, the system might wait after finishing the ACS tests.
|
||||
In both cases, the system executes the entire test suite and writes the results as stated in the user guide.
|
||||
|
||||
Platform Support
|
||||
-----------------
|
||||
- This software release is tested on Corstone-1000 FPGA version AN550_v1
|
||||
https://developer.arm.com/downloads/-/download-fpga-images
|
||||
- This software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.19_21
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
**************************
|
||||
Release notes - 2022.04.04
|
||||
**************************
|
||||
|
||||
Known Issues or Limitations
|
||||
---------------------------
|
||||
- FGPA support Linux distro install and boot through installer. However,
|
||||
- FPGA support Linux distro install and boot through installer. However,
|
||||
FVP only support openSUSE raw image installation and boot.
|
||||
- Due to the performance uplimit of MPS3 FPGA and FVP, some Linux distros like Fedora Rawhide
|
||||
cannot boot on corstone1000 (i.e. user may experience timeouts or boot hang).
|
||||
cannot boot on Corstone-1000 (i.e. user may experience timeouts or boot hang).
|
||||
- Below SCT FAILURE is a known issues in the FVP:
|
||||
UEFI Compliant - Boot from network protocols must be implemented -- FAILURE
|
||||
|
||||
Platform Support
|
||||
-----------------
|
||||
- This software release is tested on corstone1000 FPGA version AN550_v1
|
||||
- This software release is tested on corstone1000 Fast Model platform (FVP) version 11.17_23
|
||||
- This software release is tested on Corstone-1000 FPGA version AN550_v1
|
||||
- This software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.17_23
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
**************************
|
||||
@@ -32,13 +54,13 @@ Release notes - 2022.02.25
|
||||
|
||||
Known Issues or Limitations
|
||||
---------------------------
|
||||
- The following tests only work on corstone1000 FPGA: ACS tests (SCT, FWTS,
|
||||
- The following tests only work on Corstone-1000 FPGA: ACS tests (SCT, FWTS,
|
||||
BSA), manual capsule update test, Linux distro install and boot.
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
- This software release is tested on corstone1000 FPGA version AN550_v1
|
||||
- This software release is tested on corstone1000 Fast Model platform (FVP) version 11.17_23
|
||||
- This software release is tested on Corstone-1000 FPGA version AN550_v1
|
||||
- This software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.17_23
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
Release notes - 2022.02.21
|
||||
@@ -46,13 +68,13 @@ Release notes - 2022.02.21
|
||||
|
||||
Known Issues or Limitations
|
||||
---------------------------
|
||||
- The following tests only work on corstone1000 FPGA: ACS tests (SCT, FWTS,
|
||||
- The following tests only work on Corstone-1000 FPGA: ACS tests (SCT, FWTS,
|
||||
BSA), manual capsule update test, Linux distro install and boot, psa-arch-test.
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
- This software release is tested on corstone1000 FPGA version AN550_v1
|
||||
- This software release is tested on corstone1000 Fast Model platform (FVP) version 11.16.21
|
||||
- This software release is tested on Corstone-1000 FPGA version AN550_v1
|
||||
- This software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.16.21
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
Release notes - 2022.01.18
|
||||
@@ -85,13 +107,13 @@ The following components are present in the release:
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
- This software release is tested on corstone1000 FPGA version AN550_v1
|
||||
- This software release is tested on corstone1000 Fast Model platform (FVP) version 11.16.21
|
||||
- This software release is tested on Corstone-1000 FPGA version AN550_v1
|
||||
- This software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.16.21
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
Known Issues or Limitations
|
||||
---------------------------
|
||||
- The following tests only work on corstone1000 FPGA: ACS tests (SCT, FWTS,
|
||||
- The following tests only work on Corstone-1000 FPGA: ACS tests (SCT, FWTS,
|
||||
BSA), manual capsule update test, Linux distro install and boot, and
|
||||
psa-arch-tests.
|
||||
- Only the manual capsule update from UEFI shell is supported on FPGA.
|
||||
@@ -107,7 +129,7 @@ Release notes - 2021.10.29
|
||||
|
||||
Software Features
|
||||
-----------------
|
||||
This initial release of corstone1000 supports booting Linux on the Cortex-A35
|
||||
This initial release of Corstone-1000 supports booting Linux on the Cortex-A35
|
||||
and TF-M/MCUBOOT in the Secure Enclave. The following components are present in
|
||||
the release:
|
||||
|
||||
@@ -119,7 +141,7 @@ the release:
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
- This Software release is tested on corstone1000 Fast Model platform (FVP) version 11.16.21
|
||||
- This Software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.16.21
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
Known Issues or Limitations
|
||||
@@ -134,4 +156,4 @@ For support email: support-subsystem-iot@arm.com
|
||||
|
||||
--------------
|
||||
|
||||
*Copyright (c) 2021, Arm Limited. All rights reserved.*
|
||||
*Copyright (c) 2022, Arm Limited. All rights reserved.*
|
||||
|
||||
@@ -9,9 +9,9 @@ User Guide
|
||||
|
||||
Notice
|
||||
------
|
||||
The corstone1000 software stack uses the `Yocto Project <https://www.yoctoproject.org/>`__ to build
|
||||
a tiny Linux distribution suitable for the corstone1000 platform. The Yocto Project relies on the
|
||||
`Bitbake <https://docs.yoctoproject.org/bitbake.html#bitbake-documentation>`__
|
||||
The Corstone-1000 software stack uses the `Yocto Project <https://www.yoctoproject.org/>`__ to build
|
||||
a tiny Linux distribution suitable for the Corstone-1000 platform (kernel and initramfs filesystem less than 5 MB on the flash).
|
||||
The Yocto Project relies on the `Bitbake <https://docs.yoctoproject.org/bitbake.html#bitbake-documentation>`__
|
||||
tool as its build tool. Please see `Yocto Project documentation <https://docs.yoctoproject.org/>`__
|
||||
for more information.
|
||||
|
||||
@@ -35,12 +35,12 @@ The following prerequisites must be available on the host system. To resolve the
|
||||
|
||||
Provided components
|
||||
-------------------
|
||||
Within the Yocto Project, each component included in the corstone1000 software stack is specified as
|
||||
a `bitbake recipe <https://www.yoctoproject.org/docs/1.6/bitbake-user-manual/bitbake-user-manual.html#recipes>`__.
|
||||
The recipes specific to the corstone1000 BSP are located at:
|
||||
Within the Yocto Project, each component included in the Corstone-1000 software stack is specified as
|
||||
a `bitbake recipe <https://docs.yoctoproject.org/bitbake/2.2/bitbake-user-manual/bitbake-user-manual-intro.html#recipes>`__.
|
||||
The recipes specific to the Corstone-1000 BSP are located at:
|
||||
``<_workspace>/meta-arm/meta-arm-bsp/``.
|
||||
|
||||
The Yocto machine config files for the corstone1000 FVP and FPGA are:
|
||||
The Yocto machine config files for the Corstone-1000 FVP and FPGA targets are:
|
||||
|
||||
- ``<_workspace>/meta-arm/meta-arm-bsp/conf/machine/include/corstone1000.inc``
|
||||
- ``<_workspace>/meta-arm/meta-arm-bsp/conf/machine/corstone1000-fvp.conf``
|
||||
@@ -86,7 +86,7 @@ The distro is based on the `poky-tiny <https://wiki.yoctoproject.org/wiki/Poky-T
|
||||
distribution which is a Linux distribution stripped down to a minimal configuration.
|
||||
|
||||
The provided distribution is based on busybox and built using muslibc. The
|
||||
recipe responsible for building a tiny version of linux is listed below.
|
||||
recipe responsible for building a tiny version of Linux is listed below.
|
||||
|
||||
+-----------+----------------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-yocto_%.bbappend |
|
||||
@@ -96,6 +96,16 @@ recipe responsible for building a tiny version of linux is listed below.
|
||||
| defconfig | <_workspace>/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/defconfig |
|
||||
+-----------+----------------------------------------------------------------------------------------------+
|
||||
|
||||
External System Tests
|
||||
=======================
|
||||
Based on `Corstone-1000/applications <https://git.gitlab.arm.com/arm-reference-solutions/corstone1000/applications>`__
|
||||
|
||||
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm-bsp/recipes-test/corstone1000-external-sys-tests/corstone1000-external-sys-tests_1.0.bb |
|
||||
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
|
||||
The recipe provides the systems-comms-tests command run in Linux and used for testing the External System.
|
||||
|
||||
**************************************************
|
||||
Software for Boot Processor (a.k.a Secure Enclave)
|
||||
**************************************************
|
||||
@@ -107,6 +117,18 @@ Based on `Trusted Firmware-M <https://git.trustedfirmware.org/TF-M/trusted-firmw
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.6.0.bb |
|
||||
+----------+-------------------------------------------------------------------------------------------------+
|
||||
|
||||
**************************************************
|
||||
Software for the External System
|
||||
**************************************************
|
||||
|
||||
RTX
|
||||
====
|
||||
Based on `RTX RTOS <https://git.gitlab.arm.com/arm-reference-solutions/corstone1000/external_system/rtx>`__
|
||||
|
||||
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb |
|
||||
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
|
||||
Building the software stack
|
||||
---------------------------
|
||||
Create a new folder that will be your workspace and will henceforth be referred
|
||||
@@ -117,7 +139,7 @@ to as ``<_workspace>`` in these instructions. To create the folder, run:
|
||||
mkdir <_workspace>
|
||||
cd <_workspace>
|
||||
|
||||
corstone1000 is a Bitbake based Yocto Project which uses kas and bitbake
|
||||
Corstone-1000 software is based on the Yocto Project which uses kas and bitbake
|
||||
commands to build the stack. To install kas tool, run:
|
||||
|
||||
::
|
||||
@@ -128,15 +150,15 @@ In the top directory of the workspace ``<_workspace>``, run:
|
||||
|
||||
::
|
||||
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2022.04.07
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2022.11.10
|
||||
|
||||
To build corstone1000 image for MPS3 FPGA, run:
|
||||
To build a Corstone-1000 image for MPS3 FPGA, run:
|
||||
|
||||
::
|
||||
|
||||
kas build meta-arm/kas/corstone1000-mps3.yml
|
||||
|
||||
Alternatively, to build corstone1000 image for FVP, run:
|
||||
Alternatively, to build a Corstone-1000 image for FVP, run:
|
||||
|
||||
::
|
||||
|
||||
@@ -150,22 +172,19 @@ Once the build is successful, all output binaries will be placed in the followin
|
||||
- ``<_workspace>/build/tmp/deploy/images/corstone1000-fvp/`` folder for FVP build;
|
||||
- ``<_workspace>/build/tmp/deploy/images/corstone1000-mps3/`` folder for FPGA build.
|
||||
|
||||
Everything apart from the ROM firmware is bundled into a single binary, the
|
||||
``corstone1000-image-corstone1000-{mps3,fvp}.wic.nopt`` file. The ROM firmware is the
|
||||
``bl1.bin`` file.
|
||||
Everything apart from the Secure Enclave ROM firmware and External System firmware, is bundled into a single binary, the
|
||||
``corstone1000-image-corstone1000-{mps3,fvp}.wic.nopt`` file.
|
||||
|
||||
The output binaries used by FVP are the following:
|
||||
- The ROM firmware: ``<_workspace>/build/tmp/deploy/images/corstone1000-fvp/bl1.bin``
|
||||
- The flash image: ``<_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.wic.nopt``
|
||||
|
||||
The output binaries used by FPGA are the following:
|
||||
- The ROM firmware: ``<_workspace>/build/tmp/deploy/images/corstone1000-mps3/bl1.bin``
|
||||
- The flash image: ``<_workspace>/build/tmp/deploy/images/corstone1000-mps3/corstone1000-image-corstone1000-mps3.wic.nopt``
|
||||
The output binaries run in the Corstone-1000 platform are the following:
|
||||
- The Secure Enclave ROM firmware: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/bl1.bin``
|
||||
- The External System firmware: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/es_flashfw.bin``
|
||||
- The flash image: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/corstone1000-image-corstone1000-{mps3,fvp}.wic.nopt``
|
||||
|
||||
Flash the firmware image on FPGA
|
||||
--------------------------------
|
||||
|
||||
The user should download the FPGA bit file image from `this link <https://developer.arm.com/tools-and-software/development-boards/fpga-prototyping-boards/download-fpga-images>`__
|
||||
The user should download the FPGA bit file image ``AN550: Arm® Corstone™-1000 for MPS3 Version 1``
|
||||
from `this link <https://developer.arm.com/tools-and-software/development-boards/fpga-prototyping-boards/download-fpga-images>`__
|
||||
and under the section ``Arm® Corstone™-1000 for MPS3``.
|
||||
|
||||
The directory structure of the FPGA bundle is shown below.
|
||||
@@ -214,24 +233,32 @@ Here is an example
|
||||
;************************************************
|
||||
|
||||
[IMAGES]
|
||||
TOTALIMAGES: 2 ;Number of Images (Max: 32)
|
||||
|
||||
TOTALIMAGES: 3 ;Number of Images (Max: 32)
|
||||
|
||||
IMAGE0PORT: 1
|
||||
IMAGE0ADDRESS: 0x00_0000_0000
|
||||
IMAGE0UPDATE: RAM
|
||||
IMAGE0FILE: \SOFTWARE\bl1.bin
|
||||
|
||||
|
||||
IMAGE1PORT: 0
|
||||
IMAGE1ADDRESS: 0x00_00010_0000
|
||||
IMAGE1ADDRESS: 0x00_0010_0000
|
||||
IMAGE1UPDATE: AUTOQSPI
|
||||
IMAGE1FILE: \SOFTWARE\cs1000.bin
|
||||
|
||||
IMAGE2PORT: 2
|
||||
IMAGE2ADDRESS: 0x00_0000_0000
|
||||
IMAGE2UPDATE: RAM
|
||||
IMAGE2FILE: \SOFTWARE\es0.bin
|
||||
|
||||
OUTPUT_DIR = ``<_workspace>/build/tmp/deploy/images/corstone1000-mps3``
|
||||
|
||||
1. Copy ``bl1.bin`` from OUTPUT_DIR directory to SOFTWARE directory of the FPGA bundle.
|
||||
2. Copy ``corstone1000-image-corstone1000-mps3.wic.nopt`` from OUTPUT_DIR directory to SOFTWARE
|
||||
directory of the FPGA bundle and rename the wic image to ``cs1000.bin``.
|
||||
2. Copy ``es_flashfw.bin`` from OUTPUT_DIR directory to SOFTWARE directory of the FPGA bundle
|
||||
and rename the binary to ``es0.bin``.
|
||||
3. Copy ``corstone1000-image-corstone1000-mps3.wic.nopt`` from OUTPUT_DIR directory to SOFTWARE
|
||||
directory of the FPGA bundle and rename the wic.nopt image to ``cs1000.bin``.
|
||||
|
||||
|
||||
**NOTE:** Renaming of the images are required because MCC firmware has
|
||||
limitation of 8 characters before .(dot) and 3 characters after .(dot).
|
||||
|
||||
@@ -240,41 +267,54 @@ Now, copy the entire folder to board's SDCard and reboot the board.
|
||||
Running the software on FPGA
|
||||
----------------------------
|
||||
|
||||
On the host machine, open 3 minicom sessions. In case of Linux machine it will
|
||||
be ttyUSB0, ttyUSB1, ttyUSB2 and it might be different on Window machine.
|
||||
On the host machine, open 4 serial port terminals. In case of Linux machine it will
|
||||
be ttyUSB0, ttyUSB1, ttyUSB2, ttyUSB3 and it might be different on Windows machines.
|
||||
|
||||
- ttyUSB0 for MCC, OP-TEE and Secure Partition
|
||||
- ttyUSB1 for Boot Processor (Cortex-M0+)
|
||||
- ttyUSB2 for Host Processor (Cortex-A35)
|
||||
- ttyUSB3 for External System Processor (Cortex-M3)
|
||||
|
||||
Run following commands to open minicom sessions on Linux:
|
||||
Run following commands to open serial port terminals on Linux:
|
||||
|
||||
::
|
||||
|
||||
sudo picocom -b 115200 /dev/ttyUSB0 # in one terminal
|
||||
sudo picocom -b 115200 /dev/ttyUSB1 # in another terminal
|
||||
sudo picocom -b 115200 /dev/ttyUSB2 # in another terminal.
|
||||
sudo picocom -b 115200 /dev/ttyUSB3 # in another terminal.
|
||||
|
||||
Once the system boot is completed, you should see console
|
||||
logs on the minicom sessions. Once the HOST(Cortex-A35) is
|
||||
logs on the serial port terminals. Once the HOST(Cortex-A35) is
|
||||
booted completely, user can login to the shell using
|
||||
**"root"** login.
|
||||
|
||||
Running the software on FVP
|
||||
---------------------------
|
||||
An FVP (Fixed Virtual Platform) of the corstone1000 platform must be available to execute the
|
||||
included run script.
|
||||
|
||||
The Fixed Virtual Platform (FVP) version 11.17_23 can be downloaded from the
|
||||
`Arm Ecosystem FVPs`_ page. On this page, navigate to "Corstone IoT FVPs"
|
||||
section to download the Corstone1000 platform FVP installer. Follow the
|
||||
An FVP (Fixed Virtual Platform) model of the Corstone-1000 platform must be available to run the
|
||||
Corstone-1000 FVP software image.
|
||||
|
||||
A Yocto recipe is provided and allows to download the latest supported FVP version.
|
||||
|
||||
The recipe is located at <_workspace>/meta-arm/meta-arm/recipes-devtools/fvp/fvp-corstone1000.bb
|
||||
|
||||
The latest supported Fixed Virtual Platform (FVP) version is 11.19_21 and is automatically downloaded
|
||||
and installed when using the runfvp command as detailed below.
|
||||
|
||||
The FVP can also be manually downloaded from the `Arm Ecosystem FVPs`_ page. On this page, navigate
|
||||
to "Corstone IoT FVPs" section to download the Corstone-1000 platform FVP installer. Follow the
|
||||
instructions of the installer and setup the FVP.
|
||||
|
||||
To run the FVP using the runfvp command, please run the following command:
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf
|
||||
|
||||
When the script is executed, three terminal instances will be launched, one for the boot processor
|
||||
(aka Secure Enclave) processing element and two for the Host processing element. Once the FVP is
|
||||
executing, the Boot Processor will start to boot, wherein the relevant memory contents of the .wic
|
||||
executing, the Boot Processor will start to boot, wherein the relevant memory contents of the .wic.nopt
|
||||
file are copied to their respective memory locations within the model, enforce firewall policies
|
||||
on memories and peripherals and then, bring the host out of reset.
|
||||
|
||||
@@ -282,13 +322,20 @@ The host will boot trusted-firmware-a, OP-TEE, U-Boot and then Linux, and presen
|
||||
(FVP host_terminal_0):
|
||||
|
||||
::
|
||||
|
||||
corstone1000-fvp login:
|
||||
|
||||
Login using the username root.
|
||||
|
||||
Running test applications
|
||||
The External System can be released out of reset on demand using the systems-comms-tests command.
|
||||
|
||||
SystemReady-IR tests
|
||||
-------------------------
|
||||
|
||||
*********************
|
||||
Testing steps
|
||||
*********************
|
||||
|
||||
**NOTE**: Running the SystemReady-IR tests described below requires the user to
|
||||
work with USB sticks. In our testing, not all USB stick models work well with
|
||||
MPS3 FPGA. Here are the USB sticks models that are stable in our test
|
||||
@@ -305,7 +352,8 @@ erase the SecureEnclave flash cleanly and prepare a clean board environment for
|
||||
the testing.
|
||||
|
||||
Clean Secure Flash Before Testing (applicable to FPGA only)
|
||||
-----------------------------------------------------------
|
||||
==================================================================
|
||||
|
||||
To prepare a clean board environment with clean secure flash for the testing,
|
||||
the user should prepare an image that erases the secure flash cleanly during
|
||||
boot. Run following commands to build such image.
|
||||
@@ -313,7 +361,7 @@ boot. Run following commands to build such image.
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2022.02.18
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2022.11.10
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git
|
||||
cp -f systemready-patch/embedded-a/corstone1000/erase_flash/0001-arm-bsp-trusted-firmware-m-corstone1000-Clean-Secure.patch meta-arm
|
||||
cd meta-arm
|
||||
@@ -325,7 +373,7 @@ Replace the bl1.bin and cs1000.bin files on the SD card with following files:
|
||||
- The ROM firmware: <_workspace>/build/tmp/deploy/images/corstone1000-mps3/bl1.bin
|
||||
- The flash image: <_workspace>/build/tmp/deploy/images/corstone1000-mps3/corstone1000-image-corstone1000-mps3.wic.nopt
|
||||
|
||||
Now reboot the board. This step erases the Corstone1000 SecureEnclave flash
|
||||
Now reboot the board. This step erases the Corstone-1000 SecureEnclave flash
|
||||
completely, the user should expect following message from TF-M log:
|
||||
|
||||
::
|
||||
@@ -338,7 +386,7 @@ Then the user should follow "Building the software stack" to build a clean
|
||||
software stack and flash the FPGA as normal. And continue the testing.
|
||||
|
||||
Run SystemReady-IR ACS tests
|
||||
-----------------------------
|
||||
=============================
|
||||
|
||||
ACS image contains two partitions. BOOT partition and RESULTS partition.
|
||||
Following packages are under BOOT partition
|
||||
@@ -355,10 +403,10 @@ PLEASE MAKE SURE THAT THE RESULTS PARTITION IS EMPTY BEFORE YOU START THE TESTIN
|
||||
WILL NOT BE CONSISTENT
|
||||
|
||||
FPGA instructions for ACS image
|
||||
-------------------------------
|
||||
================================
|
||||
|
||||
This section describes how the user can build and run Architecture Compliance
|
||||
Suite (ACS) tests on Corstone1000.
|
||||
Suite (ACS) tests on Corstone-1000.
|
||||
|
||||
First, the user should download the `Arm SystemReady ACS repository <https://github.com/ARM-software/arm-systemready/>`__.
|
||||
This repository contains the infrastructure to build the Architecture
|
||||
@@ -374,8 +422,8 @@ Once the repository is successfully downloaded, the prebuilt ACS live image can
|
||||
- ``<_workspace>/arm-systemready/IR/prebuilt_images/v21.07_0.9_BETA/ir_acs_live_image.img.xz``
|
||||
|
||||
**NOTE**: This prebuilt ACS image includes v5.13 kernel, which doesn't provide
|
||||
USB driver support for Corstone1000. The ACS image with newer kernel version
|
||||
and with full USB support for Corstone1000 will be available in the next
|
||||
USB driver support for Corstone-1000. The ACS image with newer kernel version
|
||||
and with full USB support for Corstone-1000 will be available in the next
|
||||
SystemReady release in this repository.
|
||||
|
||||
Then, the user should prepare a USB stick with ACS image. In the given example here,
|
||||
@@ -385,7 +433,7 @@ USB drive. Run the following commands to prepare the ACS image in USB stick:
|
||||
|
||||
::
|
||||
|
||||
cd <_workspace>/arm-systemready/IR/scripts/output/
|
||||
cd <_workspace>/arm-systemready/IR/prebuilt_images/v21.07_0.9_BETA
|
||||
unxz ir_acs_live_image.img.xz
|
||||
sudo dd if=ir_acs_live_image.img of=/dev/sdb iflag=direct oflag=direct bs=1M status=progress; sync
|
||||
|
||||
@@ -394,19 +442,21 @@ ensure that only the USB stick with the ACS image is connected to the board,
|
||||
and then boot the board.
|
||||
|
||||
FVP instructions for ACS image and run
|
||||
---------------------------------------
|
||||
============================================
|
||||
|
||||
Download acs image from:
|
||||
Download ACS image from:
|
||||
- ``https://gitlab.arm.com/systemready/acs/arm-systemready/-/tree/linux-5.17-rc7/IR/prebuilt_images/v22.04_1.0-Linux-v5.17-rc7``
|
||||
|
||||
Use the below command to run the FVP with acs image support in the
|
||||
Use the below command to run the FVP with ACS image support in the
|
||||
SD card.
|
||||
|
||||
::
|
||||
|
||||
unxz ${<path-to-img>/ir_acs_live_image.img.xz}
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="${<path-to-img>/ir_acs_live_image.img}"
|
||||
tmux
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf – -C board.msd_mmc.p_mmc_file="${<path-to-img>/ir_acs_live_image.img}"
|
||||
|
||||
The test results can be fetched using following commands:
|
||||
|
||||
@@ -416,8 +466,8 @@ The test results can be fetched using following commands:
|
||||
sudo mount -o rw,offset=<offset_2nd_partition> <path-to-img>/ir_acs_live_image.img /mnt/test/
|
||||
fdisk -lu <path-to-img>/ir_acs_live_image.img
|
||||
-> Device Start End Sectors Size Type
|
||||
/home/emeara01/Downloads/ir_acs_live_image_modified.img1 2048 1050622 1048575 512M Microsoft basic data
|
||||
/home/emeara01/Downloads/ir_acs_live_image_modified.img2 1050624 1153022 102399 50M Microsoft basic data
|
||||
<path-to-img>/ir_acs_live_image_modified.img1 2048 1050622 1048575 512M Microsoft basic data
|
||||
<path-to-img>/ir_acs_live_image_modified.img2 1050624 1153022 102399 50M Microsoft basic data
|
||||
|
||||
-> <offset_2nd_partition> = 1050624 * 512 (sector size) = 537919488
|
||||
|
||||
@@ -427,7 +477,7 @@ Once test is finished, the FVP can be stoped, and result can be copied following
|
||||
instructions.
|
||||
|
||||
Common to FVP and FPGA
|
||||
-----------------------
|
||||
===========================
|
||||
|
||||
U-Boot should be able to boot the grub bootloader from
|
||||
the 1st partition and if grub is not interrupted, tests are executed
|
||||
@@ -440,81 +490,226 @@ automatically in the following sequence:
|
||||
|
||||
The results can be fetched from the ``acs_results`` partition of the USB stick (FPGA) / SD Card (FVP).
|
||||
|
||||
Manual capsule update test
|
||||
--------------------------
|
||||
#####################################################
|
||||
|
||||
The following steps describe running manual capsule update with the ``direct``
|
||||
method.
|
||||
Manual capsule update and ESRT checks
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Check the "Run SystemReady-IR ACS tests" section above to download and unpack the acs image file
|
||||
The following section describes running manual capsule update with the ``direct`` method.
|
||||
|
||||
The steps described in this section perform manual capsule update and show how to use the ESRT feature
|
||||
to retrieve the installed capsule details.
|
||||
|
||||
For the following tests two capsules are needed to perform 2 capsule updates. A positive update and a negative update.
|
||||
|
||||
A positive test case capsule which boots the platform correctly until the Linux prompt, and a negative test case with an
|
||||
incorrect capsule (corrupted or outdated) which fails to boot to the host software.
|
||||
|
||||
Check the "Run SystemReady-IR ACS tests" section above to download and unpack the ACS image file
|
||||
- ``ir_acs_live_image.img.xz``
|
||||
|
||||
Download edk2 and generate capsule file:
|
||||
Download edk2 under <_workspace> :
|
||||
|
||||
::
|
||||
|
||||
git clone https://github.com/tianocore/edk2.git
|
||||
edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o \
|
||||
cs1k_cap --fw-version 1 --lsv 0 --guid \
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose <binary_file>
|
||||
|
||||
The <binary_file> here should be a corstone1000-image-corstone1000-fvp.wic.nopt image for FVP and
|
||||
corstone1000-image-corstone1000-mps3.wic.nopt for FPGA. And this input binary file
|
||||
(capsule) should be less than 15 MB.
|
||||
*********************
|
||||
Generating Capsules
|
||||
*********************
|
||||
|
||||
The capsule binary size (wic.nopt file) should be less than 15 MB.
|
||||
|
||||
Based on the user's requirement, the user can change the firmware version
|
||||
number given to ``--fw-version`` option (the version number needs to be >= 1).
|
||||
|
||||
Capsule Copy instructions for FPGA
|
||||
-----------------------------------
|
||||
Generating FPGA Capsules
|
||||
========================
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o \
|
||||
cs1k_cap_mps3_v5 --fw-version 5 --lsv 0 --guid \
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose <_workspace>/build/tmp/deploy/images/corstone1000-mps3/corstone1000-image-corstone1000-mps3.wic.nopt
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o \
|
||||
cs1k_cap_mps3_v6 --fw-version 6 --lsv 0 --guid \
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose <_workspace>/build/tmp/deploy/images/corstone1000-mps3/corstone1000-image-corstone1000-mps3.wic.nopt
|
||||
|
||||
Generating FVP Capsules
|
||||
========================
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o \
|
||||
cs1k_cap_fvp_v6 --fw-version 6 --lsv 0 --guid \
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.wic.nopt
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o \
|
||||
cs1k_cap_fvp_v5 --fw-version 5 --lsv 0 --guid \
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.wic.nopt
|
||||
|
||||
*********************
|
||||
Copying Capsules
|
||||
*********************
|
||||
|
||||
Copying the FPGA capsules
|
||||
=========================
|
||||
|
||||
The user should prepare a USB stick as explained in ACS image section (see above).
|
||||
Place the generated ``cs1k_cap`` file in the root directory of the boot partition
|
||||
Place the generated ``cs1k_cap`` files in the root directory of the boot partition
|
||||
in the USB stick. Note: As we are running the direct method, the ``cs1k_cap`` file
|
||||
should not be under the EFI/UpdateCapsule directory as this may or may not trigger
|
||||
the on disk method.
|
||||
|
||||
Capsule Copy instructions for FVP
|
||||
---------------------------------
|
||||
::
|
||||
|
||||
Run below commands to copy capsule into the
|
||||
image file and run FVP software.
|
||||
sudo cp cs1k_cap_mps3_v6 <mounting path>/BOOT/
|
||||
sudo cp cs1k_cap_mps3_v5 <mounting path>/BOOT/
|
||||
sync
|
||||
|
||||
Copying the FVP capsules
|
||||
========================
|
||||
|
||||
First, mount the IR image:
|
||||
|
||||
::
|
||||
|
||||
sudo mkdir /mnt/test
|
||||
sudo mount -o rw,offset=<offset_1st_partition> <path-to-img>/ir_acs_live_image.img /mnt/test/
|
||||
sudo cp cs1k_cap /mnt/test/
|
||||
sudo umount /mnt/test
|
||||
exit
|
||||
sudo mkdir /mnt/test
|
||||
sudo mount -o rw,offset=1048576 <path-to-img>/ir_acs_live_image.img /mnt/test
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C "board.msd_mmc.p_mmc_file ${<path-to-img>/ir_acs_live_image.img}"
|
||||
Then, copy the capsules:
|
||||
|
||||
::
|
||||
|
||||
sudo cp cs1k_cap_fvp_v6 /mnt/test/
|
||||
sudo cp cs1k_cap_fvp_v5 /mnt/test/
|
||||
sync
|
||||
|
||||
Then, unmount the IR image:
|
||||
|
||||
::
|
||||
|
||||
sudo umount /mnt/test
|
||||
|
||||
**NOTE:**
|
||||
|
||||
Size of first partition in the image file is calculated in the following way. The data is
|
||||
just an example and might vary with different ir_acs_live_image.img files.
|
||||
|
||||
::
|
||||
|
||||
fdisk -lu <path-to-img>/ir_acs_live_image.img
|
||||
-> Device Start End Sectors Size Type
|
||||
/home/emeara01/Downloads/ir_acs_live_image_modified.img1 2048 1050622 1048575 512M Microsoft basic data
|
||||
/home/emeara01/Downloads/ir_acs_live_image_modified.img2 1050624 1153022 102399 50M Microsoft basic data
|
||||
fdisk -lu <path-to-img>/ir_acs_live_image.img
|
||||
-> Device Start End Sectors Size Type
|
||||
<path-to-img>/ir_acs_live_image_modified.img1 2048 1050622 1048575 512M Microsoft basic data
|
||||
<path-to-img>/ir_acs_live_image_modified.img2 1050624 1153022 102399 50M Microsoft basic data
|
||||
|
||||
-> <offset_1st_partition> = 2048 * 512 (sector size) = 1048576
|
||||
-> <offset_1st_partition> = 2048 * 512 (sector size) = 1048576
|
||||
|
||||
Common to FVP and FPGA
|
||||
-----------------------
|
||||
Reach u-boot then interrupt shell to reach EFI shell. Use below command at EFI shell.
|
||||
******************************
|
||||
Performing the capsule update
|
||||
******************************
|
||||
|
||||
During this section we will be using the capsule with the higher version (cs1k_cap_<fvp/mps3>_v6) for the positive scenario
|
||||
and the capsule with the lower version (cs1k_cap_<fvp/mps3>_v5) for the negative scenario.
|
||||
|
||||
Running the FVP with the IR prebuilt image
|
||||
==============================================
|
||||
|
||||
Run the FVP with the IR prebuilt image:
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C "board.msd_mmc.p_mmc_file ${<path-to-img>/ir_acs_live_image.img}"
|
||||
|
||||
Running the FPGA with the IR prebuilt image
|
||||
==============================================
|
||||
|
||||
Insert the prepared USB stick then Power cycle the MPS3 board.
|
||||
|
||||
Executing capsule update for FVP and FPGA
|
||||
==============================================
|
||||
|
||||
Reach u-boot then interrupt the boot to reach the EFI shell.
|
||||
|
||||
::
|
||||
|
||||
Press ESC in 4 seconds to skip startup.nsh or any other key to continue.
|
||||
|
||||
Then, type FS0: as shown below:
|
||||
|
||||
::
|
||||
|
||||
FS0:
|
||||
EFI/BOOT/app/CapsuleApp.efi cs1k_cap
|
||||
|
||||
For this test, the user can provide two capsules for testing: a positive test
|
||||
case capsule which boots the board correctly, and a negative test case with an
|
||||
incorrect capsule which fails to boot the host software.
|
||||
In case of the positive scenario run the update with the higher version capsule as shown below:
|
||||
|
||||
::
|
||||
|
||||
EFI/BOOT/app/CapsuleApp.efi cs1k_cap_<fvp/mps3>_v6
|
||||
|
||||
After successfully updating the capsule the system will reset.
|
||||
|
||||
In case of the negative scenario run the update with the lower version capsule as shown below:
|
||||
|
||||
::
|
||||
|
||||
EFI/BOOT/app/CapsuleApp.efi cs1k_cap_<fvp/mps3>_v5
|
||||
|
||||
The command above should fail and in the TF-M logs the following message should appear:
|
||||
|
||||
::
|
||||
|
||||
ERROR: flash_full_capsule: version error
|
||||
|
||||
Then, reboot manually:
|
||||
|
||||
::
|
||||
|
||||
Shell> reset
|
||||
|
||||
FPGA: Select Corstone-1000 Linux kernel boot
|
||||
==============================================
|
||||
|
||||
Remove the USB stick before u-boot is reached so the Corstone-1000 kernel will be detected and used for booting.
|
||||
|
||||
**NOTE:** Otherwise, the execution ends up in the ACS live image.
|
||||
|
||||
FVP: Select Corstone-1000 Linux kernel boot
|
||||
==============================================
|
||||
|
||||
Interrupt the u-boot shell.
|
||||
|
||||
::
|
||||
|
||||
Hit any key to stop autoboot:
|
||||
|
||||
Run the following commands in order to run the Corstone-1000 Linux kernel and being able to check the ESRT table.
|
||||
|
||||
**NOTE:** Otherwise, the execution ends up in the ACS live image.
|
||||
|
||||
::
|
||||
|
||||
$ run retrieve_kernel_load_addr
|
||||
$ unzip $kernel_addr 0x90000000
|
||||
$ loadm 0x90000000 $kernel_addr_r 0xf00000
|
||||
$ bootefi $kernel_addr_r $fdtcontroladdr
|
||||
|
||||
|
||||
***********************
|
||||
Capsule update status
|
||||
***********************
|
||||
|
||||
Positive scenario
|
||||
=================
|
||||
|
||||
In the positive case scenario, the user should see following log in TF-M log,
|
||||
indicating the new capsule image is successfully applied, and the board boots
|
||||
@@ -532,6 +727,36 @@ correctly.
|
||||
...
|
||||
|
||||
|
||||
It's possible to check the content of the ESRT table after the system fully boots.
|
||||
|
||||
In the Linux command-line run the following:
|
||||
|
||||
::
|
||||
|
||||
# cd /sys/firmware/efi/esrt/entries/entry0
|
||||
# cat *
|
||||
|
||||
0x0
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
0
|
||||
6
|
||||
0
|
||||
6
|
||||
0
|
||||
|
||||
.. line-block::
|
||||
capsule_flags: 0x0
|
||||
fw_class: e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
fw_type: 0
|
||||
fw_version: 6
|
||||
last_attempt_status: 0
|
||||
last_attempt_version: 6
|
||||
lowest_supported_fw_ver: 0
|
||||
|
||||
|
||||
Negative scenario
|
||||
=================
|
||||
|
||||
In the negative case scenario, the user should see appropriate logs in
|
||||
the secure enclave terminal. If capsule pass initial verification, but fails
|
||||
verifications performed during boot time, secure enclave will try new images
|
||||
@@ -545,16 +770,45 @@ the previous good bank.
|
||||
fwu_select_previous: in regular state by choosing previous active bank
|
||||
...
|
||||
|
||||
*******************************************************
|
||||
Linux distro install and boot (applicable to FPGA only)
|
||||
*******************************************************
|
||||
It's possible to check the content of the ESRT table after the system fully boots.
|
||||
|
||||
In the Linux command-line run the following:
|
||||
|
||||
::
|
||||
|
||||
# cd /sys/firmware/efi/esrt/entries/entry0
|
||||
# cat *
|
||||
|
||||
0x0
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
0
|
||||
6
|
||||
1
|
||||
5
|
||||
0
|
||||
|
||||
.. line-block::
|
||||
capsule_flags: 0x0
|
||||
fw_class: e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
fw_type: 0
|
||||
fw_version: 6
|
||||
last_attempt_status: 1
|
||||
last_attempt_version: 5
|
||||
lowest_supported_fw_ver: 0
|
||||
|
||||
Linux distros tests
|
||||
----------------------------------
|
||||
|
||||
***************************************************************************************
|
||||
Debian/OpenSUSE install and boot (applicable to FPGA only)
|
||||
***************************************************************************************
|
||||
|
||||
To test Linux distro install and boot, the user should prepare two empty USB sticks.
|
||||
|
||||
Download one of following Linux distro images:
|
||||
- Debian installer image: https://cdimage.debian.org/cdimage/weekly-builds/arm64/iso-dvd/
|
||||
- OpenSUSE Tumbleweed installer image: http://download.opensuse.org/ports/aarch64/tumbleweed/iso/
|
||||
- The user should look for a DVD Snapshot like openSUSE-Tumbleweed-DVD-aarch64-Snapshot20211125-Media.iso
|
||||
- The user should look for a DVD Snapshot like openSUSE-Tumbleweed-DVD-aarch64-Snapshot<date>-Media.iso
|
||||
|
||||
Once the .iso file is downloaded, the .iso file needs to be flashed to your USB drive.
|
||||
|
||||
@@ -578,7 +832,7 @@ Press <Ctrl+x>.
|
||||
|
||||
Now plug in the second USB stick, the distro installation process will start.
|
||||
|
||||
**NOTE:** Due to the performance limitation of Corstone1000 MPS3 FPGA, the
|
||||
**NOTE:** Due to the performance limitation of Corstone-1000 MPS3 FPGA, the
|
||||
distro installation process can take up to 24 hours to complete.
|
||||
|
||||
Once installation is complete, unplug the first USB stick and reboot the board.
|
||||
@@ -591,61 +845,40 @@ a login prompt:
|
||||
|
||||
Login with the username root.
|
||||
|
||||
Run psa-arch-test (applicable to both FPGA and FVP)
|
||||
---------------------------------------------------
|
||||
**NOTE:** The Debian installer has a known issue "Install the GRUB bootloader - unable to install " and these are the steps to
|
||||
follow on the subsequent popups to solve the issue during the installation:
|
||||
|
||||
When running psa-arch-test on MPS3 FPGA, the user should make sure there is no
|
||||
USB stick connected to the board. Power on the board and boot the board to
|
||||
Linux. Then, the user should follow the steps below to run the psa_arch_tests.
|
||||
|
||||
When running psa-arch-test on Corstone1000 FVP, the user should follow the
|
||||
instructions in `Running the software on FVP`_ section to boot Linux in FVP
|
||||
host_terminal_0, and login using the username ``root``.
|
||||
|
||||
As a reference for the user's test results, the psa-arch-test report for `Corstone1000 software (CORSTONE1000-2022.02.18) <https://git.yoctoproject.org/meta-arm/tag/?h=CORSTONE1000-2022.02.18>`__
|
||||
can be found in `here <https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-test-report/-/tree/master/embedded-a/corstone1000>`__.
|
||||
|
||||
First, create a file containing SE_PROXY_SP UUID. Run:
|
||||
1. Select "Continue", then "Continue" again on the next popup
|
||||
2. Scroll down and select "Execute a shell"
|
||||
3. Select "Continue"
|
||||
4. Enter the following command:
|
||||
|
||||
::
|
||||
|
||||
echo 46bb39d1-b4d9-45b5-88ff-040027dab249 > sp_uuid_list.txt
|
||||
in-target grub-install --no-nvram --force-extra-removable
|
||||
|
||||
Then, load FFA driver module into Linux kernel. Run:
|
||||
5. Enter the following command:
|
||||
|
||||
::
|
||||
|
||||
load_ffa_debugfs.sh .
|
||||
in-target update-grub
|
||||
|
||||
Then, check whether the FFA driver loaded correctly by using the following command:
|
||||
6. Enter the following command:
|
||||
|
||||
::
|
||||
|
||||
cat /proc/modules | grep arm_ffa_user
|
||||
exit
|
||||
|
||||
The output should be:
|
||||
7. Select "Continue without boot loader", then select "Continue" on the next popup
|
||||
8. At this stage, the installation should proceed as normal.
|
||||
|
||||
::
|
||||
|
||||
arm_ffa_user 16384 - - Live 0xffffffc0084b0000 (O)
|
||||
|
||||
Now, run the PSA arch tests with following commands. The user should run the
|
||||
tests in following order:
|
||||
|
||||
::
|
||||
|
||||
psa-iat-api-test
|
||||
psa-crypto-api-test
|
||||
psa-its-api-test
|
||||
psa-ps-api-test
|
||||
|
||||
********************************************************
|
||||
Linux distro: OpenSUSE Raw image installation (FVP Only)
|
||||
********************************************************
|
||||
***************************************************************************************
|
||||
OpenSUSE Raw image install and boot (applicable to FVP only)
|
||||
***************************************************************************************
|
||||
|
||||
Steps to download openSUSE Tumbleweed raw image:
|
||||
- Go to: http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/
|
||||
- The user should look for a Tumbleweed-ARM-JeOS-efi.aarch64-* Snapshot, for example, ``openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-2022.03.18-Snapshot20220331.raw.xz``
|
||||
- The user should look for a Tumbleweed-ARM-JeOS-efi.aarch64-* Snapshot, for example, ``openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw.xz``
|
||||
|
||||
Once the .raw.xz file is downloaded, the raw image file needs to be extracted:
|
||||
|
||||
@@ -670,16 +903,150 @@ a openSUSE login prompt.
|
||||
|
||||
Login with the username 'root' and password 'linux'.
|
||||
|
||||
**************************************
|
||||
PSA API tests
|
||||
----------------------
|
||||
|
||||
***************************************************************************************
|
||||
Run PSA API test commands (applicable to both FPGA and FVP)
|
||||
***************************************************************************************
|
||||
|
||||
When running PSA API test commands (aka PSA Arch Tests) on MPS3 FPGA, the user should make sure there is no
|
||||
USB stick connected to the board. Power on the board and boot the board to
|
||||
Linux. Then, the user should follow the steps below to run the tests.
|
||||
|
||||
When running the tests on the Corstone-1000 FVP, the user should follow the
|
||||
instructions in `Running the software on FVP`_ section to boot Linux in FVP
|
||||
host_terminal_0, and login using the username ``root``.
|
||||
|
||||
First, load FF-A TEE kernel module:
|
||||
|
||||
::
|
||||
|
||||
insmod /lib/modules/5.19.9-yocto-standard/extra/arm-ffa-tee.ko
|
||||
|
||||
Then, check whether the FF-A TEE driver is loaded correctly by using the following command:
|
||||
|
||||
::
|
||||
|
||||
cat /proc/modules | grep arm_ffa_tee
|
||||
|
||||
The output should be:
|
||||
|
||||
::
|
||||
|
||||
arm_ffa_tee 16384 - - Live 0xffffffc0004f0000 (O)
|
||||
|
||||
Now, run the PSA API tests in the following order:
|
||||
|
||||
::
|
||||
|
||||
psa-iat-api-test
|
||||
psa-crypto-api-test
|
||||
psa-its-api-test
|
||||
psa-ps-api-test
|
||||
|
||||
External System tests
|
||||
-----------------------------------
|
||||
|
||||
***************************************************************************************
|
||||
Running the External System test command (systems-comms-tests)
|
||||
***************************************************************************************
|
||||
|
||||
Test 1: Releasing the External System out of reset
|
||||
===================================================
|
||||
|
||||
Run this command in the Linux command-line:
|
||||
|
||||
::
|
||||
|
||||
systems-comms-tests 1
|
||||
|
||||
The output on the External System terminal should be:
|
||||
|
||||
::
|
||||
|
||||
___ ___
|
||||
| / __|
|
||||
|=== \___
|
||||
|___ |___/
|
||||
External System Cortex-M3 Processor
|
||||
Running RTX RTOS
|
||||
v0.1.0_2022-10-19_16-41-32-8c9dca7
|
||||
MHUv2 module 'MHU0_H' started
|
||||
MHUv2 module 'MHU1_H' started
|
||||
MHUv2 module 'MHU0_SE' started
|
||||
MHUv2 module 'MHU1_SE' started
|
||||
|
||||
Test 2: Communication
|
||||
=============================================
|
||||
|
||||
Test 2 releases the External System out of reset if not already done. Then, it performs communication between host and External System.
|
||||
|
||||
After running Test 1, run this command in the Linux command-line:
|
||||
|
||||
::
|
||||
|
||||
systems-comms-tests 2
|
||||
|
||||
Additional output on the External System terminal will be printed:
|
||||
|
||||
::
|
||||
|
||||
MHUv2: Message from 'MHU0_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU0
|
||||
CMD: Increment and return to sender...
|
||||
MHUv2: Message from 'MHU1_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU1
|
||||
CMD: Increment and return to sender...
|
||||
|
||||
When running Test 2 the first, Test 1 will be run in the background.
|
||||
|
||||
The output on the External System terminal should be:
|
||||
|
||||
::
|
||||
|
||||
___ ___
|
||||
| / __|
|
||||
|=== \___
|
||||
|___ |___/
|
||||
External System Cortex-M3 Processor
|
||||
Running RTX RTOS
|
||||
v0.1.0_2022-10-19_16-41-32-8c9dca7
|
||||
MHUv2 module 'MHU0_H' started
|
||||
MHUv2 module 'MHU1_H' started
|
||||
MHUv2 module 'MHU0_SE' started
|
||||
MHUv2 module 'MHU1_SE' started
|
||||
MHUv2: Message from 'MHU0_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU0
|
||||
CMD: Increment and return to sender...
|
||||
MHUv2: Message from 'MHU1_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU1
|
||||
CMD: Increment and return to sender...
|
||||
|
||||
The output on the Host terminal should be:
|
||||
|
||||
::
|
||||
|
||||
Received abcdf00 from es0mhu0
|
||||
Received abcdf00 from es0mhu1
|
||||
|
||||
|
||||
Tests results
|
||||
-----------------------------------
|
||||
|
||||
As a reference for the end user, reports for various tests for `Corstone-1000 software (CORSTONE1000-2022.11.10) <https://git.yoctoproject.org/meta-arm/tag/?h=CORSTONE1000-2022.11.10>`__
|
||||
can be found in `here <https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-test-report/-/tree/master/embedded-a/corstone1000>`__.
|
||||
|
||||
Running the software on FVP on Windows
|
||||
**************************************
|
||||
If the user needs to run the Corstone1000 software on FVP on Windows. The user
|
||||
---------------------------------------------------------------
|
||||
|
||||
If the user needs to run the Corstone-1000 software on FVP on Windows. The user
|
||||
should follow the build instructions in this document to build on Linux host
|
||||
PC, and copy the output binaries to the Windows PC where the FVP is located,
|
||||
and launch the FVP binary.
|
||||
|
||||
--------------
|
||||
|
||||
*Copyright (c) 2021, Arm Limited. All rights reserved.*
|
||||
*Copyright (c) 2022, Arm Limited. All rights reserved.*
|
||||
|
||||
.. _Arm Ecosystem FVPs: https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
+359
@@ -0,0 +1,359 @@
|
||||
From 6ab17eeb8225cdf4afc6956c9a2774d60866c36d Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Mon, 28 Mar 2022 05:16:50 +0100
|
||||
Subject: [PATCH 1/6] corstone1000: platform secure test framework
|
||||
|
||||
Change-Id: Ib781927f0add93ec9c06515d251e79518ee1db6e
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Upstream-Status: Accepted [TF-Mv1.7.0]
|
||||
---
|
||||
.../arm/corstone1000/Native_Driver/firewall.c | 15 ++
|
||||
.../arm/corstone1000/Native_Driver/firewall.h | 5 +
|
||||
.../ci_regression_tests/CMakeLists.txt | 45 +++++
|
||||
.../corstone1000/ci_regression_tests/s_test.c | 186 ++++++++++++++++++
|
||||
.../corstone1000/ci_regression_tests/s_test.h | 30 +++
|
||||
.../ci_regression_tests/s_test_config.cmake | 8 +
|
||||
6 files changed, 289 insertions(+)
|
||||
create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt
|
||||
create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c
|
||||
create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.h
|
||||
create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake
|
||||
|
||||
diff --git a/platform/ext/target/arm/corstone1000/Native_Driver/firewall.c b/platform/ext/target/arm/corstone1000/Native_Driver/firewall.c
|
||||
index 788cc3ec92..356b85e9d5 100755
|
||||
--- a/platform/ext/target/arm/corstone1000/Native_Driver/firewall.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/Native_Driver/firewall.c
|
||||
@@ -293,6 +293,21 @@ void fc_enable_mpl(enum rgn_mpe_t mpe, enum rgn_mpl_t mpl)
|
||||
ptr->rgn_mpl3 |= (mpl & RGN_MPL_EN_MASK);
|
||||
}
|
||||
|
||||
+void fc_read_mpl(enum rgn_mpe_t mpe, enum rgn_mpl_t* mpl)
|
||||
+{
|
||||
+ struct _firewall_pe_rwe_reg_map_t *ptr =
|
||||
+ (struct _firewall_pe_rwe_reg_map_t *)fw_data.rwe_ptr;
|
||||
+ if (mpe == RGN_MPE0)
|
||||
+ *mpl = (ptr->rgn_mpl0 & RGN_MPL_EN_MASK);
|
||||
+ else if (mpe == RGN_MPE1)
|
||||
+ *mpl = (ptr->rgn_mpl1 & RGN_MPL_EN_MASK);
|
||||
+ else if (mpe == RGN_MPE2)
|
||||
+ *mpl = (ptr->rgn_mpl2 & RGN_MPL_EN_MASK);
|
||||
+ else if (mpe == RGN_MPE3)
|
||||
+ *mpl = (ptr->rgn_mpl3 & RGN_MPL_EN_MASK);
|
||||
+}
|
||||
+
|
||||
+
|
||||
void fc_disable_mpl(enum rgn_mpe_t mpe, enum rgn_mpl_t mpl)
|
||||
{
|
||||
struct _firewall_pe_rwe_reg_map_t *ptr =
|
||||
diff --git a/platform/ext/target/arm/corstone1000/Native_Driver/firewall.h b/platform/ext/target/arm/corstone1000/Native_Driver/firewall.h
|
||||
index 48c86725ef..17afe6a92f 100755
|
||||
--- a/platform/ext/target/arm/corstone1000/Native_Driver/firewall.h
|
||||
+++ b/platform/ext/target/arm/corstone1000/Native_Driver/firewall.h
|
||||
@@ -247,6 +247,11 @@ void fc_init_mpl(enum rgn_mpe_t mpe);
|
||||
*/
|
||||
void fc_enable_mpl(enum rgn_mpe_t mpe, enum rgn_mpl_t mpl);
|
||||
|
||||
+/**
|
||||
+ * \brief Reads Master Permission List in the selected Firewall Component
|
||||
+ */
|
||||
+void fc_read_mpl(enum rgn_mpe_t mpe, enum rgn_mpl_t* mpl);
|
||||
+
|
||||
/**
|
||||
* \brief Disables Master Permission List in the selected Firewall Component
|
||||
*/
|
||||
diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt b/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt
|
||||
new file mode 100644
|
||||
index 0000000000..70e1c20e4e
|
||||
--- /dev/null
|
||||
+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt
|
||||
@@ -0,0 +1,45 @@
|
||||
+#-------------------------------------------------------------------------------
|
||||
+# Copyright (c) 2021-22, Arm Limited. All rights reserved.
|
||||
+#
|
||||
+# SPDX-License-Identifier: BSD-3-Clause
|
||||
+#
|
||||
+#-------------------------------------------------------------------------------
|
||||
+
|
||||
+cmake_policy(SET CMP0079 NEW)
|
||||
+
|
||||
+include(${CMAKE_CURRENT_SOURCE_DIR}/s_test_config.cmake)
|
||||
+
|
||||
+####################### Secure #################################################
|
||||
+
|
||||
+add_library(corstone1000_test_s STATIC EXCLUDE_FROM_ALL)
|
||||
+
|
||||
+target_sources(corstone1000_test_s
|
||||
+ PRIVATE
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/s_test.c
|
||||
+ ../Native_Driver/firewall.c
|
||||
+)
|
||||
+
|
||||
+target_include_directories(corstone1000_test_s
|
||||
+ PRIVATE
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
+ ../Device/Include
|
||||
+ ../Native_Driver
|
||||
+)
|
||||
+
|
||||
+# Example test links tfm_test_suite_extra_common to use related interface
|
||||
+target_link_libraries(corstone1000_test_s
|
||||
+ PRIVATE
|
||||
+ tfm_test_suite_extra_common
|
||||
+ tfm_log
|
||||
+)
|
||||
+
|
||||
+target_compile_definitions(corstone1000_test_s
|
||||
+ PRIVATE
|
||||
+ $<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
|
||||
+)
|
||||
+
|
||||
+# The corstone1000_test_s library is linked by tfm_test_suite_extra_s
|
||||
+target_link_libraries(tfm_test_suite_extra_s
|
||||
+ PRIVATE
|
||||
+ corstone1000_test_s
|
||||
+)
|
||||
diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c
|
||||
new file mode 100644
|
||||
index 0000000000..963f46d2ab
|
||||
--- /dev/null
|
||||
+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c
|
||||
@@ -0,0 +1,186 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2021-22, Arm Limited. All rights reserved.
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: BSD-3-Clause
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include "s_test.h"
|
||||
+#include "platform_base_address.h"
|
||||
+#include "firewall.h"
|
||||
+#include "tfm_log_raw.h"
|
||||
+
|
||||
+#define DISABLED_TEST 0
|
||||
+
|
||||
+enum host_firewall_host_comp_id_t {
|
||||
+ HOST_FCTRL = (0x00u),
|
||||
+ COMP_SYSPERIPH,
|
||||
+ COMP_DBGPERIPH,
|
||||
+ COMP_AONPERIPH,
|
||||
+ COMP_XNVM,
|
||||
+ COMP_CVM,
|
||||
+ COMP_HOSTCPU,
|
||||
+ COMP_EXTSYS0,
|
||||
+ COMP_EXTSYS1,
|
||||
+ COMP_EXPSLV0,
|
||||
+ COMP_EXPSLV1,
|
||||
+ COMP_EXPMST0,
|
||||
+ COMP_EXPMST1,
|
||||
+ COMP_OCVM,
|
||||
+ COMP_DEBUG,
|
||||
+};
|
||||
+
|
||||
+const struct extra_tests_t plat_s_t = {
|
||||
+ .test_entry = s_test,
|
||||
+ .expected_ret = EXTRA_TEST_SUCCESS
|
||||
+};
|
||||
+
|
||||
+static int test_host_firewall_status(void)
|
||||
+{
|
||||
+ enum fw_lockdown_status_t status;
|
||||
+ uint32_t any_component_id = 2;
|
||||
+
|
||||
+ fc_select((void *)CORSTONE1000_HOST_FIREWALL_BASE, any_component_id);
|
||||
+ status = fw_get_lockdown_status();
|
||||
+ if (status != FW_LOCKED) {
|
||||
+ tfm_log_printf("FAIL: %s.\n\r", __func__);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+
|
||||
+ tfm_log_printf("PASS: %s\n\r", __func__);
|
||||
+ return EXTRA_TEST_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+static int test_host_firewall_external_flash_configurations(void)
|
||||
+{
|
||||
+ enum rgn_mpl_t mpl_rights = 0;
|
||||
+ enum rgn_mpl_t expected_rights = 0;
|
||||
+
|
||||
+#if !(PLATFORM_IS_FVP)
|
||||
+ /* External flash */
|
||||
+ fc_select((void *)CORSTONE1000_HOST_FIREWALL_BASE, COMP_EXPMST0);
|
||||
+ fc_select_region(3);
|
||||
+ fc_read_mpl(RGN_MPE0, &mpl_rights);
|
||||
+ expected_rights = (RGN_MPL_ANY_MST_MASK | RGN_MPL_SECURE_READ_MASK |
|
||||
+ RGN_MPL_SECURE_WRITE_MASK);
|
||||
+ if (mpl_rights != expected_rights) {
|
||||
+ tfm_log_printf("FAIL1: %s.\n\r", __func__);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+ /* XIP Permissions */
|
||||
+ fc_select((void *)CORSTONE1000_HOST_FIREWALL_BASE, COMP_XNVM);
|
||||
+ fc_select_region(1);
|
||||
+ fc_read_mpl(RGN_MPE0, &mpl_rights);
|
||||
+ expected_rights = (RGN_MPL_ANY_MST_MASK |
|
||||
+ RGN_MPL_SECURE_READ_MASK |
|
||||
+ RGN_MPL_NONSECURE_READ_MASK);
|
||||
+ if (mpl_rights != expected_rights) {
|
||||
+ tfm_log_printf("FAIL2: %s.\n\r", __func__);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+#else
|
||||
+ /* Enable the below test when FVP Host Firewall is configured. */
|
||||
+ /*
|
||||
+ fc_select((void *)CORSTONE1000_HOST_FIREWALL_BASE, COMP_XNVM);
|
||||
+ fc_select_region(1);
|
||||
+ fc_read_mpl(RGN_MPE0, &mpl_rights);
|
||||
+ tfm_log_printf("mpl rights = %d\n\r", mpl_rights);
|
||||
+ expected_rights = (RGN_MPL_ANY_MST_MASK |
|
||||
+ RGN_MPL_SECURE_READ_MASK |
|
||||
+ RGN_MPL_SECURE_WRITE_MASK |
|
||||
+ RGN_MPL_NONSECURE_READ_MASK |
|
||||
+ RGN_MPL_NONSECURE_WRITE_MASK);
|
||||
+ if (mpl_rights != expected_rights) {
|
||||
+ tfm_log_printf("FAIL1: %s.\n\r", __func__);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+ */
|
||||
+#endif
|
||||
+
|
||||
+ tfm_log_printf("PASS: %s\n\r", __func__);
|
||||
+ return EXTRA_TEST_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+static int test_host_firewall_secure_flash_configurations(void)
|
||||
+{
|
||||
+ enum rgn_mpl_t mpl_rights = 0;
|
||||
+ enum rgn_mpl_t expected_rights = 0;
|
||||
+
|
||||
+#if !(PLATFORM_IS_FVP)
|
||||
+ /* External flash */
|
||||
+ fc_select((void *)CORSTONE1000_HOST_FIREWALL_BASE, COMP_EXPMST1);
|
||||
+ fc_select_region(1);
|
||||
+ fc_read_mpl(RGN_MPE0, &mpl_rights);
|
||||
+ expected_rights = (RGN_MPL_ANY_MST_MASK | RGN_MPL_SECURE_READ_MASK |
|
||||
+ RGN_MPL_SECURE_WRITE_MASK);
|
||||
+ if (mpl_rights != expected_rights) {
|
||||
+ tfm_log_printf("FAIL: %s.\n\r", __func__);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ tfm_log_printf("PASS: %s\n\r", __func__);
|
||||
+ return EXTRA_TEST_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+static int test_bir_programming(void)
|
||||
+{
|
||||
+ /* BIR is expected to bhaive like write once register */
|
||||
+
|
||||
+ volatile uint32_t *bir_base = (uint32_t *)CORSTONE1000_HOST_BIR_BASE;
|
||||
+
|
||||
+ bir_base[0] = 0x1;
|
||||
+ bir_base[0] = 0x2;
|
||||
+ if (bir_base[0] != 0x1) {
|
||||
+ tfm_log_printf("FAIL: %s : (%u)\n\r", __func__, bir_base[0]);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+
|
||||
+ tfm_log_printf("PASS: %s\n\r", __func__);
|
||||
+ return EXTRA_TEST_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+int32_t s_test(void)
|
||||
+{
|
||||
+ int status;
|
||||
+ int failures = 0;
|
||||
+
|
||||
+#if (DISABLED_TEST == 1)
|
||||
+ status = test_host_firewall_status();
|
||||
+ if (status) {
|
||||
+ failures++;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ status = test_host_firewall_secure_flash_configurations();
|
||||
+ if (status) {
|
||||
+ failures++;
|
||||
+ }
|
||||
+
|
||||
+ status = test_host_firewall_external_flash_configurations();
|
||||
+ if (status) {
|
||||
+ failures++;
|
||||
+ }
|
||||
+
|
||||
+#if (DISABLED_TEST == 1)
|
||||
+ status = test_bir_programming();
|
||||
+ if (status) {
|
||||
+ failures++;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ if (failures) {
|
||||
+ tfm_log_printf("Not all platform test could pass: failures=%d\n\r", failures);
|
||||
+ return EXTRA_TEST_FAILED;
|
||||
+ }
|
||||
+
|
||||
+ tfm_log_printf("ALL_PASS: corstone1000 platform test cases passed.\n\r");
|
||||
+ return EXTRA_TEST_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+int32_t extra_tests_init(struct extra_tests_t *internal_test_t)
|
||||
+{
|
||||
+ /* Add platform init code here. */
|
||||
+
|
||||
+ return register_extra_tests(internal_test_t, &plat_s_t);
|
||||
+}
|
||||
diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.h b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.h
|
||||
new file mode 100644
|
||||
index 0000000000..8aff4d679c
|
||||
--- /dev/null
|
||||
+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.h
|
||||
@@ -0,0 +1,30 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2021-22, Arm Limited. All rights reserved.
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: BSD-3-Clause
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef __S_TESTS_H__
|
||||
+#define __S_TESTS_H__
|
||||
+
|
||||
+#include "extra_tests_common.h"
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+extern "C" {
|
||||
+#endif
|
||||
+
|
||||
+const struct extra_tests_t plat_s_t;
|
||||
+
|
||||
+/**
|
||||
+ * \brief Platform specific secure test function.
|
||||
+ *
|
||||
+ * \returns Returns error code as specified in \ref int32_t
|
||||
+ */
|
||||
+int32_t s_test(void);
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+#endif /* __S_TESTS_H__ */
|
||||
diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake
|
||||
new file mode 100644
|
||||
index 0000000000..bb8d26bf1c
|
||||
--- /dev/null
|
||||
+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake
|
||||
@@ -0,0 +1,8 @@
|
||||
+#-------------------------------------------------------------------------------
|
||||
+# Copyright (c) 2021-22, Arm Limited. All rights reserved.
|
||||
+#
|
||||
+# SPDX-License-Identifier: BSD-3-Clause
|
||||
+#
|
||||
+#-------------------------------------------------------------------------------
|
||||
+
|
||||
+############ Define secure test specific cmake configurations here #############
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
From 6fd49ab55c3419429e437845864c5bb2d731da29 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Mon, 25 Apr 2022 05:26:38 +0100
|
||||
Subject: [PATCH 2/6] corstone1000: make external system support optional
|
||||
|
||||
The commits introduce build time variables to make
|
||||
external system support in the platform optional.
|
||||
|
||||
Change-Id: I593014e0da4ac553c105c66ae55f6fd83ffe427e
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Upstream-Status: Accepted [TF-Mv1.7.0]
|
||||
---
|
||||
.../ext/target/arm/corstone1000/CMakeLists.txt | 1 +
|
||||
platform/ext/target/arm/corstone1000/config.cmake | 1 +
|
||||
.../target/arm/corstone1000/tfm_hal_multi_core.c | 15 +++++++++++++++
|
||||
3 files changed, 17 insertions(+)
|
||||
|
||||
diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
index 16bc708964..39d7b03455 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
@@ -97,6 +97,7 @@ target_compile_definitions(platform_s
|
||||
PRIVATE
|
||||
$<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
|
||||
$<$<BOOL:${TEST_S}>:TEST_S>
|
||||
+ $<$<BOOL:${EXTERNAL_SYSTEM_SUPPORT}>:EXTERNAL_SYSTEM_SUPPORT>
|
||||
)
|
||||
|
||||
#========================= Platform BL2 =======================================#
|
||||
diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
index e5f91108ee..a3399db318 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/config.cmake
|
||||
+++ b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
@@ -21,6 +21,7 @@ set(CRYPTO_HW_ACCELERATOR ON CACHE BOOL "Whether to en
|
||||
set(CRYPTO_NV_SEED OFF CACHE BOOL "Use stored NV seed to provide entropy")
|
||||
set(TFM_CRYPTO_TEST_ALG_CFB OFF CACHE BOOL "Test CFB cryptography mode")
|
||||
set(NS FALSE CACHE BOOL "Whether to build NS app")
|
||||
+set(EXTERNAL_SYSTEM_SUPPORT OFF CACHE BOOL "Whether to include external system support.")
|
||||
|
||||
# FVP is not integrated/tested with CC312.
|
||||
if (${PLATFORM_IS_FVP})
|
||||
diff --git a/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c b/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c
|
||||
index 8e1b455086..8622844d91 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c
|
||||
@@ -16,6 +16,16 @@
|
||||
#define HOST_CPU_PE0_CONFIG_OFFSET 0x010
|
||||
#define AA64nAA32_MASK (1 << 3)
|
||||
|
||||
+#ifdef EXTERNAL_SYSTEM_SUPPORT
|
||||
+void tfm_external_system_boot()
|
||||
+{
|
||||
+ volatile uint32_t *ext_sys_reset_ctl_reg = (uint32_t *)(CORSTONE1000_EXT_SYS_RESET_REG);
|
||||
+
|
||||
+ /* de-assert CPU_WAIT signal*/
|
||||
+ *ext_sys_reset_ctl_reg = 0x0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
void tfm_hal_boot_ns_cpu(uintptr_t start_addr)
|
||||
{
|
||||
/* Switch the shared flash to XiP mode for the host */
|
||||
@@ -53,6 +63,11 @@ void tfm_hal_boot_ns_cpu(uintptr_t start_addr)
|
||||
*reset_ctl_reg = 0;
|
||||
|
||||
(void) start_addr;
|
||||
+
|
||||
+#ifdef EXTERNAL_SYSTEM_SUPPORT
|
||||
+ /*release EXT SYS out of reset*/
|
||||
+ tfm_external_system_boot();
|
||||
+#endif
|
||||
}
|
||||
|
||||
void tfm_hal_wait_for_ns_cpu_ready(void)
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+298
@@ -0,0 +1,298 @@
|
||||
From 2e56f2601249243f2fb3ba67caf9febe4bfc8371 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Tue, 26 Apr 2022 20:17:13 +0100
|
||||
Subject: [PATCH 3/6] corstone1000: enable secure enclave run without host
|
||||
binaries
|
||||
|
||||
In TEST_S configuration, the build disables part of the code which
|
||||
assumes that the host binaries are present in the flash. This change
|
||||
will allow secure enclave's part of the platforms software to build
|
||||
and run without the host support. The configuration can be used to run
|
||||
CI and test secure enclave software independently.
|
||||
|
||||
Change-Id: I29325750a3bea270fe5b3b8b47932a7071a59482
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Upstream-Status: Accepted [TF-Mv1.7.0]
|
||||
---
|
||||
.../ext/target/arm/corstone1000/readme.rst | 88 +++++++++++++++----
|
||||
.../target/arm/corstone1000/CMakeLists.txt | 8 +-
|
||||
.../arm/corstone1000/bl1/CMakeLists.txt | 2 +-
|
||||
.../target/arm/corstone1000/bl2_flash_map.c | 2 +
|
||||
.../target/arm/corstone1000/boot_hal_bl2.c | 2 +
|
||||
.../ext/target/arm/corstone1000/config.cmake | 11 ++-
|
||||
.../arm/corstone1000/partition/flash_layout.h | 2 +-
|
||||
.../arm/corstone1000/tfm_hal_multi_core.c | 2 +
|
||||
8 files changed, 94 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/docs/platform/ext/target/arm/corstone1000/readme.rst b/docs/platform/ext/target/arm/corstone1000/readme.rst
|
||||
index 94b58ac6fc..10c9c58f78 100644
|
||||
--- a/docs/platform/ext/target/arm/corstone1000/readme.rst
|
||||
+++ b/docs/platform/ext/target/arm/corstone1000/readme.rst
|
||||
@@ -7,22 +7,27 @@ Introduction
|
||||
************
|
||||
|
||||
The ARM's Corstone-1000 platform is a reference implementation of PSA FF-M
|
||||
-architecture where NSPE and SPE environments are partitioned into
|
||||
+architecture where NSPE and SPE environments are partitioned/isolated into
|
||||
Cortex-A35 and Cortex-M0+ respectively.
|
||||
|
||||
Cortex-M0+ acting as Secure Enclave is the Root-of-trust of SoC. Its
|
||||
-software comprises of two boot loading stages, i.e. Bl1 and Bl2, based on
|
||||
-mcuboot, and TF-M as run time software. Cortex-A35, also referred as host,
|
||||
-is completely treated as non-secure from the Secure Enclave perspective.
|
||||
+software comprises of two boot loading stages, i.e. Bl1 and Bl2 (based on
|
||||
+mcuboot) and TF-M as run time software. Cortex-A35, also referred as host,
|
||||
+is treated as non-secure from the Secure Enclave perspective.
|
||||
The Cortex-A35 is brought out of rest by Secure Enclave in aarch64 bit mode,
|
||||
and boots the software ecosystem based on linux, u-boot, UEFI run time
|
||||
-services, TF-A and Optee.
|
||||
+services, TF-A, Secure Partitions and Optee.
|
||||
|
||||
The communication between NSPE and SPE is based on PSA IPC protocol running on
|
||||
-top of OpenAMP.
|
||||
+top of FF-A/OpenAMP.
|
||||
|
||||
The secure enclave subsystem has ARM's CC-312 (Crypto Cell) hardware to
|
||||
-accelerate cryptographic operations.
|
||||
+accelerate cryptographic operations. Additionaly, platform supports Secure Debug
|
||||
+using SDC-600 as the communication interface between host debugger and platform
|
||||
+target. The platform has the build option to enable secure debug protocol to
|
||||
+unlock debug ports during boot time. The protocol is based on ARM's ADAC
|
||||
+(Authenticated Debug Access Control) standard.
|
||||
+
|
||||
|
||||
***********
|
||||
System boot
|
||||
@@ -33,23 +38,76 @@ System boot
|
||||
- BL1 load, verifies and transfer execution to BL2 which is again based on mcuboot.
|
||||
- BL2 loads and verifies TF-M and host's initial boot loader image.
|
||||
- BL2 transfer the execution to the TF-M.
|
||||
-- During TF-M initialization, the host is reset.
|
||||
+- During TF-M initialization, the host is taken out of rest.
|
||||
+- Hashes of the keys used for image verification are stored in the OTP memory.
|
||||
|
||||
*****
|
||||
Build
|
||||
*****
|
||||
|
||||
-.. code-block::
|
||||
+Platform solution
|
||||
+=================
|
||||
+
|
||||
+The platform binaries are build using Yocto. Below is the user guide:
|
||||
+
|
||||
+`Arm Corstone-1000 User Guide`_
|
||||
+
|
||||
+Secure Test
|
||||
+===========
|
||||
+
|
||||
+This section can be used to test the secure enclave software indedendently from
|
||||
+the host. The below configuration builds the secure enclave binaries with CI test
|
||||
+frame integrated. On boot, secure enclave softwares stack is brought up, and
|
||||
+CI tests starts executing at the end of the initialization process. In the
|
||||
+below configuration, host software support is disabled, and meant only
|
||||
+to test/verify the secure enclave softwares.
|
||||
+
|
||||
+FVP
|
||||
+---
|
||||
|
||||
- cmake -B build/ -S <tf-m-root>/ -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<tf-m-root>/toolchain_GNUARM.cmake -DTFM_PLATFORM=arm/corstone1000
|
||||
+- Download Corstone-1000 FVP from : `Arm Ecosystem FVPs`_
|
||||
+- Install FVP by running the shell script.
|
||||
+- Running of the binary will boot secure enclave software stack and at the end all CI test
|
||||
+ from tf-m-test along with platform specific tests are executed.
|
||||
+
|
||||
+.. code-block:: bash
|
||||
+
|
||||
+ cmake -B build/ -S <tf-m-root>/ -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<tf-m-root>/toolchain_GNUARM.cmake -DTFM_PLATFORM=arm/corstone1000 -DPLATFORM_IS_FVP=TRUE -DTEST_NS=OFF -DTEST_S=ON -DEXTRA_S_TEST_SUITES_PATHS=<tf-m-root>/trusted-firmware-m/platform/ext/target/arm/corstone1000/ci_regression_tests/
|
||||
cmake --build build -- install
|
||||
+ cd ./build/install/outputs/
|
||||
+ cat bl2_signed.bin bl2_signed.bin tfm_s_signed.bin > cs1000.bin
|
||||
+ cd <path-to-FVP-installation>/models/Linux64_GCC-9.3/
|
||||
+ ./FVP_Corstone-1000 -C board.flashloader0.fname="none" -C se.trustedBootROMloader.fname="./<path-to-build-dir>/install/outputs/bl1.bin" -C board.xnvm_size=64 -C se.trustedSRAM_config=6 -C se.BootROM_config="3" -C board.smsc_91c111.enabled=0 -C board.hostbridge.userNetworking=true --data board.flash0=./<path-to-build-dir>/install/outputs/cs1000.bin@0x68100000 -C diagnostics=4 -C disable_visualisation=true -C board.se_flash_size=8192 -C diagnostics=4 -C disable_visualisation=true
|
||||
+
|
||||
+FPGA
|
||||
+----
|
||||
|
||||
-The binaries will be installed inside:
|
||||
+- Follow the above pointed platform user guide to setup the FPGA board.
|
||||
+- Use the BL1 generated from the below commands to place it inside FPGA board SD Card.
|
||||
+- Use the cs1000.bin created from the below commands to place it inside FPGA board SD Card.
|
||||
+
|
||||
+.. code-block:: bash
|
||||
+
|
||||
+ cmake -B build/ -S <tf-m-root>/ -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<tf-m-root>/toolchain_GNUARM.cmake -DTFM_PLATFORM=arm/corstone1000 -DTEST_NS=OFF -DTEST_S=ON -DEXTRA_S_TEST_SUITES_PATHS=<tf-m-root>/trusted-firmware-m/platform/ext/target/arm/corstone1000/ci_regression_tests/ -DTEST_S_PS=OFF -DTEST_S_PLATFORM=OFF
|
||||
+ cmake --build build -- install
|
||||
+ cd ./build/install/outputs/
|
||||
+ cat bl2_signed.bin bl2_signed.bin tfm_s_signed.bin > cs1000.bin
|
||||
+ cp bl1.bin <path-to-FPGA-SD-CARD>/SOFTWARE/
|
||||
+ cp cs1000.bin <path-to-FPGA-SD-CARD>/SOFTWARE/
|
||||
|
||||
-.. code-block::
|
||||
+FPGA build can not compile all the CI tests into a single build as it exceeds
|
||||
+the available RAM size. So there is a need to select few tests but not all.
|
||||
+The above configuration disable build of -DTEST_S_PS and -DTEST_S_PLATFORM.
|
||||
+Other test configurations are:
|
||||
|
||||
- ./build/install/outputs/ARM/CORSTONE1000
|
||||
+- -DTEST_S_ATTESTATION=ON/OFF
|
||||
+- -DTEST_S_AUDIT=ON/OFF
|
||||
+- -DTEST_S_CRYPTO=ON/OFF
|
||||
+- -DTEST_S_ITS=ON/OFF
|
||||
+- -DTEST_S_PS=ON/OFF
|
||||
+- -DTEST_S_PLATFORM=ON/OFF
|
||||
|
||||
---------------
|
||||
+*Copyright (c) 2021-2022, Arm Limited. All rights reserved.*
|
||||
|
||||
-*Copyright (c) 2021, Arm Limited. All rights reserved.*
|
||||
+.. _Arm Ecosystem FVPs: https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
+.. _Arm Corstone-1000 User Guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/CORSTONE1000-2022.04.19/docs/embedded-a/corstone1000/user-guide.rst
|
||||
diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
index 39d7b03455..81522c7cf0 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
@@ -18,7 +18,7 @@ target_include_directories(platform_region_defs
|
||||
|
||||
target_compile_definitions(platform_region_defs
|
||||
INTERFACE
|
||||
- $<$<BOOL:${TEST_S}>:TEST_S>
|
||||
+ $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
|
||||
)
|
||||
#========================= Platform common defs ===============================#
|
||||
|
||||
@@ -75,7 +75,7 @@ target_sources(platform_s
|
||||
$<$<BOOL:TFM_PARTITION_PLATFORM>:${CMAKE_CURRENT_SOURCE_DIR}/services/src/tfm_platform_system.c>
|
||||
fw_update_agent/uefi_capsule_parser.c
|
||||
fw_update_agent/fwu_agent.c
|
||||
- $<$<BOOL:${TEST_S}>:${CMAKE_CURRENT_SOURCE_DIR}/target_cfg.c>
|
||||
+ $<$<BOOL:${TFM_S_REG_TEST}>:${CMAKE_CURRENT_SOURCE_DIR}/target_cfg.c>
|
||||
)
|
||||
|
||||
if (PLATFORM_IS_FVP)
|
||||
@@ -96,7 +96,7 @@ endif()
|
||||
target_compile_definitions(platform_s
|
||||
PRIVATE
|
||||
$<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
|
||||
- $<$<BOOL:${TEST_S}>:TEST_S>
|
||||
+ $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
|
||||
$<$<BOOL:${EXTERNAL_SYSTEM_SUPPORT}>:EXTERNAL_SYSTEM_SUPPORT>
|
||||
)
|
||||
|
||||
@@ -136,7 +136,7 @@ endif()
|
||||
target_compile_definitions(platform_bl2
|
||||
PRIVATE
|
||||
$<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
|
||||
- $<$<BOOL:${TEST_S}>:TEST_S>
|
||||
+ $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
|
||||
)
|
||||
|
||||
# boot_hal_bl2.c is compiled as part of 'bl2' target and not inside
|
||||
diff --git a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
|
||||
index 369695f148..d39c5ae91d 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
|
||||
+++ b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
|
||||
@@ -291,7 +291,7 @@ target_compile_definitions(signing_layout_for_bl2
|
||||
PRIVATE
|
||||
MCUBOOT_IMAGE_NUMBER=${BL1_IMAGE_NUMBER}
|
||||
BL1
|
||||
- $<$<BOOL:${TEST_S}>:TEST_S>
|
||||
+ $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
|
||||
)
|
||||
|
||||
target_include_directories(signing_layout_for_bl2
|
||||
diff --git a/platform/ext/target/arm/corstone1000/bl2_flash_map.c b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
|
||||
index 6bffa274df..0a6a592d94 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/bl2_flash_map.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
|
||||
@@ -38,6 +38,7 @@ struct flash_area flash_map[] = {
|
||||
.fa_off = FLASH_AREA_1_OFFSET,
|
||||
.fa_size = FLASH_AREA_1_SIZE,
|
||||
},
|
||||
+#ifndef TFM_S_REG_TEST
|
||||
{
|
||||
.fa_id = FLASH_AREA_2_ID,
|
||||
.fa_device_id = FLASH_DEVICE_ID,
|
||||
@@ -52,6 +53,7 @@ struct flash_area flash_map[] = {
|
||||
.fa_off = FLASH_INVALID_OFFSET,
|
||||
.fa_size = FLASH_INVALID_SIZE,
|
||||
},
|
||||
+#endif
|
||||
};
|
||||
|
||||
const int flash_map_entry_num = ARRAY_SIZE(flash_map);
|
||||
diff --git a/platform/ext/target/arm/corstone1000/boot_hal_bl2.c b/platform/ext/target/arm/corstone1000/boot_hal_bl2.c
|
||||
index 792e06f81e..134315a17b 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/boot_hal_bl2.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/boot_hal_bl2.c
|
||||
@@ -100,10 +100,12 @@ int32_t boot_platform_init(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+#ifndef TFM_S_REG_TEST
|
||||
result = fill_bl2_flash_map_by_parsing_fips(BANK_0_PARTITION_OFFSET);
|
||||
if (result) {
|
||||
return 1;
|
||||
}
|
||||
+#endif
|
||||
|
||||
result = FLASH_DEV_NAME.Initialize(NULL);
|
||||
if (result != ARM_DRIVER_OK) {
|
||||
diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
index a3399db318..a6a1a33c42 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/config.cmake
|
||||
+++ b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
@@ -13,8 +13,15 @@ set(DEFAULT_MCUBOOT_FLASH_MAP OFF CACHE BOOL "Whether to us
|
||||
set(MCUBOOT_UPGRADE_STRATEGY "RAM_LOAD" CACHE STRING "Upgrade strategy when multiple boot images are loaded")
|
||||
set(MCUBOOT_SECURITY_COUNTER_S "1" CACHE STRING "Security counter for S image. auto sets it to IMAGE_VERSION_S")
|
||||
|
||||
-set(TFM_ISOLATION_LEVEL 2 CACHE STRING "Isolation level")
|
||||
-set(MCUBOOT_IMAGE_NUMBER 2 CACHE STRING "Whether to combine S and NS into either 1 image, or sign each separately")
|
||||
+if (TEST_S OR TEST_S_ATTESTATION OR TEST_S_AUDIT OR TEST_S_CRYPTO OR TEST_S_ITS OR TEST_S_PS OR TEST_S_PLATFORM OR EXTRA_S_TEST_SUITES_PATHS)
|
||||
+ # Test configuration: host images are not needed and work only with isolation level 1
|
||||
+ set(MCUBOOT_IMAGE_NUMBER 1 CACHE STRING "Whether to combine S and NS into either 1 image, or sign each separately")
|
||||
+ set(TFM_ISOLATION_LEVEL 1 CACHE STRING "Isolation level")
|
||||
+else()
|
||||
+ set(MCUBOOT_IMAGE_NUMBER 2 CACHE STRING "Whether to combine S and NS into either 1 image, or sign each separately")
|
||||
+ set(TFM_ISOLATION_LEVEL 2 CACHE STRING "Isolation level")
|
||||
+endif()
|
||||
+
|
||||
set(TFM_MULTI_CORE_TOPOLOGY ON CACHE BOOL "Whether to build for a dual-cpu architecture")
|
||||
set(TFM_PLAT_SPECIFIC_MULTI_CORE_COMM ON CACHE BOOL "Whether to use a platform specific inter core communication instead of mailbox in dual-cpu topology")
|
||||
set(CRYPTO_HW_ACCELERATOR ON CACHE BOOL "Whether to enable the crypto hardware accelerator on supported platforms")
|
||||
diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
|
||||
index aa5a8fe463..b0319bb319 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
|
||||
+++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
|
||||
@@ -119,7 +119,7 @@
|
||||
*
|
||||
*/
|
||||
#define SE_BL2_PARTITION_SIZE (0x19000) /* 100 KB */
|
||||
-#ifdef TEST_S
|
||||
+#ifdef TFM_S_REG_TEST
|
||||
#define TFM_PARTITION_SIZE (0x61C00) /* 391 KB */
|
||||
#else
|
||||
#define TFM_PARTITION_SIZE (0x5E000) /* 376 KB */
|
||||
diff --git a/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c b/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c
|
||||
index 8622844d91..1146ffe22a 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/tfm_hal_multi_core.c
|
||||
@@ -31,6 +31,7 @@ void tfm_hal_boot_ns_cpu(uintptr_t start_addr)
|
||||
/* Switch the shared flash to XiP mode for the host */
|
||||
Select_XIP_Mode_For_Shared_Flash();
|
||||
|
||||
+#ifndef TFM_S_REG_TEST
|
||||
volatile uint32_t *bir_base = (uint32_t *)CORSTONE1000_HOST_BIR_BASE;
|
||||
|
||||
/* Program Boot Instruction Register to jump to BL2 (TF-A) base address
|
||||
@@ -68,6 +69,7 @@ void tfm_hal_boot_ns_cpu(uintptr_t start_addr)
|
||||
/*release EXT SYS out of reset*/
|
||||
tfm_external_system_boot();
|
||||
#endif
|
||||
+#endif /* !TFM_S_REG_TEST */
|
||||
}
|
||||
|
||||
void tfm_hal_wait_for_ns_cpu_ready(void)
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
From f3686dfb8fb97cb42c3d4f8ee2d7aa736d5cb760 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Wed, 3 Aug 2022 15:50:27 +0100
|
||||
Subject: [PATCH 4/6] Platform Partition: Allow configuration of input and
|
||||
output buffer
|
||||
|
||||
The change makes input and output buffer size macros used by
|
||||
the platform partition to be configured by cmake. This will
|
||||
allow platforms to set the buffer size accordingly.
|
||||
|
||||
Change-Id: Ia492ce02f8744b0157228d9be51a9ec5b7c88ef6
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Upstream-Status: Accepted [TF-Mv1.7.0]
|
||||
---
|
||||
config/config_default.cmake | 2 ++
|
||||
secure_fw/partitions/platform/CMakeLists.txt | 6 ++++++
|
||||
secure_fw/partitions/platform/platform_sp.c | 9 +++++++--
|
||||
3 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/config/config_default.cmake b/config/config_default.cmake
|
||||
index 3112b707bc..497c972dc9 100755
|
||||
--- a/config/config_default.cmake
|
||||
+++ b/config/config_default.cmake
|
||||
@@ -141,6 +141,8 @@ set(ATTEST_INCLUDE_OPTIONAL_CLAIMS ON CACHE BOOL "Include opt
|
||||
set(ATTEST_INCLUDE_COSE_KEY_ID OFF CACHE BOOL "Include COSE key-id in initial attestation token")
|
||||
|
||||
set(TFM_PARTITION_PLATFORM ON CACHE BOOL "Enable Platform partition")
|
||||
+set(PLATFORM_SERVICE_INPUT_BUFFER_SIZE 64 CACHE STRING "Size of input buffer in platform service.")
|
||||
+set(PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE 64 CACHE STRING "Size of output buffer in platform service.")
|
||||
|
||||
set(TFM_PARTITION_AUDIT_LOG OFF CACHE BOOL "Enable Audit Log partition")
|
||||
|
||||
diff --git a/secure_fw/partitions/platform/CMakeLists.txt b/secure_fw/partitions/platform/CMakeLists.txt
|
||||
index 4b37cd780c..3070f89d6d 100644
|
||||
--- a/secure_fw/partitions/platform/CMakeLists.txt
|
||||
+++ b/secure_fw/partitions/platform/CMakeLists.txt
|
||||
@@ -47,6 +47,12 @@ target_link_libraries(tfm_psa_rot_partition_platform
|
||||
tfm_spm
|
||||
)
|
||||
|
||||
+target_compile_definitions(tfm_psa_rot_partition_platform
|
||||
+ PRIVATE
|
||||
+ INPUT_BUFFER_SIZE=${PLATFORM_SERVICE_INPUT_BUFFER_SIZE}
|
||||
+ OUTPUT_BUFFER_SIZE=${PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE}
|
||||
+)
|
||||
+
|
||||
############################ Secure API ########################################
|
||||
|
||||
target_sources(tfm_sprt
|
||||
diff --git a/secure_fw/partitions/platform/platform_sp.c b/secure_fw/partitions/platform/platform_sp.c
|
||||
index 673cb0ee06..87bd434720 100644
|
||||
--- a/secure_fw/partitions/platform/platform_sp.c
|
||||
+++ b/secure_fw/partitions/platform/platform_sp.c
|
||||
@@ -38,8 +38,13 @@ static const int32_t nv_counter_access_map[NV_COUNTER_MAP_SIZE] = {
|
||||
#include "psa/service.h"
|
||||
#include "region_defs.h"
|
||||
|
||||
-#define INPUT_BUFFER_SIZE 64
|
||||
-#define OUTPUT_BUFFER_SIZE 64
|
||||
+#ifndef INPUT_BUFFER_SIZE
|
||||
+#define INPUT_BUFFER_SIZE 64
|
||||
+#endif
|
||||
+
|
||||
+#ifndef OUTPUT_BUFFER_SIZE
|
||||
+#define OUTPUT_BUFFER_SIZE 64
|
||||
+#endif
|
||||
|
||||
typedef enum tfm_platform_err_t (*plat_func_t)(const psa_msg_t *msg);
|
||||
#endif /* TFM_PSA_API */
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+573
@@ -0,0 +1,573 @@
|
||||
From 9d70628b7dc1dbc3c1ac7f4f3c0f6aa6b237510d Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Wed, 6 Jul 2022 11:19:39 +0100
|
||||
Subject: [PATCH 5/6] corstone1000: support for UEFI FMP image Information
|
||||
|
||||
The commit provides the support for UEFI FMP (Firmware Management
|
||||
Protocol) SET and GET Image info APIs.
|
||||
|
||||
The APIs to SET and GET image info is implemented. In current design,
|
||||
SET is called by secure encalve and GET is called by the host.
|
||||
|
||||
FMP image information is initialized on every boot and retained
|
||||
in SRAM. The updatable values of the FMP are stored in private
|
||||
metadata section of the flash.
|
||||
|
||||
Change-Id: Iaf0b4a13a9c24f05e4a32509e61a8b96ee8e9e4b
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Upstream-Status: Accepted [TF-Mv1.7.0]
|
||||
---
|
||||
.../target/arm/corstone1000/CMakeLists.txt | 2 +
|
||||
.../ext/target/arm/corstone1000/config.cmake | 8 +-
|
||||
.../corstone1000/fw_update_agent/fwu_agent.c | 61 ++++-
|
||||
.../corstone1000/fw_update_agent/fwu_agent.h | 3 +
|
||||
.../corstone1000/fw_update_agent/uefi_fmp.c | 240 ++++++++++++++++++
|
||||
.../corstone1000/fw_update_agent/uefi_fmp.h | 56 ++++
|
||||
.../include/corstone1000_ioctl_requests.h | 14 +-
|
||||
.../services/src/tfm_platform_system.c | 9 +
|
||||
8 files changed, 374 insertions(+), 19 deletions(-)
|
||||
create mode 100644 platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.c
|
||||
create mode 100644 platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.h
|
||||
|
||||
diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
index 81522c7cf0..3602312a3a 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
|
||||
@@ -76,6 +76,8 @@ target_sources(platform_s
|
||||
fw_update_agent/uefi_capsule_parser.c
|
||||
fw_update_agent/fwu_agent.c
|
||||
$<$<BOOL:${TFM_S_REG_TEST}>:${CMAKE_CURRENT_SOURCE_DIR}/target_cfg.c>
|
||||
+ fw_update_agent/uefi_fmp.c
|
||||
+ $<$<NOT:$<BOOL:${PLATFORM_DEFAULT_OTP}>>:${PLATFORM_DIR}/ext/accelerator/cc312/otp_cc312.c>
|
||||
)
|
||||
|
||||
if (PLATFORM_IS_FVP)
|
||||
diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
index a6a1a33c42..ab0fe17ba8 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/config.cmake
|
||||
+++ b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
@@ -50,7 +50,9 @@ else()
|
||||
set(PLATFORM_PSA_ADAC_SECURE_DEBUG FALSE CACHE BOOL "Whether to use psa-adac secure debug.")
|
||||
endif()
|
||||
|
||||
-set(DEFAULT_MCUBOOT_SECURITY_COUNTERS OFF CACHE BOOL "Whether to use the default security counter configuration defined by TF-M project")
|
||||
+set(DEFAULT_MCUBOOT_SECURITY_COUNTERS OFF CACHE BOOL "Whether to use the default security counter configuration defined by TF-M project")
|
||||
|
||||
-set(PS_ENCRYPTION OFF CACHE BOOL "Enable encryption for Protected Storage partition")
|
||||
-set(PS_ROLLBACK_PROTECTION OFF CACHE BOOL "Enable rollback protection for Protected Storage partition")
|
||||
+set(PS_ENCRYPTION OFF CACHE BOOL "Enable encryption for Protected Storage partition")
|
||||
+set(PS_ROLLBACK_PROTECTION OFF CACHE BOOL "Enable rollback protection for Protected Storage partition")
|
||||
+
|
||||
+set(PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE 256 CACHE STRING "Size of output buffer in platform service.")
|
||||
diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
|
||||
index 3abb5dd0dc..72a5fc9c1d 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "platform_description.h"
|
||||
#include "tfm_plat_nv_counters.h"
|
||||
#include "tfm_plat_defs.h"
|
||||
+#include "uefi_fmp.h"
|
||||
|
||||
/* Properties of image in a bank */
|
||||
struct fwu_image_properties {
|
||||
@@ -84,6 +85,11 @@ struct fwu_private_metadata {
|
||||
/* staged nv_counter: temprary location before written to the otp */
|
||||
uint32_t nv_counter[NR_OF_IMAGES_IN_FW_BANK];
|
||||
|
||||
+ /* FMP information */
|
||||
+ uint32_t fmp_version;
|
||||
+ uint32_t fmp_last_attempt_version;
|
||||
+ uint32_t fmp_last_attempt_status;
|
||||
+
|
||||
} __packed;
|
||||
|
||||
#define MAX_BOOT_ATTEMPTS_PER_BANK 3
|
||||
@@ -278,7 +284,7 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
|
||||
{
|
||||
enum fwu_agent_error_t ret;
|
||||
struct fwu_private_metadata priv_metadata;
|
||||
- uint32_t image_version = 0;
|
||||
+ uint32_t image_version = FWU_IMAGE_INITIAL_VERSION;
|
||||
|
||||
FWU_LOG_MSG("%s: enter\n\r", __func__);
|
||||
|
||||
@@ -302,8 +308,8 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
|
||||
memset(&_metadata, 0, sizeof(struct fwu_metadata));
|
||||
|
||||
_metadata.version = 1;
|
||||
- _metadata.active_index = 0;
|
||||
- _metadata.previous_active_index = 1;
|
||||
+ _metadata.active_index = BANK_0;
|
||||
+ _metadata.previous_active_index = BANK_1;
|
||||
|
||||
/* bank 0 is the place where images are located at the
|
||||
* start of device lifecycle */
|
||||
@@ -339,6 +345,10 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
|
||||
priv_metadata.boot_index = BANK_0;
|
||||
priv_metadata.boot_attempted = 0;
|
||||
|
||||
+ priv_metadata.fmp_version = FWU_IMAGE_INITIAL_VERSION;
|
||||
+ priv_metadata.fmp_last_attempt_version = FWU_IMAGE_INITIAL_VERSION;
|
||||
+ priv_metadata.fmp_last_attempt_status = LAST_ATTEMPT_STATUS_SUCCESS;
|
||||
+
|
||||
ret = private_metadata_write(&priv_metadata);
|
||||
if (ret) {
|
||||
return ret;
|
||||
@@ -540,9 +550,25 @@ enum fwu_agent_error_t corstone1000_fwu_flash_image(void)
|
||||
&image_bank_offset);
|
||||
switch(image_index) {
|
||||
case IMAGE_ALL:
|
||||
+
|
||||
ret = flash_full_capsule(&_metadata, capsule_info.image[i],
|
||||
capsule_info.size[i],
|
||||
capsule_info.version[i]);
|
||||
+
|
||||
+ if (ret != FWU_AGENT_SUCCESS) {
|
||||
+
|
||||
+ priv_metadata.fmp_last_attempt_version = capsule_info.version[i];
|
||||
+ priv_metadata.fmp_last_attempt_status = LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL;
|
||||
+
|
||||
+ private_metadata_write(&priv_metadata);
|
||||
+
|
||||
+ fmp_set_image_info(&full_capsule_image_guid,
|
||||
+ priv_metadata.fmp_version,
|
||||
+ priv_metadata.fmp_last_attempt_version,
|
||||
+ priv_metadata.fmp_last_attempt_status);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
break;
|
||||
default:
|
||||
FWU_LOG_MSG("%s: sent image not recognized\n\r", __func__);
|
||||
@@ -866,17 +892,42 @@ enum fwu_agent_error_t corstone1000_fwu_host_ack(void)
|
||||
|
||||
current_state = get_fwu_agent_state(&_metadata, &priv_metadata);
|
||||
if (current_state == FWU_AGENT_STATE_REGULAR) {
|
||||
+
|
||||
ret = FWU_AGENT_SUCCESS; /* nothing to be done */
|
||||
+
|
||||
+ fmp_set_image_info(&full_capsule_image_guid,
|
||||
+ priv_metadata.fmp_version,
|
||||
+ priv_metadata.fmp_last_attempt_version,
|
||||
+ priv_metadata.fmp_last_attempt_status);
|
||||
+
|
||||
goto out;
|
||||
+
|
||||
} else if (current_state != FWU_AGENT_STATE_TRIAL) {
|
||||
FWU_ASSERT(0);
|
||||
}
|
||||
|
||||
if (_metadata.active_index != priv_metadata.boot_index) {
|
||||
+
|
||||
/* firmware update failed, revert back to previous bank */
|
||||
+
|
||||
+ priv_metadata.fmp_last_attempt_version =
|
||||
+ _metadata.img_entry[IMAGE_0].img_props[_metadata.active_index].version;
|
||||
+
|
||||
+ priv_metadata.fmp_last_attempt_status = LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL;
|
||||
+
|
||||
ret = fwu_select_previous(&_metadata, &priv_metadata);
|
||||
+
|
||||
} else {
|
||||
+
|
||||
/* firmware update successful */
|
||||
+
|
||||
+ priv_metadata.fmp_version =
|
||||
+ _metadata.img_entry[IMAGE_0].img_props[_metadata.active_index].version;
|
||||
+ priv_metadata.fmp_last_attempt_version =
|
||||
+ _metadata.img_entry[IMAGE_0].img_props[_metadata.active_index].version;
|
||||
+
|
||||
+ priv_metadata.fmp_last_attempt_status = LAST_ATTEMPT_STATUS_SUCCESS;
|
||||
+
|
||||
ret = fwu_accept_image(&full_capsule_image_guid, &_metadata,
|
||||
&priv_metadata);
|
||||
if (!ret) {
|
||||
@@ -886,6 +937,10 @@ enum fwu_agent_error_t corstone1000_fwu_host_ack(void)
|
||||
|
||||
if (ret == FWU_AGENT_SUCCESS) {
|
||||
disable_host_ack_timer();
|
||||
+ fmp_set_image_info(&full_capsule_image_guid,
|
||||
+ priv_metadata.fmp_version,
|
||||
+ priv_metadata.fmp_last_attempt_version,
|
||||
+ priv_metadata.fmp_last_attempt_status);
|
||||
}
|
||||
|
||||
out:
|
||||
diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
|
||||
index 57b07e8d2c..aa18179024 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
|
||||
+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
|
||||
@@ -30,6 +30,9 @@ enum fwu_agent_error_t {
|
||||
} \
|
||||
|
||||
|
||||
+/* Version used for the very first image of the device. */
|
||||
+#define FWU_IMAGE_INITIAL_VERSION 0
|
||||
+
|
||||
enum fwu_agent_error_t fwu_metadata_provision(void);
|
||||
enum fwu_agent_error_t fwu_metadata_init(void);
|
||||
|
||||
diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.c b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.c
|
||||
new file mode 100644
|
||||
index 0000000000..ce576e1794
|
||||
--- /dev/null
|
||||
+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.c
|
||||
@@ -0,0 +1,240 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: BSD-3-Clause
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <string.h>
|
||||
+#include <stdbool.h>
|
||||
+#include "cmsis.h"
|
||||
+#include "uefi_fmp.h"
|
||||
+
|
||||
+/* The count will increase when partial update is supported.
|
||||
+ * At present, only full WIC is considered as updatable image.
|
||||
+ */
|
||||
+#define NUMBER_OF_FMP_IMAGES 1
|
||||
+#define NO_OF_FMP_VARIABLES_PER_IMAGE 6
|
||||
+
|
||||
+#define UEFI_ARCHITECTURE_64
|
||||
+
|
||||
+#ifdef UEFI_ARCHITECTURE_64
|
||||
+typedef uint64_t uefi_ptr_t;
|
||||
+typedef uint64_t efi_uintn_t;
|
||||
+#else
|
||||
+typedef uint32_t uefi_ptr_t;
|
||||
+typedef uint32_t efi_uintn_t;
|
||||
+#endif
|
||||
+
|
||||
+/* Below macro definations and struct declarations taken from UEFI spec 2.9 */
|
||||
+
|
||||
+/*
|
||||
+ * Image Attribute Definitions
|
||||
+ */
|
||||
+#define IMAGE_ATTRIBUTE_IMAGE_UPDATABLE 0x00000001
|
||||
+#define IMAGE_ATTRIBUTE_RESET_REQUIRED 0x00000002
|
||||
+#define IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED 0x00000004
|
||||
+#define IMAGE_ATTRIBUTE_IN_USE 0x00000008
|
||||
+#define IMAGE_ATTRIBUTE_UEFI_IMAGE 0x00000010
|
||||
+#define IMAGE_ATTRIBUTE_DEPENDENCY 0x00000020
|
||||
+
|
||||
+typedef uint32_t DescriptorVersion_t;
|
||||
+typedef uint32_t DescriptorSize_t;
|
||||
+typedef uint8_t DescriptorCount_t;
|
||||
+
|
||||
+typedef __PACKED_STRUCT {
|
||||
+ uint8_t ImageIndex;
|
||||
+ struct efi_guid ImageTypeId;
|
||||
+ uint64_t ImageId;
|
||||
+ uefi_ptr_t PtrImageIdName;
|
||||
+ uint32_t Version;
|
||||
+ uefi_ptr_t PtrVersionName;
|
||||
+ efi_uintn_t Size;
|
||||
+ uint64_t AttributesSupported;
|
||||
+ uint64_t AttributesSetting;
|
||||
+ uint64_t Compatibilities;
|
||||
+ /* Introduced with DescriptorVersion 2+ */
|
||||
+ uint32_t LowestSupportedImageVersion;
|
||||
+ /* Introduced with DescriptorVersion 3+ */
|
||||
+ uint32_t LastAttemptVersion;
|
||||
+ uint32_t LastAttemptStatus;
|
||||
+ uint64_t HardwareInstance;
|
||||
+ /* Introduced with DescriptorVersion 4+ */
|
||||
+ uefi_ptr_t PtrDependencies;
|
||||
+} EFI_FIRMWARE_IMAGE_DESCRIPTOR;
|
||||
+
|
||||
+typedef __PACKED_STRUCT {
|
||||
+ DescriptorVersion_t DescriptorVersion;
|
||||
+ DescriptorSize_t DescriptorsSize;
|
||||
+ DescriptorCount_t DescriptorCount;
|
||||
+ EFI_FIRMWARE_IMAGE_DESCRIPTOR ImageDescriptor;
|
||||
+ uint16_t *ImageName;
|
||||
+ uint32_t ImageNameSize;
|
||||
+ uint16_t *ImageVersionName;
|
||||
+ uint32_t ImageVersionNameSize;
|
||||
+} EFI_FIRMWARE_MANAGEMENT_PROTOCOL_IMAGE_INFO;
|
||||
+
|
||||
+
|
||||
+static uint16_t corstone_image_name0[] = { 'C', 'O', 'R', 'S', 'T', 'O', 'N', 'E', '1', '0', '0', '0', '_', 'W', 'I', 'C', '\0' };
|
||||
+static uint16_t corstone_version_name0[] = { 'C', 'O', 'R', 'S', 'T', 'O', 'N', 'E', '1', '0', '0', '0', '_', 'B', 'E', 'S', 'T', '\0'};
|
||||
+
|
||||
+static EFI_FIRMWARE_MANAGEMENT_PROTOCOL_IMAGE_INFO fmp_info[NUMBER_OF_FMP_IMAGES];
|
||||
+
|
||||
+extern struct efi_guid full_capsule_image_guid;
|
||||
+
|
||||
+static bool is_fmp_info_initialized = false;
|
||||
+
|
||||
+static void init_fmp_info(void)
|
||||
+{
|
||||
+ memset(fmp_info, 0,
|
||||
+ sizeof(EFI_FIRMWARE_MANAGEMENT_PROTOCOL_IMAGE_INFO) * NUMBER_OF_FMP_IMAGES);
|
||||
+
|
||||
+ /* Fill information for the WIC.
|
||||
+ * Add further details when partial image is supported.
|
||||
+ */
|
||||
+
|
||||
+ fmp_info[0].DescriptorVersion = 4;
|
||||
+ fmp_info[0].DescriptorCount = NUMBER_OF_FMP_IMAGES;
|
||||
+ fmp_info[0].DescriptorsSize =
|
||||
+ sizeof(EFI_FIRMWARE_IMAGE_DESCRIPTOR) +
|
||||
+ sizeof(corstone_image_name0) + sizeof(corstone_version_name0);
|
||||
+
|
||||
+ fmp_info[0].ImageDescriptor.ImageIndex = 1;
|
||||
+
|
||||
+ memcpy(&fmp_info[0].ImageDescriptor.ImageTypeId, &full_capsule_image_guid,
|
||||
+ sizeof(struct efi_guid));
|
||||
+
|
||||
+ fmp_info[0].ImageDescriptor.ImageId = 1;
|
||||
+ fmp_info[0].ImageDescriptor.Version = FWU_IMAGE_INITIAL_VERSION;
|
||||
+ fmp_info[0].ImageDescriptor.AttributesSupported = 1;
|
||||
+ fmp_info[0].ImageDescriptor.AttributesSetting = (
|
||||
+ IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | IMAGE_ATTRIBUTE_RESET_REQUIRED);
|
||||
+ fmp_info[0].ImageDescriptor.LowestSupportedImageVersion =
|
||||
+ FWU_IMAGE_INITIAL_VERSION;
|
||||
+ fmp_info[0].ImageDescriptor.LastAttemptVersion = FWU_IMAGE_INITIAL_VERSION;
|
||||
+ fmp_info[0].ImageDescriptor.LastAttemptStatus = LAST_ATTEMPT_STATUS_SUCCESS;
|
||||
+
|
||||
+ fmp_info[0].ImageName = corstone_image_name0;
|
||||
+ fmp_info[0].ImageNameSize = sizeof(corstone_image_name0);
|
||||
+ fmp_info[0].ImageVersionName = corstone_version_name0;
|
||||
+ fmp_info[0].ImageVersionNameSize = sizeof(corstone_version_name0);
|
||||
+
|
||||
+ is_fmp_info_initialized = true;
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+enum fwu_agent_error_t fmp_set_image_info(struct efi_guid *guid,
|
||||
+ uint32_t current_version, uint32_t attempt_version,
|
||||
+ uint32_t last_attempt_status)
|
||||
+{
|
||||
+ enum fwu_agent_error_t status = FWU_AGENT_ERROR;
|
||||
+
|
||||
+ FWU_LOG_MSG("%s:%d Enter\n\r", __func__, __LINE__);
|
||||
+
|
||||
+ if (is_fmp_info_initialized == false) {
|
||||
+ init_fmp_info();
|
||||
+ }
|
||||
+
|
||||
+ for (int i = 0; i < NUMBER_OF_FMP_IMAGES; i++) {
|
||||
+ if ((memcmp(guid, &fmp_info[i].ImageDescriptor.ImageTypeId,
|
||||
+ sizeof(struct efi_guid))) == 0)
|
||||
+ {
|
||||
+ FWU_LOG_MSG("FMP image update: image id = %u\n\r",
|
||||
+ fmp_info[i].ImageDescriptor.ImageId);
|
||||
+ fmp_info[i].ImageDescriptor.Version = current_version;
|
||||
+ fmp_info[i].ImageDescriptor.LastAttemptVersion = attempt_version;
|
||||
+ fmp_info[i].ImageDescriptor.LastAttemptStatus = last_attempt_status;
|
||||
+ FWU_LOG_MSG("FMP image update: status = %u"
|
||||
+ "version=%u last_attempt_version=%u.\n\r",
|
||||
+ last_attempt_status, current_version,
|
||||
+ attempt_version);
|
||||
+ status = FWU_AGENT_SUCCESS;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ FWU_LOG_MSG("%s:%d Exit.\n\r", __func__, __LINE__);
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+#define NO_OF_FMP_VARIABLES (NUMBER_OF_FMP_IMAGES * NO_OF_FMP_VARIABLES_PER_IMAGE)
|
||||
+
|
||||
+static enum fwu_agent_error_t pack_image_info(void *buffer, uint32_t size)
|
||||
+{
|
||||
+ typedef __PACKED_STRUCT {
|
||||
+ uint32_t variable_count;
|
||||
+ uint32_t variable_size[NO_OF_FMP_VARIABLES];
|
||||
+ uint8_t variable[];
|
||||
+ } packed_buffer_t;
|
||||
+
|
||||
+ packed_buffer_t *packed_buffer = buffer;
|
||||
+ int runner = 0;
|
||||
+ int index = 0;
|
||||
+ int current_size = sizeof(packed_buffer_t);
|
||||
+ int size_requirement_1 = 0;
|
||||
+ int size_requirement_2 = 0;
|
||||
+
|
||||
+ if (size < current_size) {
|
||||
+ FWU_LOG_MSG("%s:%d Buffer too small.\n\r", __func__, __LINE__);
|
||||
+ return FWU_AGENT_ERROR;
|
||||
+ }
|
||||
+
|
||||
+ packed_buffer->variable_count = NO_OF_FMP_VARIABLES;
|
||||
+
|
||||
+ for (int i = 0; i < NUMBER_OF_FMP_IMAGES; i++) {
|
||||
+
|
||||
+ packed_buffer->variable_size[index++] = sizeof(DescriptorVersion_t);
|
||||
+ packed_buffer->variable_size[index++] = sizeof(DescriptorSize_t);
|
||||
+ packed_buffer->variable_size[index++] = sizeof(DescriptorCount_t);
|
||||
+ packed_buffer->variable_size[index++] = sizeof(EFI_FIRMWARE_IMAGE_DESCRIPTOR);
|
||||
+ packed_buffer->variable_size[index++] = fmp_info[i].ImageNameSize;
|
||||
+ packed_buffer->variable_size[index++] = fmp_info[i].ImageVersionNameSize;
|
||||
+
|
||||
+ size_requirement_1 = sizeof(DescriptorVersion_t) + sizeof(DescriptorSize_t) +
|
||||
+ sizeof(DescriptorCount_t) + sizeof(EFI_FIRMWARE_IMAGE_DESCRIPTOR);
|
||||
+
|
||||
+ size_requirement_2 = fmp_info[i].ImageNameSize + fmp_info[i].ImageVersionNameSize;
|
||||
+
|
||||
+ current_size += size_requirement_1 + size_requirement_2;
|
||||
+
|
||||
+ if (size < current_size) {
|
||||
+ FWU_LOG_MSG("%s:%d Buffer too small.\n\r", __func__, __LINE__);
|
||||
+ return FWU_AGENT_ERROR;
|
||||
+ }
|
||||
+
|
||||
+ FWU_LOG_MSG("%s:%d ImageInfo size = %u, ImageName size = %u, "
|
||||
+ "ImageVersionName size = %u\n\r", __func__, __LINE__,
|
||||
+ sizeof(EFI_FIRMWARE_IMAGE_DESCRIPTOR), fmp_info[i].ImageNameSize,
|
||||
+ fmp_info[i].ImageVersionNameSize);
|
||||
+
|
||||
+ memcpy(&packed_buffer->variable[runner], &fmp_info[i], size_requirement_1);
|
||||
+ runner += size_requirement_1;
|
||||
+
|
||||
+ memcpy(&packed_buffer->variable[runner], fmp_info[i].ImageName,
|
||||
+ fmp_info[i].ImageNameSize);
|
||||
+ runner += fmp_info[i].ImageNameSize;
|
||||
+
|
||||
+ memcpy(&packed_buffer->variable[runner], fmp_info[i].ImageVersionName,
|
||||
+ fmp_info[i].ImageVersionNameSize);
|
||||
+ runner += fmp_info[i].ImageVersionNameSize;
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ return FWU_AGENT_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+enum fwu_agent_error_t fmp_get_image_info(void *buffer, uint32_t size)
|
||||
+{
|
||||
+ enum fwu_agent_error_t status;
|
||||
+
|
||||
+ FWU_LOG_MSG("%s:%d Enter\n\r", __func__, __LINE__);
|
||||
+
|
||||
+ status = pack_image_info(buffer, size);
|
||||
+
|
||||
+ FWU_LOG_MSG("%s:%d Exit\n\r", __func__, __LINE__);
|
||||
+
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.h b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.h
|
||||
new file mode 100644
|
||||
index 0000000000..d876bd7cff
|
||||
--- /dev/null
|
||||
+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_fmp.h
|
||||
@@ -0,0 +1,56 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: BSD-3-Clause
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef UEFI_FMP_H
|
||||
+#define UEFI_FMP_H
|
||||
+
|
||||
+
|
||||
+#include <stdint.h>
|
||||
+#include "fwu_agent.h"
|
||||
+#include "../fip_parser/external/uuid.h"
|
||||
+
|
||||
+/*
|
||||
+ * Last Attempt Status Value
|
||||
+ */
|
||||
+
|
||||
+#define LAST_ATTEMPT_STATUS_SUCCESS 0x00000000
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL 0x00000001
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_INSUFFICIENT_RESOURCES 0x00000002
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_INCORRECT_VERSION 0x00000003
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_INVALID_FORMAT 0x00000004
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_AUTH_ERROR 0x00000005
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_AC 0x00000006
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_BATT 0x00000007
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_UNSATISFIED_DEPENDENCIES 0x00000008
|
||||
+/* The LastAttemptStatus values of 0x1000 - 0x4000 are reserved for vendor usage. */
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN 0x00001000
|
||||
+#define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MAX 0x00004000
|
||||
+
|
||||
+
|
||||
+
|
||||
+/*
|
||||
+ * Updates FMP information for the image matched by guid.
|
||||
+ *
|
||||
+ * guid : guid of the image
|
||||
+ * current_version: current versions for the image
|
||||
+ * attempt_version: attempted versions for the image
|
||||
+ *
|
||||
+ */
|
||||
+enum fwu_agent_error_t fmp_set_image_info(struct efi_guid *guid,
|
||||
+ uint32_t current_version, uint32_t attempt_version,
|
||||
+ uint32_t last_attempt_status);
|
||||
+
|
||||
+/*
|
||||
+ * Return fmp image information for all the updable images.
|
||||
+ *
|
||||
+ * buffer : pointer to the out buffer
|
||||
+ * size : size of the buffer
|
||||
+ *
|
||||
+ */
|
||||
+enum fwu_agent_error_t fmp_get_image_info(void *buffer, uint32_t size);
|
||||
+
|
||||
+#endif /* UEFI_FMP_H */
|
||||
diff --git a/platform/ext/target/arm/corstone1000/services/include/corstone1000_ioctl_requests.h b/platform/ext/target/arm/corstone1000/services/include/corstone1000_ioctl_requests.h
|
||||
index 8ac67346b6..c5f3537e9d 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/services/include/corstone1000_ioctl_requests.h
|
||||
+++ b/platform/ext/target/arm/corstone1000/services/include/corstone1000_ioctl_requests.h
|
||||
@@ -14,19 +14,7 @@
|
||||
enum corstone1000_ioctl_id_t {
|
||||
IOCTL_CORSTONE1000_FWU_FLASH_IMAGES = 0,
|
||||
IOCTL_CORSTONE1000_FWU_HOST_ACK,
|
||||
+ IOCTL_CORSTONE1000_FMP_GET_IMAGE_INFO,
|
||||
};
|
||||
|
||||
-
|
||||
-typedef struct corstone1000_ioctl_in_params {
|
||||
-
|
||||
- uint32_t ioctl_id;
|
||||
-
|
||||
-} corstone1000_ioctl_in_params_t;
|
||||
-
|
||||
-typedef struct corstone1000_ioctl_out_params {
|
||||
-
|
||||
- int32_t result;
|
||||
-
|
||||
-} corstone1000_ioctl_out_params_t;
|
||||
-
|
||||
#endif /* CORSTONE1000_IOCTL_REQUESTS_H */
|
||||
diff --git a/platform/ext/target/arm/corstone1000/services/src/tfm_platform_system.c b/platform/ext/target/arm/corstone1000/services/src/tfm_platform_system.c
|
||||
index 5b3f3e14a2..41305ed966 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/services/src/tfm_platform_system.c
|
||||
+++ b/platform/ext/target/arm/corstone1000/services/src/tfm_platform_system.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "platform_description.h"
|
||||
#include "corstone1000_ioctl_requests.h"
|
||||
#include "fwu_agent.h"
|
||||
+#include "uefi_fmp.h"
|
||||
|
||||
void tfm_platform_hal_system_reset(void)
|
||||
{
|
||||
@@ -36,6 +37,14 @@ enum tfm_platform_err_t tfm_platform_hal_ioctl(tfm_platform_ioctl_req_t request,
|
||||
corstone1000_fwu_host_ack();
|
||||
break;
|
||||
|
||||
+ case IOCTL_CORSTONE1000_FMP_GET_IMAGE_INFO:
|
||||
+ if (out_vec == NULL) {
|
||||
+ ret = TFM_PLATFORM_ERR_INVALID_PARAM;
|
||||
+ break;
|
||||
+ }
|
||||
+ fmp_get_image_info(out_vec[0].base, out_vec[0].len);
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
ret = TFM_PLATFORM_ERR_NOT_SUPPORTED;
|
||||
break;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
From 492c887c8dff97ea1b8a11b4e729620d3744ac38 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Mon, 30 May 2022 12:38:23 +0100
|
||||
Subject: [PATCH 6/6] corstone1000: remove two partition configuration
|
||||
|
||||
Previously to run tf-m test, a larger partition was created
|
||||
which allowed all default test binaries to be included.
|
||||
The patch revert the change because any partition might
|
||||
not be enough to hold all test binaries in the future.
|
||||
So its better to run few test at a time instead of creating
|
||||
a larger partition.
|
||||
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Change-Id: I223fe45f2de014dbcadc6ac12c321c524701116a
|
||||
Upstream-Status: Accepted [TF-Mv1.7.0]
|
||||
---
|
||||
platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt | 1 -
|
||||
platform/ext/target/arm/corstone1000/partition/flash_layout.h | 4 ----
|
||||
2 files changed, 5 deletions(-)
|
||||
|
||||
diff --git a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
|
||||
index d39c5ae91d..f1ae1ebd47 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
|
||||
+++ b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
|
||||
@@ -291,7 +291,6 @@ target_compile_definitions(signing_layout_for_bl2
|
||||
PRIVATE
|
||||
MCUBOOT_IMAGE_NUMBER=${BL1_IMAGE_NUMBER}
|
||||
BL1
|
||||
- $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
|
||||
)
|
||||
|
||||
target_include_directories(signing_layout_for_bl2
|
||||
diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
|
||||
index b0319bb319..50a0a11fc8 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
|
||||
+++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
|
||||
@@ -119,11 +119,7 @@
|
||||
*
|
||||
*/
|
||||
#define SE_BL2_PARTITION_SIZE (0x19000) /* 100 KB */
|
||||
-#ifdef TFM_S_REG_TEST
|
||||
-#define TFM_PARTITION_SIZE (0x61C00) /* 391 KB */
|
||||
-#else
|
||||
#define TFM_PARTITION_SIZE (0x5E000) /* 376 KB */
|
||||
-#endif
|
||||
#define FIP_PARTITION_SIZE (0x200000) /* 2 MB */
|
||||
#define KERNEL_PARTITION_SIZE (0xC00000) /* 12 MB */
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
From 5be42e1c05205209fc3988f0df30a02da95c2448 Mon Sep 17 00:00:00 2001
|
||||
From: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
Date: Wed, 2 Nov 2022 00:12:35 +0000
|
||||
Subject: [PATCH] corstone1000: adjust PS asset configuration
|
||||
|
||||
Adjust protected storage asset configuration to be more inline
|
||||
with the one in trusted service side, that would make thinks
|
||||
work when testing and using more than the default variables.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
---
|
||||
platform/ext/target/arm/corstone1000/config.cmake | 1 ++
|
||||
1 file changed, 1 insertions(+)
|
||||
|
||||
diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
index ab0fe17ba886..c2b4b646e6b0 100644
|
||||
--- a/platform/ext/target/arm/corstone1000/config.cmake
|
||||
+++ b/platform/ext/target/arm/corstone1000/config.cmake
|
||||
@@ -56,3 +56,4 @@ set(PS_ENCRYPTION OFF CACHE BOOL "Enable
|
||||
set(PS_ROLLBACK_PROTECTION OFF CACHE BOOL "Enable rollback protection for Protected Storage partition")
|
||||
|
||||
set(PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE 256 CACHE STRING "Size of output buffer in platform service.")
|
||||
+set(PS_NUM_ASSETS "40" CACHE STRING "The maximum number of assets to be stored in the Protected Storage area")
|
||||
--
|
||||
2.38.1
|
||||
|
||||
@@ -11,22 +11,6 @@ TFM_PLATFORM_IS_FVP ?= "FALSE"
|
||||
EXTRA_OECMAKE += "-DPLATFORM_IS_FVP=${TFM_PLATFORM_IS_FVP}"
|
||||
EXTRA_OECMAKE += "-DCC312_LEGACY_DRIVER_API_ENABLED=OFF"
|
||||
|
||||
SRCBRANCH_tfm = "master"
|
||||
SRC_URI = "git://git.trustedfirmware.org/TF-M/trusted-firmware-m.git;protocol=https;branch=${SRCBRANCH_tfm};name=tfm;destsuffix=git/tfm \
|
||||
git://git.trustedfirmware.org/TF-M/tf-m-tests.git;protocol=https;branch=master;name=tfm-tests;destsuffix=git/tf-m-tests \
|
||||
git://github.com/ARMmbed/mbedtls.git;protocol=https;branch=master;name=mbedtls;destsuffix=git/mbedtls \
|
||||
git://github.com/mcu-tools/mcuboot.git;protocol=https;branch=main;name=mcuboot;destsuffix=git/mcuboot \
|
||||
"
|
||||
|
||||
# Bumping the SHA of TFM is required as multiple changes are needed in the TFM to support the ESRT
|
||||
# The most crucial change needed is TFM support for UEFI FMP Image Information
|
||||
SRCREV_tfm = "b065a6b28cc6c692b99e4f7e9387d96f51bf4d07"
|
||||
SRCREV_mbedtls = "869298bffeea13b205343361b7a7daf2b210e33d"
|
||||
SRCREV_mcuboot = "c657cbea75f2bb1faf1fceacf972a0537a8d26dd"
|
||||
SRCREV_tfm-tests = "3e6c52b4b255e4b1343ba6a257a77fa7a976e8fb"
|
||||
PV .= "+git${SRCPV}"
|
||||
SRCREV_FORMAT ?= "tfm"
|
||||
|
||||
# libmetal
|
||||
LICENSE += "& BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM += "file://../libmetal/LICENSE.md;md5=fe0b8a4beea8f0813b606d15a3df3d3c"
|
||||
@@ -41,16 +25,17 @@ SRC_URI += "git://github.com/OpenAMP/open-amp.git;protocol=https;branch=main;nam
|
||||
SRCREV_openamp = "347397decaa43372fc4d00f965640ebde042966d"
|
||||
EXTRA_OECMAKE += "-DLIBOPENAMP_SRC_PATH=${S}/../openamp -DLIBOPENAMP_BIN_PATH=${B}/libopenamp-build"
|
||||
|
||||
# Secure Debug ADAC
|
||||
LICENSE += "& BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM += "file://../psa-adac/license.rst;md5=07f368487da347f3c7bd0fc3085f3afa"
|
||||
SRC_URI += "git://git.trustedfirmware.org/shared/psa-adac.git;protocol=https;branch=master;name=psa-adac;destsuffix=git/psa-adac"
|
||||
SRCREV_psa-adac = "427923cc0152578d536fb2065154d5d0dd874910"
|
||||
# Secure debug is disabled by default
|
||||
EXTRA_OECMAKE += "-DPLATFORM_PSA_ADAC_SECURE_DEBUG=OFF"
|
||||
EXTRA_OECMAKE += "-DPLATFORM_PSA_ADAC_SOURCE_PATH=${S}/../psa-adac -DPLATFORM_PSA_ADAC_BUILD_PATH=${B}/libpsa-adac-build"
|
||||
|
||||
DEPENDS += "trusted-firmware-a"
|
||||
# Apply the necessary changes for supporting FMP image info
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/corstone1000:"
|
||||
SRC_URI:append:corstone1000 = " \
|
||||
file://0001-corstone1000-platform-secure-test-framework.patch \
|
||||
file://0002-corstone1000-make-external-system-support-optional.patch \
|
||||
file://0003-corstone1000-enable-secure-enclave-run-without-host-.patch \
|
||||
file://0004-Platform-Partition-Allow-configuration-of-input-and-.patch \
|
||||
file://0005-corstone1000-support-for-UEFI-FMP-image-Information.patch \
|
||||
file://0006-corstone1000-remove-two-partition-configuration.patch \
|
||||
file://0007-corstone1000-adjust-PS-asset-configuration.patch \
|
||||
"
|
||||
|
||||
do_install() {
|
||||
install -D -p -m 0644 ${B}/install/outputs/tfm_s_signed.bin ${D}/firmware/tfm_s_signed.bin
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
From b443c8efd563dc372c60e7ad9f52aeddf7c13706 Mon Sep 17 00:00:00 2001
|
||||
From: Anton Antonov <Anton.Antonov@arm.com>
|
||||
Date: Mon, 7 Nov 2022 11:37:51 +0000
|
||||
Subject: [PATCH] arm64: dts: fvp: Enable virtio-rng support
|
||||
|
||||
The virtio-rng is available from FVP_Base_RevC-2xAEMvA version 11.17.
|
||||
Enable it since Yocto includes a recipe for a newer FVP version.
|
||||
|
||||
Upstream-Status: Inappropriate [Yocto specific]
|
||||
Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
|
||||
---
|
||||
arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi
|
||||
index ec2d5280a30b..acafdcbf1063 100644
|
||||
--- a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi
|
||||
+++ b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi
|
||||
@@ -26,7 +26,6 @@ virtio@200000 {
|
||||
compatible = "virtio,mmio";
|
||||
reg = <0x200000 0x200>;
|
||||
interrupts = <46>;
|
||||
- status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -36,7 +36,6 @@ SRC_URI:append:corstone500 = " \
|
||||
# Corstone1000 KMACHINE
|
||||
#
|
||||
FILESEXTRAPATHS:prepend:corstone1000 := "${ARMBSPFILESPATHS}"
|
||||
FILESEXTRAPATHS:prepend:corstone1000 := "${ARMFILESPATHS}"
|
||||
COMPATIBLE_MACHINE:corstone1000 = "${MACHINE}"
|
||||
KCONFIG_MODE:corstone1000 = "--alldefconfig"
|
||||
KMACHINE:corstone1000 = "corstone1000"
|
||||
@@ -70,6 +69,7 @@ KERNEL_FEATURES:corstone1000 = ""
|
||||
COMPATIBLE_MACHINE:fvp-base = "fvp-base"
|
||||
KMACHINE:fvp-base = "fvp"
|
||||
FILESEXTRAPATHS:prepend:fvp-base := "${ARMBSPFILESPATHS}"
|
||||
SRC_URI:append:fvp-base = " file://0001-arm64-dts-fvp-Enable-virtio-rng-support.patch"
|
||||
|
||||
#
|
||||
# FVP BASE ARM32 KMACHINE
|
||||
@@ -115,7 +115,6 @@ COMPATIBLE_MACHINE:n1sdp = "n1sdp"
|
||||
KBUILD_DEFCONFIG:n1sdp = "defconfig"
|
||||
KCONFIG_MODE:n1sdp = "--alldefconfig"
|
||||
FILESEXTRAPATHS:prepend:n1sdp := "${ARMBSPFILESPATHS}"
|
||||
FILESEXTRAPATHS:prepend:n1sdp := "${ARMFILESPATHS}"
|
||||
SRC_URI:append:n1sdp = " \
|
||||
file://0001-iommu-arm-smmu-v3-workaround-for-ATC_INV_SIZE_ALL-in.patch \
|
||||
file://0002-n1sdp-pci_quirk-add-acs-override-for-PCI-devices.patch \
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 7c9589c4bb056db5e1696f2a777891ab235b1b63 Mon Sep 17 00:00:00 2001
|
||||
From 13de79cd4f0d25b812e5f4ad4a19bc075496be83 Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 16:36:51 +0000
|
||||
Subject: [PATCH 01/19] Add openamp to SE proxy deployment
|
||||
Subject: [PATCH 01/20] Add openamp to SE proxy deployment
|
||||
|
||||
Openamp is required to communicate between secure partitions(running on
|
||||
Cortex-A) and trusted-firmware-m(running on Cortex-M).
|
||||
@@ -283,5 +283,5 @@ index 000000000000..449f35f4fda4
|
||||
+set_property(TARGET openamp PROPERTY IMPORTED_LOCATION "${OPENAMP_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}open_amp${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
+set_property(TARGET openamp PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${OPENAMP_INSTALL_DIR}/include")
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From e4ccb92f8de94a82edd3548d62c853790ae36bd1 Mon Sep 17 00:00:00 2001
|
||||
From 28aedac78016e5063ebd675a43e6c3655f87b442 Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 18:00:46 +0000
|
||||
Subject: [PATCH 02/19] Implement mhu driver and the OpenAmp conversion layer.
|
||||
Subject: [PATCH 02/20] Implement mhu driver and the OpenAmp conversion layer.
|
||||
|
||||
This commit adds an mhu driver (v2.1 and v2) to the secure
|
||||
partition se_proxy and a conversion layer to communicate with
|
||||
@@ -1087,5 +1087,5 @@ index 000000000000..bb778bb9719b
|
||||
+# include MHU driver
|
||||
+include(${TS_ROOT}/platform/drivers/arm/mhu_driver/component.cmake)
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From e187510a814b48b7b2e477a9913ee35b68522d06 Mon Sep 17 00:00:00 2001
|
||||
From 55394c4c9681af71b1ed7f7ebc7c44b2e1737113 Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 19:00:54 +0000
|
||||
Subject: [PATCH 03/19] Add openamp rpc caller
|
||||
Subject: [PATCH 03/20] Add openamp rpc caller
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
@@ -1192,5 +1192,5 @@ index d39873a0fe81..34fe5ff1b925 100644
|
||||
# Stub service provider backends
|
||||
"components/rpc/dummy"
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 8c1bc5a7ae525d64802e2a06746f698f54cf07ca Mon Sep 17 00:00:00 2001
|
||||
From fb6d2f33e26c7b6ef88d552feca1f835da3f0df6 Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 19:05:18 +0000
|
||||
Subject: [PATCH 04/19] add psa client definitions for ff-m
|
||||
Subject: [PATCH 04/20] add psa client definitions for ff-m
|
||||
|
||||
Add PSA client definitions in common include to add future
|
||||
ff-m support.
|
||||
@@ -294,5 +294,5 @@ index 000000000000..aaa973c6e987
|
||||
+
|
||||
+#endif /* __PSA_MANIFEST_SID_H__ */
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From e9778f726ed582360152f150301995b10d268aae Mon Sep 17 00:00:00 2001
|
||||
From 0311fc8f131fe7a2b0f4dd9988c610fda47394aa Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 19:13:03 +0000
|
||||
Subject: [PATCH 05/19] Add common service component to ipc support
|
||||
Subject: [PATCH 05/20] Add common service component to ipc support
|
||||
|
||||
Add support for inter processor communication for PSA
|
||||
including, the openamp client side structures lib.
|
||||
@@ -291,5 +291,5 @@ index 34fe5ff1b925..dd0c5d00c21e 100644
|
||||
"components/service/discovery/provider"
|
||||
"components/service/discovery/provider/serializer/packed-c"
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 0df82487a7a253c601ca20ca1bd64fbb9ed64230 Mon Sep 17 00:00:00 2001
|
||||
From ed4371d63cb52c121be9678bc225055944286c30 Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 19:19:24 +0000
|
||||
Subject: [PATCH 06/19] Add secure storage ipc backend
|
||||
Subject: [PATCH 06/20] Add secure storage ipc backend
|
||||
|
||||
Add secure storage ipc ff-m implementation which may use
|
||||
openamp as rpc to communicate with other processor.
|
||||
@@ -519,5 +519,5 @@ index dd0c5d00c21e..cd51460406ca 100644
|
||||
"components/service/attestation/provider"
|
||||
"components/service/attestation/provider/serializer/packed-c"
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 9c7f1e6a5eb9ab887e568cfa3c2003583d387bc9 Mon Sep 17 00:00:00 2001
|
||||
From d1377a5ed909e3a1d9caca56aeda262a80322a4b Mon Sep 17 00:00:00 2001
|
||||
From: Vishnu Banavath <vishnu.banavath@arm.com>
|
||||
Date: Fri, 3 Dec 2021 19:25:34 +0000
|
||||
Subject: [PATCH 07/19] Use secure storage ipc and openamp for se_proxy
|
||||
Subject: [PATCH 07/20] Use secure storage ipc and openamp for se_proxy
|
||||
|
||||
Remove mock up backend for secure storage in se proxy
|
||||
deployment and use instead the secure storage ipc backend with
|
||||
@@ -59,5 +59,5 @@ index acfb6e8873fa..57290056d614 100644
|
||||
return secure_storage_provider_init(&ps_provider, backend);
|
||||
}
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From d9169d380366afc63af5d4bf02791aeb41f47897 Mon Sep 17 00:00:00 2001
|
||||
From 1b50ab6b6ff1c6f27ab320e18fb0d4aeb1122f0d Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Sun, 12 Dec 2021 10:43:48 +0000
|
||||
Subject: [PATCH 08/19] Run psa-arch-test
|
||||
Subject: [PATCH 08/20] Run psa-arch-test
|
||||
|
||||
Fixes needed to run psa-arch-test
|
||||
|
||||
@@ -68,5 +68,5 @@ index 4f6ba2a7d822..1fd6b40dc803 100644
|
||||
};
|
||||
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From ee767c1ae857cfcc8b4bb520b2558091e253cf94 Mon Sep 17 00:00:00 2001
|
||||
From a6fba503ffddae004e23b32559212e749e8586f6 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Sun, 12 Dec 2021 10:57:17 +0000
|
||||
Subject: [PATCH 09/19] Use address instead of pointers
|
||||
Subject: [PATCH 09/20] Use address instead of pointers
|
||||
|
||||
Since secure enclave is 32bit and we 64bit there is an issue
|
||||
in the protocol communication design that force us to handle
|
||||
@@ -164,5 +164,5 @@ index a1f369db253e..bda442a61d5c 100644
|
||||
|
||||
(void)client_id;
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+66
-9
@@ -1,7 +1,7 @@
|
||||
From afdeb8e098a1f2822adf2ea83ded8dd9e2d021ba Mon Sep 17 00:00:00 2001
|
||||
From b142f3c162fb1c28982d26b5ac2181ba79197a28 Mon Sep 17 00:00:00 2001
|
||||
From: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
Date: Tue, 7 Dec 2021 11:50:00 +0000
|
||||
Subject: [PATCH 10/19] Add psa ipc attestation to se proxy
|
||||
Subject: [PATCH 10/20] Add psa ipc attestation to se proxy
|
||||
|
||||
Implement attestation client API as psa ipc and include it to
|
||||
se proxy deployment.
|
||||
@@ -16,12 +16,15 @@ Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
.../reporter/psa_ipc/psa_ipc_attest_report.c | 45 ++++++++++
|
||||
components/service/common/include/psa/sid.h | 4 +
|
||||
.../se-proxy/common/service_proxy_factory.c | 6 ++
|
||||
deployments/se-proxy/se-proxy.cmake | 3 +-
|
||||
7 files changed, 169 insertions(+), 1 deletion(-)
|
||||
deployments/se-proxy/se-proxy.cmake | 7 +-
|
||||
...ble-using-hard-coded-attestation-key.patch | 29 -------
|
||||
external/psa_arch_tests/psa_arch_tests.cmake | 4 -
|
||||
9 files changed, 171 insertions(+), 36 deletions(-)
|
||||
create mode 100644 components/service/attestation/client/psa_ipc/component.cmake
|
||||
create mode 100644 components/service/attestation/client/psa_ipc/iat_ipc_client.c
|
||||
create mode 100644 components/service/attestation/reporter/psa_ipc/component.cmake
|
||||
create mode 100644 components/service/attestation/reporter/psa_ipc/psa_ipc_attest_report.c
|
||||
delete mode 100644 external/psa_arch_tests/0001-Disable-using-hard-coded-attestation-key.patch
|
||||
|
||||
diff --git a/components/service/attestation/client/psa_ipc/component.cmake b/components/service/attestation/client/psa_ipc/component.cmake
|
||||
new file mode 100644
|
||||
@@ -243,10 +246,10 @@ index 57290056d614..4b8cceccbe4d 100644
|
||||
attest_provider_register_serializer(&attest_provider,
|
||||
TS_RPC_ENCODING_PACKED_C, packedc_attest_provider_serializer_instance());
|
||||
diff --git a/deployments/se-proxy/se-proxy.cmake b/deployments/se-proxy/se-proxy.cmake
|
||||
index cd51460406ca..38d26821d44d 100644
|
||||
index cd51460406ca..3dbbc36c968d 100644
|
||||
--- a/deployments/se-proxy/se-proxy.cmake
|
||||
+++ b/deployments/se-proxy/se-proxy.cmake
|
||||
@@ -49,12 +49,13 @@ add_components(TARGET "se-proxy"
|
||||
@@ -49,14 +49,15 @@ add_components(TARGET "se-proxy"
|
||||
"components/service/attestation/include"
|
||||
"components/service/attestation/provider"
|
||||
"components/service/attestation/provider/serializer/packed-c"
|
||||
@@ -258,9 +261,63 @@ index cd51460406ca..38d26821d44d 100644
|
||||
"components/rpc/dummy"
|
||||
"components/rpc/common/caller"
|
||||
- "components/service/attestation/reporter/stub"
|
||||
"components/service/attestation/key_mngr/stub"
|
||||
"components/service/crypto/backend/stub"
|
||||
- "components/service/attestation/key_mngr/stub"
|
||||
- "components/service/crypto/backend/stub"
|
||||
+ "components/service/attestation/key_mngr/local"
|
||||
+ "components/service/crypto/backend/psa_ipc"
|
||||
"components/service/crypto/client/psa"
|
||||
"components/service/secure_storage/backend/mock_store"
|
||||
)
|
||||
diff --git a/external/psa_arch_tests/0001-Disable-using-hard-coded-attestation-key.patch b/external/psa_arch_tests/0001-Disable-using-hard-coded-attestation-key.patch
|
||||
deleted file mode 100644
|
||||
index 6664961ab662..000000000000
|
||||
--- a/external/psa_arch_tests/0001-Disable-using-hard-coded-attestation-key.patch
|
||||
+++ /dev/null
|
||||
@@ -1,29 +0,0 @@
|
||||
-From dbd25f94eb62a9855bf342dd97503a49ea50f83e Mon Sep 17 00:00:00 2001
|
||||
-From: Gyorgy Szing <Gyorgy.Szing@arm.com>
|
||||
-Date: Tue, 8 Feb 2022 17:06:37 +0000
|
||||
-Subject: [PATCH 1/1] Disable using hard-coded attestation key
|
||||
-
|
||||
-Modify platform config to disable using a hard-coded attestation
|
||||
-key.
|
||||
-
|
||||
-Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
|
||||
----
|
||||
- api-tests/platform/targets/tgt_dev_apis_linux/nspe/pal_config.h | 2 +-
|
||||
- 1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
-
|
||||
-diff --git a/api-tests/platform/targets/tgt_dev_apis_linux/nspe/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_linux/nspe/pal_config.h
|
||||
-index 6112ba7..1cdf581 100755
|
||||
---- a/api-tests/platform/targets/tgt_dev_apis_linux/nspe/pal_config.h
|
||||
-+++ b/api-tests/platform/targets/tgt_dev_apis_linux/nspe/pal_config.h
|
||||
-@@ -60,7 +60,7 @@ typedef uint32_t cfg_id_t;
|
||||
- #define CRYPTO_VERSION_BETA3
|
||||
-
|
||||
- /* Use hardcoded public key */
|
||||
--#define PLATFORM_OVERRIDE_ATTEST_PK
|
||||
-+//#define PLATFORM_OVERRIDE_ATTEST_PK
|
||||
-
|
||||
- /*
|
||||
- * Include of PSA defined Header files
|
||||
---
|
||||
-2.17.1
|
||||
-
|
||||
diff --git a/external/psa_arch_tests/psa_arch_tests.cmake b/external/psa_arch_tests/psa_arch_tests.cmake
|
||||
index a8b77a1fc05e..1995df3e0b49 100644
|
||||
--- a/external/psa_arch_tests/psa_arch_tests.cmake
|
||||
+++ b/external/psa_arch_tests/psa_arch_tests.cmake
|
||||
@@ -15,10 +15,6 @@ set(GIT_OPTIONS
|
||||
GIT_REPOSITORY ${PSA_ARCH_TESTS_URL}
|
||||
GIT_TAG ${PSA_ARCH_TESTS_REFSPEC}
|
||||
GIT_SHALLOW FALSE
|
||||
- PATCH_COMMAND git stash
|
||||
- COMMAND git tag -f ts-before-am
|
||||
- COMMAND git am ${CMAKE_CURRENT_LIST_DIR}/0001-Disable-using-hard-coded-attestation-key.patch
|
||||
- COMMAND git reset ts-before-am
|
||||
)
|
||||
|
||||
# Ensure list of defines is separated correctly
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 94770f9660154bb1157e19c11fb706889a81ae73 Mon Sep 17 00:00:00 2001
|
||||
From 4240977f7c38950f5edb316bb08ae05cb7b99875 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Thu, 9 Dec 2021 14:11:06 +0000
|
||||
Subject: [PATCH 11/19] Setup its backend as openamp rpc using secure storage
|
||||
Subject: [PATCH 11/20] Setup its backend as openamp rpc using secure storage
|
||||
ipc implementation.
|
||||
|
||||
Upstream-Status: Pending
|
||||
@@ -159,5 +159,5 @@ index 4b8cceccbe4d..1110ac46bf8b 100644
|
||||
+ return secure_storage_provider_init(&its_provider, backend);
|
||||
}
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+4
-18
@@ -1,7 +1,7 @@
|
||||
From 896b5009bb07c4b53541290e1712856063411107 Mon Sep 17 00:00:00 2001
|
||||
From 0b5d96b1a9f927dc141047600edf2249af7022c5 Mon Sep 17 00:00:00 2001
|
||||
From: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
Date: Thu, 9 Dec 2021 14:17:39 +0000
|
||||
Subject: [PATCH 12/19] add psa ipc crypto backend
|
||||
Subject: [PATCH 12/20] add psa ipc crypto backend
|
||||
|
||||
Add psa ipc crypto backend and attach it to se proxy
|
||||
deployment.
|
||||
@@ -36,9 +36,8 @@ Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
.../crypto/include/psa/crypto_client_struct.h | 8 +-
|
||||
.../service/crypto/include/psa/crypto_sizes.h | 2 +-
|
||||
.../se-proxy/common/service_proxy_factory.c | 15 +-
|
||||
deployments/se-proxy/se-proxy.cmake | 2 +-
|
||||
.../providers/arm/corstone1000/platform.cmake | 2 +
|
||||
29 files changed, 2293 insertions(+), 11 deletions(-)
|
||||
28 files changed, 2292 insertions(+), 10 deletions(-)
|
||||
create mode 100644 components/service/crypto/backend/psa_ipc/component.cmake
|
||||
create mode 100644 components/service/crypto/backend/psa_ipc/crypto_ipc_backend.c
|
||||
create mode 100644 components/service/crypto/backend/psa_ipc/crypto_ipc_backend.h
|
||||
@@ -2556,19 +2555,6 @@ index 1110ac46bf8b..7edeef8b434a 100644
|
||||
|
||||
return crypto_iface;
|
||||
}
|
||||
diff --git a/deployments/se-proxy/se-proxy.cmake b/deployments/se-proxy/se-proxy.cmake
|
||||
index 38d26821d44d..f647190d9559 100644
|
||||
--- a/deployments/se-proxy/se-proxy.cmake
|
||||
+++ b/deployments/se-proxy/se-proxy.cmake
|
||||
@@ -57,7 +57,7 @@ add_components(TARGET "se-proxy"
|
||||
"components/rpc/dummy"
|
||||
"components/rpc/common/caller"
|
||||
"components/service/attestation/key_mngr/stub"
|
||||
- "components/service/crypto/backend/stub"
|
||||
+ "components/service/crypto/backend/psa_ipc"
|
||||
"components/service/crypto/client/psa"
|
||||
"components/service/secure_storage/backend/mock_store"
|
||||
)
|
||||
diff --git a/platform/providers/arm/corstone1000/platform.cmake b/platform/providers/arm/corstone1000/platform.cmake
|
||||
index bb778bb9719b..51e5faa3e4d8 100644
|
||||
--- a/platform/providers/arm/corstone1000/platform.cmake
|
||||
@@ -2580,5 +2566,5 @@ index bb778bb9719b..51e5faa3e4d8 100644
|
||||
+
|
||||
+add_compile_definitions(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
From 6b8ebdeb8caa6326ae2a4befaf4410a7a54d4e02 Mon Sep 17 00:00:00 2001
|
||||
From 050be6fdfee656b0556766cc1db30f4c0ea87c79 Mon Sep 17 00:00:00 2001
|
||||
From: Julian Hall <julian.hall@arm.com>
|
||||
Date: Tue, 12 Oct 2021 15:45:41 +0100
|
||||
Subject: [PATCH 13/19] Add stub capsule update service components
|
||||
Subject: [PATCH 13/20] Add stub capsule update service components
|
||||
|
||||
To facilitate development of a capsule update service provider,
|
||||
stub components are added to provide a starting point for an
|
||||
@@ -338,7 +338,7 @@ index 298d407a2371..02aa7fe2550d 100644
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
diff --git a/deployments/se-proxy/se-proxy.cmake b/deployments/se-proxy/se-proxy.cmake
|
||||
index f647190d9559..e35b0d0f610d 100644
|
||||
index 3dbbc36c968d..f0db2d43f443 100644
|
||||
--- a/deployments/se-proxy/se-proxy.cmake
|
||||
+++ b/deployments/se-proxy/se-proxy.cmake
|
||||
@@ -51,6 +51,7 @@ add_components(TARGET "se-proxy"
|
||||
@@ -432,5 +432,5 @@ index 000000000000..285d924186be
|
||||
+
|
||||
+#endif /* CAPSULE_UPDATE_PARAMETERS_H */
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
From a71b26f867f1b4a08285d6da82528de6a54321f2 Mon Sep 17 00:00:00 2001
|
||||
From 229ec29154a4404426ad3083af68ca111a214e13 Mon Sep 17 00:00:00 2001
|
||||
From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>
|
||||
Date: Thu, 16 Dec 2021 21:31:40 +0000
|
||||
Subject: [PATCH 14/19] Configure storage size
|
||||
Subject: [PATCH 14/20] Configure storage size
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/service/smm_variable/backend/uefi_variable_store.c b/components/service/smm_variable/backend/uefi_variable_store.c
|
||||
index 715ccc3cb546..aeb8a22062b7 100644
|
||||
index 611e2e225c6b..6c3b9ed81c25 100644
|
||||
--- a/components/service/smm_variable/backend/uefi_variable_store.c
|
||||
+++ b/components/service/smm_variable/backend/uefi_variable_store.c
|
||||
@@ -88,6 +88,7 @@ static efi_status_t check_name_terminator(
|
||||
@@ -38,5 +38,5 @@ index 715ccc3cb546..aeb8a22062b7 100644
|
||||
|
||||
context->owner_id = owner_id;
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 3cc9c417f12f005244530d8d706a6b7f3be35627 Mon Sep 17 00:00:00 2001
|
||||
From cf83184500703f9b4f2ac04be59cc7d624d8fd66 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Sun, 13 Feb 2022 09:01:10 +0000
|
||||
Subject: [PATCH 15/19] Fix: Crypto interface structure aligned with tf-m
|
||||
Subject: [PATCH 15/20] Fix: Crypto interface structure aligned with tf-m
|
||||
change.
|
||||
|
||||
NO NEED TO RAISE PR: The PR for this FIX is raied by Emek.
|
||||
@@ -27,5 +27,5 @@ index c13c20e84131..ec25eaf868c7 100644
|
||||
* AEAD until the API is
|
||||
* restructured
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From c54afe45c1be25c4819b0f762cf03a24e6343ce5 Mon Sep 17 00:00:00 2001
|
||||
From 551d8722769fa2f2d2ac74adcb289333a9b03598 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Sun, 13 Feb 2022 09:49:51 +0000
|
||||
Subject: [PATCH 16/19] Integrate remaining psa-ipc client APIs.
|
||||
Subject: [PATCH 16/20] Integrate remaining psa-ipc client APIs.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
@@ -490,5 +490,5 @@ index e16f6e5450af..cc9279ee79f2 100644
|
||||
}
|
||||
#endif
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From b1ff44c650ae82f364a2f74059eeb280996dc4f8 Mon Sep 17 00:00:00 2001
|
||||
From 5a5e162e17c9decb04b3b2905a0fb604e8f06e91 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Mon, 14 Feb 2022 17:52:00 +0000
|
||||
Subject: [PATCH 17/19] Fix : update psa_set_key_usage_flags definition to the
|
||||
Subject: [PATCH 17/20] Fix : update psa_set_key_usage_flags definition to the
|
||||
latest from the tf-m
|
||||
|
||||
Upstream-Status: Pending
|
||||
@@ -36,5 +36,5 @@ index 1bc55e375eea..b4a7ed4b39d3 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+5
-4
@@ -1,9 +1,10 @@
|
||||
From a1da63a8c4d55d52321608a72129af49e0a498b2 Mon Sep 17 00:00:00 2001
|
||||
From 1a4d46fdc0b5745b9cfb0789e4b778111bd6dbbb Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Mon, 14 Feb 2022 08:22:25 +0000
|
||||
Subject: [PATCH 18/19] Fixes in AEAD for psa-arch test 54 and 58.
|
||||
Subject: [PATCH 18/20] Fixes in AEAD for psa-arch test 54 and 58.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Upstream-Status: Pending [Not submitted to upstream yet]
|
||||
Signed-off-by: Emekcan Aras <Emekcan.Aras@arm.com>
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
---
|
||||
@@ -116,5 +117,5 @@ index 0be266b52403..435fd3b523ce 100644
|
||||
|
||||
/* Variable length input parameter tags */
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 07ad7e1f7ba06045bf331d5b73a6adf38a098fb7 Mon Sep 17 00:00:00 2001
|
||||
From c519bae79629bfe551d79cfeb4e7d8a059545145 Mon Sep 17 00:00:00 2001
|
||||
From: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
Date: Tue, 11 Oct 2022 10:46:10 +0100
|
||||
Subject: [PATCH 19/19] plat: corstone1000: change default smm values
|
||||
Subject: [PATCH 19/20] plat: corstone1000: change default smm values
|
||||
|
||||
Smm gateway uses SE proxy to route the calls for any NV
|
||||
storage so set the NV_STORE_SN.
|
||||
@@ -33,5 +33,5 @@ index 51e5faa3e4d8..04b629a81906 100644
|
||||
+ SMM_GATEWAY_MAX_UEFI_VARIABLES=100
|
||||
+)
|
||||
--
|
||||
2.38.0
|
||||
2.38.1
|
||||
|
||||
|
||||
+418
@@ -0,0 +1,418 @@
|
||||
From 70cf374fb55f2d62ecbe28049253df33b42b6749 Mon Sep 17 00:00:00 2001
|
||||
From: Satish Kumar <satish.kumar01@arm.com>
|
||||
Date: Fri, 8 Jul 2022 09:48:06 +0100
|
||||
Subject: [PATCH 20/20] FMP Support in Corstone1000.
|
||||
|
||||
The FMP support is used by u-boot to pupolate ESRT information
|
||||
for the kernel.
|
||||
|
||||
The solution is platform specific and needs to be revisted.
|
||||
|
||||
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
|
||||
|
||||
Upstream-Status: Inappropriate [The solution is platform specific and needs to be revisted]
|
||||
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
|
||||
---
|
||||
.../provider/capsule_update_provider.c | 5 +
|
||||
.../capsule_update/provider/component.cmake | 1 +
|
||||
.../provider/corstone1000_fmp_service.c | 307 ++++++++++++++++++
|
||||
.../provider/corstone1000_fmp_service.h | 26 ++
|
||||
4 files changed, 339 insertions(+)
|
||||
create mode 100644 components/service/capsule_update/provider/corstone1000_fmp_service.c
|
||||
create mode 100644 components/service/capsule_update/provider/corstone1000_fmp_service.h
|
||||
|
||||
diff --git a/components/service/capsule_update/provider/capsule_update_provider.c b/components/service/capsule_update/provider/capsule_update_provider.c
|
||||
index e133753f8560..991a2235cd73 100644
|
||||
--- a/components/service/capsule_update/provider/capsule_update_provider.c
|
||||
+++ b/components/service/capsule_update/provider/capsule_update_provider.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <protocols/service/capsule_update/capsule_update_proto.h>
|
||||
#include <protocols/rpc/common/packed-c/status.h>
|
||||
#include "capsule_update_provider.h"
|
||||
+#include "corstone1000_fmp_service.h"
|
||||
|
||||
|
||||
#define CAPSULE_UPDATE_REQUEST (0x1)
|
||||
@@ -47,6 +48,8 @@ struct rpc_interface *capsule_update_provider_init(
|
||||
rpc_interface = service_provider_get_rpc_interface(&context->base_provider);
|
||||
}
|
||||
|
||||
+ provision_fmp_variables_metadata(context->client.caller);
|
||||
+
|
||||
return rpc_interface;
|
||||
}
|
||||
|
||||
@@ -85,6 +88,7 @@ static rpc_status_t event_handler(uint32_t opcode, struct rpc_caller *caller)
|
||||
}
|
||||
psa_call(caller,handle, PSA_IPC_CALL,
|
||||
in_vec,IOVEC_LEN(in_vec), NULL, 0);
|
||||
+ set_fmp_image_info(caller, handle);
|
||||
break;
|
||||
|
||||
case KERNEL_STARTED_EVENT:
|
||||
@@ -99,6 +103,7 @@ static rpc_status_t event_handler(uint32_t opcode, struct rpc_caller *caller)
|
||||
}
|
||||
psa_call(caller,handle, PSA_IPC_CALL,
|
||||
in_vec,IOVEC_LEN(in_vec), NULL, 0);
|
||||
+ set_fmp_image_info(caller, handle);
|
||||
break;
|
||||
default:
|
||||
EMSG("%s unsupported opcode", __func__);
|
||||
diff --git a/components/service/capsule_update/provider/component.cmake b/components/service/capsule_update/provider/component.cmake
|
||||
index 1d412eb234d9..6b0601494938 100644
|
||||
--- a/components/service/capsule_update/provider/component.cmake
|
||||
+++ b/components/service/capsule_update/provider/component.cmake
|
||||
@@ -10,4 +10,5 @@ endif()
|
||||
|
||||
target_sources(${TGT} PRIVATE
|
||||
"${CMAKE_CURRENT_LIST_DIR}/capsule_update_provider.c"
|
||||
+ "${CMAKE_CURRENT_LIST_DIR}/corstone1000_fmp_service.c"
|
||||
)
|
||||
diff --git a/components/service/capsule_update/provider/corstone1000_fmp_service.c b/components/service/capsule_update/provider/corstone1000_fmp_service.c
|
||||
new file mode 100644
|
||||
index 000000000000..6a7a47a7ed99
|
||||
--- /dev/null
|
||||
+++ b/components/service/capsule_update/provider/corstone1000_fmp_service.c
|
||||
@@ -0,0 +1,307 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: BSD-3-Clause
|
||||
+ */
|
||||
+
|
||||
+#include "corstone1000_fmp_service.h"
|
||||
+#include <psa/client.h>
|
||||
+#include <psa/sid.h>
|
||||
+#include <psa/storage_common.h>
|
||||
+#include <trace.h>
|
||||
+
|
||||
+#include <service/smm_variable/backend/variable_index.h>
|
||||
+
|
||||
+#define VARIABLE_INDEX_STORAGE_UID (0x787)
|
||||
+
|
||||
+/**
|
||||
+ * Variable attributes
|
||||
+ */
|
||||
+#define EFI_VARIABLE_NON_VOLATILE (0x00000001)
|
||||
+#define EFI_VARIABLE_BOOTSERVICE_ACCESS (0x00000002)
|
||||
+#define EFI_VARIABLE_RUNTIME_ACCESS (0x00000004)
|
||||
+#define EFI_VARIABLE_HARDWARE_ERROR_RECORD (0x00000008)
|
||||
+#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS (0x00000010)
|
||||
+#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS (0x00000020)
|
||||
+#define EFI_VARIABLE_APPEND_WRITE (0x00000040)
|
||||
+#define EFI_VARIABLE_MASK \
|
||||
+ (EFI_VARIABLE_NON_VOLATILE | \
|
||||
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | \
|
||||
+ EFI_VARIABLE_RUNTIME_ACCESS | \
|
||||
+ EFI_VARIABLE_HARDWARE_ERROR_RECORD | \
|
||||
+ EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS | \
|
||||
+ EFI_VARIABLE_APPEND_WRITE)
|
||||
+
|
||||
+#define FMP_VARIABLES_COUNT 6
|
||||
+
|
||||
+static struct variable_metadata fmp_variables_metadata[FMP_VARIABLES_COUNT] = {
|
||||
+ {
|
||||
+ { 0x86c77a67, 0x0b97, 0x4633, \
|
||||
+ { 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7} },
|
||||
+ /* name size = (variable_name + \0) * sizeof(u16) */
|
||||
+ .name_size = 42, { 'F', 'm', 'p', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'V', 'e', 'r', 's', 'i', 'o', 'n' },
|
||||
+ .attributes = EFI_VARIABLE_NON_VOLATILE, .uid = 0
|
||||
+ },
|
||||
+ {
|
||||
+ { 0x86c77a67, 0x0b97, 0x4633, \
|
||||
+ { 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7} },
|
||||
+ /* name size = (variable_name + \0) * sizeof(u16) */
|
||||
+ .name_size = 34, { 'F', 'm', 'p', 'I', 'm', 'a', 'g', 'e', 'I', 'n', 'f', 'o', 'S', 'i', 'z', 'e' },
|
||||
+ .attributes = EFI_VARIABLE_NON_VOLATILE, .uid = 0
|
||||
+ },
|
||||
+ {
|
||||
+ { 0x86c77a67, 0x0b97, 0x4633, \
|
||||
+ { 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7} },
|
||||
+ /* name size = (variable_name + \0) * sizeof(u16) */
|
||||
+ .name_size = 38, { 'F', 'm', 'p', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'C', 'o', 'u', 'n', 't' },
|
||||
+ .attributes = EFI_VARIABLE_NON_VOLATILE, .uid = 0
|
||||
+ },
|
||||
+ {
|
||||
+ { 0x86c77a67, 0x0b97, 0x4633, \
|
||||
+ { 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7} },
|
||||
+ /* name size = (variable_name + \0) * sizeof(u16) */
|
||||
+ .name_size = 26, { 'F', 'm', 'p', 'I', 'm', 'a', 'g', 'e', 'I', 'n', 'f', 'o' },
|
||||
+ .attributes = EFI_VARIABLE_NON_VOLATILE, .uid = 0
|
||||
+ },
|
||||
+ {
|
||||
+ { 0x86c77a67, 0x0b97, 0x4633, \
|
||||
+ { 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7} },
|
||||
+ /* name size = (variable_name + \0) * sizeof(u16) */
|
||||
+ .name_size = 28, { 'F', 'm', 'p', 'I', 'm', 'a', 'g', 'e', 'N', 'a', 'm', 'e', '1' },
|
||||
+ .attributes = EFI_VARIABLE_NON_VOLATILE, .uid = 0
|
||||
+ },
|
||||
+ {
|
||||
+ { 0x86c77a67, 0x0b97, 0x4633, \
|
||||
+ { 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x06, 0x85, 0xc7} },
|
||||
+ /* name size = (variable_name + \0) * sizeof(u16) */
|
||||
+ .name_size = 32, { 'F', 'm', 'p', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'N', 'a', 'm', 'e', '1' },
|
||||
+ .attributes = EFI_VARIABLE_NON_VOLATILE, .uid = 0
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static psa_status_t protected_storage_set(struct rpc_caller *caller,
|
||||
+ psa_storage_uid_t uid, size_t data_length, const void *p_data)
|
||||
+{
|
||||
+ psa_status_t psa_status;
|
||||
+ psa_storage_create_flags_t create_flags = PSA_STORAGE_FLAG_NONE;
|
||||
+
|
||||
+ struct psa_invec in_vec[] = {
|
||||
+ { .base = psa_ptr_to_u32(&uid), .len = sizeof(uid) },
|
||||
+ { .base = psa_ptr_const_to_u32(p_data), .len = data_length },
|
||||
+ { .base = psa_ptr_to_u32(&create_flags), .len = sizeof(create_flags) },
|
||||
+ };
|
||||
+
|
||||
+ psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE, TFM_PS_ITS_SET,
|
||||
+ in_vec, IOVEC_LEN(in_vec), NULL, 0);
|
||||
+ if (psa_status < 0)
|
||||
+ EMSG("ipc_set: psa_call failed: %d", psa_status);
|
||||
+
|
||||
+ return psa_status;
|
||||
+}
|
||||
+
|
||||
+static psa_status_t protected_storage_get(struct rpc_caller *caller,
|
||||
+ psa_storage_uid_t uid, size_t data_size, void *p_data)
|
||||
+{
|
||||
+ psa_status_t psa_status;
|
||||
+ uint32_t offset = 0;
|
||||
+
|
||||
+ struct psa_invec in_vec[] = {
|
||||
+ { .base = psa_ptr_to_u32(&uid), .len = sizeof(uid) },
|
||||
+ { .base = psa_ptr_to_u32(&offset), .len = sizeof(offset) },
|
||||
+ };
|
||||
+
|
||||
+ struct psa_outvec out_vec[] = {
|
||||
+ { .base = psa_ptr_to_u32(p_data), .len = data_size },
|
||||
+ };
|
||||
+
|
||||
+ psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
|
||||
+ TFM_PS_ITS_GET, in_vec, IOVEC_LEN(in_vec),
|
||||
+ out_vec, IOVEC_LEN(out_vec));
|
||||
+
|
||||
+ if (psa_status == PSA_SUCCESS && out_vec[0].len != data_size) {
|
||||
+ EMSG("Return size does not match with expected size.");
|
||||
+ return PSA_ERROR_BUFFER_TOO_SMALL;
|
||||
+ }
|
||||
+
|
||||
+ return psa_status;
|
||||
+}
|
||||
+
|
||||
+static uint64_t name_hash(EFI_GUID *guid, size_t name_size,
|
||||
+ const int16_t *name)
|
||||
+{
|
||||
+ /* Using djb2 hash by Dan Bernstein */
|
||||
+ uint64_t hash = 5381;
|
||||
+
|
||||
+ /* Calculate hash over GUID */
|
||||
+ hash = ((hash << 5) + hash) + guid->Data1;
|
||||
+ hash = ((hash << 5) + hash) + guid->Data2;
|
||||
+ hash = ((hash << 5) + hash) + guid->Data3;
|
||||
+
|
||||
+ for (int i = 0; i < 8; ++i) {
|
||||
+
|
||||
+ hash = ((hash << 5) + hash) + guid->Data4[i];
|
||||
+ }
|
||||
+
|
||||
+ /* Extend to cover name up to but not including null terminator */
|
||||
+ for (int i = 0; i < name_size / sizeof(int16_t); ++i) {
|
||||
+
|
||||
+ if (!name[i]) break;
|
||||
+ hash = ((hash << 5) + hash) + name[i];
|
||||
+ }
|
||||
+
|
||||
+ return hash;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void initialize_metadata(void)
|
||||
+{
|
||||
+ for (int i = 0; i < FMP_VARIABLES_COUNT; i++) {
|
||||
+
|
||||
+ fmp_variables_metadata[i].uid = name_hash(
|
||||
+ &fmp_variables_metadata[i].guid,
|
||||
+ fmp_variables_metadata[i].name_size,
|
||||
+ fmp_variables_metadata[i].name);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void provision_fmp_variables_metadata(struct rpc_caller *caller)
|
||||
+{
|
||||
+ struct variable_metadata metadata;
|
||||
+ psa_status_t status;
|
||||
+ uint32_t dummy_values = 0xDEAD;
|
||||
+
|
||||
+ EMSG("Provisioning FMP metadata.");
|
||||
+
|
||||
+ initialize_metadata();
|
||||
+
|
||||
+ status = protected_storage_get(caller, VARIABLE_INDEX_STORAGE_UID,
|
||||
+ sizeof(struct variable_metadata), &metadata);
|
||||
+
|
||||
+ if (status == PSA_SUCCESS) {
|
||||
+ EMSG("UEFI variables store is already provisioned.");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Provision FMP variables with dummy values. */
|
||||
+ for (int i = 0; i < FMP_VARIABLES_COUNT; i++) {
|
||||
+ protected_storage_set(caller, fmp_variables_metadata[i].uid,
|
||||
+ sizeof(dummy_values), &dummy_values);
|
||||
+ }
|
||||
+
|
||||
+ status = protected_storage_set(caller, VARIABLE_INDEX_STORAGE_UID,
|
||||
+ sizeof(struct variable_metadata) * FMP_VARIABLES_COUNT,
|
||||
+ fmp_variables_metadata);
|
||||
+
|
||||
+ if (status != EFI_SUCCESS) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ EMSG("FMP metadata is provisioned");
|
||||
+}
|
||||
+
|
||||
+typedef struct {
|
||||
+ void *base;
|
||||
+ int len;
|
||||
+} variable_data_t;
|
||||
+
|
||||
+static variable_data_t fmp_variables_data[FMP_VARIABLES_COUNT];
|
||||
+
|
||||
+#define IMAGE_INFO_BUFFER_SIZE 256
|
||||
+static char image_info_buffer[IMAGE_INFO_BUFFER_SIZE];
|
||||
+#define IOCTL_CORSTONE1000_FMP_IMAGE_INFO 2
|
||||
+
|
||||
+static psa_status_t unpack_image_info(void *buffer, uint32_t size)
|
||||
+{
|
||||
+ typedef struct __attribute__ ((__packed__)) {
|
||||
+ uint32_t variable_count;
|
||||
+ uint32_t variable_size[FMP_VARIABLES_COUNT];
|
||||
+ uint8_t variable[];
|
||||
+ } packed_buffer_t;
|
||||
+
|
||||
+ packed_buffer_t *packed_buffer = buffer;
|
||||
+ int runner = 0;
|
||||
+
|
||||
+ if (packed_buffer->variable_count != FMP_VARIABLES_COUNT) {
|
||||
+ EMSG("Expected fmp varaibles = %u, but received = %u",
|
||||
+ FMP_VARIABLES_COUNT, packed_buffer->variable_count);
|
||||
+ return PSA_ERROR_PROGRAMMER_ERROR;
|
||||
+ }
|
||||
+
|
||||
+ for (int i = 0; i < packed_buffer->variable_count; i++) {
|
||||
+ EMSG("FMP variable %d : size %u", i, packed_buffer->variable_size[i]);
|
||||
+ fmp_variables_data[i].base = &packed_buffer->variable[runner];
|
||||
+ fmp_variables_data[i].len= packed_buffer->variable_size[i];
|
||||
+ runner += packed_buffer->variable_size[i];
|
||||
+ }
|
||||
+
|
||||
+ return PSA_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+static psa_status_t get_image_info(struct rpc_caller *caller,
|
||||
+ psa_handle_t platform_service_handle)
|
||||
+{
|
||||
+ psa_status_t status;
|
||||
+ psa_handle_t handle;
|
||||
+ uint32_t ioctl_id = IOCTL_CORSTONE1000_FMP_IMAGE_INFO;
|
||||
+
|
||||
+ struct psa_invec in_vec[] = {
|
||||
+ { .base = &ioctl_id, .len = sizeof(ioctl_id) },
|
||||
+ };
|
||||
+
|
||||
+ struct psa_outvec out_vec[] = {
|
||||
+ { .base = image_info_buffer, .len = IMAGE_INFO_BUFFER_SIZE },
|
||||
+ };
|
||||
+
|
||||
+ memset(image_info_buffer, 0, IMAGE_INFO_BUFFER_SIZE);
|
||||
+
|
||||
+ psa_call(caller, platform_service_handle, PSA_IPC_CALL,
|
||||
+ in_vec, IOVEC_LEN(in_vec), out_vec, IOVEC_LEN(out_vec));
|
||||
+
|
||||
+ status = unpack_image_info(image_info_buffer, IMAGE_INFO_BUFFER_SIZE);
|
||||
+ if (status != PSA_SUCCESS) {
|
||||
+ return status;
|
||||
+ }
|
||||
+
|
||||
+ return PSA_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+static psa_status_t set_image_info(struct rpc_caller *caller)
|
||||
+{
|
||||
+ psa_status_t status;
|
||||
+
|
||||
+ for (int i = 0; i < FMP_VARIABLES_COUNT; i++) {
|
||||
+
|
||||
+ status = protected_storage_set(caller,
|
||||
+ fmp_variables_metadata[i].uid,
|
||||
+ fmp_variables_data[i].len, fmp_variables_data[i].base);
|
||||
+
|
||||
+ if (status != PSA_SUCCESS) {
|
||||
+
|
||||
+ EMSG("FMP variable %d set unsuccessful", i);
|
||||
+ return status;
|
||||
+ }
|
||||
+
|
||||
+ EMSG("FMP variable %d set success", i);
|
||||
+ }
|
||||
+
|
||||
+ return PSA_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+void set_fmp_image_info(struct rpc_caller *caller,
|
||||
+ psa_handle_t platform_service_handle)
|
||||
+{
|
||||
+ psa_status_t status;
|
||||
+
|
||||
+ status = get_image_info(caller, platform_service_handle);
|
||||
+ if (status != PSA_SUCCESS) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ status = set_image_info(caller);
|
||||
+ if (status != PSA_SUCCESS) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
diff --git a/components/service/capsule_update/provider/corstone1000_fmp_service.h b/components/service/capsule_update/provider/corstone1000_fmp_service.h
|
||||
new file mode 100644
|
||||
index 000000000000..95fba2a04d5c
|
||||
--- /dev/null
|
||||
+++ b/components/service/capsule_update/provider/corstone1000_fmp_service.h
|
||||
@@ -0,0 +1,26 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: BSD-3-Clause
|
||||
+ */
|
||||
+
|
||||
+#ifndef CORSTONE1000_FMP_SERVICE_H
|
||||
+#define CORSTONE1000_FMP_SERVICE_H
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+extern "C" {
|
||||
+#endif
|
||||
+
|
||||
+#include <rpc_caller.h>
|
||||
+#include <psa/client.h>
|
||||
+
|
||||
+void provision_fmp_variables_metadata(struct rpc_caller *caller);
|
||||
+
|
||||
+void set_fmp_image_info(struct rpc_caller *caller,
|
||||
+ psa_handle_t platform_service_handle);
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+} /* extern "C" */
|
||||
+#endif
|
||||
+
|
||||
+#endif /* CORSTONE1000_FMP_SERVICE_H */
|
||||
--
|
||||
2.38.1
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From 6d3cac6f3a6e977e9330c9c06514a372ade170a2 Mon Sep 17 00:00:00 2001
|
||||
From: Emekcan <emekcan.aras@arm.com>
|
||||
Date: Wed, 2 Nov 2022 09:58:27 +0000
|
||||
Subject: [PATCH] smm_gateway: add checks for null attributes
|
||||
|
||||
As par EDK-2 and EDK-2 test code, setVariable() with 0
|
||||
attributes means a delete variable request. Currently,
|
||||
smm gatway doesn't handle this scenario. This commit adds
|
||||
that support.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
|
||||
---
|
||||
components/service/smm_variable/backend/uefi_variable_store.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/service/smm_variable/backend/uefi_variable_store.c b/components/service/smm_variable/backend/uefi_variable_store.c
|
||||
index 6c3b9ed8..a691dc5d 100644
|
||||
--- a/components/service/smm_variable/backend/uefi_variable_store.c
|
||||
+++ b/components/service/smm_variable/backend/uefi_variable_store.c
|
||||
@@ -202,9 +202,9 @@ efi_status_t uefi_variable_store_set_variable(
|
||||
if (info->is_variable_set) {
|
||||
|
||||
/* It's a request to update to an existing variable */
|
||||
- if (!(var->Attributes &
|
||||
+ if (!(var->Attributes) || (!(var->Attributes &
|
||||
(EFI_VARIABLE_APPEND_WRITE | EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS_MASK)) &&
|
||||
- !var->DataSize) {
|
||||
+ !var->DataSize)) {
|
||||
|
||||
/* It's a remove operation - for a remove, the variable
|
||||
* data must be removed from the storage backend before
|
||||
--
|
||||
2.17.1
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
From 2aa665ad2cb13bc79b645db41686449a47593aab Mon Sep 17 00:00:00 2001
|
||||
From: Emekcan <emekcan.aras@arm.com>
|
||||
Date: Thu, 3 Nov 2022 17:43:40 +0000
|
||||
Subject: [PATCH] smm_gateway: GetNextVariableName Fix
|
||||
|
||||
GetNextVariableName() should return EFI_BUFFER_TOO_SMALL
|
||||
when NameSize is smaller than the actual NameSize. It
|
||||
currently returns EFI_BUFFER_OUT_OF_RESOURCES due to setting
|
||||
max_name_len incorrectly. This fixes max_name_len error by
|
||||
replacing it with actual NameSize request by u-boot.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
|
||||
---
|
||||
.../service/smm_variable/provider/smm_variable_provider.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/components/service/smm_variable/provider/smm_variable_provider.c b/components/service/smm_variable/provider/smm_variable_provider.c
|
||||
index a9679b7e..6a4b6fa7 100644
|
||||
--- a/components/service/smm_variable/provider/smm_variable_provider.c
|
||||
+++ b/components/service/smm_variable/provider/smm_variable_provider.c
|
||||
@@ -197,7 +197,7 @@ static rpc_status_t get_next_variable_name_handler(void *context, struct call_re
|
||||
efi_status = uefi_variable_store_get_next_variable_name(
|
||||
&this_instance->variable_store,
|
||||
(SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME*)resp_buf->data,
|
||||
- max_name_len,
|
||||
+ ((SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME*)resp_buf->data)->NameSize,
|
||||
&resp_buf->data_len);
|
||||
}
|
||||
else {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
MACHINE_TS_REQUIRE ?= ""
|
||||
MACHINE_TS_REQUIRE:corstone1000 = "ts-corstone1000.inc"
|
||||
|
||||
require ${MACHINE_TS_REQUIRE}
|
||||
|
||||
|
||||
EXTRA_OECMAKE:append:corstone1000 = "-DMM_COMM_BUFFER_ADDRESS=0x02000000 \
|
||||
-DMM_COMM_BUFFER_PAGE_COUNT=1 \
|
||||
"
|
||||
|
||||
@@ -1,28 +1,26 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/corstone1000:"
|
||||
|
||||
SRC_URI:append = " \
|
||||
file://0001-Add-openamp-to-SE-proxy-deployment.patch \
|
||||
file://0002-Implement-mhu-driver-and-the-OpenAmp-conversion-laye.patch \
|
||||
file://0003-Add-openamp-rpc-caller.patch \
|
||||
file://0004-add-psa-client-definitions-for-ff-m.patch \
|
||||
file://0005-Add-common-service-component-to-ipc-support.patch \
|
||||
file://0006-Add-secure-storage-ipc-backend.patch \
|
||||
file://0007-Use-secure-storage-ipc-and-openamp-for-se_proxy.patch \
|
||||
file://0008-Run-psa-arch-test.patch \
|
||||
file://0009-Use-address-instead-of-pointers.patch \
|
||||
file://0010-Add-psa-ipc-attestation-to-se-proxy.patch \
|
||||
file://0011-Setup-its-backend-as-openamp-rpc-using-secure-storag.patch \
|
||||
file://0012-add-psa-ipc-crypto-backend.patch \
|
||||
file://0013-Add-stub-capsule-update-service-components.patch \
|
||||
file://0014-Configure-storage-size.patch \
|
||||
file://0015-Fix-Crypto-interface-structure-aligned-with-tf-m-cha.patch \
|
||||
file://0016-Integrate-remaining-psa-ipc-client-APIs.patch \
|
||||
file://0017-Fix-update-psa_set_key_usage_flags-definition-to-the.patch \
|
||||
file://0018-Fixes-in-AEAD-for-psa-arch-test-54-and-58.patch \
|
||||
file://0019-plat-corstone1000-change-default-smm-values.patch \
|
||||
"
|
||||
|
||||
|
||||
EXTRA_OECMAKE:append = "-DMM_COMM_BUFFER_ADDRESS="0x00000000 0x02000000" \
|
||||
-DMM_COMM_BUFFER_PAGE_COUNT="1" \
|
||||
SRC_URI:append:corstone1000 = " \
|
||||
file://0001-Add-openamp-to-SE-proxy-deployment.patch;patchdir=../trusted-services \
|
||||
file://0002-Implement-mhu-driver-and-the-OpenAmp-conversion-laye.patch;patchdir=../trusted-services \
|
||||
file://0003-Add-openamp-rpc-caller.patch;patchdir=../trusted-services \
|
||||
file://0004-add-psa-client-definitions-for-ff-m.patch;patchdir=../trusted-services \
|
||||
file://0005-Add-common-service-component-to-ipc-support.patch;patchdir=../trusted-services \
|
||||
file://0006-Add-secure-storage-ipc-backend.patch;patchdir=../trusted-services \
|
||||
file://0007-Use-secure-storage-ipc-and-openamp-for-se_proxy.patch;patchdir=../trusted-services \
|
||||
file://0008-Run-psa-arch-test.patch;patchdir=../trusted-services \
|
||||
file://0009-Use-address-instead-of-pointers.patch;patchdir=../trusted-services \
|
||||
file://0010-Add-psa-ipc-attestation-to-se-proxy.patch;patchdir=../trusted-services \
|
||||
file://0011-Setup-its-backend-as-openamp-rpc-using-secure-storag.patch;patchdir=../trusted-services;patchdir=../trusted-services \
|
||||
file://0012-add-psa-ipc-crypto-backend.patch;patchdir=../trusted-services \
|
||||
file://0013-Add-stub-capsule-update-service-components.patch;patchdir=../trusted-services \
|
||||
file://0014-Configure-storage-size.patch;patchdir=../trusted-services \
|
||||
file://0015-Fix-Crypto-interface-structure-aligned-with-tf-m-cha.patch;patchdir=../trusted-services;patchdir=../trusted-services \
|
||||
file://0016-Integrate-remaining-psa-ipc-client-APIs.patch;patchdir=../trusted-services \
|
||||
file://0017-Fix-update-psa_set_key_usage_flags-definition-to-the.patch;patchdir=../trusted-services;patchdir=../trusted-services \
|
||||
file://0018-Fixes-in-AEAD-for-psa-arch-test-54-and-58.patch;patchdir=../trusted-services \
|
||||
file://0019-plat-corstone1000-change-default-smm-values.patch;patchdir=../trusted-services \
|
||||
file://0020-FMP-Support-in-Corstone1000.patch;patchdir=../trusted-services \
|
||||
file://0021-smm_gateway-add-checks-for-null-attributes.patch;patchdir=../trusted-services \
|
||||
file://0022-GetNextVariableName-Fix.patch;patchdir=../trusted-services \
|
||||
"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/corstone1000/psa-apitest:"
|
||||
|
||||
include ts-corstone1000.inc
|
||||
|
||||
SRC_URI:append:corstone1000 = " \
|
||||
file://0001-corstone1000-port-crypto-config.patch;patchdir=../psatest \
|
||||
"
|
||||
@@ -0,0 +1 @@
|
||||
require ts-psa-api-test.inc
|
||||
@@ -0,0 +1 @@
|
||||
require ts-psa-api-test.inc
|
||||
@@ -0,0 +1 @@
|
||||
require ts-psa-api-test.inc
|
||||
@@ -0,0 +1 @@
|
||||
require ts-psa-api-test.inc
|
||||
@@ -2,3 +2,8 @@ MACHINE_TS_REQUIRE ?= ""
|
||||
MACHINE_TS_REQUIRE:corstone1000 = "ts-corstone1000.inc"
|
||||
|
||||
require ${MACHINE_TS_REQUIRE}
|
||||
|
||||
EXTRA_OECMAKE:append:corstone1000 = " -DMM_COMM_BUFFER_ADDRESS="0x00000000 0x02000000" \
|
||||
-DMM_COMM_BUFFER_PAGE_COUNT="1" \
|
||||
"
|
||||
|
||||
|
||||
@@ -2,3 +2,8 @@ MACHINE_TS_REQUIRE ?= ""
|
||||
MACHINE_TS_REQUIRE:corstone1000 = "ts-corstone1000.inc"
|
||||
|
||||
require ${MACHINE_TS_REQUIRE}
|
||||
|
||||
EXTRA_OECMAKE:append:corstone1000 = " -DMM_COMM_BUFFER_ADDRESS="0x00000000 0x02000000" \
|
||||
-DMM_COMM_BUFFER_PAGE_COUNT="1" \
|
||||
"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
FILESEXTRAPATHS:prepend := "${ARMFILESPATHS}"
|
||||
|
||||
# Enable ARM-FFA transport
|
||||
SRC_URI:append = " \
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
Take a patch from linux-yocto to fix buildpaths in perf's python module.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From b8cd0e429bf75b673c438a8277d4bc74327df992 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Zanussi <tom.zanussi@intel.com>
|
||||
Date: Tue, 3 Jul 2012 13:07:23 -0500
|
||||
Subject: [PATCH] perf: change --root to --prefix for python install
|
||||
|
||||
Otherwise we get the sysroot path appended to the build path, not what
|
||||
we want.
|
||||
|
||||
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
|
||||
---
|
||||
tools/perf/Makefile.perf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
|
||||
index 8f738e11356d..ee945d8e3996 100644
|
||||
--- a/tools/perf/Makefile.perf
|
||||
+++ b/tools/perf/Makefile.perf
|
||||
@@ -1022,7 +1022,7 @@ install-bin: install-tools install-tests install-traceevent-plugins
|
||||
install: install-bin try-install-man
|
||||
|
||||
install-python_ext:
|
||||
- $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
|
||||
+ $(PYTHON_WORD) util/setup.py --quiet install --prefix='$(DESTDIR_SQ)/usr'
|
||||
|
||||
# 'make install-doc' should call 'make -C Documentation install'
|
||||
$(INSTALL_DOC_TARGETS):
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -8,6 +8,7 @@ SRC_URI = " \
|
||||
git://android.googlesource.com/kernel/common.git;protocol=https;branch=android13-5.15-lts \
|
||||
file://0001-lib-build_OID_registry-fix-reproducibility-issues.patch \
|
||||
file://0002-vt-conmakehash-improve-reproducibility.patch \
|
||||
file://0001-perf-change-root-to-prefix-for-python-install.patch \
|
||||
"
|
||||
|
||||
# tag: ASB-2022-05-05_13-5.15-93-ge8b3f31d7a60
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
ARMFILESPATHS := "${THISDIR}/${PN}:"
|
||||
ARMFILESPATHS := "${THISDIR}/files:"
|
||||
|
||||
COMPATIBLE_MACHINE:generic-arm64 = "generic-arm64"
|
||||
FILESEXTRAPATHS:prepend:generic-arm64 = "${ARMFILESPATHS}"
|
||||
|
||||
@@ -9,7 +9,6 @@ RDEPENDS:${PN} += "libts"
|
||||
|
||||
SRC_URI += "git://github.com/ARM-software/psa-arch-tests.git;name=psatest;protocol=https;branch=main;destsuffix=git/psatest \
|
||||
file://0001-Pass-Yocto-build-settings-to-psa-arch-tests-native.patch;patchdir=../psatest \
|
||||
file://0002-corstone1000-port-crypto-config.patch;patchdir=../psatest \
|
||||
"
|
||||
|
||||
SRCREV_psatest = "451aa087a40d02c7d04778235014c5619d126471"
|
||||
@@ -19,11 +18,9 @@ EXTRA_OECMAKE += "\
|
||||
-DPSA_ARCH_TESTS_SOURCE_DIR=${WORKDIR}/git/psatest \
|
||||
"
|
||||
|
||||
# TS ships patches that need to be applied to psa-arch-tests
|
||||
# TS check if there are patches to apply to psa-arch-tests, if so apply them
|
||||
apply_ts_patch() {
|
||||
for p in ${S}/external/psa_arch_tests/*.patch; do
|
||||
patch -p1 -d ${WORKDIR}/git/psatest < ${p}
|
||||
done
|
||||
find ${S}/external/psa_arch_tests -type f -name '*.patch' -exec patch -p1 -d ${WORKDIR}/git/psatest -i {} \;
|
||||
}
|
||||
do_patch[postfuncs] += "apply_ts_patch"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user