summaryrefslogtreecommitdiffstats
path: root/src/occ_405/amec/amec_sensors_core.c
diff options
context:
space:
mode:
authorWael El-Essawy <welessa@us.ibm.com>2015-11-30 14:58:43 -0600
committerWilliam A. Bryan <wilbryan@us.ibm.com>2015-12-04 14:03:28 -0600
commit0694c6bb509e5d91a7f2c7b1f4924e114500dca1 (patch)
tree74f7869436c57df025578370670035a49e46979c /src/occ_405/amec/amec_sensors_core.c
parent74ad39e79ccd4d423adea15d82a87fa70ec9b56f (diff)
downloadtalos-occ-0694c6bb509e5d91a7f2c7b1f4924e114500dca1.tar.gz
talos-occ-0694c6bb509e5d91a7f2c7b1f4924e114500dca1.zip
Update Proc Core sensors in amec_slv_states for 24 cores
- maintain 8 core data collection states versus 16 rtls ticks core scheduling scheme, utilizing substates to perform 4 ms full 24 cores data collection. - introduce 4 substates, and distribute them over time (1,3,5,7) - spread core data collection over 8 subsates, reading 3 cores data each time. - eliminate gpe_bulk_core_data_t type - reset dts elements using for loop instead of memset - create amec_update_proc_core_group function and G_sensor_update_pattern array to easily modify core data sensors update pattern Change-Id: Idd752c6ea77829ac308e2089f6582db472c8badc RTC: 140094 RTC: 140183 RTC: 140186 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22347 Tested-by: Wael Elessawy <welessa@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405/amec/amec_sensors_core.c')
-rwxr-xr-xsrc/occ_405/amec/amec_sensors_core.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/occ_405/amec/amec_sensors_core.c b/src/occ_405/amec/amec_sensors_core.c
index 37452e6..7527e44 100755
--- a/src/occ_405/amec/amec_sensors_core.c
+++ b/src/occ_405/amec/amec_sensors_core.c
@@ -52,9 +52,9 @@
/******************************************************************************/
/* Forward Declarations */
/******************************************************************************/
-void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core);
-void amec_calc_freq_and_util_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core);
-void amec_calc_ips_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core);
+void amec_calc_dts_sensors(CoreData * i_core_data_ptr, uint8_t i_core);
+void amec_calc_freq_and_util_sensors(CoreData * i_core_data_ptr, uint8_t i_core);
+void amec_calc_ips_sensors(CoreData * i_core_data_ptr, uint8_t i_core);
void amec_calc_spurr(uint8_t i_core);
//*************************************************************************
@@ -72,7 +72,7 @@ void amec_calc_spurr(uint8_t i_core);
// End Function Specification
void amec_update_proc_core_sensors(uint8_t i_core)
{
- gpe_bulk_core_data_t *l_core_data_ptr;
+ CoreData *l_core_data_ptr;
uint16_t l_temp16 = 0;
uint32_t l_temp32 = 0;
@@ -90,6 +90,7 @@ void amec_update_proc_core_sensors(uint8_t i_core)
//-------------------------------------------------------
amec_calc_dts_sensors(l_core_data_ptr, i_core);
+// @TODO - TEMP: frequency and utilization sensors are not enabled yet.
/*
//-------------------------------------------------------
// Util / Freq
@@ -99,7 +100,7 @@ void amec_update_proc_core_sensors(uint8_t i_core)
{
amec_calc_freq_and_util_sensors(l_core_data_ptr,i_core);
}
-
+
//-------------------------------------------------------
// Performance counter - This function should be called
// after amec_calc_freq_and_util_sensors().
@@ -177,7 +178,7 @@ uint8_t G_quadWeight = 1;
// Thread: RealTime Loop
//
// End Function Specification
-void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
+void amec_calc_dts_sensors(CoreData * i_core_data_ptr, uint8_t i_core)
{
#define DTS_PER_CORE 2
#define DTS_INVALID_MASK 0x0C00
@@ -192,7 +193,10 @@ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_cor
uint8_t l_dtsCnt = 0; //Number of valid Core DTSs
//Clear DTS array.
- memset((void *)&(l_dts[0]), 0, sizeof(l_dts));
+ for (k = 0; k < DTS_PER_CORE; k++)
+ {
+ l_dts[k] = 0;
+ }
if (i_core_data_ptr != NULL)
{
@@ -271,8 +275,8 @@ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_cor
//
// End Function Specification
// TEMP - Not supported yet.
-#if 0
-void amec_calc_freq_and_util_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
+#if 0
+void amec_calc_freq_and_util_sensors(CoreData * i_core_data_ptr, uint8_t i_core)
{
BOOLEAN l_core_sleep_winkle = FALSE;
uint32_t l_pm_state_hist_reg = 0;
@@ -609,7 +613,7 @@ void amec_calc_freq_and_util_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uin
}
-void amec_calc_ips_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
+void amec_calc_ips_sensors(CoreData * i_core_data_ptr, uint8_t i_core)
{
#define TWO_PWR_24_MASK 0x00FFFFFF
#define TWO_PWR_20_MASK 0x000FFFFF
OpenPOWER on IntegriCloud