summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-08-08 13:47:03 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-08-16 11:45:55 -0500
commit890ac53effd1a77d03699d120cf2140883f1b6c2 (patch)
treea9f7241067e690573886b287faf1f4322acb048e /src/usr
parent206d83461d042528725fa58b42364456d55794d7 (diff)
downloadtalos-hostboot-890ac53effd1a77d03699d120cf2140883f1b6c2.tar.gz
talos-hostboot-890ac53effd1a77d03699d120cf2140883f1b6c2.zip
PRD: linker issue with template specializations in VcmEvent class
Change-Id: Ibe87b4844f2b3e14b2f80e64b9195c67bdb2002f RTC: 196073 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64145 Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64558 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemVcm.C25
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemVcm.H15
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C29
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemVcm_rt.C25
4 files changed, 40 insertions, 54 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm.C b/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
index 9991c3f81..17d050736 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
@@ -44,6 +44,31 @@ using namespace PlatServices;
//##############################################################################
template<>
+uint32_t VcmEvent<TYPE_MCA>::startCmd()
+{
+ #define PRDF_FUNC "[VcmEvent::startCmd] "
+
+ uint32_t o_rc = SUCCESS;
+
+ // No stop conditions.
+ mss::mcbist::stop_conditions stopCond;
+
+ // Start the time based scrub procedure on this master rank.
+ o_rc = startTdScrub<TYPE_MCA>( iv_chip, iv_rank, MASTER_RANK, stopCond );
+ if ( SUCCESS != o_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
+ iv_chip->getHuid(), getKey() );
+ }
+
+ return o_rc;
+
+ #undef PRDF_FUNC
+}
+
+//------------------------------------------------------------------------------
+
+template<>
uint32_t VcmEvent<TYPE_MCA>::handlePhaseComplete( const uint32_t & i_eccAttns,
STEP_CODE_DATA_STRUCT & io_sc,
bool & o_done )
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm.H b/src/usr/diag/prdf/plat/mem/prdfMemVcm.H
index 7aff78c14..897ca8e2e 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemVcm.H
+++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm.H
@@ -311,6 +311,21 @@ class VcmEvent : public TdEntry
const MemMark iv_mark; ///< The chip mark from hardware.
};
+//------------------------------------------------------------------------------
+
+// Forward declarations for template specializations. Required for functions
+// that are also defined in the primary template.
+
+#ifdef __HOSTBOOT_RUNTIME
+template<>
+uint32_t VcmEvent<TARGETING::TYPE_MCA>::cleanup(STEP_CODE_DATA_STRUCT & io_sc);
+#endif
+
+template<>
+uint32_t VcmEvent<TARGETING::TYPE_MBA>::startNextPhase(
+ STEP_CODE_DATA_STRUCT & io_sc );
+
+
} // end namespace PRDF
#endif // __prdfMemVcm_H
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C b/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C
index 78e881b5a..92c6975b4 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C
@@ -157,35 +157,6 @@ uint32_t VcmEvent<T>::checkEcc( const uint32_t & i_eccAttns,
//##############################################################################
//
-// Specializations for MCA
-//
-//##############################################################################
-
-template<>
-uint32_t VcmEvent<TYPE_MCA>::startCmd()
-{
- #define PRDF_FUNC "[VcmEvent::startCmd] "
-
- uint32_t o_rc = SUCCESS;
-
- // No stop conditions.
- mss::mcbist::stop_conditions stopCond;
-
- // Start the time based scrub procedure on this master rank.
- o_rc = startTdScrub<TYPE_MCA>( iv_chip, iv_rank, MASTER_RANK, stopCond );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
- iv_chip->getHuid(), getKey() );
- }
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
-
-//##############################################################################
-//
// Specializations for MBA
//
//##############################################################################
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemVcm_rt.C
index ec4223fad..f0653c11a 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemVcm_rt.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm_rt.C
@@ -67,31 +67,6 @@ VcmFalseAlarm * __getFalseAlarmCounter<TYPE_MBA>( ExtensibleChip * i_chip )
//##############################################################################
template<>
-uint32_t VcmEvent<TYPE_MCA>::startCmd()
-{
- #define PRDF_FUNC "[VcmEvent::startCmd] "
-
- uint32_t o_rc = SUCCESS;
-
- // No stop conditions.
- mss::mcbist::stop_conditions stopCond;
-
- // Start the time based scrub procedure on this master rank.
- o_rc = startTdScrub<TYPE_MCA>( iv_chip, iv_rank, MASTER_RANK, stopCond );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
- iv_chip->getHuid(), getKey() );
- }
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
-
-//------------------------------------------------------------------------------
-
-template<>
uint32_t VcmEvent<TYPE_MCA>::checkEcc( const uint32_t & i_eccAttns,
STEP_CODE_DATA_STRUCT & io_sc,
bool & o_done )
OpenPOWER on IntegriCloud