diff options
author | Deepika Bhavnani <deepika.bhavnani@arm.com> | 2019-12-13 10:23:18 -0600 |
---|---|---|
committer | Deepika Bhavnani <deepika.bhavnani@arm.com> | 2020-01-10 17:11:51 +0000 |
commit | 5b33ad174a03a5ccdcd6321c64d69167361dc21a (patch) | |
tree | 9842f133951cf7cfec97ac1f10f9f0a1568c230e /lib/psci/psci_setup.c | |
parent | 22d12c4148c373932a7a81e5d1c59a767e143ac2 (diff) | |
download | platform_external_arm-trusted-firmware-5b33ad174a03a5ccdcd6321c64d69167361dc21a.tar.gz platform_external_arm-trusted-firmware-5b33ad174a03a5ccdcd6321c64d69167361dc21a.tar.bz2 platform_external_arm-trusted-firmware-5b33ad174a03a5ccdcd6321c64d69167361dc21a.zip |
Unify type of "cpu_idx" across PSCI module.
NOTE for platform integrators:
API `plat_psci_stat_get_residency()` third argument
`last_cpu_idx` is changed from "signed int" to the
"unsigned int" type.
Issue / Trouble points
1. cpu_idx is used as mix of `unsigned int` and `signed int` in code
with typecasting at some places leading to coverity issues.
2. Underlying platform API's return cpu_idx as `unsigned int`
and comparison is performed with platform specific defines
`PLAFORM_xxx` which is not consistent
Misra Rule 10.4:
The value of a complex expression of integer type may only be cast to
a type that is narrower and of the same signedness as the underlying
type of the expression.
Based on above points, cpu_idx is kept as `unsigned int` to match
the API's and low-level functions and platform defines are updated
where ever required
Signed-off-by: Deepika Bhavnani <deepika.bhavnani@arm.com>
Change-Id: Ib26fd16e420c35527204b126b9b91e8babcc3a5c
Diffstat (limited to 'lib/psci/psci_setup.c')
-rw-r--r-- | lib/psci/psci_setup.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/psci/psci_setup.c b/lib/psci/psci_setup.c index becb54709..d1ec99808 100644 --- a/lib/psci/psci_setup.c +++ b/lib/psci/psci_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -91,9 +91,9 @@ static void __init psci_update_pwrlvl_limits(void) for (cpu_idx = 0; cpu_idx < psci_plat_core_count; cpu_idx++) { psci_get_parent_pwr_domain_nodes(cpu_idx, - (unsigned int)PLAT_MAX_PWR_LVL, + PLAT_MAX_PWR_LVL, temp_index); - for (j = (int) PLAT_MAX_PWR_LVL - 1; j >= 0; j--) { + for (j = (int)PLAT_MAX_PWR_LVL - 1; j >= 0; j--) { if (temp_index[j] != nodes_idx[j]) { nodes_idx[j] = temp_index[j]; psci_non_cpu_pd_nodes[nodes_idx[j]].cpu_start_idx @@ -115,8 +115,8 @@ static unsigned int __init populate_power_domain_tree(const unsigned char { unsigned int i, j = 0U, num_nodes_at_lvl = 1U, num_nodes_at_next_lvl; unsigned int node_index = 0U, num_children; - int parent_node_index = 0; - int level = (int) PLAT_MAX_PWR_LVL; + unsigned int parent_node_index = 0U; + int level = (int)PLAT_MAX_PWR_LVL; /* * For each level the inputs are: @@ -145,8 +145,8 @@ static unsigned int __init populate_power_domain_tree(const unsigned char for (j = node_index; j < (node_index + num_children); j++) psci_init_pwr_domain_node((unsigned char)j, - parent_node_index - 1, - (unsigned char)level); + parent_node_index - 1U, + (unsigned char)level); node_index = j; num_nodes_at_next_lvl += num_children; @@ -162,7 +162,7 @@ static unsigned int __init populate_power_domain_tree(const unsigned char } /* Validate the sanity of array exported by the platform */ - assert(j <= (unsigned int)PLATFORM_CORE_COUNT); + assert(j <= PLATFORM_CORE_COUNT); return j; } |