mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 13:55:56 +00:00
Merge "refactor(plat/arm): store UUID as a string, rather than ints" into integration
This commit is contained in:
commit
081c5e5afd
5 changed files with 59 additions and 61 deletions
|
@ -66,7 +66,6 @@ struct efi_guid {
|
||||||
union uuid_helper_t {
|
union uuid_helper_t {
|
||||||
struct uuid uuid_struct;
|
struct uuid uuid_struct;
|
||||||
struct efi_guid efi_guid;
|
struct efi_guid efi_guid;
|
||||||
uint32_t word[4];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* XXX namespace pollution? */
|
/* XXX namespace pollution? */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020, ARM Limited. All rights reserved.
|
* Copyright (c) 2020-2021, ARM Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -48,26 +48,26 @@
|
||||||
arm-io_policies {
|
arm-io_policies {
|
||||||
fip-handles {
|
fip-handles {
|
||||||
compatible = "arm,io-fip-handle";
|
compatible = "arm,io-fip-handle";
|
||||||
scp_bl2_uuid = <0x9766fd3d 0x89bee849 0xae5d78a1 0x40608213>;
|
scp_bl2_uuid = "9766fd3d-89be-e849-ae5d-78a140608213";
|
||||||
bl31_uuid = <0x47d4086d 0x4cfe9846 0x9b952950 0xcbbd5a00>;
|
bl31_uuid = "47d4086d-4cfe-9846-9b95-2950cbbd5a00";
|
||||||
bl32_uuid = <0x05d0e189 0x53dc1347 0x8d2b500a 0x4b7a3e38>;
|
bl32_uuid = "05d0e189-53dc-1347-8d2b-500a4b7a3e38";
|
||||||
bl32_extra1_uuid = <0x0b70c28b 0x2a5a7840 0x9f650a56 0x82738288>;
|
bl32_extra1_uuid = "0b70c28b-2a5a-7840-9f65-0a5682738288";
|
||||||
bl32_extra2_uuid = <0x8ea87bb1 0xcfa23f4d 0x85fde7bb 0xa50220d9>;
|
bl32_extra2_uuid = "8ea87bb1-cfa2-3f4d-85fd-e7bba50220d9";
|
||||||
bl33_uuid = <0xd6d0eea7 0xfcead54b 0x97829934 0xf234b6e4>;
|
bl33_uuid = "d6d0eea7-fcea-d54b-9782-9934f234b6e4";
|
||||||
hw_cfg_uuid = <0x08b8f1d9 0xc9cf9349 0xa9626fbc 0x6b7265cc>;
|
hw_cfg_uuid = "08b8f1d9-c9cf-9349-a962-6fbc6b7265cc";
|
||||||
soc_fw_cfg_uuid = <0x9979814b 0x0376fb46 0x8c8e8d26 0x7f7859e0>;
|
soc_fw_cfg_uuid = "9979814b-0376-fb46-8c8e-8d267f7859e0";
|
||||||
tos_fw_cfg_uuid = <0x26257c1a 0xdbc67f47 0x8d96c4c4 0xb0248021>;
|
tos_fw_cfg_uuid = "26257c1a-dbc6-7f47-8d96-c4c4b0248021";
|
||||||
nt_fw_cfg_uuid = <0x28da9815 0x93e87e44 0xac661aaf 0x801550f9>;
|
nt_fw_cfg_uuid = "28da9815-93e8-7e44-ac66-1aaf801550f9";
|
||||||
t_key_cert_uuid = <0x827ee890 0xf860e411 0xa1b477a7 0x21b4f94c>;
|
t_key_cert_uuid = "827ee890-f860-e411-a1b4-77a721b4f94c";
|
||||||
scp_fw_key_uuid = <0x024221a1 0xf860e411 0x8d9bf33c 0x0e15a014>;
|
scp_fw_key_uuid = "024221a1-f860-e411-8d9b-f33c0e15a014";
|
||||||
soc_fw_key_uuid = <0x8ab8becc 0xf960e411 0x9ad0eb48 0x22d8dcf8>;
|
soc_fw_key_uuid = "8ab8becc-f960-e411-9ad0-eb4822d8dcf8";
|
||||||
tos_fw_key_cert_uuid = <0x9477d603 0xfb60e411 0x85ddb710 0x5b8cee04>;
|
tos_fw_key_cert_uuid = "9477d603-fb60-e411-85dd-b7105b8cee04";
|
||||||
nt_fw_key_cert_uuid = <0x8ad5832a 0xfb60e411 0x8aafdf30 0xbbc49859>;
|
nt_fw_key_cert_uuid = "8ad5832a-fb60-e411-8aaf-df30bbc49859";
|
||||||
scp_fw_content_cert_uuid = <0x44be6f04 0x5e63e411 0xb28b73d8 0xeaae9656>;
|
scp_fw_content_cert_uuid = "44be6f04-5e63-e411-b28b-73d8eaae9656";
|
||||||
soc_fw_content_cert_uuid = <0xe2b20c20 0x5e63e411 0x9ce8abcc 0xf92bb666>;
|
soc_fw_content_cert_uuid = "e2b20c20-5e63-e411-9ce8-abccf92bb666";
|
||||||
tos_fw_content_cert_uuid = <0xa49f4411 0x5e63e411 0x87283f05 0x722af33d>;
|
tos_fw_content_cert_uuid = "a49f4411-5e63-e411-8728-3f05722af33d";
|
||||||
nt_fw_content_cert_uuid = <0x8ec4c1f3 0x5d63e411 0xa7a987ee 0x40b23fa7>;
|
nt_fw_content_cert_uuid = "8ec4c1f3-5d63-e411-a7a9-87ee40b23fa7";
|
||||||
sp_content_cert_uuid = <0x776dfd44 0x86974c3b 0x91ebc13e 0x025a2a6f>;
|
sp_content_cert_uuid = "776dfd44-8697-4c3b-91eb-c13e025a2a6f";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
#endif /* ARM_IO_IN_DTB */
|
#endif /* ARM_IO_IN_DTB */
|
||||||
|
@ -76,24 +76,24 @@
|
||||||
compatible = "arm,sp";
|
compatible = "arm,sp";
|
||||||
#ifdef OPTEE_SP_FW_CONFIG
|
#ifdef OPTEE_SP_FW_CONFIG
|
||||||
op-tee {
|
op-tee {
|
||||||
uuid = <0x486178e0 0xe7f811e3 0xbc5e0002 0xa5d5c51b>;
|
uuid = "486178e0-e7f8-11e3-bc5e-0002a5d5c51b";
|
||||||
load-address = <0x6280000>;
|
load-address = <0x6280000>;
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
cactus-primary {
|
cactus-primary {
|
||||||
uuid = <0xb4b5671e 0x4a904fe1 0xb81ffb13 0xdae1dacb>;
|
uuid = "b4b5671e-4a90-4fe1-b81f-fb13dae1dacb";
|
||||||
load-address = <0x7000000>;
|
load-address = <0x7000000>;
|
||||||
owner = "SiP";
|
owner = "SiP";
|
||||||
};
|
};
|
||||||
|
|
||||||
cactus-secondary {
|
cactus-secondary {
|
||||||
uuid = <0xd1582309 0xf02347b9 0x827c4464 0xf5578fc8>;
|
uuid = "d1582309-f023-47b9-827c-4464f5578fc8";
|
||||||
load-address = <0x7100000>;
|
load-address = <0x7100000>;
|
||||||
owner = "Plat";
|
owner = "Plat";
|
||||||
};
|
};
|
||||||
|
|
||||||
cactus-tertiary {
|
cactus-tertiary {
|
||||||
uuid = <0x79b55c73 0x1d8c44b9 0x859361e1 0x770ad8d2>;
|
uuid = "79b55c73-1d8c-44b9-8593-61e1770ad8d2";
|
||||||
load-address = <0x7200000>;
|
load-address = <0x7200000>;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -222,7 +222,8 @@ include lib/libfdt/libfdt.mk
|
||||||
|
|
||||||
DYN_CFG_SOURCES += plat/arm/common/arm_dyn_cfg.c \
|
DYN_CFG_SOURCES += plat/arm/common/arm_dyn_cfg.c \
|
||||||
plat/arm/common/arm_dyn_cfg_helpers.c \
|
plat/arm/common/arm_dyn_cfg_helpers.c \
|
||||||
common/fdt_wrappers.c
|
common/fdt_wrappers.c \
|
||||||
|
common/uuid.c
|
||||||
|
|
||||||
BL1_SOURCES += ${DYN_CFG_SOURCES}
|
BL1_SOURCES += ${DYN_CFG_SOURCES}
|
||||||
BL2_SOURCES += ${DYN_CFG_SOURCES}
|
BL2_SOURCES += ${DYN_CFG_SOURCES}
|
||||||
|
@ -302,6 +303,7 @@ endif
|
||||||
ifeq (${SPD},spmd)
|
ifeq (${SPD},spmd)
|
||||||
BL31_SOURCES += plat/common/plat_spmd_manifest.c \
|
BL31_SOURCES += plat/common/plat_spmd_manifest.c \
|
||||||
common/fdt_wrappers.c \
|
common/fdt_wrappers.c \
|
||||||
|
common/uuid.c \
|
||||||
${LIBFDT_SRCS}
|
${LIBFDT_SRCS}
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019-2020, ARM Limited. All rights reserved.
|
* Copyright (c) 2019-2021, ARM Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -249,7 +249,6 @@ int fconf_populate_arm_io_policies(uintptr_t config)
|
||||||
{
|
{
|
||||||
int err, node;
|
int err, node;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int j;
|
|
||||||
|
|
||||||
union uuid_helper_t uuid_helper;
|
union uuid_helper_t uuid_helper;
|
||||||
io_uuid_spec_t *uuid_ptr;
|
io_uuid_spec_t *uuid_ptr;
|
||||||
|
@ -268,26 +267,26 @@ int fconf_populate_arm_io_policies(uintptr_t config)
|
||||||
/* Locate the uuid cells and read the value for all the load info uuid */
|
/* Locate the uuid cells and read the value for all the load info uuid */
|
||||||
for (i = 0; i < FCONF_ARM_IO_UUID_NUMBER; i++) {
|
for (i = 0; i < FCONF_ARM_IO_UUID_NUMBER; i++) {
|
||||||
uuid_ptr = pool_alloc(&fconf_arm_uuids_pool);
|
uuid_ptr = pool_alloc(&fconf_arm_uuids_pool);
|
||||||
err = fdt_read_uint32_array(dtb, node, load_info[i].name,
|
err = fdtw_read_uuid(dtb, node, load_info[i].name, 16,
|
||||||
4, uuid_helper.word);
|
(uint8_t *)&uuid_helper);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
WARN("FCONF: Read cell failed for %s\n", load_info[i].name);
|
WARN("FCONF: Read cell failed for %s\n", load_info[i].name);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert uuid from big endian to little endian */
|
VERBOSE("FCONF: arm-io_policies.%s cell found with value = "
|
||||||
for (j = 0U; j < 4U; j++) {
|
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
|
||||||
uuid_helper.word[j] =
|
|
||||||
((uuid_helper.word[j] >> 24U) & 0xff) |
|
|
||||||
((uuid_helper.word[j] << 8U) & 0xff0000) |
|
|
||||||
((uuid_helper.word[j] >> 8U) & 0xff00) |
|
|
||||||
((uuid_helper.word[j] << 24U) & 0xff000000);
|
|
||||||
}
|
|
||||||
|
|
||||||
VERBOSE("FCONF: arm-io_policies.%s cell found with value = 0x%x 0x%x 0x%x 0x%x\n",
|
|
||||||
load_info[i].name,
|
load_info[i].name,
|
||||||
uuid_helper.word[0], uuid_helper.word[1],
|
uuid_helper.uuid_struct.time_low[0], uuid_helper.uuid_struct.time_low[1],
|
||||||
uuid_helper.word[2], uuid_helper.word[3]);
|
uuid_helper.uuid_struct.time_low[2], uuid_helper.uuid_struct.time_low[3],
|
||||||
|
uuid_helper.uuid_struct.time_mid[0], uuid_helper.uuid_struct.time_mid[1],
|
||||||
|
uuid_helper.uuid_struct.time_hi_and_version[0],
|
||||||
|
uuid_helper.uuid_struct.time_hi_and_version[1],
|
||||||
|
uuid_helper.uuid_struct.clock_seq_hi_and_reserved,
|
||||||
|
uuid_helper.uuid_struct.clock_seq_low,
|
||||||
|
uuid_helper.uuid_struct.node[0], uuid_helper.uuid_struct.node[1],
|
||||||
|
uuid_helper.uuid_struct.node[2], uuid_helper.uuid_struct.node[3],
|
||||||
|
uuid_helper.uuid_struct.node[4], uuid_helper.uuid_struct.node[5]);
|
||||||
|
|
||||||
uuid_ptr->uuid = uuid_helper.uuid_struct;
|
uuid_ptr->uuid = uuid_helper.uuid_struct;
|
||||||
policies[load_info[i].image_id].image_spec = (uintptr_t)uuid_ptr;
|
policies[load_info[i].image_id].image_spec = (uintptr_t)uuid_ptr;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2020-2021, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -37,7 +37,6 @@ int fconf_populate_arm_sp(uintptr_t config)
|
||||||
const unsigned int plat_start = SP_PKG5_ID;
|
const unsigned int plat_start = SP_PKG5_ID;
|
||||||
unsigned int plat_index = plat_start;
|
unsigned int plat_index = plat_start;
|
||||||
const unsigned int plat_end = plat_start + MAX_SP_IDS / 2;
|
const unsigned int plat_end = plat_start + MAX_SP_IDS / 2;
|
||||||
unsigned int j;
|
|
||||||
|
|
||||||
/* As libfdt use void *, we can't avoid this cast */
|
/* As libfdt use void *, we can't avoid this cast */
|
||||||
const void *dtb = (void *)config;
|
const void *dtb = (void *)config;
|
||||||
|
@ -59,29 +58,28 @@ int fconf_populate_arm_sp(uintptr_t config)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read UUID */
|
/* Read UUID */
|
||||||
err = fdt_read_uint32_array(dtb, sp_node, "uuid", 4,
|
err = fdtw_read_uuid(dtb, sp_node, "uuid", 16,
|
||||||
uuid_helper.word);
|
(uint8_t *)&uuid_helper);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
ERROR("FCONF: cannot read SP uuid\n");
|
ERROR("FCONF: cannot read SP uuid\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert uuid from big endian to little endian */
|
|
||||||
for (j = 0U; j < 4U; j++) {
|
|
||||||
uuid_helper.word[j] =
|
|
||||||
((uuid_helper.word[j] >> 24U) & 0xff) |
|
|
||||||
((uuid_helper.word[j] << 8U) & 0xff0000) |
|
|
||||||
((uuid_helper.word[j] >> 8U) & 0xff00) |
|
|
||||||
((uuid_helper.word[j] << 24U) & 0xff000000);
|
|
||||||
}
|
|
||||||
|
|
||||||
arm_sp.uuids[index] = uuid_helper;
|
arm_sp.uuids[index] = uuid_helper;
|
||||||
VERBOSE("FCONF: %s UUID %x-%x-%x-%x load_addr=%lx\n",
|
VERBOSE("FCONF: %s UUID"
|
||||||
|
" %02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
|
||||||
|
" load_addr=%lx\n",
|
||||||
__func__,
|
__func__,
|
||||||
uuid_helper.word[0],
|
uuid_helper.uuid_struct.time_low[0], uuid_helper.uuid_struct.time_low[1],
|
||||||
uuid_helper.word[1],
|
uuid_helper.uuid_struct.time_low[2], uuid_helper.uuid_struct.time_low[3],
|
||||||
uuid_helper.word[2],
|
uuid_helper.uuid_struct.time_mid[0], uuid_helper.uuid_struct.time_mid[1],
|
||||||
uuid_helper.word[3],
|
uuid_helper.uuid_struct.time_hi_and_version[0],
|
||||||
|
uuid_helper.uuid_struct.time_hi_and_version[1],
|
||||||
|
uuid_helper.uuid_struct.clock_seq_hi_and_reserved,
|
||||||
|
uuid_helper.uuid_struct.clock_seq_low,
|
||||||
|
uuid_helper.uuid_struct.node[0], uuid_helper.uuid_struct.node[1],
|
||||||
|
uuid_helper.uuid_struct.node[2], uuid_helper.uuid_struct.node[3],
|
||||||
|
uuid_helper.uuid_struct.node[4], uuid_helper.uuid_struct.node[5],
|
||||||
arm_sp.load_addr[index]);
|
arm_sp.load_addr[index]);
|
||||||
|
|
||||||
/* Read Load address */
|
/* Read Load address */
|
||||||
|
|
Loading…
Add table
Reference in a new issue