mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-08 10:08:47 +00:00
perf(psci): pass my_core_pos around instead of calling it repeatedly
On some platforms plat_my_core_pos is a nontrivial function that takes a bit of time and the compiler really doesn't like to inline. In the PSCI library, at least, we have no need to keep repeatedly calling it and we can instead pass it around as an argument. This saves on a lot of redundant calls, speeding the library up a bit. Change-Id: I137f69bea80d7cac90d7a20ffe98e1ba8d77246f Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
This commit is contained in:
parent
9b1e800ef0
commit
3b8021058a
11 changed files with 73 additions and 76 deletions
|
@ -202,6 +202,7 @@ static unsigned int __init populate_power_domain_tree(const unsigned char
|
|||
int __init psci_setup(const psci_lib_args_t *lib_args)
|
||||
{
|
||||
const unsigned char *topology_tree;
|
||||
unsigned int cpu_idx = plat_my_core_pos();
|
||||
|
||||
assert(VERIFY_PSCI_LIB_ARGS_V1(lib_args));
|
||||
|
||||
|
@ -218,7 +219,7 @@ int __init psci_setup(const psci_lib_args_t *lib_args)
|
|||
psci_update_pwrlvl_limits();
|
||||
|
||||
/* Populate the mpidr field of cpu node for this CPU */
|
||||
psci_cpu_pd_nodes[plat_my_core_pos()].mpidr =
|
||||
psci_cpu_pd_nodes[cpu_idx].mpidr =
|
||||
read_mpidr() & MPIDR_AFFINITY_MASK;
|
||||
|
||||
psci_init_req_local_pwr_states();
|
||||
|
@ -227,7 +228,7 @@ int __init psci_setup(const psci_lib_args_t *lib_args)
|
|||
* Set the requested and target state of this CPU and all the higher
|
||||
* power domain levels for this CPU to run.
|
||||
*/
|
||||
psci_set_pwr_domains_to_run(PLAT_MAX_PWR_LVL);
|
||||
psci_set_pwr_domains_to_run(cpu_idx, PLAT_MAX_PWR_LVL);
|
||||
|
||||
(void) plat_setup_psci_ops((uintptr_t)lib_args->mailbox_ep,
|
||||
&psci_plat_pm_ops);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue