diff options
| author | Christian Geddes <crgeddes@us.ibm.com> | 2019-09-20 14:23:21 -0500 |
|---|---|---|
| committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-09-27 17:29:55 -0500 |
| commit | 0f3e041cbe1c7d6d2ae203187f843b1714b287db (patch) | |
| tree | 3ae30da8ad9a402c9b11dbd2ccb20eec024db199 /src/usr/hwas | |
| parent | 7b87226522ddaf755b241c8352f5c7e9ed273741 (diff) | |
| download | talos-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.C | 10 |
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, |

