diff options
author | Jayashankar Padath <jayashankar.padath@in.ibm.com> | 2016-12-12 03:10:50 -0600 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2017-01-12 16:48:28 -0500 |
commit | 3894e8b76643e16adb3089d975c106ae0f16aec3 (patch) | |
tree | e56ae690ff9555a2760e2a0aef0e37eb4adc0554 /src/usr/hdat | |
parent | caba5e2793fe5c021fead24b2157dc03d5b9133b (diff) | |
download | talos-hostboot-3894e8b76643e16adb3089d975c106ae0f16aec3.tar.gz talos-hostboot-3894e8b76643e16adb3089d975c106ae0f16aec3.zip |
HDAT: IPL Params and Ms Area changes
Change-Id: Ic457de49190cce47cf00b5d5317273af3e35b226
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33713
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: NAGENDRA K. GURRAM <nagendra.g@in.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/hdat')
-rwxr-xr-x | src/usr/hdat/hdatiplparms.C | 55 | ||||
-rwxr-xr-x | src/usr/hdat/hdatiplparms.H | 7 | ||||
-rwxr-xr-x | src/usr/hdat/hdatmsarea.C | 7 | ||||
-rwxr-xr-x | src/usr/hdat/hdatmsarea.H | 2 |
4 files changed, 70 insertions, 1 deletions
diff --git a/src/usr/hdat/hdatiplparms.C b/src/usr/hdat/hdatiplparms.C index 01cffb564..33f2c4b3f 100755 --- a/src/usr/hdat/hdatiplparms.C +++ b/src/usr/hdat/hdatiplparms.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -772,6 +772,59 @@ void HdatIplParms::hdatGetSystemParamters() { HDAT_ERR("Error in getting SYSTEM_BRAND_NAME"); } + + //TODO RTC Story 161867 + //Need to remove the hard coding data + this->iv_hdatIPLParams->iv_sysParms.hdatTpmDrawer = 1; + + TARGETING::ATTR_SECURITY_ENABLE_type l_sysSecuritySetting; + if(l_pSysTarget->tryGetAttr<TARGETING::ATTR_SECURITY_ENABLE> + (l_sysSecuritySetting)) + { + this->iv_hdatIPLParams->iv_sysParms.hdatSysSecuritySetting = + l_sysSecuritySetting; + } + else + { + HDAT_ERR("Error in getting SECURITY_ENABLE attribute"); + } + + TARGETING::ATTR_TPM_REQUIRED_type l_tpmConfBits; + if(l_pSysTarget->tryGetAttr<TARGETING::ATTR_TPM_REQUIRED> + (l_tpmConfBits)) + { + this->iv_hdatIPLParams->iv_sysParms.hdatTpmConfBits = l_tpmConfBits; + } + else + { + HDAT_ERR("Error in getting TPM_REQUIRED attribute"); + } + memset(this->iv_hdatIPLParams->iv_sysParms.hdatHwKeyHashValue, 0x00, 64); + memset(this->iv_hdatIPLParams->iv_sysParms.hdatSystemFamily, 0x00, 64); + + TARGETING::ATTR_SYSTEM_FAMILY_type l_systemFamily = {0}; + if(l_pSysTarget->tryGetAttr<TARGETING::ATTR_SYSTEM_FAMILY> (l_systemFamily)) + { + strcpy(reinterpret_cast<char*> + (this->iv_hdatIPLParams->iv_sysParms.hdatSystemFamily), + l_systemFamily); + } + else + { + HDAT_ERR("Error in getting SYSTEM_FAMILY"); + } + + TARGETING::ATTR_SYSTEM_TYPE_type l_systemType = {0}; + if(l_pSysTarget->tryGetAttr<TARGETING::ATTR_SYSTEM_TYPE> (l_systemType)) + { + strcpy(reinterpret_cast<char*> + (this->iv_hdatIPLParams->iv_sysParms.hdatSystemType), + l_systemType); + } + else + { + HDAT_ERR("Error in getting SYSTEM_TYPE"); + } } /** diff --git a/src/usr/hdat/hdatiplparms.H b/src/usr/hdat/hdatiplparms.H index 85729fb54..c8117aeb1 100755 --- a/src/usr/hdat/hdatiplparms.H +++ b/src/usr/hdat/hdatiplparms.H @@ -103,6 +103,13 @@ struct hdatSysParms_t uint8_t hdatReserved4; // Reserved uint16_t hdatReserved5; // Reserved uint8_t hdatSystemVendorName[64]; // System Vendor Name + uint16_t hdatSysSecuritySetting; // System Security Settings + uint16_t hdatTpmConfBits; // TPM Configuration Bits + uint16_t hdatTpmDrawer; // TPMs/Drawer + uint16_t hdatReserved6; // Reserved + uint8_t hdatHwKeyHashValue[64]; // Hardware Keys Hash Value + char hdatSystemFamily[64]; // System Family/Vendor Name + char hdatSystemType[64]; // System Type/Vendor Type } __attribute__ ((packed)); /** @brief Structure definition for Other IPL Attributes within hdatIPLParams_t diff --git a/src/usr/hdat/hdatmsarea.C b/src/usr/hdat/hdatmsarea.C index 70eb16a6b..ab3199f07 100755 --- a/src/usr/hdat/hdatmsarea.C +++ b/src/usr/hdat/hdatmsarea.C @@ -117,6 +117,13 @@ HdatMsArea::HdatMsArea(errlHndl_t &o_errlHndl, iv_msId.hdatMsAreaId = i_msAreaId; + //TODO : RTC Story 161864 + //For Nimbus based systems, FSI device path length is always zero so hard + //coding the values + //But for Cumulus/Centaur based systems, we need to get the actual data + iv_msId.hdatFsiDevicePathLen = 0; + memset(iv_msId.hdatFsiDevicePath, 0x00, 64); + iv_addrRngArrayHdr.hdatOffset = sizeof(hdatHDIFDataArray_t); iv_addrRngArrayHdr.hdatArrayCnt = 0; iv_addrRngArrayHdr.hdatAllocSize = sizeof(hdatMsAreaAddrRange_t); diff --git a/src/usr/hdat/hdatmsarea.H b/src/usr/hdat/hdatmsarea.H index 6d33a2893..f92430803 100755 --- a/src/usr/hdat/hdatmsarea.H +++ b/src/usr/hdat/hdatmsarea.H @@ -99,6 +99,8 @@ struct hdatMsAreaId_t uint16_t hdatMsAreaParentType; // 0x0002 Memory parent type uint16_t hdatMsAreaStatus; // 0x0004 Status uint16_t hdatInterleavedId; // 0x0006 Id for MS areas which are interleaved + uint32_t hdatFsiDevicePathLen; // 0x0008 FSI Device Path – Actual Length + uint8_t hdatFsiDevicePath[64];// 0x000C FSI Device Path } __attribute__ ((packed)); |