summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt Derksen <mderkse1@us.ibm.com>2019-08-16 12:38:34 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-08-19 15:02:34 -0500
commit794efce0c21613f12b67db9a7e52d162976d4d4a (patch)
tree61c4f7f40cb8d66640f799e9d642b4bf3f1592f4 /src
parenta2118008da065e69e8eab937bf725ea092e6f742 (diff)
downloadtalos-hostboot-794efce0c21613f12b67db9a7e52d162976d4d4a.tar.gz
talos-hostboot-794efce0c21613f12b67db9a7e52d162976d4d4a.zip
Fix retry failure in nvdimmWriteData()
Need to create a local variable for i_dataLen, because deviceOp will alter the i_dataLen value on failure (ie NACK). Change-Id: If73efb77a1ba918fbc1bb7decd8fb46a5d2014b9 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82344 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: TSUNG K YEUNG <tyeung@us.ibm.com> Reviewed-by: Matthew Raybuck <matthew.raybuck@ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/usr/isteps/nvdimm/nvdimmdd.C9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/usr/isteps/nvdimm/nvdimmdd.C b/src/usr/isteps/nvdimm/nvdimmdd.C
index ce6fa65d8..875c217d4 100755
--- a/src/usr/isteps/nvdimm/nvdimmdd.C
+++ b/src/usr/isteps/nvdimm/nvdimmdd.C
@@ -922,6 +922,7 @@ errlHndl_t nvdimmWriteData( TARGETING::Target * i_target,
ENTER_MRK"nvdimmWriteData()");
errlHndl_t err = nullptr;
errlHndl_t err_retryable = nullptr;
+ size_t data_length;
do
{
/***********************************************************/
@@ -931,13 +932,15 @@ errlHndl_t nvdimmWriteData( TARGETING::Target * i_target,
retry <= NVDIMM_MAX_RETRIES;
retry++)
{
+ data_length = i_dataLen;
+
// Do the actual data write
if ( i_dataLen == sizeof(uint16_t) )
{
err = deviceOp( DeviceFW::WRITE,
i_target,
i_dataToWrite,
- i_dataLen,
+ data_length,
DeviceFW::I2C,
I2C_SMBUS_RW_W_CMD_PARAMS(
DeviceFW::I2C_SMBUS_WORD_NO_PEC,
@@ -954,7 +957,7 @@ errlHndl_t nvdimmWriteData( TARGETING::Target * i_target,
err = deviceOp( DeviceFW::WRITE,
i_target,
i_dataToWrite,
- i_dataLen,
+ data_length,
DEVICE_I2C_ADDRESS_OFFSET(
i_i2cInfo.port,
i_i2cInfo.engine,
@@ -978,7 +981,7 @@ errlHndl_t nvdimmWriteData( TARGETING::Target * i_target,
"Write Non-Retryable fail %d/%d/0x%X, "
"ldl=%d, offset=0x%X, aS=%d, retry=%d",
i_i2cInfo.port, i_i2cInfo.engine,
- i_i2cInfo.devAddr, i_dataLen,
+ i_i2cInfo.devAddr, data_length,
i_i2cInfo.offset, i_i2cInfo.addrSize, retry);
// Printing mux info separately, if combined, nothing is displayed
OpenPOWER on IntegriCloud