[Skiboot] [PATCH v2 3/3] occ: Filter out entries from Pmin to Pmax in Pstate table

Shilpasri G Bhat shilpa.bhat at linux.vnet.ibm.com
Mon Feb 1 20:13:25 AEDT 2016


Parse the entire pstate table provided by OCC and filter out the
entries that are outside the Pmax and Pmin limits.

Signed-off-by: Shilpasri G Bhat <shilpa.bhat at linux.vnet.ibm.com>
---
No changes from v1.

 hw/occ.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/hw/occ.c b/hw/occ.c
index 353df74..d8909bc 100644
--- a/hw/occ.c
+++ b/hw/occ.c
@@ -149,7 +149,7 @@ static bool add_cpu_pstate_properties(s8 *pstate_nom)
 	u32 *dt_id, *dt_freq;
 	u8 *dt_vdd, *dt_vcs, *dt_core_max = NULL;
 	bool rc;
-	int i;
+	int i, j;
 
 	prlog(PR_DEBUG, "OCC: CPU pstate state device tree init\n");
 
@@ -244,11 +244,16 @@ next:
 			dt_core_max[i] = occ_data->core_max[i];
 	}
 
-	for( i=0; i < nr_pstates; i++) {
-		dt_id[i] = occ_data->pstates[i].id;
-		dt_freq[i] = occ_data->pstates[i].freq_khz/1000;
-		dt_vdd[i] = occ_data->pstates[i].vdd;
-		dt_vcs[i] = occ_data->pstates[i].vcs;
+	for (i = 0, j = 0; i < MAX_PSTATES && j < nr_pstates; i++) {
+		if (occ_data->pstates[i].id > pmax ||
+		    occ_data->pstates[i].id < occ_data->pstate_min)
+			continue;
+
+		dt_id[j] = occ_data->pstates[i].id;
+		dt_freq[j] = occ_data->pstates[i].freq_khz / 1000;
+		dt_vdd[j] = occ_data->pstates[i].vdd;
+		dt_vcs[j] = occ_data->pstates[i].vcs;
+		j++;
 	}
 
 	/* Add the device-tree entries */
-- 
1.9.3



More information about the Skiboot mailing list