mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-30 23:55:18 +00:00
Tolerate runtime service initialization failure
At present, the firmware panics if a runtime service fails to initialize. An earlier patch had implemented late binding for all runtime service handlers. With that in place, this patch allows the firmware to proceed even when a service fails to initialize. Change-Id: I6cf4de2cecea9719f4cd48272a77cf459b080d4e
This commit is contained in:
parent
7f36660559
commit
090630e4bc
1 changed files with 14 additions and 13 deletions
|
@ -119,24 +119,25 @@ void runtime_svc_init()
|
||||||
goto error;
|
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 */
|
/* Call the initialisation routine for this runtime service */
|
||||||
rc = rt_svc_descs[index].init();
|
rc = rt_svc_descs[index].init();
|
||||||
if (rc) {
|
if (rc) {
|
||||||
ERROR("Error initializing runtime service %s\n",
|
ERROR("Error initializing runtime service %s\n",
|
||||||
rt_svc_descs[index].name);
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue