Merge changes from topic "upstream_sp_num" into integration

* changes:
  fix(tc): enable certificate on the last secure partition
  feat(sptool): populate secure partition number in makefile
This commit is contained in:
Manish V Badarkhe 2025-01-28 18:01:23 +01:00 committed by TrustedFirmware Code Review
commit c2f05915bd
2 changed files with 33 additions and 1 deletions

View file

@ -120,7 +120,7 @@ struct dpe_metadata tc_dpe_metadata[] = {
.sw_type = MBOOT_SP1_STRING,
.allow_new_context_to_derive = false,
.retain_parent_context = true,
.create_certificate = true, /* With Trusty only one SP is loaded */
.create_certificate = false,
.target_locality = LOCALITY_NONE, /* won't derive don't care */
.pk_oid = NULL },
{
@ -230,10 +230,33 @@ void plat_dpe_get_context_handle(int *ctx_handle)
void bl2_plat_mboot_init(void)
{
size_t i;
const size_t array_size = ARRAY_SIZE(tc_dpe_metadata);
/* Initialize the communication channel between AP and RSE */
(void)rse_comms_init(PLAT_RSE_AP_SND_MHU_BASE,
PLAT_RSE_AP_RCV_MHU_BASE);
#if defined(SPD_spmd)
for (i = 0U; i < array_size; i++) {
if (tc_dpe_metadata[i].id != SP_PKG1_ID) {
continue;
}
if ((i + NUM_SP > array_size) || (i - 1 + NUM_SP < 0)) {
ERROR("Secure partition number is out-of-range\n");
ERROR(" Non-Secure partition number: %ld\n", i);
ERROR(" Secure partition number: %d\n", NUM_SP);
ERROR(" Metadata array size: %ld\n", array_size);
panic();
}
/* Finalize the certificate on the last secure partition */
tc_dpe_metadata[i - 1 + NUM_SP].create_certificate = true;
break;
}
#endif
dpe_init(tc_dpe_metadata);
}

View file

@ -30,6 +30,9 @@ Secure Partition entry
FIP_ARGS += --blob uuid=XXXXX-XXX...,file=sp1.pkg
CRT_ARGS += --sp-pkg1 sp1.pkg
It populates the number of SP in the defined macro 'NUM_SP'
$(eval $(call add_define_val,NUM_SP,{len(sp_layout.keys())}))
A typical SP_LAYOUT_FILE file will look like
{
"SP1" : {
@ -151,6 +154,12 @@ def check_max_sps(sp_layout, _, args :dict):
raise Exception(f"Too many SPs in SP layout file. Max: {MAX_SP}")
return args
@SpSetupActions.sp_action(global_action=True)
def count_sps(sp_layout, _, args :dict):
''' Count number of SP and put in NUM_SP '''
write_to_sp_mk_gen(f"$(eval $(call add_define_val,NUM_SP,{len(sp_layout.keys())}))", args)
return args
@SpSetupActions.sp_action
def gen_fdt_sources(sp_layout, sp, args :dict):
''' Generate FDT_SOURCES values for a given SP. '''