diff --git a/common/runtime_svc.c b/common/runtime_svc.c index 6e8a1bb09..1628e8dbb 100644 --- a/common/runtime_svc.c +++ b/common/runtime_svc.c @@ -119,24 +119,25 @@ void runtime_svc_init() goto error; } - /* - * Fill the indices corresponding to the start and end owning - * entity numbers with the index of the descriptor which will - * handle the SMCs for this owning entity range. - */ - start_idx = get_unique_oen(rt_svc_descs[index].start_oen, - rt_svc_descs[index].call_type); - end_idx = get_unique_oen(rt_svc_descs[index].end_oen, - rt_svc_descs[index].call_type); - for (; start_idx <= end_idx; start_idx++) - rt_svc_descs_indices[start_idx] = index; - /* Call the initialisation routine for this runtime service */ rc = rt_svc_descs[index].init(); if (rc) { ERROR("Error initializing runtime service %s\n", rt_svc_descs[index].name); - goto error; + } else { + /* + * Fill the indices corresponding to the start and end + * owning entity numbers with the index of the + * descriptor which will handle the SMCs for this owning + * entity range. + */ + start_idx = get_unique_oen(rt_svc_descs[index].start_oen, + rt_svc_descs[index].call_type); + end_idx = get_unique_oen(rt_svc_descs[index].end_oen, + rt_svc_descs[index].call_type); + + for (; start_idx <= end_idx; start_idx++) + rt_svc_descs_indices[start_idx] = index; } }