Browse Source

Merge changes from topic "rmmd-graceful-exit" into integration

* changes:
  fix(rmmd): remove the assert check for RMM_BASE
  fix(std_svc): continue boot if rmmd_setup fails
  fix(rmmd): ignore SMC FID when RMM image is not present
  fix(rmmd): fail gracefully if RME is not enabled
  fix(rmmd): handle RMMD manifest loading failure
pull/1996/merge
Olivier Deprez 3 months ago
committed by TrustedFirmware Code Review
parent
commit
a4e2a9f16d
  1. 16
      services/std_svc/rmmd/rmmd_main.c
  2. 2
      services/std_svc/std_svc_setup.c

16
services/std_svc/rmmd/rmmd_main.c

@ -202,19 +202,23 @@ int rmmd_setup(void)
int rc;
/* Make sure RME is supported. */
assert(is_feat_rme_present());
if (is_feat_rme_present() == 0U) {
/* Mark the RMM boot as failed for all the CPUs */
rmm_boot_failed = true;
return -ENOTSUP;
}
rmm_ep_info = bl31_plat_get_next_image_ep_info(REALM);
if (rmm_ep_info == NULL) {
if ((rmm_ep_info == NULL) || (rmm_ep_info->pc == 0)) {
WARN("No RMM image provided by BL2 boot loader, Booting "
"device without RMM initialization. SMCs destined for "
"RMM will return SMC_UNK\n");
/* Mark the boot as failed for all the CPUs */
rmm_boot_failed = true;
return -ENOENT;
}
/* Under no circumstances will this parameter be 0 */
assert(rmm_ep_info->pc == RMM_BASE);
/* Initialise an entrypoint to set up the CPU context */
ep_attr = EP_REALM;
if ((read_sctlr_el3() & SCTLR_EE_BIT) != 0U) {
@ -239,6 +243,8 @@ int rmmd_setup(void)
rc = plat_rmmd_load_manifest(manifest);
if (rc != 0) {
ERROR("Error loading RMM Boot Manifest (%i)\n", rc);
/* Mark the boot as failed for all the CPUs */
rmm_boot_failed = true;
return rc;
}
flush_dcache_range((uintptr_t)shared_buf_base, shared_buf_size);

2
services/std_svc/std_svc_setup.c

@ -66,7 +66,7 @@ static int32_t std_svc_setup(void)
#if ENABLE_RME
if (rmmd_setup() != 0) {
ret = 1;
WARN("RMMD setup failed. Continuing boot.\n");
}
#endif

Loading…
Cancel
Save