diff options
| -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) |

