diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2019-03-28 16:15:27 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2019-04-03 06:26:25 -0500 |
commit | 215eaa2074f5f41fe2a8b542fdd68edcac71589d (patch) | |
tree | 8206b01cbeb8b7446b5952ae8541c44d69566eb3 /src | |
parent | ed12081210860cf0b70bb942da2d2aaf456bacbc (diff) | |
download | talos-hostboot-215eaa2074f5f41fe2a8b542fdd68edcac71589d.tar.gz talos-hostboot-215eaa2074f5f41fe2a8b542fdd68edcac71589d.zip |
Stop overwriting OCMB vpd info in standalone and handle DDIMM modules
This commit removes some lines that were overwriting the OCMB's eeproms
with what we thought was "good" VPD. Simics itself now has a better copy
so we will use theirs. When consuming their VPD however we found that
Hostboot was missing support for the DDIMM type modules. This commit
also update the spd driver to handle this new type of memory module.
Change-Id: I97dba2adee4d816f86228d8fbd7aeb671a050e11
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/75197
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Matthew Raybuck <matthew.raybuck@ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-x | src/build/simics/standalone.simics | 15 | ||||
-rw-r--r-- | src/include/usr/vpd/vpdreasoncodes.H | 1 | ||||
-rw-r--r-- | src/usr/vpd/spd.C | 49 |
3 files changed, 50 insertions, 15 deletions
diff --git a/src/build/simics/standalone.simics b/src/build/simics/standalone.simics index 121a67756..58821b2a2 100755 --- a/src/build/simics/standalone.simics +++ b/src/build/simics/standalone.simics @@ -47,21 +47,6 @@ if ($hb_skip_vpd_preload == 0) { } except { echo "ERROR: Failed to preload VPD into PNOR." } } -# If Axone and Beyond, load VPD into DDIMM VPD -if ($hb_mode == 0){ - $dimmSpd = $hb_script_location + "/dimmspd.dat" - - $hb_masterproc.seeprom0_image.load-file $vpd_proc - echo " - loaded MVPD to seeprom0" - - $hb_masterproc.seeprom2_image.load-file $vpd_proc - echo " - loaded MVPD to seeprom2" - - foreach $dimm in (($hb_masterproc).get-dimms) { - $dimm.VPD_0_image.load-file $dimmSpd - } - echo " - loaded SPD to all dimms on master proc" -} # Turn on all processor cec-chips if ($hb_mode == 1) { diff --git a/src/include/usr/vpd/vpdreasoncodes.H b/src/include/usr/vpd/vpdreasoncodes.H index af51e4c37..8a201c422 100644 --- a/src/include/usr/vpd/vpdreasoncodes.H +++ b/src/include/usr/vpd/vpdreasoncodes.H @@ -157,6 +157,7 @@ enum vpdReasonCode VPD_BAD_REC_NUM = VPD_COMP_ID | 0x3e, VPD_INVALID_MASTER_I2C_PATH = VPD_COMP_ID | 0x3f, VPD_NULL_I2C_MASTER = VPD_COMP_ID | 0x40, + VPD_MOD_SPECIFIC_MISMATCH_DDIMM = VPD_COMP_ID | 0x41, }; diff --git a/src/usr/vpd/spd.C b/src/usr/vpd/spd.C index a6b687ad0..a58398e4a 100644 --- a/src/usr/vpd/spd.C +++ b/src/usr/vpd/spd.C @@ -1885,6 +1885,51 @@ errlHndl_t checkModSpecificKeyword ( KeywordData i_kwdData, break; } } + else if(DDIMM == modType) + { + if ((DDIMM != i_kwdData.modSpec) && + (ALL != i_kwdData.modSpec) ) + { + TRACFCOMP( g_trac_spd, ERR_MRK"checkModSpecificKeyword: " + "Keyword (0x%04x) is not valid with DDIMM modules!", + i_kwdData.keyword ); + /*@ + * @errortype + * @reasoncode VPD::VPD_MOD_SPECIFIC_MISMATCH_DDIMM + * @severity ERRORLOG::ERRL_SEV_UNRECOVERABLE + * @moduleid VPD::VPD_SPD_CHECK_MODULE_SPECIFIC_KEYWORD + * @userdata1[0:31] Module Type (byte 3[3:0]) + * @userdata1[32:63] Memory Type (byte 2) + * @userdata2[0:31] SPD Keyword + * @userdata2[32:63] Module Specific flag + * @devdesc Keyword requested was not LRMM Module + * specific. + * @custdesc A problem occurred during the IPL + * of the system. + */ + err = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_UNRECOVERABLE, + VPD::VPD_SPD_CHECK_MODULE_SPECIFIC_KEYWORD, + VPD::VPD_MOD_SPECIFIC_MISMATCH_DDIMM, + TWO_UINT32_TO_UINT64( modType, i_memType ), + TWO_UINT32_TO_UINT64( i_kwdData.keyword, + i_kwdData.modSpec ) ); + + // HB code asked for an unsupprted keyword for this Module + err->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE, + HWAS::SRCI_PRIORITY_HIGH); + + // Or user could have installed a bad/unsupported dimm + err->addHwCallout( i_target, + HWAS::SRCI_PRIORITY_LOW, + HWAS::DECONFIG, + HWAS::GARD_NULL ); + + err->collectTrace( "SPD", 256); + + break; + } + } else { TRACFCOMP( g_trac_spd, ERR_MRK"checkModSpecificKeyword: " @@ -2034,6 +2079,10 @@ errlHndl_t getModType ( modSpecTypes_t & o_modType, { o_modType = LRMM; } + else if( MOD_TYPE_DDIMM == modTypeVal) + { + o_modType = DDIMM; + } } if (o_modType == NA) |