diff options
author | Brian Silver <bsilver@us.ibm.com> | 2016-12-14 11:22:25 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-01-05 17:02:11 -0500 |
commit | 9114b28b2a0c7d46d28bb0988fb793b89c37c2e6 (patch) | |
tree | 69ba0e27358ceb9335bead8075f101841c32aad7 /src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C | |
parent | 900ec49570a0afb3e37758ed216f9ed0aa9a7f66 (diff) | |
download | talos-hostboot-9114b28b2a0c7d46d28bb0988fb793b89c37c2e6.tar.gz talos-hostboot-9114b28b2a0c7d46d28bb0988fb793b89c37c2e6.zip |
Reflow ddr phy FIR checking/unmasking to not unmask if FIR are set
Change-Id: I0c312c23b4b0c29a5b3e6ffed316f1bf8aaba2d3
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33839
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com>
Reviewed-by: Marc Gollub <gollub@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33846
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: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C index 05b3c64fe..56dcdc9d7 100644 --- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C +++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_ddr_phy_reset.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -161,18 +161,34 @@ extern "C" // Workarounds FAPI_TRY( mss::workarounds::dp16::after_phy_reset(i_target) ); + // mss::check::during_phy_reset checks to see if there are any FIR. We do this 'twice' once here + // (as part of the good-path) and once if we jump to the fapi_try label. + if ((fapi2::current_err = mss::check::during_phy_reset(i_target)) != fapi2::FAPI2_RC_SUCCESS) + { + goto leave_for_real; + } + // Unmask the FIR we want unmasked after phy reset is complete. Note this is the "good path." // The algorithm is 'good path do after_phy_reset, all paths (error or not) perform the checks // which are defined in during_phy_reset'. We won't run after_phy_reset (unmask of FIR) unless // we're done with a success. FAPI_TRY( mss::unmask::after_phy_reset(i_target) ); + // Leave as we're all good and checked the FIR already ... + return fapi2::current_err; + + // ... here on a bad-path, check FIR and leave ... fapi_try_exit: // mss::check::during_phy_reset handles the error/no error case internally. All we need to do is // return the ReturnCode it hands us - it's taken care of commiting anything it needed to. return mss::check::during_phy_reset(i_target); + // ... here if the good-path FIR check found an error. We jumped over the unmasking and are + // returning an error to the caller. + leave_for_real: + return fapi2::current_err; + } } |