From 5236a087c01445bf80b7883e7cb9bd50540ce138 Mon Sep 17 00:00:00 2001 From: "Richard J. Knight" Date: Wed, 10 Dec 2014 06:34:26 -0600 Subject: Add target to sensor number interface. Added routine to return the fault sensor number from a target Change-Id: I4f3b48b145af243e920b0d0414ebfeb677080d49 RTC:1196220 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14833 Reviewed-by: Brian H. Horton Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III --- src/include/usr/ipmi/ipmisensor.H | 22 +++++++++-- src/usr/ipmi/ipmisensor.C | 64 +++++++++++++++++++++++++++++-- src/usr/targeting/common/genHwsvMrwXml.pl | 17 ++++---- 3 files changed, 88 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/include/usr/ipmi/ipmisensor.H b/src/include/usr/ipmi/ipmisensor.H index e27ce84b6..4b266e1b5 100644 --- a/src/include/usr/ipmi/ipmisensor.H +++ b/src/include/usr/ipmi/ipmisensor.H @@ -249,6 +249,14 @@ namespace SENSOR setSensorReadingRequest *& io_data, IPMI::completion_code& o_completion_code ); + /** + * @brief return the sensor number + * + * @return sensor_number - sensor number for this sensor + * + */ + uint8_t getSensorNumber(); + protected: /** @@ -298,10 +306,6 @@ namespace SENSOR SensorBase(const SensorBase& thing ); - // helper function to get sensor number attribute - // of passed in target - uint16_t getSensorNumber(); - }; /** @@ -715,6 +719,16 @@ namespace SENSOR }; + /* + * @brief Return the fault sensor number for a target + * Will return either the status sensor or Fault sensor number for a + * given target. If the target passed in does not have either of those + * sensor types, the "System Error" sensor number will be returned. + * + */ + uint8_t getFaultSensorNumber(TARGETING::Target * i_pTarget ); + + /** * @brief Update DIMM/CORE/Processor status sensors on the BMC. * Update the present/functional status on the BMC for status sensors diff --git a/src/usr/ipmi/ipmisensor.C b/src/usr/ipmi/ipmisensor.C index 33105161c..d478869f3 100644 --- a/src/usr/ipmi/ipmisensor.C +++ b/src/usr/ipmi/ipmisensor.C @@ -399,10 +399,10 @@ namespace SENSOR // Helper function to search the sensor data for the correct sensor number // based on the sensor name. // - uint16_t SensorBase::getSensorNumber() + uint8_t SensorBase::getSensorNumber() { - uint16_t l_sensor_number = INVALID_SENSOR; + uint8_t l_sensor_number = INVALID_SENSOR; if( iv_target == NULL ) { @@ -930,6 +930,64 @@ namespace SENSOR updateBMCFaultSensorStatus(); }; -}; // end name space + // returns a sensor number based on input target type + uint8_t getFaultSensorNumber( TARGETING::TargetHandle_t i_pTarget ) + { + + TARGETING::TYPE l_type = i_pTarget->getAttr(); + + uint8_t l_sensor_number = INVALID_SENSOR; + + switch( l_type ) + { + case TARGETING::TYPE_PROC: + case TARGETING::TYPE_CORE: + case TARGETING::TYPE_DIMM: + { + l_sensor_number = StatusSensor(i_pTarget).getSensorNumber(); + break; + } + + case TARGETING::TYPE_OSC: + case TARGETING::TYPE_OSCREFCLK: + case TARGETING::TYPE_OSCPCICLK: + { + TARGETING::TargetHandleList parentList; + + // The clock fault sensors are associated with the NODE target + (void)getParentAffinityTargets ( + parentList, i_pTarget, TARGETING::CLASS_ENC, + TARGETING::TYPE_NODE, false); + + assert(parentList.size() == 1 ); + + TARGETING::TargetHandle_t l_node = parentList[0]; + + l_sensor_number = + SENSOR::FaultSensor( l_node, l_type ).getSensorNumber(); + + break; + } + + default: + { + TARGETING::TargetHandle_t l_sys; + + // get the "system error sensor number" associated with the + // system target. + TARGETING::targetService().getTopLevelTarget(l_sys); + + l_sensor_number = SENSOR::FaultSensor( + l_sys, TARGETING::TYPE_NA ).getSensorNumber(); + + break; + } + + } + + return l_sensor_number; + } + +}; // end name space diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl index 54902b7bf..92a3c411d 100755 --- a/src/usr/targeting/common/genHwsvMrwXml.pl +++ b/src/usr/targeting/common/genHwsvMrwXml.pl @@ -2081,9 +2081,9 @@ sub generate_sys 0x0b00,0x09, 0x0c00,0x06, 0x0d00,0x00, - 0x0e00,0xFF, - 0x1000,0xFF, - 0x1010,0xFF, + 0x0e00,0x85, + 0x1000,0x82, + 0x1010,0x83, 0xFFFF,0xFF, 0xFFFF,0xFF, 0xFFFF,0xFF, @@ -4012,8 +4012,8 @@ sub generate_centaur IPMI_SENSORS - 0x0100, 0xFF, - 0x0500, 0xFF, + 0x0100, 0x12, + 0x0500, 0x01, 0xFFFF, 0xFF, 0xFFFF, 0xFF, 0xFFFF, 0xFF, @@ -4289,7 +4289,7 @@ sub generate_is_dimm IPMI_SENSORS - 0x0100, 0xFF, + 0x0100, 0x13, 0x0500, 0x01, 0xFFFF, 0xFF, 0xFFFF, 0xFF, @@ -4459,7 +4459,7 @@ sub generate_dimm IPMI_SENSORS - 0x0100, 0xFF, + 0x0100, 0x13, 0x0500, 0x01, 0xFFFF, 0xFF, 0xFFFF, 0xFF, @@ -5199,9 +5199,10 @@ sub addI2cBusSpeedArray ($tmp_speed < $speed_array[$tmp_offset] ) ) { $speed_array[$tmp_offset] = $tmp_speed; + } - } + } print " \n"; print " I2C_BUS_SPEED_ARRAY\n"; print " \n"; -- cgit v1.2.3