Skip to content

Commit

Permalink
PRD: linker issue with template specializations in VcmEvent class
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
zane131 committed Aug 16, 2018
1 parent 206d834 commit 890ac53
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 54 deletions.
25 changes: 25 additions & 0 deletions src/usr/diag/prdf/plat/mem/prdfMemVcm.C
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,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,
Expand Down
15 changes: 15 additions & 0 deletions src/usr/diag/prdf/plat/mem/prdfMemVcm.H
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
29 changes: 0 additions & 29 deletions src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C
Original file line number Diff line number Diff line change
Expand Up @@ -155,35 +155,6 @@ uint32_t VcmEvent<T>::checkEcc( const uint32_t & i_eccAttns,
#undef PRDF_FUNC
}

//##############################################################################
//
// 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
Expand Down
25 changes: 0 additions & 25 deletions src/usr/diag/prdf/plat/mem/prdfMemVcm_rt.C
Original file line number Diff line number Diff line change
Expand Up @@ -66,31 +66,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,
Expand Down

0 comments on commit 890ac53

Please sign in to comment.