From 5017bcab5ac55f1d03c19d26c742f7d11d2c3ebe Mon Sep 17 00:00:00 2001 From: nagurram-in Date: Tue, 13 Jun 2017 04:17:53 -0500 Subject: [PATCH] IPMI HDAT reenablement change and soft sensor additions Change-Id: I4932fffcdc705db6789f53c08f5f513a223a2489 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41737 Reviewed-by: VENKATESH SAINATH Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/usr/hdat/hdatipmi.C | 32 ++++++++++++-------------------- src/usr/hdat/hdatipmi.H | 4 +++- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/usr/hdat/hdatipmi.C b/src/usr/hdat/hdatipmi.C index 56bfab7bca9..9ee50888043 100644 --- a/src/usr/hdat/hdatipmi.C +++ b/src/usr/hdat/hdatipmi.C @@ -42,10 +42,6 @@ extern trace_desc_t *g_trac_hdat; uint32_t HdatIpmi::cv_actualCnt = 0; - - - - /******************************************************************************* * IPMI Constructor * IPMI sensor data structure is pretty simple with only 2 internal data pointers. @@ -91,30 +87,26 @@ HdatIpmi::HdatIpmi(errlHndl_t &o_errlHndl, const hdatMsAddr_t &i_msAddr): l_targetService.begin(), l_targetService.end(), &l_presentTargExpr); - + + TARGETING::ATTR_IPMI_SENSORS_type sensors = {{0}}; for(; l_targFilter; ++l_targFilter) { -#if 0 // Create a new array entry and push it to FRU/LED sensor vector hdatIPMIFRUSensorMapEntry_t l_fruEntry; - uint8_t l_sensorType = 0; - uint8_t l_eventReadingType = 0; l_fruEntry.SLCAIndex = (*l_targFilter)->getAttr(); - l_fruEntry.IPMISensorID = getFaultSensorNumber(*l_targFilter); - l_errl = SensorBase::getSensorType(l_fruEntry.IPMISensorID, - l_sensorType, l_eventReadingType); - if(l_errl == NULL) + assert((*l_targFilter)->tryGetAttr(sensors)); + for(auto & l_sensor : sensors) { - l_fruEntry.IPMISensorType = l_sensorType; + l_fruEntry.IPMISensorID = l_sensor[1]; + l_fruEntry.IPMISensorType = (uint8_t)(l_sensor[0] >> 8); + // OPAL doesn't like sensor types of 0xFF, so filter them out. + if( l_fruEntry.IPMISensorType != 0xFF ) + { + iv_ipmiFruEntry.push_back(l_fruEntry); + } } - else - { - HDAT_ERR(" Error in getsensor type"); - break; - } - iv_ipmiFruEntry.push_back(l_fruEntry); -#endif } + iv_ipmiDataSize = sizeof(hdatHDIF_t)+ HDAT_IPMI_PADDING + ( sizeof(hdatHDIFDataHdr_t) * HDAT_IPMI_NUM_DATA_PTRS)+ diff --git a/src/usr/hdat/hdatipmi.H b/src/usr/hdat/hdatipmi.H index 737ce40972e..f1647614919 100644 --- a/src/usr/hdat/hdatipmi.H +++ b/src/usr/hdat/hdatipmi.H @@ -62,7 +62,9 @@ enum hdatIPMIDataPtrs { HDAT_IPMI_FRU_SENSOR_MAPPING = 0, HDAT_IPMI_LED_SENSOR_ID_MAPPING = 1, - HDAT_IPMI_DA_LAST = 2, + HDAT_IPMI_RESERVED1 = 2, + HDAT_IPMI_RESERVED2 = 3, + HDAT_IPMI_DA_LAST = 4, }; struct hdatIPMIFRUSensorMapEntry_t