summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2019-09-20 14:23:21 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-09-27 17:29:55 -0500
commit0f3e041cbe1c7d6d2ae203187f843b1714b287db (patch)
tree3ae30da8ad9a402c9b11dbd2ccb20eec024db199 /src/usr/hwas
parent7b87226522ddaf755b241c8352f5c7e9ed273741 (diff)
downloadtalos-hostboot-0f3e041cbe1c7d6d2ae203187f843b1714b287db.tar.gz
talos-hostboot-0f3e041cbe1c7d6d2ae203187f843b1714b287db.zip
Add new DDR4 DDIMM keyword ENTIRE_SPD_WITHOUT_EFD
With the DDR4 DDIMM SPD there are really two parts. There is the 640 bytes of information you typically see in a DIMM's SPD and then there are 2 KB - 640 bytes of EFD (extensible function descriptors) to give vendors space to add customized data. In many cases we want the ENTIRE_SPD (including the EFD area) but in other cases we want to save some time/space and only read in the first 640 bytes. This new keyword will give us that flexibility. Change-Id: I88ed58b37417b576f2ec4a779ee0c114791c6c21 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/84070 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Matthew Raybuck <matthew.raybuck@ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas')
-rw-r--r--src/usr/hwas/hwasPlat.C10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/usr/hwas/hwasPlat.C b/src/usr/hwas/hwasPlat.C
index 46911bca1..9f60de51d 100644
--- a/src/usr/hwas/hwasPlat.C
+++ b/src/usr/hwas/hwasPlat.C
@@ -589,7 +589,7 @@ errlHndl_t ocmbIdecPhase1(const TARGETING::TargetHandle_t& i_target)
errlHndl_t l_errl = nullptr;
// Allocate buffer to hold SPD and init to 0
- size_t l_spdBufferSize = SPD::OCMB_SPD_EFD_COMBINED_SIZE;
+ size_t l_spdBufferSize = SPD::DDIMM_DDR4_SPD_SIZE;
uint8_t* l_spdBuffer = new uint8_t[l_spdBufferSize];
memset(l_spdBuffer, 0, l_spdBufferSize);
uint16_t l_chipId = 0;
@@ -597,11 +597,11 @@ errlHndl_t ocmbIdecPhase1(const TARGETING::TargetHandle_t& i_target)
do {
- // Read the full SPD.
+ // Read the SPD off the ocmb but skip reading the EFD to save time.
l_errl = deviceRead(i_target,
l_spdBuffer,
l_spdBufferSize,
- DEVICE_SPD_ADDRESS(SPD::ENTIRE_SPD));
+ DEVICE_SPD_ADDRESS(SPD::ENTIRE_SPD_WITHOUT_EFD));
// If unable to retrieve the SPD buffer then can't
// extract the IDEC data, so return error.
@@ -614,11 +614,11 @@ errlHndl_t ocmbIdecPhase1(const TARGETING::TargetHandle_t& i_target)
}
// Make sure we got back the size we were expecting.
- assert(l_spdBufferSize == SPD::OCMB_SPD_EFD_COMBINED_SIZE,
+ assert(l_spdBufferSize == SPD::DDIMM_DDR4_SPD_SIZE,
"ocmbIdecPhase1> OCMB SPD read size %d "
"doesn't match the expected size %d",
l_spdBufferSize,
- SPD::OCMB_SPD_EFD_COMBINED_SIZE);
+ SPD::DDIMM_DDR4_SPD_SIZE);
l_errl = getOcmbIdecFromSpd(i_target,
l_spdBuffer,
OpenPOWER on IntegriCloud