mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
Merge changes from topic "mb/tc-model-update" into integration
* changes: docs: update FVP TC2 model version and build (11.23/17) fix(tc): increase BL2 maximum size limit refactor(tc): update platform tests feat(rss): add defines for 'type' range and use them in psa_call() feat(rss): adjust parameter packing to match TF-M changes refactor(tc): remap console logs
This commit is contained in:
commit
02088b64f3
11 changed files with 125 additions and 74 deletions
|
@ -52,7 +52,7 @@ Arm FVPs without shifted affinities, and that do not support threaded CPU cores
|
|||
- ``FVP_Morello`` (Version 0.11/33)
|
||||
- ``FVP_RD_V1``
|
||||
- ``FVP_TC1``
|
||||
- ``FVP_TC2`` (Version 11.20/24)
|
||||
- ``FVP_TC2`` (Version 11.23/17)
|
||||
|
||||
The latest version of the AArch32 build of TF-A has been tested on the
|
||||
following Arm FVPs without shifted affinities, and that do not support threaded
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -84,8 +84,8 @@ psa_status_t psa_call(psa_handle_t handle, int32_t type, const psa_invec *in_vec
|
|||
psa_status_t return_val;
|
||||
size_t idx;
|
||||
|
||||
if (type > INT16_MAX || type < INT16_MIN || in_len > PSA_MAX_IOVEC
|
||||
|| out_len > PSA_MAX_IOVEC) {
|
||||
if (type > PSA_CALL_TYPE_MAX || type < PSA_CALL_TYPE_MIN ||
|
||||
in_len > PSA_MAX_IOVEC || out_len > PSA_MAX_IOVEC) {
|
||||
return PSA_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
|
|
35
drivers/arm/rss/rss_comms_protocol_common.h
Normal file
35
drivers/arm/rss/rss_comms_protocol_common.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Packing scheme of the control parameter
|
||||
*
|
||||
* 31 30-28 27 26-24 23-20 19 18-16 15-0
|
||||
* +------------+-----+------+-------+-----+-------+-------+------+
|
||||
* | | | | invec | | | outvec| type |
|
||||
* | Res | Res | Res | number| Res | Res | number| |
|
||||
* +------------+-----+------+-------+-----+-------+-------+------+
|
||||
*
|
||||
* Res: Reserved.
|
||||
*/
|
||||
|
||||
#ifndef RSS_COMMS_PROTOCOL_COMMON
|
||||
#define RSS_COMMS_PROTOCOL_COMMON
|
||||
|
||||
#define TYPE_OFFSET (0U)
|
||||
#define TYPE_MASK (0xFFFFUL << TYPE_OFFSET)
|
||||
#define IN_LEN_OFFSET (24U)
|
||||
#define IN_LEN_MASK (0x7UL << IN_LEN_OFFSET)
|
||||
#define OUT_LEN_OFFSET (16U)
|
||||
#define OUT_LEN_MASK (0x7UL << OUT_LEN_OFFSET)
|
||||
|
||||
#define PARAM_PACK(type, in_len, out_len) \
|
||||
(((((uint32_t)(type)) << TYPE_OFFSET) & TYPE_MASK) | \
|
||||
((((uint32_t)(in_len)) << IN_LEN_OFFSET) & IN_LEN_MASK) | \
|
||||
((((uint32_t)(out_len)) << OUT_LEN_OFFSET) & OUT_LEN_MASK))
|
||||
|
||||
#endif /* RSS_COMMS_PROTOCOL_COMMON */
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
|
@ -9,20 +9,9 @@
|
|||
#include <string.h>
|
||||
|
||||
#include <common/debug.h>
|
||||
#include "rss_comms_protocol_common.h"
|
||||
#include "rss_comms_protocol_embed.h"
|
||||
|
||||
#define TYPE_OFFSET (16U)
|
||||
#define TYPE_MASK (0xFFFFUL << TYPE_OFFSET)
|
||||
#define IN_LEN_OFFSET (8U)
|
||||
#define IN_LEN_MASK (0xFFUL << IN_LEN_OFFSET)
|
||||
#define OUT_LEN_OFFSET (0U)
|
||||
#define OUT_LEN_MASK (0xFFUL << OUT_LEN_OFFSET)
|
||||
|
||||
#define PARAM_PACK(type, in_len, out_len) \
|
||||
(((((uint32_t)type) << TYPE_OFFSET) & TYPE_MASK) | \
|
||||
((((uint32_t)in_len) << IN_LEN_OFFSET) & IN_LEN_MASK) | \
|
||||
((((uint32_t)out_len) << OUT_LEN_OFFSET) & OUT_LEN_MASK))
|
||||
|
||||
psa_status_t rss_protocol_embed_serialize_msg(psa_handle_t handle,
|
||||
int16_t type,
|
||||
const psa_invec *in_vec,
|
||||
|
|
|
@ -1,25 +1,14 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
*/
|
||||
#include <assert.h>
|
||||
|
||||
#include "rss_comms_protocol_common.h"
|
||||
#include "rss_comms_protocol_pointer_access.h"
|
||||
|
||||
#define TYPE_OFFSET (16U)
|
||||
#define TYPE_MASK (0xFFFFUL << TYPE_OFFSET)
|
||||
#define IN_LEN_OFFSET (8U)
|
||||
#define IN_LEN_MASK (0xFFUL << IN_LEN_OFFSET)
|
||||
#define OUT_LEN_OFFSET (0U)
|
||||
#define OUT_LEN_MASK (0xFFUL << OUT_LEN_OFFSET)
|
||||
|
||||
#define PARAM_PACK(type, in_len, out_len) \
|
||||
(((((uint32_t)type) << TYPE_OFFSET) & TYPE_MASK) | \
|
||||
((((uint32_t)in_len) << IN_LEN_OFFSET) & IN_LEN_MASK) | \
|
||||
((((uint32_t)out_len) << OUT_LEN_OFFSET) & OUT_LEN_MASK))
|
||||
|
||||
psa_status_t rss_protocol_pointer_access_serialize_msg(psa_handle_t handle,
|
||||
int16_t type,
|
||||
const psa_invec *in_vec,
|
||||
|
|
10
fdts/tc.dts
10
fdts/tc.dts
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2023, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2020-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -13,7 +13,7 @@
|
|||
#size-cells = <2>;
|
||||
|
||||
aliases {
|
||||
serial0 = &soc_uart0;
|
||||
serial0 = &ap_ns_uart;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -327,10 +327,10 @@
|
|||
clock-output-names = "uartclk";
|
||||
};
|
||||
|
||||
soc_uart0: uart@7ff80000 {
|
||||
ap_ns_uart: uart@2A400000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0 0x7ff80000 0x0 0x1000>;
|
||||
interrupts = <0x0 116 0x4>;
|
||||
reg = <0x0 0x2A400000 0x0 0x1000>;
|
||||
interrupts = <0x0 63 0x4>;
|
||||
clocks = <&soc_uartclk>, <&soc_refclk100mhz>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
status = "okay";
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
/*
|
||||
* Copyright (c) 2018-2021, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2018-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
|
@ -17,41 +16,57 @@
|
|||
#ifndef IOVEC_LEN
|
||||
#define IOVEC_LEN(arr) ((uint32_t)(sizeof(arr)/sizeof(arr[0])))
|
||||
#endif
|
||||
|
||||
/*********************** PSA Client Macros and Types *************************/
|
||||
|
||||
/**
|
||||
* The version of the PSA Framework API that is being used to build the calling
|
||||
* firmware. Only part of features of FF-M v1.1 have been implemented. FF-M v1.1
|
||||
* is compatible with v1.0.
|
||||
*/
|
||||
#define PSA_FRAMEWORK_VERSION (0x0101u)
|
||||
|
||||
/**
|
||||
* Return value from psa_version() if the requested RoT Service is not present
|
||||
* in the system.
|
||||
*/
|
||||
#define PSA_VERSION_NONE (0u)
|
||||
|
||||
/**
|
||||
* The zero-value null handle can be assigned to variables used in clients and
|
||||
* RoT Services, indicating that there is no current connection or message.
|
||||
*/
|
||||
#define PSA_NULL_HANDLE ((psa_handle_t)0)
|
||||
|
||||
/**
|
||||
* Tests whether a handle value returned by psa_connect() is valid.
|
||||
*/
|
||||
#define PSA_HANDLE_IS_VALID(handle) ((psa_handle_t)(handle) > 0)
|
||||
|
||||
/**
|
||||
* Converts the handle value returned from a failed call psa_connect() into
|
||||
* an error code.
|
||||
*/
|
||||
#define PSA_HANDLE_TO_ERROR(handle) ((psa_status_t)(handle))
|
||||
|
||||
/**
|
||||
* Maximum number of input and output vectors for a request to psa_call().
|
||||
*/
|
||||
#define PSA_MAX_IOVEC (4u)
|
||||
|
||||
/**
|
||||
* The minimum and maximum value that can be passed
|
||||
* as the type parameter in a call to psa_call().
|
||||
*/
|
||||
#define PSA_CALL_TYPE_MIN (0)
|
||||
#define PSA_CALL_TYPE_MAX (INT16_MAX)
|
||||
|
||||
/**
|
||||
* An IPC message type that indicates a generic client request.
|
||||
*/
|
||||
#define PSA_IPC_CALL (0)
|
||||
typedef int32_t psa_handle_t;
|
||||
|
||||
/**
|
||||
* A read-only input memory region provided to an RoT Service.
|
||||
*/
|
||||
|
@ -59,6 +74,7 @@ typedef struct psa_invec {
|
|||
const void *base; /*!< the start address of the memory buffer */
|
||||
size_t len; /*!< the size in bytes */
|
||||
} psa_invec;
|
||||
|
||||
/**
|
||||
* A writable output memory region provided to an RoT Service.
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2023-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
|
@ -38,21 +38,28 @@ struct rss_crypto_aead_pack_input {
|
|||
};
|
||||
|
||||
/*
|
||||
* Structure used to pack non-pointer types in a call
|
||||
* Structure used to pack non-pointer types in a call to PSA Crypto APIs
|
||||
*/
|
||||
struct rss_crypto_pack_iovec {
|
||||
psa_key_id_t key_id; /* Key id */
|
||||
psa_algorithm_t alg; /* Algorithm */
|
||||
uint32_t op_handle; /* Frontend context handle associated
|
||||
to a multipart operation */
|
||||
uint32_t capacity; /* Key derivation capacity */
|
||||
uint32_t ad_length; /* Additional Data length for multipart AEAD */
|
||||
uint32_t plaintext_length; /* Plaintext length for multipart AEAD */
|
||||
struct rss_crypto_aead_pack_input aead_in; /* Packs AEAD-related inputs */
|
||||
uint16_t function_id; /* Used to identify the function in the API dispatcher
|
||||
to the service backend. See rss_crypto_func_sid for
|
||||
detail */
|
||||
uint16_t step; /* Key derivation step */
|
||||
psa_key_id_t key_id; /*!< Key id */
|
||||
psa_algorithm_t alg; /*!< Algorithm */
|
||||
uint32_t op_handle; /*!< Frontend context handle associated to a
|
||||
* multipart operation
|
||||
*/
|
||||
uint32_t ad_length; /*!< Additional Data length for multipart AEAD */
|
||||
uint32_t plaintext_length; /*!< Plaintext length for multipart AEAD */
|
||||
|
||||
struct rss_crypto_aead_pack_input aead_in; /*!< Packs AEAD-related inputs */
|
||||
|
||||
uint16_t function_id; /*!< Used to identify the function in the
|
||||
* API dispatcher to the service backend
|
||||
* See rss_crypto_func_sid for detail
|
||||
*/
|
||||
uint16_t step; /*!< Key derivation step */
|
||||
union {
|
||||
size_t capacity; /*!< Key derivation capacity */
|
||||
uint64_t value; /*!< Key derivation integer for update*/
|
||||
};
|
||||
};
|
||||
|
||||
#endif /* RSS_CRYPTO_DEFS_H */
|
||||
|
|
|
@ -137,7 +137,7 @@
|
|||
* little space for growth. Current size is considering that TRUSTED_BOARD_BOOT
|
||||
* and MEASURED_BOOT is enabled.
|
||||
*/
|
||||
# define PLAT_ARM_MAX_BL2_SIZE 0x26000
|
||||
# define PLAT_ARM_MAX_BL2_SIZE 0x29000
|
||||
|
||||
|
||||
/*
|
||||
|
@ -333,4 +333,18 @@
|
|||
#define PLAT_ARM_FIP_OFFSET_IN_GPT 0x6000
|
||||
#endif /* ARM_GPT_SUPPORT */
|
||||
|
||||
/* UART related constants */
|
||||
|
||||
#undef PLAT_ARM_BOOT_UART_BASE
|
||||
#define PLAT_ARM_BOOT_UART_BASE 0x2A410000
|
||||
|
||||
#undef PLAT_ARM_RUN_UART_BASE
|
||||
#define PLAT_ARM_RUN_UART_BASE 0x2A400000
|
||||
|
||||
#undef PLAT_ARM_SP_MIN_RUN_UART_BASE
|
||||
#define PLAT_ARM_SP_MIN_RUN_UART_BASE PLAT_ARM_RUN_UART_BASE
|
||||
|
||||
#undef PLAT_ARM_CRASH_UART_BASE
|
||||
#define PLAT_ARM_CRASH_UART_BASE PLAT_ARM_RUN_UART_BASE
|
||||
|
||||
#endif /* PLATFORM_DEF_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022-2023, Arm Ltd. All rights reserved.
|
||||
* Copyright (c) 2022-2024, Arm Ltd. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -19,11 +19,12 @@
|
|||
#undef TF_MBEDTLS_HEAP_SIZE
|
||||
#define TF_MBEDTLS_HEAP_SIZE PLATFORM_TEST_MIN_MBEDTLS_HEAP_SIZE
|
||||
#endif
|
||||
#endif
|
||||
#endif /* TF_MBEDTLS_HEAP_SIZE */
|
||||
|
||||
#define MBEDTLS_PSA_CRYPTO_C
|
||||
#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
|
||||
#define MBEDTLS_ECP_C
|
||||
#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
|
||||
#define MBEDTLS_ECP_NO_INTERNAL_RNG
|
||||
|
||||
#endif /* PLAT_TC_MBEDTLS_CONFIG_H */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
# Copyright (c) 2022-2024, Arm Limited. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
@ -13,7 +13,6 @@ ifeq (${PLATFORM_TEST},rss-nv-counters)
|
|||
|
||||
# Code under testing.
|
||||
BL31_SOURCES += lib/psa/rss_platform.c \
|
||||
drivers/arm/rss/rss_comms.c \
|
||||
${RSS_COMMS_SOURCES}
|
||||
|
||||
PLAT_INCLUDES += -Iinclude/lib/psa
|
||||
|
@ -27,13 +26,13 @@ else ifeq (${PLATFORM_TEST},rss-rotpk)
|
|||
|
||||
# Code under testing.
|
||||
BL31_SOURCES += lib/psa/rss_platform.c \
|
||||
drivers/arm/rss/rss_comms.c \
|
||||
${RSS_COMMS_SOURCES}
|
||||
|
||||
PLAT_INCLUDES += -Iinclude/lib/psa
|
||||
|
||||
$(eval $(call add_define,PLATFORM_TEST_ROTPK))
|
||||
else ifeq (${PLATFORM_TEST},tfm-testsuite)
|
||||
include drivers/arm/rss/rss_comms.mk
|
||||
|
||||
# The variables need to be set to compile the platform test:
|
||||
ifeq (${TF_M_TESTS_PATH},)
|
||||
|
@ -56,7 +55,7 @@ else ifeq (${PLATFORM_TEST},tfm-testsuite)
|
|||
|
||||
MBEDTLS_CONFIG_FILE = "<plat_tc_mbedtls_config.h>"
|
||||
|
||||
LIBMBEDTLS_SRCS += $(addprefix ${MBEDTLS_DIR}/library/, \
|
||||
LIBMBEDTLS_SRCS += $(addprefix ${MBEDTLS_DIR}/library/, \
|
||||
entropy.c \
|
||||
entropy_poll.c \
|
||||
hmac_drbg.c \
|
||||
|
@ -69,30 +68,31 @@ else ifeq (${PLATFORM_TEST},tfm-testsuite)
|
|||
psa_crypto_slot_management.c \
|
||||
)
|
||||
|
||||
BL31_SOURCES += ${RSS_COMMS_SOURCES} \
|
||||
plat/arm/common/arm_dyn_cfg.c \
|
||||
${TC_BASE}/rss_ap_tests.c \
|
||||
${TC_BASE}/rss_ap_testsuites.c \
|
||||
BL31_SOURCES += ${RSS_COMMS_SOURCES} \
|
||||
plat/arm/common/arm_dyn_cfg.c \
|
||||
${TC_BASE}/rss_ap_tests.c \
|
||||
${TC_BASE}/rss_ap_testsuites.c \
|
||||
${TC_BASE}/rss_ap_test_stubs.c \
|
||||
$(TF_M_TESTS_PATH)/test/framework/test_framework.c \
|
||||
$(TF_M_TESTS_PATH)/tests_reg/test/framework/test_framework.c \
|
||||
$(MEASURED_BOOT_TESTS_PATH)/measured_boot_common.c \
|
||||
$(MEASURED_BOOT_TESTS_PATH)/measured_boot_tests_common.c \
|
||||
$(DELEGATED_ATTEST_TESTS_PATH)/delegated_attest_test.c \
|
||||
drivers/auth/mbedtls/mbedtls_common.c \
|
||||
lib/psa/measured_boot.c \
|
||||
drivers/auth/mbedtls/mbedtls_common.c \
|
||||
lib/psa/measured_boot.c \
|
||||
lib/psa/delegated_attestation.c
|
||||
|
||||
PLAT_INCLUDES += -I$(TF_M_EXTRAS_PATH)/partitions/measured_boot/interface/include \
|
||||
-I$(TF_M_EXTRAS_PATH)/partitions/delegated_attestation/interface/include \
|
||||
-I$(TF_M_TESTS_PATH)/test/framework \
|
||||
-I$(TF_M_TESTS_PATH)/log \
|
||||
-I$(TF_M_TESTS_PATH)/test/secure_fw/suites/extra \
|
||||
-I$(MEASURED_BOOT_TESTS_PATH)/non_secure \
|
||||
-I$(DELEGATED_ATTEST_TESTS_PATH) \
|
||||
-I$(DELEGATED_ATTEST_TESTS_PATH)/non_secure \
|
||||
-Iplat/arm/board/tc \
|
||||
-Iinclude/drivers/auth/mbedtls \
|
||||
-Iinclude/drivers/arm
|
||||
-I$(TF_M_TESTS_PATH)/tests_reg/test/framework \
|
||||
-I$(TF_M_TESTS_PATH)/tests_reg/test/secure_fw/suites/extra \
|
||||
-I$(TF_M_TESTS_PATH)/lib/log \
|
||||
-I$(MEASURED_BOOT_TESTS_PATH)/non_secure \
|
||||
-I$(DELEGATED_ATTEST_TESTS_PATH) \
|
||||
-I$(DELEGATED_ATTEST_TESTS_PATH)/non_secure \
|
||||
-Iplat/arm/board/tc \
|
||||
-Iinclude/drivers/auth/mbedtls \
|
||||
-Iinclude/drivers/arm \
|
||||
-Iinclude/lib/psa
|
||||
|
||||
# Some of the PSA functions are declared in multiple header files, that
|
||||
# triggers this warning.
|
||||
|
|
Loading…
Add table
Reference in a new issue