summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFadi Kassem <fmkassem@us.ibm.com>2015-11-24 12:53:55 -0600
committerWael Elessawy <welessa@us.ibm.com>2015-11-25 11:01:55 -0600
commit74ad39e79ccd4d423adea15d82a87fa70ec9b56f (patch)
tree3b68128274cd4c0cef4d0f7f5550b14e83c99c41 /src
parent7e5cdacb586068de60e1d10cb2e04ff7fb737e96 (diff)
downloadtalos-occ-74ad39e79ccd4d423adea15d82a87fa70ec9b56f.tar.gz
talos-occ-74ad39e79ccd4d423adea15d82a87fa70ec9b56f.zip
Enable Slave DTS calculation and sensor update.
Change-Id: I0feb572e650322326ce9a6c7b2affd9e58cd6b8d RTC:140183 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22303 Reviewed-by: Wael Elessawy <welessa@us.ibm.com> Tested-by: Wael Elessawy <welessa@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/core_data.h2
-rwxr-xr-xsrc/occ_405/amec/amec_analytics.c4
-rw-r--r--src/occ_405/amec/amec_controller.c4
-rwxr-xr-xsrc/occ_405/amec/amec_health.c6
-rw-r--r--src/occ_405/amec/amec_init.c16
-rwxr-xr-xsrc/occ_405/amec/amec_sensors_core.c237
-rwxr-xr-xsrc/occ_405/amec/amec_sensors_core.h1
-rwxr-xr-xsrc/occ_405/amec/amec_slave_smh.c32
-rwxr-xr-xsrc/occ_405/amec/amec_sys.h10
-rwxr-xr-xsrc/occ_405/amec/amec_tasks.c4
-rwxr-xr-xsrc/occ_405/cmdh/cmdh_fsp_cmds.c4
-rwxr-xr-xsrc/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c2
-rwxr-xr-xsrc/occ_405/dcom/dcom.h4
-rw-r--r--src/occ_405/occLinkInputFile1
-rwxr-xr-xsrc/occ_405/proc/proc_data.c3
-rwxr-xr-xsrc/occ_405/sensor/sensor_enum.h28
-rwxr-xr-xsrc/occ_405/sensor/sensor_info.c6
-rwxr-xr-xsrc/occ_405/sensor/sensor_table.c12
-rwxr-xr-xsrc/occ_405/ssx_app_cfg.h1
-rwxr-xr-xsrc/occ_405/thread/chom.c4
-rwxr-xr-xsrc/occ_405/thread/thrm_thread.c2
-rw-r--r--src/occ_405/topfiles.mk1
22 files changed, 161 insertions, 223 deletions
diff --git a/src/include/core_data.h b/src/include/core_data.h
index 1b271fa..b7070cd 100644
--- a/src/include/core_data.h
+++ b/src/include/core_data.h
@@ -150,6 +150,8 @@ typedef struct
CoreDataPcbSlave pcb_slave; //16
} CoreData;
+typedef CoreData gpe_bulk_core_data_t;
+
/**
* Get core data
* @param[in] The system core number [0-23]
diff --git a/src/occ_405/amec/amec_analytics.c b/src/occ_405/amec/amec_analytics.c
index 8b65f6d..376ef46 100755
--- a/src/occ_405/amec/amec_analytics.c
+++ b/src/occ_405/amec/amec_analytics.c
@@ -249,7 +249,7 @@ void amec_analytics_main(void)
g_amec->g44_avg[(i*MSA)+14] = g_amec->g44_avg[(i*MSA)+14] +
tempaccum/100;
g_amec->g44_avg[(i*MSA)+15] = g_amec->g44_avg[(i*MSA)+15] +
- (UINT32)g_amec->proc[i].temp2ms.sample; // hottest processor core temperature (average??)
+ (UINT32)g_amec->proc[i].temp4ms.sample; // hottest processor core temperature (average??)
// major changes below to accommodate Group 45
@@ -360,7 +360,7 @@ void amec_analytics_main(void)
g_amec->g44_avg[(i * MSA) + 86 + m] = g_amec->g44_avg[(i * MSA) + 86 + m] +
(UINT32)(g_amec->proc[i].core[j].ips2ms.sample / 50); // accumulate average MIPS for this core
g_amec->g44_avg[(i * MSA) + 98 + m] = g_amec->g44_avg[(i * MSA) + 98 + m] +
- (UINT32)g_amec->proc[i].core[j].temp2ms.sample; // accumulate average temperature for this core
+ (UINT32)g_amec->proc[i].core[j].temp4ms.sample; // accumulate average temperature for this core
g_amec->g44_avg[(i * MSA) + 110 + m] = g_amec->g44_avg[(i * MSA) + 110 + m] +
(UINT32)((g_amec->proc[i].core[j].cmbw2ms.sample) / 156); // accumulate average memory bandwidth for this core //@mw713 /156, was /78 (overflow issues)
temp16 = ((g_amec->proc[i].core[j].mcpifd2ms.sample) / 100); // accumulate average busy latency counter for this core
diff --git a/src/occ_405/amec/amec_controller.c b/src/occ_405/amec/amec_controller.c
index 0b8b7e1..d0ecfc3 100644
--- a/src/occ_405/amec/amec_controller.c
+++ b/src/occ_405/amec/amec_controller.c
@@ -87,9 +87,9 @@ void amec_controller_proc_thermal()
/*------------------------------------------------------------------------*/
/* Code */
/*------------------------------------------------------------------------*/
- // Get TEMP2MSP0PEAK sensor, which is hottest core temperature in OCC
+ // Get TEMP4MSP0PEAK sensor, which is hottest core temperature in OCC
// processor
- l_sensor = getSensorByGsid(TEMP2MSP0PEAK);
+ l_sensor = getSensorByGsid(TEMP4MSP0PEAK);
// Use the highest temperature of all processors in 0.1 degrees C
l_thermal_winner = l_sensor->sample * 10;
diff --git a/src/occ_405/amec/amec_health.c b/src/occ_405/amec/amec_health.c
index 4efad15..85c7a7d 100755
--- a/src/occ_405/amec/amec_health.c
+++ b/src/occ_405/amec/amec_health.c
@@ -760,9 +760,9 @@ void amec_health_check_proc_temp()
/*------------------------------------------------------------------------*/
do
{
- // Get TEMP2MSP0PEAK sensor, which is hottest core temperature
+ // Get TEMP4MSP0PEAK sensor, which is hottest core temperature
// in OCC processor
- l_sensor = getSensorByGsid(TEMP2MSP0PEAK);
+ l_sensor = getSensorByGsid(TEMP4MSP0PEAK);
l_ot_error = g_amec->thermalproc.ot_error;
// Check to see if we exceeded our error temperature
@@ -874,7 +874,7 @@ void amec_health_check_proc_timeout()
}
// Check if this core's temperature sensor has been updated
- l_sensor = AMECSENSOR_ARRAY_PTR(TEMP2MSP0C0,i);
+ l_sensor = AMECSENSOR_ARRAY_PTR(TEMP4MSP0C0,i);
if (l_sensor->update_tag == G_core_temp_update_tag[i])
{
// If the update tag is not changing, then this core's
diff --git a/src/occ_405/amec/amec_init.c b/src/occ_405/amec/amec_init.c
index bd2d0d2..18da9f5 100644
--- a/src/occ_405/amec/amec_init.c
+++ b/src/occ_405/amec/amec_init.c
@@ -179,12 +179,12 @@ void amec_init_vector_sensors(void)
#define VECTOR_ADD_ELEM_FAILURE 2
//-----------------------------------------------------
- // TEMP2MSP0 Vector Sensor
+ // TEMP4MSP0 Vector Sensor
//-----------------------------------------------------
- amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP2MSP0),
- &g_amec_sys.proc[0].temp2ms_vector,
+ amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP4MSP0),
+ &g_amec_sys.proc[0].temp4ms_vector,
VECTOR_OP_AVG,
- TEMP2MSP0C0);
+ TEMP4MSP0C0);
//-----------------------------------------------------
// FREQA2MSP0 Vector Sensor
@@ -203,12 +203,12 @@ void amec_init_vector_sensors(void)
IPS2MSP0C0);
//-----------------------------------------------------
- // TEMP2MSP0PEAK Vector Sensor
+ // TEMP4MSP0PEAK Vector Sensor
//-----------------------------------------------------
- amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP2MSP0PEAK),
- &g_amec_sys.proc[0].temp2mspeak_vector,
+ amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP4MSP0PEAK),
+ &g_amec_sys.proc[0].temp4mspeak_vector,
VECTOR_OP_MAX,
- TEMP2MSP0C0);
+ TEMP4MSP0C0);
//-----------------------------------------------------
// UTIL2MSP0 Vector Sensor
diff --git a/src/occ_405/amec/amec_sensors_core.c b/src/occ_405/amec/amec_sensors_core.c
index bdea518..37452e6 100755
--- a/src/occ_405/amec/amec_sensors_core.c
+++ b/src/occ_405/amec/amec_sensors_core.c
@@ -26,7 +26,7 @@
/******************************************************************************/
/* Includes */
/******************************************************************************/
-#include <occ_common.h>
+//#include <occ_common.h>
#include <ssx.h>
#include <errl.h> // Error logging
#include "sensor.h"
@@ -43,6 +43,7 @@
#include "amec_service_codes.h"
#include <amec_sensors_core.h>
#include "amec_perfcount.h"
+#include "proc_shared.h"
/******************************************************************************/
/* Globals */
@@ -52,7 +53,6 @@
/* Forward Declarations */
/******************************************************************************/
void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core);
-//void amec_calc_cpm_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core); //CPM - Commented out as requested by Malcolm
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_spurr(uint8_t i_core);
@@ -63,48 +63,6 @@ void amec_calc_spurr(uint8_t i_core);
// Function Specification
//
-// Name: amec_update_fast_core_data_sensors
-//
-// Description: Updates sensors that have data grabbed by the fast core data
-// task.
-//
-// Thread: RealTime Loop
-//
-// End Function Specification
-void amec_update_fast_core_data_sensors(void)
-{
- // ------------------------------------------------------
- // Update Fast Core Data Sensors
- // ------------------------------------------------------
- // SensorNameCx = PCBS Local Pstate Freq Target (per core)
- // TODclock = TOD Clock?
-
- // Need to comment this out because l_tod is always zero, which messes
- // up proper sensor updates. Proper updating is done below in the core level
- // sensor updates.
-
- //gpe_fast_core_data_t * l_core = proc_get_fast_core_data_ptr();
- // uint32_t l_tod = l_core->tod;
-
- //if( l_core != NULL)
- //{
- // GPEtickdur0 = duration of last tick's PORE-GPE0 duration
- // sensor_update( AMECSENSOR_PTR(TODclock0), CONVERT_UINT32_UINT8_UPPER_HIGH(l_tod) );
- // sensor_update( AMECSENSOR_PTR(TODclock1), CONVERT_UINT32_UINT16_MIDDLE(l_tod) );
- // sensor_update( AMECSENSOR_PTR(TODclock2), ((uint16_t) (CONVERT_UINT32_UINT8_LOWER_LOW(l_tod))) << 8);
- //}
-
- // TODO: Don't know what to update from the PCBS LPstate Target Freq Status Reg
- //for(int i=0; i++; i<MAX_NUM_HW_CORES)
- //{
- // sensor_update(&sensor,
- // G_read_fast_core_data_ptr->core_data[i].pcbs_lpstate_freq_target_sr);
- //}
-}
-
-
-// Function Specification
-//
// Name: amec_update_proc_core_sensors
//
// Description: Update all the sensors for a given proc
@@ -114,10 +72,9 @@ void amec_update_fast_core_data_sensors(void)
// End Function Specification
void amec_update_proc_core_sensors(uint8_t i_core)
{
- gpe_bulk_core_data_t * l_core_data_ptr;
- int i;
- uint16_t l_temp16 = 0;
- uint32_t l_temp32 = 0;
+ gpe_bulk_core_data_t *l_core_data_ptr;
+ uint16_t l_temp16 = 0;
+ uint32_t l_temp32 = 0;
// Make sure the core is present, and that it has updated data.
if(CORE_PRESENT(i_core) && CORE_UPDATED(i_core))
@@ -133,11 +90,7 @@ void amec_update_proc_core_sensors(uint8_t i_core)
//-------------------------------------------------------
amec_calc_dts_sensors(l_core_data_ptr, i_core);
- //-------------------------------------------------------
- //CPM - Commented out as requested by Malcolm
- // ------------------------------------------------------
- // amec_calc_cpm_sensors(l_core_data_ptr, i_core);
-
+/*
//-------------------------------------------------------
// Util / Freq
//-------------------------------------------------------
@@ -146,12 +99,12 @@ 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().
//-------------------------------------------------------
- amec_calc_dps_util_counters(i_core);
+ //amec_calc_dps_util_counters(i_core);
//-------------------------------------------------------
// IPS
@@ -165,7 +118,7 @@ void amec_update_proc_core_sensors(uint8_t i_core)
//-------------------------------------------------------
// SPURR
//-------------------------------------------------------
- amec_calc_spurr(i_core);
+ //amec_calc_spurr(i_core);
// ------------------------------------------------------
// Update PREVIOUS values for next time
@@ -188,7 +141,7 @@ void amec_update_proc_core_sensors(uint8_t i_core)
{
g_amec->proc[0].core[i_core].thread[i].prev_PC_RUN_Th_CYCLES = l_core_data_ptr->per_thread[i].run_cycles;
}
-
+*/
// Final step is to update TOD sensors
// Extract 32 bits with 16usec resolution
l_temp32 = (uint32_t)(G_dcom_slv_inbox_doorbell_rx.tod>>13);
@@ -205,6 +158,13 @@ void amec_update_proc_core_sensors(uint8_t i_core)
}
+// Core Weight - Weight factor for core DTS used to calculate a core temp
+// TODO - fmk - to be changed once we have TMGT config data with weights.
+// Suggest adding core weight to g_amec struct
+// TEMP - Using the same weight for all cores.
+uint8_t G_coreWeight = 2;
+uint8_t G_quadWeight = 1;
+
// Function Specification
//
// Name: amec_calc_dts_sensors
@@ -212,141 +172,93 @@ void amec_update_proc_core_sensors(uint8_t i_core)
// Description: Compute core temperature. This function is called every
// 2ms/core.
//
+// PreCondition: The core is present.
+//
// Thread: RealTime Loop
//
// End Function Specification
void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
{
-#define DTS_PER_CORE 4
+#define DTS_PER_CORE 2
#define DTS_INVALID_MASK 0x0C00
- uint32_t k, l_core_avg, l_core_hot, l_sensor_count;
- uint32_t l_oha_status_reg = 0;
- uint32_t l_pm_state_hist_reg = 0;
- uint16_t l_dts[DTS_PER_CORE];
- BOOLEAN l_update_sensor = FALSE;
-
- // Build up array of DTS values
- // DTS sensors are in the format of uint64_t dts0 : 12;
- // uint64_t thermal_trip0 : 2;
- // uint64_t spare0 : 1;
- // uint64_t valid0 : 1;
- //
- // so we will need to convert them before they are used in loop below.
- l_dts[0] = i_core_data_ptr->dts_cpm.sensors_v0.fields.dts0;
- l_dts[1] = i_core_data_ptr->dts_cpm.sensors_v0.fields.dts1;
- l_dts[2] = i_core_data_ptr->dts_cpm.sensors_v0.fields.dts2;
- l_dts[3] = i_core_data_ptr->dts_cpm.sensors_v1.fields.dts4;
- // Read the low-order bytes of the OHA Status register
- l_oha_status_reg = i_core_data_ptr->oha.oha_ro_status_reg.words.low_order;
+ uint32_t l_coreTemp = 0;
+ uint8_t k = 0;
+ uint16_t l_dts[DTS_PER_CORE];
+ uint16_t l_quadDts = 0;
+ BOOLEAN l_update_sensor = FALSE;
+ uint16_t l_core_hot = 0;
+ uint8_t l_dtsCnt = 0; //Number of valid Core DTSs
- // Read the high-order bytes of PM State History register for this core
- l_pm_state_hist_reg = i_core_data_ptr->pcb_slave.pm_history.words.high_order;
+ //Clear DTS array.
+ memset((void *)&(l_dts[0]), 0, sizeof(l_dts));
- // Check if we were able to collect core data
- if(l_oha_status_reg & CORE_DATA_CORE_SENSORS_COLLECTED)
+ if (i_core_data_ptr != NULL)
{
- // Check if all DTS readings in the core are valid. The field sensors_v0
- // contains core-related data
- if(i_core_data_ptr->dts_cpm.sensors_v0.fields.valid0 ||
- i_core_data_ptr->dts_cpm.sensors_v0.fields.valid1 ||
- i_core_data_ptr->dts_cpm.sensors_v0.fields.valid2)
- {
- l_update_sensor = TRUE;
- }
- }
- // Check if we were able to collect L3 data
- if(l_oha_status_reg & CORE_DATA_L3_SENSORS_COLLECTED)
- {
- // Check if DTS reading in the L3 is valid. The field sensors_v1 contains
- // L3-related data
- if(i_core_data_ptr->dts_cpm.sensors_v1.fields.valid4)
+ //the Core DTS temperatures are considered in the calculation only if:
+ // - They are valid.
+ // - Non-zero
+ // - Non-negative
+ for (k = 0; k < DTS_PER_CORE; k++)
+ {
+ //Check validity
+ if (i_core_data_ptr->dts.core[k].fields.valid)
{
- l_update_sensor = TRUE;
- }
- }
- // Check if this core has been in fast winkle OR deep winkle
- if(((l_pm_state_hist_reg & OCC_PM_STATE_MASK) == OCC_PAST_FAST_WINKLE) ||
- ((l_pm_state_hist_reg & OCC_PM_STATE_MASK) == OCC_PAST_DEEP_WINKLE))
- {
- l_update_sensor = TRUE;
- }
+ l_dts[k] = i_core_data_ptr->dts.core[k].fields.reading;
+ l_dtsCnt++;
- // Update the thermal sensor associated with this core
- if(l_update_sensor)
- {
- //calculate average temperature from all DTS's for this core
- for(l_sensor_count = DTS_PER_CORE, l_core_hot = 0,
- l_core_avg = 0, k = 0;
- k < DTS_PER_CORE; k++)
- {
//Hardware bug workaround: Temperatures reaching 0 degrees C
//can show up as negative numbers. To fix this, we discount
//values that have the 2 MSB's set.
- if((l_dts[k] & DTS_INVALID_MASK) == DTS_INVALID_MASK)
+ if(((l_dts[k] & DTS_INVALID_MASK) == DTS_INVALID_MASK) ||
+ (l_dts[k] == 0))
{
- l_dts[k] = 0;
+ l_dts[k] = 0;
+ l_dtsCnt--;
}
- l_core_avg += l_dts[k];
- if(l_dts[k] > l_core_hot)
- {
- l_core_hot = l_dts[k];
- }
- // Assume 0 degrees to mean bad sensor and don't let it bring the
- // average reading down.
- else if(l_dts[k] == 0)
+ if (l_dts[k] > l_core_hot)
{
- l_sensor_count--;
+ l_core_hot = l_dts[k];
}
}
+ } //for loop
- if(l_sensor_count == DTS_PER_CORE)
- {
- //For the common case, compiler converts this to a fast multiplication
- //operation when one of the operands is a constant.
- l_core_avg /= DTS_PER_CORE;
- }
- else if(l_sensor_count) //prevent div by 0 if all sensors are zero
+ //The core DTSs are considered only if we have at least 1 valid core DTS and
+ //a non-zero G_coreWeight.
+ if (l_dtsCnt && G_coreWeight)
+ {
+ l_update_sensor = TRUE;
+ }
+
+ //The Quad DTS value is considered only if we have a valid Quad DTS and
+ //a non-zero quad weight.
+ if (i_core_data_ptr->dts.cache.fields.valid && G_quadWeight)
+ {
+ l_quadDts = i_core_data_ptr->dts.cache.fields.reading;
+ l_update_sensor = TRUE;
+ }
+
+ // Update the thermal sensor associated with this core
+ if(l_update_sensor)
+ {
+ //Formula:
+ // (Cwt(CoreDTS1 + CoreDTS2) + (Qwt*QuadDTS))
+ // ------------------------------------------
+ // (2*Cwt + Qwt)
+ if ((G_coreWeight && l_dtsCnt) || G_quadWeight)
{
- //otherwise, use the slower division routine when both operands are
- //unknown at compile time.
- l_core_avg /= l_sensor_count;
+ l_coreTemp = ((G_coreWeight *(l_dts[0] + l_dts[1])) + (G_quadWeight * l_quadDts))
+ / ((l_dtsCnt * G_coreWeight) + G_quadWeight);
}
// Update sensors & Interim Data
- sensor_update( AMECSENSOR_ARRAY_PTR(TEMP2MSP0C0,i_core), l_core_avg);
+ sensor_update( AMECSENSOR_ARRAY_PTR(TEMP4MSP0C0,i_core), l_coreTemp);
g_amec->proc[0].core[i_core].dts_hottest = l_core_hot;
- }
-}
-
-
-//CPM - Commented out as requested by Malcolm
-/* void amec_calc_cpm_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
-{
-#define CPM_PER_CORE 4
-
- uint32_t k, l_cpm_min = 0xffffffff;
- uint16_t l_cpm[CPM_PER_CORE];
-
- l_cpm[0] = i_core_data_ptr->dts_cpm.sensors_v8.fields.encoded_cpm0;
- l_cpm[1] = i_core_data_ptr->dts_cpm.sensors_v8.fields.encoded_cpm1;
- l_cpm[2] = i_core_data_ptr->dts_cpm.sensors_v8.fields.encoded_cpm2;
- l_cpm[3] = i_core_data_ptr->dts_cpm.sensors_v9.fields.encoded_cpm4;
-
- //calculate min CPM from all CPM's for this core
- for(k = 0; k < CPM_PER_CORE; k++)
- {
- if(l_cpm[k] < l_cpm_min)
- {
- l_cpm_min = l_cpm[k];
}
}
-
- sensor_update( AMECSENSOR_ARRAY_PTR(CPM2MSP0C0,i_core), l_cpm_min);
}
-*/
// Function Specification
//
@@ -358,6 +270,8 @@ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_cor
// Thread: RealTime Loop
//
// 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)
{
BOOLEAN l_core_sleep_winkle = FALSE;
@@ -876,6 +790,7 @@ void amec_calc_spurr(uint8_t i_core)
sensor_update( AMECSENSOR_ARRAY_PTR(SPURR2MSP0C0,i_core), (uint16_t) temp32);
}
}
+#endif
/*----------------------------------------------------------------------------*/
/* End */
diff --git a/src/occ_405/amec/amec_sensors_core.h b/src/occ_405/amec/amec_sensors_core.h
index e018925..90d6aef 100755
--- a/src/occ_405/amec/amec_sensors_core.h
+++ b/src/occ_405/amec/amec_sensors_core.h
@@ -53,7 +53,6 @@
/*----------------------------------------------------------------------------*/
/* Function Declarations */
/*----------------------------------------------------------------------------*/
-void amec_update_fast_core_data_sensors(void);
void amec_update_proc_core_sensors(uint8_t i_core);
diff --git a/src/occ_405/amec/amec_slave_smh.c b/src/occ_405/amec/amec_slave_smh.c
index 93e96eb..141e1c3 100755
--- a/src/occ_405/amec/amec_slave_smh.c
+++ b/src/occ_405/amec/amec_slave_smh.c
@@ -116,6 +116,8 @@ const smh_tbl_t amec_slv_state_7_substate_table[AMEC_SMH_STATES_PER_LVL] =
{amec_slv_substate_7_7, NULL},
};
+#endif // #if 0 @TODO - TEMP: Not Ready yet in Phase 1.
+
// --------------------------------------------------------
// Main AMEC Slave State Table
// --------------------------------------------------------
@@ -131,11 +133,11 @@ const smh_tbl_t amec_slv_state_table[AMEC_SMH_STATES_PER_LVL] =
{amec_slv_state_3, NULL},
{amec_slv_state_4, NULL},
{amec_slv_state_5, NULL},
- {amec_slv_state_6, amec_slv_state_6_substate_table},
- {amec_slv_state_7, amec_slv_state_7_substate_table},
+ {amec_slv_state_6, NULL}, //Substate not yet supported: amec_slv_state_6_substate_table},
+ {amec_slv_state_7, NULL}, //Substate not yet supported: amec_slv_state_7_substate_table},
};
-#endif // #if 0 @TODO - TEMP: Not Ready yet in Phase 1.
+
// This sets up the function pointer that will be called to update the
// fw timings when the AMEC Slave State Machine finishes.
@@ -424,7 +426,7 @@ void amec_slv_common_tasks_post(void)
amec_tb_record(AMEC_TB_250US);
}
}
-
+#endif // #if 0 - @TODO - TEMP: Not Ready yet in Phase 1.
// Function Specification
//
@@ -443,6 +445,7 @@ void amec_slv_state_0(void)
amec_update_proc_core_sensors(CORE_0);
amec_update_proc_core_sensors(CORE_8);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
@@ -462,8 +465,8 @@ void amec_slv_state_0(void)
//-------------------------------------------------------
// Update vector sensors
//-------------------------------------------------------
- sensor_vector_update(AMECSENSOR_PTR(TEMP2MSP0), 1);
- sensor_vector_update(AMECSENSOR_PTR(TEMP2MSP0PEAK),1);
+ sensor_vector_update(AMECSENSOR_PTR(TEMP4MSP0), 1);
+ sensor_vector_update(AMECSENSOR_PTR(TEMP4MSP0PEAK),1);
sensor_vector_update(AMECSENSOR_PTR(FREQA2MSP0), 1);
sensor_vector_update(AMECSENSOR_PTR(IPS2MSP0), 1);
sensor_vector_update(AMECSENSOR_PTR(UTIL2MSP0), 1);
@@ -471,6 +474,7 @@ void amec_slv_state_0(void)
// Call the trace function for 2ms tracing if it has been configured via
// Amester. If not configured, this call will return immediately.
amec_tb_record(AMEC_TB_2MS);
+*/
}
@@ -493,6 +497,7 @@ void amec_slv_state_1(void)
amec_update_proc_core_sensors(CORE_1);
amec_update_proc_core_sensors(CORE_9);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
@@ -502,6 +507,7 @@ void amec_slv_state_1(void)
// Update Proc Level Centaur/DIMM Temperature sensors
//-------------------------------------------------------
amec_update_centaur_temp_sensors();
+*/
}
@@ -522,10 +528,12 @@ void amec_slv_state_2(void)
amec_update_proc_core_sensors(CORE_2);
amec_update_proc_core_sensors(CORE_10);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
amec_update_centaur_sensors(CENTAUR_2);
+*/
}
@@ -548,6 +556,7 @@ void amec_slv_state_3(void)
amec_update_proc_core_sensors(CORE_3);
amec_update_proc_core_sensors(CORE_11);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
@@ -557,6 +566,7 @@ void amec_slv_state_3(void)
// Perform amec_analytics (set amec_analytics_slot to 3)
//-------------------------------------------------------
amec_analytics_main();
+*/
}
@@ -578,10 +588,12 @@ void amec_slv_state_4(void)
//-------------------------------------------------------
amec_update_proc_core_sensors(CORE_4);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
amec_update_centaur_sensors(CENTAUR_4);
+*/
}
@@ -603,6 +615,7 @@ void amec_slv_state_5(void)
//-------------------------------------------------------
amec_update_proc_core_sensors(CORE_5);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
@@ -612,6 +625,7 @@ void amec_slv_state_5(void)
// Update partition sensors for DPS algorithms (for this tick)
//-------------------------------------------------------
amec_dps_main();
+*/
}
@@ -633,10 +647,12 @@ void amec_slv_state_6(void)
//-------------------------------------------------------
amec_update_proc_core_sensors(CORE_6);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
amec_update_centaur_sensors(CENTAUR_6);
+*/
}
@@ -656,12 +672,16 @@ void amec_slv_state_7(void)
//-------------------------------------------------------
amec_update_proc_core_sensors(CORE_7);
+/* Not yet supported
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
amec_update_centaur_sensors(CENTAUR_7);
+*/
}
+// @TODO - TEMP: Not Ready yet in Phase 1.
+#if 0
// Function Specification
//
// Name: amec_slv_substate_6_0
diff --git a/src/occ_405/amec/amec_sys.h b/src/occ_405/amec/amec_sys.h
index 0383701..77cf382 100755
--- a/src/occ_405/amec/amec_sys.h
+++ b/src/occ_405/amec/amec_sys.h
@@ -288,7 +288,7 @@ typedef struct
sensor_t mcpifd2ms;
sensor_t mcpifi2ms;
sensor_t spurr2ms;
- sensor_t temp2ms;
+ sensor_t temp4ms;
sensor_t util2ms;
sensor_t nutil3s;
sensor_t mstl2ms;
@@ -454,10 +454,10 @@ typedef struct
sensor_t sleepcnt2ms;
sensor_t winkcnt2ms;
sensor_t sp250us;
- sensor_t temp2ms;
- vectorSensor_t temp2ms_vector;
- sensor_t temp2mspeak;
- vectorSensor_t temp2mspeak_vector;
+ sensor_t temp4ms;
+ vectorSensor_t temp4ms_vector;
+ sensor_t temp4mspeak;
+ vectorSensor_t temp4mspeak_vector;
sensor_t util2ms;
vectorSensor_t util2ms_vector;
diff --git a/src/occ_405/amec/amec_tasks.c b/src/occ_405/amec/amec_tasks.c
index 7925507..0b68331 100755
--- a/src/occ_405/amec/amec_tasks.c
+++ b/src/occ_405/amec/amec_tasks.c
@@ -279,10 +279,10 @@ void task_amec_slave( task_t *i_self)
amec_slv_common_tasks_pre();
-// @TODO TEMP: Not ready yet in phase 1
-/*
amec_generic_smh( amec_slv_state_table, &G_amec_slv_state, &G_amec_slv_state_timings );
+// @TODO TEMP: Not ready yet in phase 1
+/*
amec_slv_common_tasks_post();
*/
// Set the total AMEC int task time for this tick, to the duration of the slave tasks.
diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds.c b/src/occ_405/cmdh/cmdh_fsp_cmds.c
index 458ab71..03dae96 100755
--- a/src/occ_405/cmdh/cmdh_fsp_cmds.c
+++ b/src/occ_405/cmdh/cmdh_fsp_cmds.c
@@ -312,8 +312,8 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
{
if(CORE_PRESENT(k))
{
- l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP2MSP0C0 + k]->ipmi_sid;
- l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0C0 + k]->sample;
+ l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP4MSP0C0 + k]->ipmi_sid;
+ l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP4MSP0C0 + k]->sample;
l_sensorHeader.count++;
}
}
diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c
index 1b3a918..44eaf09 100755
--- a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c
+++ b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c
@@ -1483,7 +1483,7 @@ errlHndl_t data_store_sys_config(const cmdh_fsp_cmd_t * i_cmd_ptr,
//Core Temp and Freq sensors are always in sequence in the table
for (l_coreIndex = 0; l_coreIndex < MAX_CORES; l_coreIndex++)
{
- AMECSENSOR_PTR(TEMP2MSP0C0 + l_coreIndex)->ipmi_sid = l_cmd2_ptr->sys_config.core_sid[(l_coreIndex * 2)];
+ AMECSENSOR_PTR(TEMP4MSP0C0 + l_coreIndex)->ipmi_sid = l_cmd2_ptr->sys_config.core_sid[(l_coreIndex * 2)];
AMECSENSOR_PTR(FREQA2MSP0C0 + l_coreIndex)->ipmi_sid = l_cmd2_ptr->sys_config.core_sid[(l_coreIndex * 2) + 1];
}
}
diff --git a/src/occ_405/dcom/dcom.h b/src/occ_405/dcom/dcom.h
index 7aaf652..175f037 100755
--- a/src/occ_405/dcom/dcom.h
+++ b/src/occ_405/dcom/dcom.h
@@ -191,8 +191,8 @@ typedef struct __attribute__ ((packed))
uint16_t pwr250usmemp0; // [94]
uint16_t sleepcnt2msp0; // [96]
uint16_t winkcnt2msp0; // [98]
- uint16_t temp2msp0; // [100]
- uint16_t temp2msp0peak; // [102]
+ uint16_t temp4msp0; // [100]
+ uint16_t temp4msp0peak; // [102]
uint16_t util2msp0cy[MAX_CORES]; // [104]
uint16_t vrfan250usmem; // [128]
uint16_t vrfan250usproc; // [130]
diff --git a/src/occ_405/occLinkInputFile b/src/occ_405/occLinkInputFile
index c2e3c68..7995f7e 100644
--- a/src/occ_405/occLinkInputFile
+++ b/src/occ_405/occLinkInputFile
@@ -5,6 +5,7 @@ INPUT ( amec_data.o
amec_part.o
amec_sensors_fw.o
amec_sensors_power.o
+ amec_sensors_core.o
amec_slave_smh.o
amec_tasks.o
apss.o
diff --git a/src/occ_405/proc/proc_data.c b/src/occ_405/proc/proc_data.c
index b7f823a..68aae42 100755
--- a/src/occ_405/proc/proc_data.c
+++ b/src/occ_405/proc/proc_data.c
@@ -35,7 +35,8 @@
#include "apss.h"
#include "state.h"
#include "proc_data_control.h"
-#include "core_data.h"
+
+
//Global array of core data buffers
GPE_BUFFER(CoreData G_core_data[MAX_NUM_FW_CORES+NUM_CORE_DATA_DOUBLE_BUF+NUM_CORE_DATA_EMPTY_BUF]) = {{{0}}};
diff --git a/src/occ_405/sensor/sensor_enum.h b/src/occ_405/sensor/sensor_enum.h
index ec2fd9e..bbd46f1 100755
--- a/src/occ_405/sensor/sensor_enum.h
+++ b/src/occ_405/sensor/sensor_enum.h
@@ -122,8 +122,8 @@ enum e_gsid
SLEEPCNT2MSP0,
WINKCNT2MSP0,
SP250USP0,
- TEMP2MSP0,
- TEMP2MSP0PEAK,
+ TEMP4MSP0,
+ TEMP4MSP0PEAK,
UTIL2MSP0,
VRFAN250USPROC,
VRHOT250USPROC,
@@ -206,18 +206,18 @@ enum e_gsid
SPURR2MSP0C10,
SPURR2MSP0C11,
- TEMP2MSP0C0,
- TEMP2MSP0C1,
- TEMP2MSP0C2,
- TEMP2MSP0C3,
- TEMP2MSP0C4,
- TEMP2MSP0C5,
- TEMP2MSP0C6,
- TEMP2MSP0C7,
- TEMP2MSP0C8,
- TEMP2MSP0C9,
- TEMP2MSP0C10,
- TEMP2MSP0C11,
+ TEMP4MSP0C0,
+ TEMP4MSP0C1,
+ TEMP4MSP0C2,
+ TEMP4MSP0C3,
+ TEMP4MSP0C4,
+ TEMP4MSP0C5,
+ TEMP4MSP0C6,
+ TEMP4MSP0C7,
+ TEMP4MSP0C8,
+ TEMP4MSP0C9,
+ TEMP4MSP0C10,
+ TEMP4MSP0C11,
UTIL2MSP0C0,
UTIL2MSP0C1,
diff --git a/src/occ_405/sensor/sensor_info.c b/src/occ_405/sensor/sensor_info.c
index 89d7578..b94bd30 100755
--- a/src/occ_405/sensor/sensor_info.c
+++ b/src/occ_405/sensor/sensor_info.c
@@ -227,8 +227,8 @@ const sensor_info_t G_sensor_info[] =
SENSOR_INFO_T_ENTRY( SLEEPCNT2MSP0, "#\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
SENSOR_INFO_T_ENTRY( WINKCNT2MSP0, "#\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
SENSOR_INFO_T_ENTRY( SP250USP0, "%\0", AMEC_SENSOR_TYPE_FREQ, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1, 0) ),
- SENSOR_INFO_T_ENTRY( TEMP2MSP0, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
- SENSOR_INFO_T_ENTRY( TEMP2MSP0PEAK, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
+ SENSOR_INFO_T_ENTRY( TEMP4MSP0, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
+ SENSOR_INFO_T_ENTRY( TEMP4MSP0PEAK, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
SENSOR_INFO_T_ENTRY( UTIL2MSP0, "%\0", AMEC_SENSOR_TYPE_UTIL, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1,-2) ),
SENSOR_INFO_T_ENTRY( VRFAN250USPROC, "pin\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_VRM, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1, 0) ),
SENSOR_INFO_T_ENTRY( VRHOT250USPROC, "pin\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_VRM, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1, 0) ),
@@ -246,7 +246,7 @@ const sensor_info_t G_sensor_info[] =
SENS_CORE_ENTRY_SET( NOTBZE2MSP0C , "cyc\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
SENS_CORE_ENTRY_SET( NOTFIN2MSP0C , "cyc\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
SENS_CORE_ENTRY_SET( SPURR2MSP0C , "%\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
- SENS_CORE_ENTRY_SET( TEMP2MSP0C , "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
+ SENS_CORE_ENTRY_SET( TEMP4MSP0C , "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
SENS_CORE_ENTRY_SET( UTIL2MSP0C , "%\0", AMEC_SENSOR_TYPE_UTIL, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1,-2) ),
SENS_CORE_ENTRY_SET( NUTIL3SP0C , "%\0", AMEC_SENSOR_TYPE_UTIL, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_3S_IN_HZ, AMEFP( 1,-2) ),
SENS_CORE_ENTRY_SET( MSTL2MSP0C , "cpi\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ),
diff --git a/src/occ_405/sensor/sensor_table.c b/src/occ_405/sensor/sensor_table.c
index 86786e0..8df70d0 100755
--- a/src/occ_405/sensor/sensor_table.c
+++ b/src/occ_405/sensor/sensor_table.c
@@ -276,8 +276,8 @@ const sensor_ptr_t G_amec_sensor_list[] =
SENSOR_PTR( SLEEPCNT2MSP0, &g_amec_sys.proc[0].sleepcnt2ms),
SENSOR_PTR( WINKCNT2MSP0, &g_amec_sys.proc[0].winkcnt2ms),
SENSOR_PTR( SP250USP0, &g_amec_sys.proc[0].sp250us),
- SENSOR_PTR( TEMP2MSP0, &g_amec_sys.proc[0].temp2ms),
- SENSOR_PTR( TEMP2MSP0PEAK, &g_amec_sys.proc[0].temp2mspeak),
+ SENSOR_PTR( TEMP4MSP0, &g_amec_sys.proc[0].temp4ms),
+ SENSOR_PTR( TEMP4MSP0PEAK, &g_amec_sys.proc[0].temp4mspeak),
SENSOR_PTR( UTIL2MSP0, &g_amec_sys.proc[0].util2ms),
SENSOR_PTR( VRFAN250USPROC, &g_amec_sys.sys.vrfan250usproc),
SENSOR_PTR( VRHOT250USPROC, &g_amec_sys.sys.vrhot250usproc),
@@ -291,7 +291,7 @@ const sensor_ptr_t G_amec_sensor_list[] =
CORE_SENSOR_PTRS( NOTBZE2MSP0C , &g_amec_sys.proc[0].core, mcpifd2ms),
CORE_SENSOR_PTRS( NOTFIN2MSP0C , &g_amec_sys.proc[0].core, mcpifi2ms),
CORE_SENSOR_PTRS( SPURR2MSP0C , &g_amec_sys.proc[0].core, spurr2ms),
- CORE_SENSOR_PTRS( TEMP2MSP0C , &g_amec_sys.proc[0].core, temp2ms),
+ CORE_SENSOR_PTRS( TEMP4MSP0C , &g_amec_sys.proc[0].core, temp4ms),
CORE_SENSOR_PTRS( UTIL2MSP0C , &g_amec_sys.proc[0].core, util2ms),
CORE_SENSOR_PTRS( NUTIL3SP0C , &g_amec_sys.proc[0].core, nutil3s),
CORE_SENSOR_PTRS( MSTL2MSP0C , &g_amec_sys.proc[0].core, mstl2ms),
@@ -428,8 +428,8 @@ const minisensor_ptr_t G_amec_mini_sensor_list[] INIT_SECTION =
MINI_SENSOR_PTR( SLEEPCNT2MSP0, &G_dcom_slv_outbox_tx.sleepcnt2msp0),
MINI_SENSOR_PTR( WINKCNT2MSP0, &G_dcom_slv_outbox_tx.winkcnt2msp0),
MINI_SENSOR_PTR( SP250USP0, NULL),
- MINI_SENSOR_PTR( TEMP2MSP0, &G_dcom_slv_outbox_tx.temp2msp0),
- MINI_SENSOR_PTR( TEMP2MSP0PEAK, &G_dcom_slv_outbox_tx.temp2msp0peak),
+ MINI_SENSOR_PTR( TEMP4MSP0, &G_dcom_slv_outbox_tx.temp4msp0),
+ MINI_SENSOR_PTR( TEMP4MSP0PEAK, &G_dcom_slv_outbox_tx.temp4msp0peak),
MINI_SENSOR_PTR( UTIL2MSP0, &G_dcom_slv_outbox_tx.util2msp0),
MINI_SENSOR_PTR( VRFAN250USPROC, &G_dcom_slv_outbox_tx.vrfan250usproc),
MINI_SENSOR_PTR( VRHOT250USPROC, NULL),
@@ -443,7 +443,7 @@ const minisensor_ptr_t G_amec_mini_sensor_list[] INIT_SECTION =
CORE_MINI_SENSOR_PTRS( NOTBZE2MSP0C, &G_dcom_slv_outbox_tx.mcpifd2msp0cy ),
CORE_MINI_SENSOR_PTRS( NOTFIN2MSP0C, &G_dcom_slv_outbox_tx.mcpifi2msp0cy ),
CORE_MINI_SENSOR_PTRS_NULL( SPURR2MSP0C ),
- CORE_MINI_SENSOR_PTRS_NULL( TEMP2MSP0C ),
+ CORE_MINI_SENSOR_PTRS_NULL( TEMP4MSP0C ),
CORE_MINI_SENSOR_PTRS( UTIL2MSP0C, &G_dcom_slv_outbox_tx.util2msp0cy ),
CORE_MINI_SENSOR_PTRS( NUTIL3SP0C, &G_dcom_slv_outbox_tx.nutil3sp0cy ),
CORE_MINI_SENSOR_PTRS_NULL( MSTL2MSP0C ),
diff --git a/src/occ_405/ssx_app_cfg.h b/src/occ_405/ssx_app_cfg.h
index bd998e4..980373c 100755
--- a/src/occ_405/ssx_app_cfg.h
+++ b/src/occ_405/ssx_app_cfg.h
@@ -1,4 +1,3 @@
-
/* IBM_PROLOG_BEGIN_TAG */
/* This is an automatically generated prolog. */
/* */
diff --git a/src/occ_405/thread/chom.c b/src/occ_405/thread/chom.c
index b75bda8..35e0bf1 100755
--- a/src/occ_405/thread/chom.c
+++ b/src/occ_405/thread/chom.c
@@ -238,9 +238,9 @@ void chom_update_sensors()
// update chom sensors which has multiple mini-sensor source
for (i = 0 ; i<MAX_OCCS ; i++)
{
- if (G_dcom_slv_outbox_rx[i].temp2msp0peak > l_max_core_temp)
+ if (G_dcom_slv_outbox_rx[i].temp4msp0peak > l_max_core_temp)
{
- l_max_core_temp = G_dcom_slv_outbox_rx[i].temp2msp0peak;
+ l_max_core_temp = G_dcom_slv_outbox_rx[i].temp4msp0peak;
}
if (G_dcom_slv_outbox_rx[i].temp2mscent > l_max_cent_temp)
diff --git a/src/occ_405/thread/thrm_thread.c b/src/occ_405/thread/thrm_thread.c
index 853cf0e..c64c30f 100755
--- a/src/occ_405/thread/thrm_thread.c
+++ b/src/occ_405/thread/thrm_thread.c
@@ -390,7 +390,7 @@ void thrm_thread_main()
// Determine if additional cooling is required for processors
// For processors, use the hottest of the core averages
- l_sensor = getSensorByGsid(TEMP2MSP0PEAK);
+ l_sensor = getSensorByGsid(TEMP4MSP0PEAK);
l_IncreaseFans |= thrm_thread_fan_control(DATA_FRU_PROC,
l_sensor->sample);
diff --git a/src/occ_405/topfiles.mk b/src/occ_405/topfiles.mk
index 2daa6bc..1ff4b8a 100644
--- a/src/occ_405/topfiles.mk
+++ b/src/occ_405/topfiles.mk
@@ -29,6 +29,7 @@ TOP-C-SOURCES = amec/amec_data.c \
amec/amec_part.c \
amec/amec_sensors_fw.c \
amec/amec_sensors_power.c \
+ amec/amec_sensors_core.c \
amec/amec_slave_smh.c \
amec/amec_tasks.c \
amec/sensor_power.c \
OpenPOWER on IntegriCloud