Unify type of "cpu_idx" across PSCI module.
authorDeepika Bhavnani <deepika.bhavnani@arm.com>
Mon, 26 Aug 2019 21:32:24 +0000 (00:32 +0300)
committerDeepika Bhavnani <deepika.bhavnani@arm.com>
Thu, 12 Sep 2019 22:30:03 +0000 (01:30 +0300)
cpu_idx is used as mix of `unsigned int` and `signed int` in code
with typecasting at some places. This change is to unify the
cpu_idx as `unsigned int` as underlying API;s `plat_my_core_pos`
returns `unsigned int`

It was discovered via coverity issue CID 354715

Signed-off-by: Deepika Bhavnani <deepika.bhavnani@arm.com>
Change-Id: I4f0adb0c596ff1177210c5fe803bff853f2e54ce

lib/psci/psci_common.c
lib/psci/psci_private.h

index 022c877510b3db87460d1dc0f2482d9f906b08e4..3bfa0685278a506c231fab379947f2f36c384b89 100644 (file)
@@ -159,9 +159,10 @@ void psci_query_sys_suspend_pwrstate(psci_power_state_t *state_info)
  ******************************************************************************/
 unsigned int psci_is_last_on_cpu(void)
 {
-       int cpu_idx, my_idx = (int) plat_my_core_pos();
+       unsigned int cpu_idx, my_idx = plat_my_core_pos();
 
-       for (cpu_idx = 0; cpu_idx < PLATFORM_CORE_COUNT; cpu_idx++) {
+       for (cpu_idx = 0; cpu_idx < (unsigned int)PLATFORM_CORE_COUNT;
+                       cpu_idx++) {
                if (cpu_idx == my_idx) {
                        assert(psci_get_aff_info_state() == AFF_STATE_ON);
                        continue;
@@ -206,7 +207,7 @@ static void psci_set_req_local_pwr_state(unsigned int pwrlvl,
 {
        assert(pwrlvl > PSCI_CPU_PWR_LVL);
        if ((pwrlvl > PSCI_CPU_PWR_LVL) && (pwrlvl <= PLAT_MAX_PWR_LVL) &&
-                       (cpu_idx < PLATFORM_CORE_COUNT)) {
+                       (cpu_idx < (unsigned int) PLATFORM_CORE_COUNT)) {
                psci_req_local_pwr_states[pwrlvl - 1U][cpu_idx] = req_pwr_state;
        }
 }
@@ -237,12 +238,12 @@ void __init psci_init_req_local_pwr_states(void)
  * assertion is added to prevent us from accessing the CPU power level.
  *****************************************************************************/
 static plat_local_state_t *psci_get_req_local_pwr_states(unsigned int pwrlvl,
-                                                        int cpu_idx)
+                                                        unsigned int cpu_idx)
 {
        assert(pwrlvl > PSCI_CPU_PWR_LVL);
 
        if ((pwrlvl > PSCI_CPU_PWR_LVL) && (pwrlvl <= PLAT_MAX_PWR_LVL) &&
-                       (cpu_idx < PLATFORM_CORE_COUNT)) {
+                       (cpu_idx < (unsigned int) PLATFORM_CORE_COUNT)) {
                return &psci_req_local_pwr_states[pwrlvl - 1U][cpu_idx];
        } else
                return NULL;
@@ -351,7 +352,7 @@ static void psci_set_target_local_pwr_states(unsigned int end_pwrlvl,
 /*******************************************************************************
  * PSCI helper function to get the parent nodes corresponding to a cpu_index.
  ******************************************************************************/
-void psci_get_parent_pwr_domain_nodes(int cpu_idx,
+void psci_get_parent_pwr_domain_nodes(unsigned int cpu_idx,
                                      unsigned int end_lvl,
                                      unsigned int *node_index)
 {
@@ -417,7 +418,7 @@ void psci_do_state_coordination(unsigned int end_pwrlvl,
                                psci_power_state_t *state_info)
 {
        unsigned int lvl, parent_idx, cpu_idx = plat_my_core_pos();
-       int start_idx;
+       unsigned int start_idx;
        unsigned int ncpus;
        plat_local_state_t target_state, *req_states;
 
@@ -763,7 +764,7 @@ int psci_validate_entry_point(entry_point_info_t *ep,
 void psci_warmboot_entrypoint(void)
 {
        unsigned int end_pwrlvl;
-       int cpu_idx = (int) plat_my_core_pos();
+       unsigned int cpu_idx = plat_my_core_pos();
        unsigned int parent_nodes[PLAT_MAX_PWR_LVL] = {0};
        psci_power_state_t state_info = { {PSCI_LOCAL_STATE_RUN} };
 
index bbcc5cfe7ee7cbcd3f3eba5e8da9f55cc8597fcf..b49847c95008a3e56d0558209fd9b10ad17a5eae 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -55,16 +55,16 @@ static inline aff_info_state_t psci_get_aff_info_state(void)
        return get_cpu_data(psci_svc_cpu_data.aff_info_state);
 }
 
-static inline aff_info_state_t psci_get_aff_info_state_by_idx(int idx)
+static inline aff_info_state_t psci_get_aff_info_state_by_idx(unsigned int idx)
 {
-       return get_cpu_data_by_index((unsigned int)idx,
+       return get_cpu_data_by_index(idx,
                                     psci_svc_cpu_data.aff_info_state);
 }
 
-static inline void psci_set_aff_info_state_by_idx(int idx,
+static inline void psci_set_aff_info_state_by_idx(unsigned int idx,
                                                  aff_info_state_t aff_state)
 {
-       set_cpu_data_by_index((unsigned int)idx,
+       set_cpu_data_by_index(idx,
                              psci_svc_cpu_data.aff_info_state, aff_state);
 }
 
@@ -88,9 +88,10 @@ static inline plat_local_state_t psci_get_cpu_local_state(void)
        return get_cpu_data(psci_svc_cpu_data.local_state);
 }
 
-static inline plat_local_state_t psci_get_cpu_local_state_by_idx(int idx)
+static inline plat_local_state_t psci_get_cpu_local_state_by_idx(
+               unsigned int idx)
 {
-       return get_cpu_data_by_index((unsigned int)idx,
+       return get_cpu_data_by_index(idx,
                                     psci_svc_cpu_data.local_state);
 }
 
@@ -113,7 +114,7 @@ typedef struct non_cpu_pwr_domain_node {
         * Index of the first CPU power domain node level 0 which has this node
         * as its parent.
         */
-       int cpu_start_idx;
+       unsigned int cpu_start_idx;
 
        /*
         * Number of CPU power domains which are siblings of the domain indexed
@@ -269,7 +270,7 @@ void psci_get_target_local_pwr_states(unsigned int end_pwrlvl,
                                      psci_power_state_t *target_state);
 int psci_validate_entry_point(entry_point_info_t *ep,
                        uintptr_t entrypoint, u_register_t context_id);
-void psci_get_parent_pwr_domain_nodes(int cpu_idx,
+void psci_get_parent_pwr_domain_nodes(unsigned int cpu_idx,
                                      unsigned int end_lvl,
                                      unsigned int *node_index);
 void psci_do_state_coordination(unsigned int end_pwrlvl,