void SimFspSyncSvc::processRequestMsg(msg_t * i_msg)
{
    #define FUNC "[SimFspSyncSvc::processRequestMsg]"
    PRDF_ENTER(FUNC);

    PRDF_ASSERT(NULL != i_msg);

    errlHndl_t pError = NULL;

    switch(i_msg->type)
    {
        case MFG_TRACE_SYNC_TO_FSP:
            pError = processMfgTrace(i_msg);
            if(NULL != pError)
            {
                PRDF_ERR(FUNC " processMfgTrace returned error");
                PRDF_COMMIT_ERRL(pError, ERRL_ACTION_REPORT);
            }
            break;

        default:
            PRDF_ERR(FUNC " Invalid Message Type received from HB :"
                 "[0x%08X]", i_msg->type);
    }

    PRDF_EXIT(FUNC);
    #undef FUNC
}
int32_t mssIplUeIsolation( TargetHandle_t i_mba, const CenRank & i_rank,
                           CenDqBitmap & o_bitmap )
{
    #define PRDF_FUNC "[PlatServices::mssIplUeIsolation] "

    int32_t o_rc = SUCCESS;

    uint8_t data[PORT_SLCT_PER_MBA][DIMM_DQ_RANK_BITMAP_SIZE];

    errlHndl_t errl = NULL;
    PRD_FAPI_TO_ERRL( errl, mss_IPL_UE_isolation, getFapiTarget(i_mba),
                      i_rank.getMaster(), data );
    if ( NULL != errl )
    {
        PRDF_ERR( PRDF_FUNC"mss_IPL_UE_isolation() failed: MBA=0x%08x "
                  "rank=%d", getHuid(i_mba), i_rank.getMaster() );
        PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT );
        o_rc = FAIL;
    }
    else
    {
        o_bitmap = CenDqBitmap ( i_mba, i_rank, data );
    }

    return o_rc;

    #undef PRDF_FUNC
}
/* void commit_errl()
 *        Commit error log and delete.
 */
void ErrlSmartPtr::commit_errl()
{
    if (iv_errl)
    {
        this->add_src();

        PRDF_COMMIT_ERRL(iv_errl, ERRL_ACTION_REPORT);
    }
}
Exemple #4
0
void prdfAssert( const char * i_exp, const char * i_file, int i_line )
{
    PRDF_ERR( "prdfAssert(%s) in %s line %d", i_exp, i_file, i_line );

    errlHndl_t errl = NULL;

    /*@
     * @errortype
     * @subsys     EPUB_FIRMWARE_SP
     * @reasoncode PRDF_CODE_FAIL
     * @moduleid   PRDF_ASSERT
     * @userdata1  0
     * @userdata2  Line number of the assert
     * @userdata3  0
     * @userdata4  PRD Return code
     * @devdesc    PRD assert
     * @custDesc   An internal firmware fault.
     * @procedure  EPUB_PRC_SP_CODE
     */
    PRDF_CREATE_ERRL(errl,
                     ERRL_SEV_PREDICTIVE,         // error on diagnostic
                     ERRL_ETYPE_NOT_APPLICABLE,
                     SRCI_ERR_INFO,
                     SRCI_NO_ATTR,
                     PRDF_ASSERT,                 // module id
                     FSP_DEFAULT_REFCODE,         // refcode
                     PRDF_CODE_FAIL,              // Reason code
                     0,                           // user data word 1
                     i_line,                      // user data word 2
                     0,                           // user data word 3
                     PRD_ASSERT);                 // user data word 4

    PRDF_ADD_PROCEDURE_CALLOUT(errl, SRCI_PRIORITY_MED, EPUB_PRC_SP_CODE);
    PRDF_SET_RC(errl, PRD_ASSERT);
    PRDF_COLLECT_TRACE(errl, 256);
    PRDF_SET_TERM_STATE( errl );
    PRDF_COMMIT_ERRL(errl, ERRL_ACTION_SA);

    #ifdef  __HOSTBOOT_MODULE

    assert(0);

    #else

    const size_t sz_msg = 160;
    char msg[sz_msg];
    errlslen_t msize = snprintf( msg, sz_msg, "prdfAssert(%s) in %s line %d",
                                 i_exp, i_file, i_line );

    percAbend(PRDF_COMP_ID, msg, msize+1, 0, 0);
    abort();

    #endif
}
int32_t mdiaSendEventMsg( TargetHandle_t i_mbaTarget,
                          MDIA::MaintCommandEventType i_eventType )
{
    #define PRDF_FUNC "[PlatServices::mdiaSendCmdComplete] "

    int32_t o_rc = SUCCESS;

    do
    {
        if ( !isInMdiaMode() ) break; // no-op

        // Verify type.
        TYPE l_type = getTargetType(i_mbaTarget);
        if ( TYPE_MBA != l_type )
        {
            PRDF_ERR( PRDF_FUNC"unsupported target type %d", l_type );
            o_rc = FAIL;
            break;
        }

        // Send command complete to MDIA.
        MDIA::MaintCommandEvent l_mdiaEvent;

        l_mdiaEvent.target = i_mbaTarget;
        l_mdiaEvent.type = i_eventType;

        errlHndl_t errl = MDIA::processEvent( l_mdiaEvent );
        if ( NULL != errl )
        {
            PRDF_ERR( PRDF_FUNC"MDIA::processEvent() failed" );
            PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT );
            o_rc = FAIL;
            break;
        }

    } while (0);

    if ( SUCCESS != o_rc )
    {
        PRDF_ERR( PRDF_FUNC"Failed: i_target=0x%08x i_eventType=%d",
                  getHuid(i_mbaTarget), i_eventType );
    }

    return o_rc;

    #undef PRDF_FUNC
}
int32_t mssRestoreDramRepairs( TargetHandle_t i_mbaTarget,
                               uint8_t & o_repairedRankMask,
                               uint8_t & o_badDimmMask )
{
    int32_t o_rc = SUCCESS;

    errlHndl_t errl = NULL;

    PRD_FAPI_TO_ERRL( errl, mss_restore_DRAM_repairs,
                      fapi::Target(fapi::TARGET_TYPE_MBA_CHIPLET, i_mbaTarget),
                      o_repairedRankMask, o_badDimmMask );

    if ( NULL != errl )
    {
        PRDF_ERR( "[PlatServices::mssRestoreDramRepairs] "
                  "mss_restore_dram_repairs() failed. HUID: 0x%08x",
                  getHuid(i_mbaTarget) );
        PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT );
        o_rc = FAIL;
    }

    return o_rc;
}