summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2019-03-28 16:15:27 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2019-04-03 06:26:25 -0500
commit215eaa2074f5f41fe2a8b542fdd68edcac71589d (patch)
tree8206b01cbeb8b7446b5952ae8541c44d69566eb3
parented12081210860cf0b70bb942da2d2aaf456bacbc (diff)
downloadtalos-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>
-rwxr-xr-xsrc/build/simics/standalone.simics15
-rw-r--r--src/include/usr/vpd/vpdreasoncodes.H1
-rw-r--r--src/usr/vpd/spd.C49
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)
OpenPOWER on IntegriCloud