Skip to content

Commit

Permalink
Check for PROC EC in OP920
Browse files Browse the repository at this point in the history
  Generate error if NIMBUS EC < DD2.2

Change-Id: Ie971a8806061373c72ca007dd66e023c5c5957a1
RTC:191267
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58114
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
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>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
cvswen authored and dcrowell77 committed May 14, 2018
1 parent f911e5c commit ada2cd8
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/include/usr/isteps/istep_reasoncodes.H
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ namespace ISTEP
RC_FAILED_WRITE_SPR = ISTEP_COMP_ID | 0x37,
RC_FAILED_TO_BOOT_SBE = ISTEP_COMP_ID | 0x38,
RC_REDISCOVERED_TARGETS = ISTEP_COMP_ID | 0x39,
RC_P9N_LESS_THAN_DD22_NOT_SUPPORTED = ISTEP_COMP_ID | 0x3A,
};

};
Expand Down
65 changes: 65 additions & 0 deletions src/usr/isteps/istep06/host_set_ipl_parms.C
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,13 @@
#include <console/consoleif.H>
#include <initservice/initserviceif.H>

using namespace TARGETING;

namespace ISTEP_06
{

constexpr uint8_t PROC_EC_DD2 = 0x22;

void* host_set_ipl_parms( void *io_pArgs )
{
ISTEP_ERROR::IStepError l_stepError;
Expand Down Expand Up @@ -125,6 +129,67 @@ void* host_set_ipl_parms( void *io_pArgs )
}


// OP920: Any proc EC less than Nimbus DD2.2 is NOT supported
// Generate an error but still continue to boot

// Get the system target
Target * l_sys = nullptr;
targetService().getTopLevelTarget(l_sys);

// Get the child proc chips
TargetHandleList l_procList;
getChildAffinityTargets( l_procList,
l_sys,
CLASS_CHIP,
TYPE_PROC );

// For each proc target
for( const auto & l_proc : l_procList )
{
if( (l_proc->getAttr<ATTR_MODEL>() == MODEL_NIMBUS) &&
(l_proc->getAttr<TARGETING::ATTR_EC>() < PROC_EC_DD2) )
{
#ifdef CONFIG_CONSOLE
CONSOLE::displayf(ISTEP_COMP_NAME,
"P9N (Nimbus) less than DD2.2 is not supported in this driver");
CONSOLE::displayf(ISTEP_COMP_NAME,
"Please update the system's processor modules");
#endif

TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"P9N less than DD2.2 is NOT SUPPORTED anymore. "
"Please upgrade proc modules");
/*@
* @errortype
* @moduleid ISTEP::MOD_SET_IPL_PARMS
* @reasoncode ISTEP::RC_P9N_LESS_THAN_DD22_NOT_SUPPORTED
* @userdata1 PVR of master proc
* @devdesc P9N (Nimbus) less than DD2.2 is not supported
* in this firmware driver. Please update
* your module or use a different driver
* @custdesc Down-level processor detected causing IPL to fail
*/
uint64_t l_dummy = 0x0;
l_err = new ERRORLOG::ErrlEntry(
ERRORLOG::ERRL_SEV_PREDICTIVE,
ISTEP::MOD_SET_IPL_PARMS,
ISTEP::RC_P9N_LESS_THAN_DD22_NOT_SUPPORTED,
l_pvr.word,
l_dummy);
l_err->addHwCallout(l_proc,
HWAS::SRCI_PRIORITY_HIGH,
HWAS::NO_DECONFIG,
HWAS::GARD_NULL );
l_err->addProcedureCallout(
HWAS::EPUB_PRC_INVALID_PART,
HWAS::SRCI_PRIORITY_HIGH);
// Create IStep error log and cross ref error that occurred
l_stepError.addErrorDetails( l_err );
errlCommit( l_err, ISTEP_COMP_ID );
}
}


TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "host_set_ipl_parms exit" );

return l_stepError.getErrorHandle();
Expand Down

0 comments on commit ada2cd8

Please sign in to comment.