diff options
author | CamVan Nguyen <ctnguyen@us.ibm.com> | 2012-11-18 18:20:40 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-12-04 06:59:34 -0600 |
commit | 55ba79e454fc989c561ee5f58435bf610f01dead (patch) | |
tree | 20335a310e411e77fd74650756ade3816d258e6f | |
parent | fb4ba1a1d81d050354d29ce16c047ed2028ca2c4 (diff) | |
download | blackbird-hostboot-55ba79e454fc989c561ee5f58435bf610f01dead.tar.gz blackbird-hostboot-55ba79e454fc989c561ee5f58435bf610f01dead.zip |
Update IPL flow for MPIPL mode
Change-Id: I185ab08b59ca0b76bf72246de82b5b8d32b60b14
RTC: 51687
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2382
Tested-by: Jenkins Server
Reviewed-by: Mark W. Wenning <wenning@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r-- | src/include/usr/initservice/initsvcstructs.H | 13 | ||||
-rw-r--r-- | src/include/usr/isteps/istep06list.H | 13 | ||||
-rw-r--r-- | src/include/usr/isteps/istep07list.H | 7 | ||||
-rw-r--r-- | src/include/usr/isteps/istep08list.H | 9 | ||||
-rw-r--r-- | src/include/usr/isteps/istep09list.H | 3 | ||||
-rw-r--r-- | src/include/usr/isteps/istep10list.H | 15 | ||||
-rw-r--r-- | src/include/usr/isteps/istep11list.H | 11 | ||||
-rw-r--r-- | src/include/usr/isteps/istep12list.H | 4 | ||||
-rw-r--r-- | src/include/usr/isteps/istep13list.H | 12 | ||||
-rw-r--r-- | src/include/usr/isteps/istep14list.H | 9 | ||||
-rw-r--r-- | src/include/usr/isteps/istep15list.H | 4 | ||||
-rw-r--r-- | src/include/usr/isteps/istep16list.H | 4 | ||||
-rw-r--r-- | src/include/usr/isteps/istep18list.H | 11 | ||||
-rw-r--r-- | src/include/usr/isteps/istep21list.H | 4 | ||||
-rw-r--r-- | src/usr/initservice/istepdispatcher/istepWorker.C | 30 | ||||
-rw-r--r-- | src/usr/initservice/istepdispatcher/istepdispatcher.C | 39 | ||||
-rw-r--r-- | src/usr/initservice/istepdispatcher/istepdispatcher.H | 18 |
17 files changed, 206 insertions, 0 deletions
diff --git a/src/include/usr/initservice/initsvcstructs.H b/src/include/usr/initservice/initsvcstructs.H index 58038bc22..2f2a4024f 100644 --- a/src/include/usr/initservice/initsvcstructs.H +++ b/src/include/usr/initservice/initsvcstructs.H @@ -106,6 +106,16 @@ enum ModuleType EXT_IMAGE, }; +/** + * @enum IplOpType + * bitmap indicating whether the task is an op in certain IPL modes. + */ +enum IplOpType +{ + IPL_NOOP = 0x00, + NORMAL_IPL_OP = 0x01, + MPIPL_OP = 0x02, +}; /** * @struct TaskFlags @@ -119,6 +129,9 @@ struct TaskFlags { TaskType task_type; // task execution flags ModuleType module_type; // BASE_IMAGE or EXT_IMAGE + uint8_t ipl_op; // bitmap of IplOpType enum + // indicating whether task + // is an op in certain IPL modes. }; diff --git a/src/include/usr/isteps/istep06list.H b/src/include/usr/isteps/istep06list.H index 2a23fe81c..29f354026 100644 --- a/src/include/usr/isteps/istep06list.H +++ b/src/include/usr/isteps/istep06list.H @@ -67,6 +67,7 @@ const TaskInfo g_istep06[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -75,6 +76,7 @@ const TaskInfo g_istep06[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -83,6 +85,7 @@ const TaskInfo g_istep06[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -92,6 +95,7 @@ const TaskInfo g_istep06[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -100,6 +104,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -108,6 +113,7 @@ const TaskInfo g_istep06[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -116,6 +122,7 @@ const TaskInfo g_istep06[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -124,6 +131,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -132,6 +140,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -140,6 +149,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -149,6 +159,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -158,6 +169,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -166,6 +178,7 @@ const TaskInfo g_istep06[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep07list.H b/src/include/usr/isteps/istep07list.H index 44dd0083f..73b4875a6 100644 --- a/src/include/usr/isteps/istep07list.H +++ b/src/include/usr/isteps/istep07list.H @@ -69,6 +69,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -77,6 +78,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -86,6 +88,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -96,6 +99,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -106,6 +110,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -116,6 +121,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -126,6 +132,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep08list.H b/src/include/usr/isteps/istep08list.H index 54b90aeab..d3565a9ee 100644 --- a/src/include/usr/isteps/istep08list.H +++ b/src/include/usr/isteps/istep08list.H @@ -73,6 +73,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -82,6 +83,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -92,6 +94,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -102,6 +105,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -112,6 +116,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -122,6 +127,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -132,6 +138,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -142,6 +149,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -152,6 +160,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep09list.H b/src/include/usr/isteps/istep09list.H index 55ceaba80..8ad4354b4 100644 --- a/src/include/usr/isteps/istep09list.H +++ b/src/include/usr/isteps/istep09list.H @@ -62,6 +62,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -71,6 +72,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -79,6 +81,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep10list.H b/src/include/usr/isteps/istep10list.H index 8b287e679..6d955fa73 100644 --- a/src/include/usr/isteps/istep10list.H +++ b/src/include/usr/isteps/istep10list.H @@ -82,6 +82,7 @@ const TaskInfo g_istep10[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -90,6 +91,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -99,6 +101,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -107,6 +110,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -115,6 +119,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -123,6 +128,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -131,6 +137,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -139,6 +146,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -147,6 +155,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -155,6 +164,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -163,6 +173,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -171,6 +182,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -179,6 +191,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -187,6 +200,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -196,6 +210,7 @@ const TaskInfo g_istep10[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep11list.H b/src/include/usr/isteps/istep11list.H index 142f8308a..7e24e61d9 100644 --- a/src/include/usr/isteps/istep11list.H +++ b/src/include/usr/isteps/istep11list.H @@ -76,6 +76,7 @@ const TaskInfo g_istep11[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -84,6 +85,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -92,6 +94,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -100,6 +103,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -108,6 +112,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -116,6 +121,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -124,6 +130,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -132,6 +139,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -140,6 +148,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -148,6 +157,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, { @@ -156,6 +166,7 @@ const TaskInfo g_istep11[] = { { START_FN, // task type EXT_IMAGE, // Extended Module + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep12list.H b/src/include/usr/isteps/istep12list.H index 28d2d5b02..d5cdd1f78 100644 --- a/src/include/usr/isteps/istep12list.H +++ b/src/include/usr/isteps/istep12list.H @@ -62,6 +62,7 @@ const TaskInfo g_istep12[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -71,6 +72,7 @@ const TaskInfo g_istep12[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -79,6 +81,7 @@ const TaskInfo g_istep12[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -87,6 +90,7 @@ const TaskInfo g_istep12[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep13list.H b/src/include/usr/isteps/istep13list.H index 5f4a627d9..a72e3afcd 100644 --- a/src/include/usr/isteps/istep13list.H +++ b/src/include/usr/isteps/istep13list.H @@ -78,6 +78,7 @@ const TaskInfo g_istep13[] = { { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -87,6 +88,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -95,6 +97,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -103,6 +106,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -111,6 +115,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -119,6 +124,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -127,6 +133,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -135,6 +142,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -143,6 +151,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -151,6 +160,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -159,6 +169,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -167,6 +178,7 @@ const TaskInfo g_istep13[] = { { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, diff --git a/src/include/usr/isteps/istep14list.H b/src/include/usr/isteps/istep14list.H index 6ab917036..eca3251e5 100644 --- a/src/include/usr/isteps/istep14list.H +++ b/src/include/usr/isteps/istep14list.H @@ -73,6 +73,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -82,6 +83,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -92,6 +94,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, { @@ -100,6 +103,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -110,6 +114,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -120,6 +125,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -130,6 +136,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP, } }, @@ -140,6 +147,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -148,6 +156,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + MPIPL_OP, } }, diff --git a/src/include/usr/isteps/istep15list.H b/src/include/usr/isteps/istep15list.H index 661ab204a..df9ed5f3c 100644 --- a/src/include/usr/isteps/istep15list.H +++ b/src/include/usr/isteps/istep15list.H @@ -63,6 +63,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -72,6 +73,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -80,6 +82,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, { @@ -88,6 +91,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, diff --git a/src/include/usr/isteps/istep16list.H b/src/include/usr/isteps/istep16list.H index d1c978bab..fef1983cf 100644 --- a/src/include/usr/isteps/istep16list.H +++ b/src/include/usr/isteps/istep16list.H @@ -63,6 +63,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -72,6 +73,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, @@ -82,6 +84,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, @@ -92,6 +95,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, diff --git a/src/include/usr/isteps/istep18list.H b/src/include/usr/isteps/istep18list.H index 324fcaa39..c3771b19f 100644 --- a/src/include/usr/isteps/istep18list.H +++ b/src/include/usr/isteps/istep18list.H @@ -59,6 +59,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -68,6 +69,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -77,6 +79,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -86,6 +89,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -96,6 +100,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -105,6 +110,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -114,6 +120,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -123,6 +130,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -132,6 +140,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -141,6 +150,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, { @@ -149,6 +159,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + NORMAL_IPL_OP | MPIPL_OP, } }, diff --git a/src/include/usr/isteps/istep21list.H b/src/include/usr/isteps/istep21list.H index 2212ec181..d1f848f98 100644 --- a/src/include/usr/isteps/istep21list.H +++ b/src/include/usr/isteps/istep21list.H @@ -63,6 +63,7 @@ namespace INITSERVICE { NONE, EXT_IMAGE, + IPL_NOOP, } }, @@ -72,6 +73,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + MPIPL_OP | NORMAL_IPL_OP, } }, { @@ -80,6 +82,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + MPIPL_OP | NORMAL_IPL_OP, } }, { @@ -88,6 +91,7 @@ namespace INITSERVICE { START_FN, EXT_IMAGE, + MPIPL_OP | NORMAL_IPL_OP, } }, diff --git a/src/usr/initservice/istepdispatcher/istepWorker.C b/src/usr/initservice/istepdispatcher/istepWorker.C index 85970047b..3ebbe6722 100644 --- a/src/usr/initservice/istepdispatcher/istepWorker.C +++ b/src/usr/initservice/istepdispatcher/istepWorker.C @@ -47,6 +47,7 @@ #include "istep_mbox_msgs.H" #include "istepWorker.H" +#include "istepdispatcher.H" // ----- namespace INITSERVICE ------------------------------------------- namespace INITSERVICE @@ -221,6 +222,9 @@ const TaskInfo * findTaskInfo( const uint32_t i_IStep, // default return is NULL const TaskInfo *l_pistep = NULL; + // Cache the ipl mode since it doesn't change during an IPL + static bool l_mpipl_mode = IStepDispatcher::getTheInstance().isMpiplMode(); + // apply filters do { @@ -277,6 +281,32 @@ const TaskInfo * findTaskInfo( const uint32_t i_IStep, break; } + // check to see if we should skip this istep + // This is possible depending on which IPL mode we're in + uint8_t l_ipl_op = g_isteps[i_IStep].pti[i_SubStep].taskflags.ipl_op; + if (true == l_mpipl_mode) + { + if (!(l_ipl_op & MPIPL_OP)) + { + TRACDCOMP( g_trac_initsvc, + "Skipping IStep %d SubStep %d for MPIPL mode", + i_IStep, + i_SubStep ); + break; + } + } + else + { + if (!(l_ipl_op & NORMAL_IPL_OP)) + { + TRACDCOMP( g_trac_initsvc, + "Skipping IStep %d SubStep %d for non MPIPL mode", + i_IStep, + i_SubStep ); + break; + } + } + // we're good, set the istep & return it to caller l_pistep = &( g_isteps[i_IStep].pti[i_SubStep] ); } while( 0 ); diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C index f22eb1db6..4ab29b806 100644 --- a/src/usr/initservice/istepdispatcher/istepdispatcher.C +++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C @@ -108,6 +108,11 @@ IStepDispatcher::IStepDispatcher () iv_curIStep = 0x0; iv_curSubStep = 0x0; iv_sync = false; + + // Save flag indicating whether we're in MPIPL mode + iv_mpipl_mode = checkMpiplMode(); + TRACFCOMP( g_trac_initsvc, "MPIPL mode = %u", + iv_mpipl_mode ); // init mailbox / message Q. iv_msgQ = msg_q_create(); @@ -915,4 +920,38 @@ bool IStepDispatcher::spLess ( void ) } +// ---------------------------------------------------------------------------- +// IStepDispatcher::checkMpiplMode() +// ---------------------------------------------------------------------------- +bool IStepDispatcher::checkMpiplMode( ) const +{ + using namespace TARGETING; + Target* l_pTopLevel = NULL; + bool l_isMpiplMode = false; + TargetService& l_targetService = targetService(); + + (void)l_targetService.getTopLevelTarget( l_pTopLevel ); + if( l_pTopLevel == NULL ) + { + TRACFCOMP( g_trac_initsvc, + "Top level handle was NULL" ); + l_isMpiplMode = false; + } + else + { + l_isMpiplMode = l_pTopLevel->getAttr<ATTR_IS_MPIPL> (); + } + + return l_isMpiplMode; +} + + +// ---------------------------------------------------------------------------- +// IStepDispatcher::isMpiplMode() +// ---------------------------------------------------------------------------- +bool IStepDispatcher::isMpiplMode( ) const +{ + return iv_mpipl_mode; +} + } // namespace diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.H b/src/usr/initservice/istepdispatcher/istepdispatcher.H index b3eba4c67..91d5c1503 100644 --- a/src/usr/initservice/istepdispatcher/istepdispatcher.H +++ b/src/usr/initservice/istepdispatcher/istepdispatcher.H @@ -172,6 +172,14 @@ public: void getIstepInfo ( uint8_t & o_iStep, uint8_t & o_subStep ); + /** + * @brief This function will return whether or not we are in MPIPL mode + * + * @return bool - flag indicating whether we're in MPIPL mode + * @retval false if not in MPIPL mode + * true if in MPIPL mode + */ + bool isMpiplMode( void ) const; protected: @@ -276,6 +284,15 @@ private: * @return bool - whether we are SPLESS. */ bool spLess ( void ); + + /** + * @brief This function will check whether or not we are in MPIPL mode + * + * @return bool - flag indicating whether we're in MPIPL mode + * @retval false if not in MPIPL mode + * true if in MPIPL mode + */ + bool checkMpiplMode ( void ) const; // ----- internal vars ----------------------------- @@ -287,6 +304,7 @@ private: uint8_t iv_curIStep; uint8_t iv_curSubStep; bool iv_sync; + bool iv_mpipl_mode; //flag indicating whether we're in MPIPL mode msg_q_t iv_msgQ; msg_t* iv_workerMsg; // More work Needed Msg from Worker msg_t* iv_Msg; // All other Msgs that need to be saved |