diff options
Diffstat (limited to 'src/usr/ipmi')
-rw-r--r-- | src/usr/ipmi/ipmisensor.C | 70 |
1 files changed, 41 insertions, 29 deletions
diff --git a/src/usr/ipmi/ipmisensor.C b/src/usr/ipmi/ipmisensor.C index 4b5b47858..1b3ebbd43 100644 --- a/src/usr/ipmi/ipmisensor.C +++ b/src/usr/ipmi/ipmisensor.C @@ -35,6 +35,7 @@ #include <targeting/common/utilFilter.H> #include <ipmi/ipmi_reasoncodes.H> #include <endian.h> + extern trace_desc_t * g_trac_ipmi; namespace SENSOR @@ -1057,52 +1058,63 @@ namespace SENSOR switch( l_type ) { - case TARGETING::TYPE_PROC: - case TARGETING::TYPE_CORE: - case TARGETING::TYPE_DIMM: - case TARGETING::TYPE_MEMBUF: - { - l_sensor_number = StatusSensor(i_pTarget).getSensorNumber(); + case TARGETING::TYPE_SYS: + { + TRACDCOMP(g_trac_ipmi, "returning the \"System Event\" sensor\n"); + l_sensor_number = TARGETING::UTIL::getSensorNumber( + i_pTarget, + TARGETING::SENSOR_NAME_SYSTEM_EVENT ); + break; + } - break; - } + case TARGETING::TYPE_NODE: + { - case TARGETING::TYPE_OCC: - { - // should return the processor associated with this OCC - TARGETING::ConstTargetHandle_t proc = getParentChip( i_pTarget); + TRACDCOMP(g_trac_ipmi, "return backplane fault sensor\n"); + l_sensor_number = TARGETING::UTIL::getSensorNumber( + i_pTarget, + TARGETING::SENSOR_NAME_BACKPLANE_FAULT ); + break; + } - // we should get the processor as the parent here - assert(i_pTarget,"OCC target failed to return parent proc"); + case TARGETING::TYPE_DIMM: + case TARGETING::TYPE_MEMBUF: + case TARGETING::TYPE_PROC: + case TARGETING::TYPE_CORE: + { + l_sensor_number = + StatusSensor(i_pTarget).getSensorNumber(); + break; + } - l_sensor_number = getFaultSensorNumber( proc ); + case TARGETING::TYPE_EX: + { + // sensor number attribute is associated with the core + const TARGETING::Target * targ = getCoreChiplet(i_pTarget); - break; - } - default: - { - TARGETING::TargetHandle_t l_sys; + l_sensor_number = getFaultSensorNumber( targ ); - // get the "system error" sensor number associated with the - // system target. - TARGETING::targetService().getTopLevelTarget(l_sys); + break; + } - l_sensor_number = TARGETING::UTIL::getSensorNumber(l_sys, - TARGETING::SENSOR_NAME_SYSTEM_EVENT ); + default: + { - break; - } + TARGETING::ConstTargetHandle_t targ = + getParentChip( i_pTarget); + l_sensor_number = getFaultSensorNumber( targ ); + } } - TRACDCOMP(g_trac_ipmi,"<<getFaultSensorNumber() returning sensor number %d,"); + TRACDCOMP(g_trac_ipmi,"<<getFaultSensorNumber() returning sensor number %#x", l_sensor_number); return l_sensor_number; } // interface to retrieve the APSS channel sensor numbers. errlHndl_t getAPSSChannelSensorNumbers( - const uint16_t (* &o_sensor_numbers)[16]) + const uint16_t (* &o_sensor_numbers)[16]) { TARGETING::TargetHandle_t l_sys; |