diff options
author | Vitaly Marin <mvitaly@us.ibm.com> | 2016-07-27 14:37:47 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-08-01 15:01:39 -0400 |
commit | 9cd81853e74344027127a8678e0be4618aa4746b (patch) | |
tree | 39642223afab12641e753ec3e9bb72c55c661e00 /src/usr/initservice/istepdispatcher | |
parent | a44d7064df1a51935e90b6ff22231ac7aa9e1ae4 (diff) | |
download | talos-hostboot-9cd81853e74344027127a8678e0be4618aa4746b.tar.gz talos-hostboot-9cd81853e74344027127a8678e0be4618aa4746b.zip |
Implemented Scale-Out Reconfig Loops for P9
- Software Reconfig Loop for istep 7
- Deep Reconfig loops (TI) for all other steps
Change-Id: I8e76b2ada9be0d62020552a216b49e790c8b9d2f
RTC:149248
CMVC-coreq: 1001106
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27535
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Jay M. Azurin <jmazurin@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/usr/initservice/istepdispatcher')
-rw-r--r-- | src/usr/initservice/istepdispatcher/istepdispatcher.C | 68 |
1 files changed, 27 insertions, 41 deletions
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C index c8c9de7de..fc1a89014 100644 --- a/src/usr/initservice/istepdispatcher/istepdispatcher.C +++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C @@ -88,14 +88,8 @@ namespace INITSERVICE /******************************************************************************/ extern trace_desc_t *g_trac_initsvc; const MBOX::queue_id_t HWSVRQ = MBOX::IPL_SERVICE_QUEUE; -const uint8_t INNER_START_STEP = 12; -const uint8_t INNER_START_SUBSTEP = 1; -const uint8_t INNER_STOP_STEP = 12; -const uint8_t INNER_STOP_SUBSTEP = 5; -const uint8_t OUTER_START_STEP = 10; -const uint8_t OUTER_START_SUBSTEP = 1; -const uint8_t OUTER_STOP_STEP = 14; -const uint8_t OUTER_STOP_SUBSTEP = 5; +const uint8_t SW_RECONFIG_START_STEP = 7; +const uint8_t SW_RECONFIG_START_SUBSTEP = 1; const uint8_t HB_START_ISTEP = 6; // @todo RTC 124679 - Remove Once BMC Monitors Shutdown Attention @@ -372,6 +366,11 @@ errlHndl_t IStepDispatcher::executeAllISteps() uint32_t substep = 0; bool l_doReconfig = false; uint32_t numReconfigs = 0; + + // soft reconfig loops happen really fast + // and since for scale-out systems it only happens for istep 7 + // there is no significant max time delay to recover the system + // because all in all other steps it will result in TI const uint32_t MAX_NUM_RECONFIG_ATTEMPTS = 30; TRACFCOMP(g_trac_initsvc, ENTER_MRK"IStepDispatcher::executeAllISteps()"); @@ -1945,43 +1944,30 @@ bool IStepDispatcher::checkReconfig(const uint8_t i_curIstep, uint8_t & o_newSubstep) { bool doReconfigure = false; - TRACDCOMP(g_trac_initsvc, ENTER_MRK"IStepDispatcher::checkReconfig(): istep %d.%d", + TRACDCOMP(g_trac_initsvc, + ENTER_MRK"IStepDispatcher::checkReconfig(): istep %d.%d", i_curIstep, i_curSubstep); - uint16_t current = (i_curIstep << 8) | i_curSubstep; - const uint16_t INNER_START = (INNER_START_STEP << 8) | INNER_START_SUBSTEP; - const uint16_t INNER_STOP = (INNER_STOP_STEP << 8) | INNER_STOP_SUBSTEP; - const uint16_t OUTER_START = (OUTER_START_STEP << 8) | OUTER_START_SUBSTEP; - const uint16_t OUTER_STOP = (OUTER_STOP_STEP << 8) | OUTER_STOP_SUBSTEP; - - // TODO RTC:101925. PRD enables FIRs in Istep 11. If Istep 12 deconfigures - // HW that is asserting FIRs and performs the Inner Reconfig Loop then PRD - // ends up logging errors when it sees FIR bits for the deconfigured HW. - // The fix is to dispense with the Inner Reconfig Loop, if the code loops - // back to Istep 10 then everything is cleaned up. This issue will be - // resolved with RTC 101925 - const bool INNER_LOOP_ENABLED = false; - - // If current step is within major step 12 - if ( INNER_LOOP_ENABLED && - ((current >= INNER_START) && (current <= INNER_STOP)) ) + //@TODO-RTC:158411 for Cumulus support reconfig logic needs to be updated + // Software reconfig loop happens in istep 7 only. + // The rest of the isteps should result in TI path for scale-out systems + if( (i_curIstep == SW_RECONFIG_START_STEP) + && (i_curSubstep >= SW_RECONFIG_START_SUBSTEP ) ) { + TRACDCOMP(g_trac_initsvc, + ENTER_INFO"checkReconfig(): SW RECONFIGURE is ON at istep %d.%d", + i_curIstep, i_curSubstep); doReconfigure = true; - // Loop back to 12.1 - o_newIstep = INNER_START_STEP; - o_newSubstep = INNER_START_SUBSTEP; - } - // Else if current step is outside of 12 but in step 10, 11, 13 or - // 14 (up to 14.5) - else if ((current >= OUTER_START) && (current <= OUTER_STOP)) - { - doReconfigure = true; - // Loop back to 10.1 - o_newIstep = OUTER_START_STEP; - o_newSubstep = OUTER_START_SUBSTEP; - } - - TRACDCOMP(g_trac_initsvc, EXIT_MRK"IStepDispatcher::checkReconfig: reconfig new istep/substep: %d %d.%d", + o_newIstep = SW_RECONFIG_START_STEP; + o_newSubstep = SW_RECONFIG_START_SUBSTEP; + }else + { + //remember that TI will be requested for all other steps outside + //software reconfig istep 7 in NIMBUS for scale-out systems + } + + TRACDCOMP(g_trac_initsvc, + EXIT_MRK"IStepDispatcher::checkReconfig: new istep/substep: %d %d.%d", doReconfigure, o_newIstep, o_newSubstep); return doReconfigure; |