summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMark Wenning <wenning@us.ibm.com>2011-09-22 17:42:01 -0500
committerMark W. Wenning <wenning@us.ibm.com>2011-10-20 18:07:04 -0500
commit591bf9abfe58c662a8e81820fdc96b90b85a9b55 (patch)
treee603935f90a1c49d5d8767d535168cd71da56b16 /src
parent0eb945c47156b32f4028867969b153652baa3ad3 (diff)
downloadtalos-hostboot-591bf9abfe58c662a8e81820fdc96b90b85a9b55.tar.gz
talos-hostboot-591bf9abfe58c662a8e81820fdc96b90b85a9b55.zip
RTC3872: Hardware Availability Service: Add HWAS as first ISTEP
- first commit - change isteplist to call hwas - comment out test isteps - modify xml to add HWAS_STATE attribute - add macros to taskargs - remove debug trace from taskargs - add call to init_fsi - post-review - merge xml files - forgot one printkd Change-Id: Iab3b1f85c401f9a176ed84ddb91263caf25a3d56 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/430 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/hbotcompid.H7
-rw-r--r--src/include/usr/hwas/hwas.H138
-rw-r--r--src/include/usr/initservice/initsvcreasoncodes.H16
-rw-r--r--src/include/usr/initservice/initsvcstructs.H14
-rw-r--r--src/include/usr/initservice/taskargs.H46
-rw-r--r--src/include/usr/isteps/istep4list.H137
-rw-r--r--src/include/usr/isteps/isteplist.H155
-rw-r--r--src/include/usr/isteps/istepmasterlist.H83
-rw-r--r--src/include/usr/isteps/isteps.H50
-rw-r--r--src/makefile4
-rw-r--r--src/usr/cxxtest/cxxtestexec.C26
-rw-r--r--src/usr/errl/parser/makefile4
-rw-r--r--src/usr/hwas/hwas.C141
-rw-r--r--src/usr/hwas/makefile30
-rw-r--r--src/usr/hwas/test/hwas1test.H138
-rw-r--r--src/usr/hwas/test/makefile (renamed from src/usr/isteps/makefile)16
-rw-r--r--src/usr/initservice/baseinitsvc/initservice.C2
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.C30
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.H6
-rw-r--r--src/usr/initservice/taskargs/taskargs.C12
-rw-r--r--src/usr/isteps/istep1.C183
-rw-r--r--src/usr/isteps/isteps.H42
-rw-r--r--src/usr/makefile2
-rw-r--r--src/usr/targeting/xmltohb/attribute_types.xml53
-rw-r--r--src/usr/targeting/xmltohb/target_types.xml1
25 files changed, 844 insertions, 492 deletions
diff --git a/src/include/usr/hbotcompid.H b/src/include/usr/hbotcompid.H
index 031eb4fda..4ea554d74 100644
--- a/src/include/usr/hbotcompid.H
+++ b/src/include/usr/hbotcompid.H
@@ -138,5 +138,12 @@ const compId_t TARG_COMP_ID = 0x0B00;
const char TARG_COMP_NAME[] = "targ";
//@}
+/** @name HWAS
+ * Hardware Availability Service
+ */
+//@{
+const compId_t HWAS_COMP_ID = 0x0C00;
+const char HWAS_COMP_NAME[] = "hwas";
+//@}
#endif
diff --git a/src/include/usr/hwas/hwas.H b/src/include/usr/hwas/hwas.H
new file mode 100644
index 000000000..b053bc843
--- /dev/null
+++ b/src/include/usr/hwas/hwas.H
@@ -0,0 +1,138 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/include/usr/hwas/hwas.H $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef __HWAS_HWAS_H
+#define __HWAS_HWAS_H
+/**
+ * @file hwas.H
+ *
+ * HardWare Availability Service prototypes.
+ * In trying to keep with C++ tradition, doxygen documentation for functions
+ * are here in the .H file.
+ *
+ * All of the following routines are "named isteps" - they are invoked as
+ * tasks by the @ref IStepDispatcher.
+ *
+ */
+
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+
+
+namespace HWAS
+{
+ /*
+ * @brief init_target_states
+ *
+ * Currently the state of every target is held in one bitmapped attribute
+ * called HWAS_STATE. HWAS_STATES is a read-only attribute - defaults are
+ * stored in flash, so they are already initialized.
+ * See src/user/errl/targeting/xmltohb/hb.xml for the settings.
+ * This is left as a placeholder when/if we add more attributes.
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ *
+ */
+ void init_target_states( void *io_pArgs );
+
+ /**
+ * @brief init_fsi
+ *
+ * Call into the fsi component to "walk the bus" and collect information
+ * on the hardware configuration.
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ */
+ void init_fsi( void *io_pArgs );
+
+ /**
+ * @brief apply_fsi_info
+ *
+ * Call into the FSI Component, read the hardware information, and apply
+ * it to the target states.
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ */
+ void apply_fsi_info( void *io_pArgs );
+
+ /**
+ * @brief apply_dd_presence
+ *
+ * Iterate over all targets and apply presence detect information to the
+ * target states.
+ * TBD
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ */
+ void apply_dd_presence( void *io_pArgs );
+
+ /**
+ * @brief apply_pr_keyword_data
+ *
+ * TBD
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ *
+ */
+ void apply_pr_keyword_data( void *io_pArgs );
+
+ /**
+ * @brief apply_partial bad
+ *
+ * Collect Partial Bad information and apply it to the target states.
+ * TBD
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ */
+ void apply_partial_bad( void *io_pArgs );
+
+ /**
+ * @brief apply_gard
+ *
+ * Collect GARD information and apply it to the target states.
+ * TBD
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return none
+ */
+ void apply_gard( void *io_pArgs );
+
+
+}; // end namespace
+
+#endif
diff --git a/src/include/usr/initservice/initsvcreasoncodes.H b/src/include/usr/initservice/initsvcreasoncodes.H
index 3e7d16811..52c58d669 100644
--- a/src/include/usr/initservice/initsvcreasoncodes.H
+++ b/src/include/usr/initservice/initsvcreasoncodes.H
@@ -80,6 +80,20 @@ enum InitServiceModuleID
ISTEP_4_ERRL_ID,
ISTEP_5_ERRL_ID,
+ //
+ // HWAS: ISTEP 4
+ // HWAS named isteps (substeps)
+ // @todo sync these names up with Dean's document later
+ //
+ HWAS_1_ERRL_ID,
+ HWAS_2_ERRL_ID,
+ HWAS_3_ERRL_ID,
+ HWAS_4_ERRL_ID,
+ HWAS_5_ERRL_ID,
+ HWAS_6_ERRL_ID,
+ HWAS_7_ERRL_ID,
+ HWAS_8_ERRL_ID,
+
// reserve some tasks for my unit tests...
START_CXXTEST_ERRL_ID = 0xf0,
INIT_SVC_TEST1_ERRL_ID,
@@ -102,6 +116,8 @@ enum InitServiceReasonCode
EXTINITSVC_FAILED_NO_ERRLOG = INITSVC_COMP_ID | 0x07,
CXXTEST_FAILED_NO_ERRLOG = INITSVC_COMP_ID | 0x08,
+
+
};
}; // namespace INITSERVICE
diff --git a/src/include/usr/initservice/initsvcstructs.H b/src/include/usr/initservice/initsvcstructs.H
index bc459da4b..5ad0ddad7 100644
--- a/src/include/usr/initservice/initsvcstructs.H
+++ b/src/include/usr/initservice/initsvcstructs.H
@@ -35,6 +35,7 @@
#include <stdint.h>
#include <sys/vfs.h> // VFS_MODULE_MAX
+
namespace INITSERVICE
{
@@ -117,6 +118,19 @@ struct TaskInfo
};
+
+/**
+ * @struct ExtTaskInfo
+ *
+ * struct to store the TaskInfo for the ISteps, plus the number of items in
+ * the istep (calculated at compiletime).
+ */
+struct ExtTaskInfo
+{
+ const TaskInfo *const pti;
+ const uint64_t numitems;
+};
+
} // namespace
#endif
diff --git a/src/include/usr/initservice/taskargs.H b/src/include/usr/initservice/taskargs.H
index 39c7c86cc..7f32b05c0 100644
--- a/src/include/usr/initservice/taskargs.H
+++ b/src/include/usr/initservice/taskargs.H
@@ -41,25 +41,45 @@
#include <errl/errlentry.H>
#include <errl/errlmanager.H>
+
+/**
+ * @note macro to setup the input void * pArgs pointer.
+ * Casts it to a pointer to the incoming TaskArgs struct
+ */
+#define TASKARGS_INIT_TASKARGS(P_ARGS) \
+ INITSERVICE::TaskArgs *pTaskArgs = \
+ static_cast<INITSERVICE::TaskArgs *>(P_ARGS)
+
+/**
+ * @note macro to wait on the TaskArgs barrier and end the task
+ */
+#define TASKARGS_WAIT_AND_ENDTASK() \
+ if ( pTaskArgs ) \
+ { \
+ pTaskArgs->waitChildSync(); \
+ } \
+ task_end() \
+
+/**
+ * @note macro to post an error log to IStepDispatcher
+ */
+#define POST_ERROR_LOG( MyErrl ) \
+ pTaskArgs->postErrorLog( MyErrl )
+
+
/**
* @note macro to set up a _start() task entry routine.
*/
#define TASK_ENTRY_MACRO( MyInitFn ) \
-extern "C" \
-void _start( void *io_pArgs ) \
-{ \
- INITSERVICE::TaskArgs *pTaskArgs = \
- static_cast<INITSERVICE::TaskArgs *>(io_pArgs); \
- \
- MyInitFn( pTaskArgs ); \
+ extern "C" \
+ void _start( void *io_pArgs ) \
+ { \
+ TASKARGS_INIT_TASKARGS(io_pArgs); \
\
- if ( pTaskArgs ) \
- { \
- pTaskArgs->waitChildSync(); \
- } \
+ MyInitFn( pTaskArgs ); \
\
- task_end(); \
-}
+ TASKARGS_WAIT_AND_ENDTASK(); \
+ }
namespace INITSERVICE
diff --git a/src/include/usr/isteps/istep4list.H b/src/include/usr/isteps/istep4list.H
new file mode 100644
index 000000000..bae45fc18
--- /dev/null
+++ b/src/include/usr/isteps/istep4list.H
@@ -0,0 +1,137 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/include/usr/isteps/istep4list.H $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef __ISTEPS_ISTEP4LIST_H
+#define __ISTEPS_ISTEP4LIST_H
+
+/**
+ * @file istep4list.H
+ *
+ * list of functions called by HWAS (ISTEP 4) - "named isteps"
+ *
+ */
+
+
+#include <initservice/initsvcstructs.H>
+#include <initservice/initsvcreasoncodes.H>
+
+#include <hwas/hwas.H>
+
+namespace INITSERVICE
+{
+
+/**
+ * @note IStep definition for for Hardware Availability Service (HWAS)
+ *
+ * 1. Initialize Target States
+ * 1.POWERED_ON=true
+ * 2.PRESENT=false
+ * 3.FUNCTIONAL=false
+ * 4.CHANGED_SINCE_LAST_IPL
+ * 5.GARD Level (4 bits)
+ * 6.Others?
+ * 2. Call FSI module to "walk the bus" and collect presence information.
+ * 3. Call FSI module interface to collect presence information
+ * 4. Apply presence data: DD framework (Call loaded device drivers)
+ * 5. Apply PR keyword data
+ * 6. Apply Partial Bad data (call Partial Bad module)
+ * 7. Apply GARD data (call GARD module)
+ *
+ */
+const TaskInfo g_istep4[] = {
+
+ {
+ "init_target_states" , // substep name
+ HWAS::init_target_states, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_1_ERRL_ID, // module id
+ }
+ },
+ {
+ "init_fsi" , // substep name
+ HWAS::init_fsi, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_2_ERRL_ID, // module id
+ }
+ },
+ {
+ "apply_fsi_info" , // substep name
+ HWAS::apply_fsi_info, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_3_ERRL_ID, // module id
+ }
+ },
+ {
+ "apply_dd_presence" , // substep name
+ HWAS::apply_dd_presence, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_5_ERRL_ID, // module id
+ }
+ },
+ {
+ "apply_pr_keyword_data" , // substep name
+ HWAS::apply_pr_keyword_data, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_6_ERRL_ID, // module id
+ }
+ },
+ {
+ "apply_partial_bad" , // substep name
+ HWAS::apply_partial_bad, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_7_ERRL_ID, // module id
+ }
+ },
+ {
+ "apply_gard" , // substep name
+ HWAS::apply_gard, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ HWAS_8_ERRL_ID, // module id
+ }
+ }
+
+ // END OF LIST!
+};
+
+// make a struct from the above with the number of items included
+const ExtTaskInfo g_istep4TaskList = {
+ g_istep4,
+ ( sizeof(g_istep4)/sizeof(TaskInfo) )
+};
+
+}; // end namespace
+
+#endif
diff --git a/src/include/usr/isteps/isteplist.H b/src/include/usr/isteps/isteplist.H
deleted file mode 100644
index 730310b87..000000000
--- a/src/include/usr/isteps/isteplist.H
+++ /dev/null
@@ -1,155 +0,0 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/include/usr/isteps/isteplist.H $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
-#ifndef __ISTEPS_H
-#define __ISTEPS_H
-
-/**
- * @file isteplist.H
- *
- * TaskInfo structs for each task that will run in the extended image.
- */
-
-#include <vector>
-
-#include <initservice/initsvcreasoncodes.H>
-#include <initservice/initsvcstructs.H>
-
-#include "isteps.H"
-
-
-namespace INITSERVICE
-{
-
-const uint64_t MAX_SUBSTEPS = 25;
-
-/**
- * @struct ExtTaskInfo
- *
- * struct to store the TaskInfo for this IStep, plus the number of items in
- * the istep (calculated at compiletime).
- */
-struct ExtTaskInfo
-{
- const TaskInfo *const pti;
- const uint64_t numitems;
-};
-
-const TaskInfo istep0[] = {
-
- {
- "istep0_substep0" , // istep name
- ISTEPS::IStep0sub0, // pointer to fn
- {
- NONE, // task type
- EXT_IMAGE, // Extended Module
- ISTEP_1_ERRL_ID, // module id
- }
- },
-
- {
- "istep0_substep1" , // istep name
- ISTEPS::IStep0sub1, // pointer to fn
- {
- NONE, // task type
- EXT_IMAGE, // Extended Module
- ISTEP_1_ERRL_ID, // module id
- }
- },
-
- // ---------------------------------------------------------------
- // ----- END OF LIST!!! ---------------------------------------
- // ---------------------------------------------------------------
- /**
- * @brief last task in the list
- */
- {
- "end_istep0" , // dummy string
- NULL, // pointer to fn
- {
- END_TASK_LIST, // end of list
- UNDEFINED_MT, // dummy module type
- UNDEFINED_MODULE_ERRL_ID, // dummy errorlog
- }
- },
-};
-
-// make a struct from the above with the number of items included
-const ExtTaskInfo g_istep0 = {
- &(istep0[0]),
- ( sizeof(istep0)/sizeof(TaskInfo) ) // numitems
-};
-
-
-const TaskInfo istep1[] = {
-
- /**
- * @brief targeting task, initializes extended module area
- */
- {
- "istep1_sub0" , // istep name
- ISTEPS::IStep1sub0, // pointer to fn
- {
- NONE, // task type
- EXT_IMAGE, // Extended Module
- ISTEP_1_ERRL_ID, // module id
- }
- },
-
- // ---------------------------------------------------------------
- // ----- END OF LIST!!! ---------------------------------------
- // ---------------------------------------------------------------
-
- /**
- * @brief last task in the list
- */
- {
- "end" , // dummy string
- NULL, // pointer to fn
- {
- END_TASK_LIST, // end of list
- UNDEFINED_MT, // dummy module type
- UNDEFINED_MODULE_ERRL_ID, // dummy errorlog
- }
- },
-};
-
-// make a struct from the above with the number of items included
-ExtTaskInfo g_istep1 = {
- istep1,
- ( sizeof(istep1)/sizeof(TaskInfo) )
-};
-
-
-// initialize an array of ExtTaskInfo
-const ExtTaskInfo g_isteps[] = {
- g_istep0,
- g_istep1,
-};
-
-// publish the size of the g_isteps array
-const uint64_t MAX_ISTEPS = sizeof(g_isteps)/sizeof(TaskInfo *) ;
-
-
-}; // namespace
-
-#endif
diff --git a/src/include/usr/isteps/istepmasterlist.H b/src/include/usr/isteps/istepmasterlist.H
new file mode 100644
index 000000000..ebdad717d
--- /dev/null
+++ b/src/include/usr/isteps/istepmasterlist.H
@@ -0,0 +1,83 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/include/usr/isteps/istepmasterlist.H $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef __ISTEPS_ISTEPMASTERLIST_H
+#define __ISTEPS_ISTEPMASTERLIST_H
+
+/**
+ * @file isteplist.H
+ *
+ * ExtTaskInfo structs for each IStep that will run.
+ *
+ * This is the master list of ISTeps.
+ * To add a new IStep, make a new file in the isteps directory and name
+ * it "istepNlist.H", where N is the IStep number.
+ * The file will have 2 const arrays of structs defined (see initsvcstructs.H)
+ *
+ * const TaskInfo g_istepN[] // define the substeps/"named isteps" within
+ * // the IStep
+ *
+ * Read through initsvcstructs.H to understand how the TaskInfo Array is
+ * put together.
+ *
+ * Then build the ExtTaskInfo struct:
+ * const ExtTaskInfo g_istepNTaskList = {
+ * g_istepN,
+ * ( sizeof(g_istepN)/sizeof(TaskInfo) )
+ * }
+ *
+ * Then add the pointer to istepNTaskList to the bottom of the g_isteps[]
+ * array below. IStepDispatcher should pick up the new IStep automagically.
+ *
+ */
+
+#include <vector>
+#include <initservice/initsvcstructs.H>
+
+// include list for IStep 4 (HWAS)
+#include "istep4list.H"
+
+
+namespace INITSERVICE
+{
+
+// initialize an array of ExtTaskInfo
+const ExtTaskInfo g_isteps[] = {
+ { NULL, 0 }, // dummy IStep 1
+ { NULL, 0 }, // dummy IStep 2
+ { NULL, 0 }, // dummy IStep 3
+ INITSERVICE::g_istep4TaskList, // HWAS
+
+ //
+ // add further istep lists at the end.
+};
+
+
+const uint64_t MAX_SUBSTEPS = 25;
+
+// publish the size of the g_isteps array
+const uint64_t MAX_ISTEPS = sizeof(g_isteps)/sizeof(ExtTaskInfo) ;
+
+
+}; // namespace
+
+#endif
diff --git a/src/include/usr/isteps/isteps.H b/src/include/usr/isteps/isteps.H
deleted file mode 100644
index b8dac9132..000000000
--- a/src/include/usr/isteps/isteps.H
+++ /dev/null
@@ -1,50 +0,0 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/include/usr/isteps/isteps.H $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
-/**
- * @file isteps.H
- *
- * Prototypes of ISteps launched by IStepDispatcher
- * used by isteplist.H
- *
- */
-
-
-/******************************************************************************/
-// Includes
-/******************************************************************************/
-#include <stdint.h>
-
-namespace ISTEPS
-{
-
-extern "C"
-void IStep0sub0( void * io_pArgs );
-
-extern "C"
-void IStep0sub1( void * io_pArgs );
-
-extern "C"
-void IStep1sub0( void * io_pArgs );
-
-
-} // namespace
diff --git a/src/makefile b/src/makefile
index d407f6549..2f1449342 100644
--- a/src/makefile
+++ b/src/makefile
@@ -47,14 +47,14 @@ BASE_MODULES = trace errl devicefw scom xscom initservice taskargs pnor i2c \
fsi vfs
EXTENDED_MODULES = targeting ecmddatabuffer hwpf fapi hwp plat \
- extinitsvc istepdisp isteps
+ extinitsvc istepdisp hwas
DIRECT_BOOT_MODULES = example
RUNTIME_MODULES =
TESTCASE_MODULES = cxxtest testerrl testdevicefw testsyslib \
testscom testxscom testtargeting testinitservice testkernel \
testhwpf testecmddatabuffer initsvctasktest2 testcxxtest \
- testpnor testi2c testfsi testvfs
+ testpnor testi2c testfsi testvfs testhwas
RELOCATABLE_IMAGE_LDFLAGS = -pie --export-dynamic
diff --git a/src/usr/cxxtest/cxxtestexec.C b/src/usr/cxxtest/cxxtestexec.C
index 58540c3ff..31c58824c 100644
--- a/src/usr/cxxtest/cxxtestexec.C
+++ b/src/usr/cxxtest/cxxtestexec.C
@@ -67,8 +67,8 @@ void _start(void *io_pArgs)
errlHndl_t l_errl = NULL;
std::vector<const char *> module_list;
tid_t tidrc = 0;
- TaskArgs::TaskArgs *pTaskArgs =
- reinterpret_cast<TaskArgs::TaskArgs *>(io_pArgs);
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
// output a blank line so that it's easier to find the beginning of
// CxxTest
@@ -121,30 +121,24 @@ void _start(void *io_pArgs)
*i, tidrc );
}
- TRACDCOMP( g_trac_cxxtest, "Waiting for all tasks to finish....");
+ TRACFCOMP( g_trac_cxxtest, "Waiting for all tasks to finish....");
// wait for all the launched tasks to finish
barrier_wait( &CxxTest::g_CxxTestBarrier );
__sync_add_and_fetch(&CxxTest::g_ModulesCompleted, 1);
- TRACDCOMP( g_trac_cxxtest, " ModulesCompleted=%d",
+ TRACFCOMP( g_trac_cxxtest, " ModulesCompleted=%d",
CxxTest::g_ModulesCompleted );
- TRACDCOMP( g_trac_cxxtest, EXIT_MRK "Finished CxxTestExec: ");
- TRACDCOMP( g_trac_cxxtest, " total tests: %d",
+ TRACFCOMP( g_trac_cxxtest, EXIT_MRK "Finished CxxTestExec: ");
+ TRACFCOMP( g_trac_cxxtest, " total tests: %d",
CxxTest::g_TotalTests );
- TRACDCOMP( g_trac_cxxtest, " failed tests: %d",
+ TRACFCOMP( g_trac_cxxtest, " failed tests: %d",
CxxTest::g_FailedTests );
- TRACDCOMP( g_trac_cxxtest, " warnings: %d",
+ TRACFCOMP( g_trac_cxxtest, " warnings: %d",
CxxTest::g_Warnings );
- TRACDCOMP( g_trac_cxxtest, " trace calls: %d",
+ TRACFCOMP( g_trac_cxxtest, " trace calls: %d",
CxxTest::g_TraceCalls );
- // wait for TaskArgs barrier
- if ( pTaskArgs )
- {
- pTaskArgs->waitChildSync();
- }
-
- task_end();
+ TASKARGS_WAIT_AND_ENDTASK();
}
diff --git a/src/usr/errl/parser/makefile b/src/usr/errl/parser/makefile
index d87017a3b..a48373c65 100644
--- a/src/usr/errl/parser/makefile
+++ b/src/usr/errl/parser/makefile
@@ -32,11 +32,11 @@ SRCPARSE_HEADER_TARGET = \
${GENFILES}/hostBootSrcParse.H
CC=g++ -m32
-CFLAGS:=-g -O0 -I $(ROOTPATH)/src/include/usr
+CFLAGS:=-g -O0 -I $(ROOTPATH)/src/include/usr -D PARSER
BIN:=bin
-all: code_pass
+all: gen_pass code_pass
gen_pass:
diff --git a/src/usr/hwas/hwas.C b/src/usr/hwas/hwas.C
new file mode 100644
index 000000000..c7872d033
--- /dev/null
+++ b/src/usr/hwas/hwas.C
@@ -0,0 +1,141 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/usr/hwas/hwas.C $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+
+/**
+ * @file hwas.C
+ *
+ * HardWare Availability Service functions.
+ * See hwas.H for doxygen documentation tags.
+ *
+ */
+
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+
+#include <kernel/console.H>
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+#include <targeting/target.H> // targeting
+
+#include <fsi/fsiif.H>
+#include <hwas/hwas.H>
+
+
+namespace HWAS
+{
+ trace_desc_t *g_trac_hwas = NULL;
+ TRAC_INIT(&g_trac_hwas, "HWAS", 1024 ); // yah.
+
+ using namespace TARGETING; //
+
+ void init_target_states( void *io_pArgs )
+ {
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "init_target_states entry" );
+ // printkd("init_target_states\n");
+
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+ void init_fsi( void *io_pArgs )
+ {
+ errlHndl_t l_errl = NULL;
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "init_fsi entry" );
+ // printkd("init_fsi\n");
+
+ l_errl = FSI::initializeHardware( );
+ if ( l_errl )
+ {
+ TRACFCOMP( g_trac_hwas, "ERROR: failed to init FSI hardware" );
+ POST_ERROR_LOG( l_errl );
+ }
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+ void apply_fsi_info( void *io_pArgs )
+ {
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "apply_fsi_info entry" );
+ //printkd("apply_fsi_info\n");
+
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+ void apply_dd_presence( void *io_pArgs )
+ {
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "apply_dd_presence entry" );
+ //printkd("apply_dd_presence\n");
+
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+ void apply_pr_keyword_data( void *io_pArgs )
+ {
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "apply_pr_keyword_data" );
+ //printkd("apply_pr_keyword_data\n");
+
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+ void apply_partial_bad( void *io_pArgs )
+ {
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "apply_partial_bad entry" );
+ //printkd("apply_partial_bad\n");
+
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+ void apply_gard( void *io_pArgs )
+ {
+ TASKARGS_INIT_TASKARGS( io_pArgs );
+
+ TRACDCOMP( g_trac_hwas, "apply_gard entry" );
+ //printkd("apply_gard\n");
+
+
+ TASKARGS_WAIT_AND_ENDTASK();
+ }
+
+
+}; // end namespace
+
diff --git a/src/usr/hwas/makefile b/src/usr/hwas/makefile
new file mode 100644
index 000000000..c4a596500
--- /dev/null
+++ b/src/usr/hwas/makefile
@@ -0,0 +1,30 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/hwas/makefile $
+#
+# IBM CONFIDENTIAL
+#
+# COPYRIGHT International Business Machines Corp. 2011
+#
+# p1
+#
+# Object Code Only (OCO) source materials
+# Licensed Internal Code Source Materials
+# IBM HostBoot Licensed Internal Code
+#
+# The source code for this program is not published or other-
+# wise divested of its trade secrets, irrespective of what has
+# been deposited with the U.S. Copyright Office.
+#
+# Origin: 30
+#
+# IBM_PROLOG_END
+ROOTPATH = ../../..
+MODULE = hwas
+
+OBJS = hwas.o
+
+SUBDIRS=test.d
+
+include ${ROOTPATH}/config.mk
diff --git a/src/usr/hwas/test/hwas1test.H b/src/usr/hwas/test/hwas1test.H
new file mode 100644
index 000000000..2ee648158
--- /dev/null
+++ b/src/usr/hwas/test/hwas1test.H
@@ -0,0 +1,138 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/usr/targeting/test/targetingtest.H $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef __TESTTARGETING_H
+#define __TESTTARGETING_H
+
+/**
+ * @file testtargeting.H
+ *
+ * @brief Unit tests for HWAS (ISTEP 4)
+ */
+
+//******************************************************************************
+// Includes
+//******************************************************************************
+
+// STD
+#include <stdio.h>
+#include <sys/time.h>
+
+// CXXTEST
+#include <cxxtest/TestSuite.H>
+#include <hwpf/plat/fapiPlatAttributeService.H>
+#include <fapiReturnCode.H>
+#include <fapiAttributeIds.H>
+#include <fapiAttributeService.H>
+#include <errl/errlmanager.H>
+
+// This component
+#include <targeting/attributes.H>
+#include <targeting/entitypath.H>
+#include <targeting/target.H>
+#include <targeting/targetservice.H>
+#include <targeting/iterators/rangefilter.H>
+#include <targeting/predicates/predicatectm.H>
+#include <targeting/predicates/predicatepostfixexpr.H>
+
+class HWAS1test: public CxxTest::TestSuite
+{
+public:
+
+ /**
+ * @brief Walk all the targets and verify that HWAS_STATE is set
+ * correctly.
+ *
+ * @note Results of this test will change as more stuff gets added to
+ * HWAS - how to fix?
+ */
+ void testHWASdefaultPresence()
+ {
+
+ nanosleep(1,0);
+ TS_TRACE(ENTER_MRK "testHWASdefaultPresence" );
+
+ using namespace TARGETING;
+
+ TargetService& l_targetService = targetService();
+
+ l_targetService.init();
+
+
+ // get top level
+ // Post init
+ // Test: void getTopLevelTarget(Target*& o_targetHandle) const;
+
+ Target* l_pTopLevel = NULL;
+ (void) l_targetService.getTopLevelTarget(l_pTopLevel);
+ if (l_pTopLevel == NULL)
+ {
+ TS_FAIL("Top level handle was NULL when initialization complete");
+ }
+
+ // Post init
+ // Test: void getAssociated(
+ // const Target* i_pTarget,
+ // ASSOCIATION_TYPE i_type,
+ // RECURSION_LEVEL i_recursionLevel,
+ // TargetHandleList& o_list) const;
+
+ TargetHandleList l_list;
+ (void) l_targetService.getAssociated(
+ l_list,
+ l_pTopLevel,
+ TARGETING::TargetService::CHILD,
+ TARGETING::TargetService::ALL);
+
+ TS_TRACE("Child list size is 0x%x", l_list.size() );
+ for (uint64_t i=0; i<l_list.size(); i++ )
+ {
+ // 2011-10-19 all attribute fields should be 0 at this point.
+ if ( ( l_list[i]->getAttr<ATTR_HWAS_STATE>().poweredOn)
+ || ( l_list[i]->getAttr<ATTR_HWAS_STATE>().present)
+ || ( l_list[i]->getAttr<ATTR_HWAS_STATE>().functional)
+ || ( l_list[i]->getAttr<ATTR_HWAS_STATE>().changedSinceLastIPL)
+ || ( l_list[i]->getAttr<ATTR_HWAS_STATE>().gardLevel)
+ )
+ {
+ l_list[i]->getAttr<ATTR_PHYS_PATH>().dump();
+ TS_TRACE( " poweredOn = 0x%x",
+ l_list[i]->getAttr<ATTR_HWAS_STATE>().poweredOn );
+ TS_TRACE( " present = 0x%x",
+ l_list[i]->getAttr<ATTR_HWAS_STATE>().present );
+ TS_TRACE( " l_functional = 0x%x",
+ l_list[i]->getAttr<ATTR_HWAS_STATE>().functional );
+ TS_TRACE( " l_changedSinceLastIPL = 0x%x",
+ l_list[i]->getAttr<ATTR_HWAS_STATE>().changedSinceLastIPL );
+ TS_TRACE( " l_gardLevel = 0x%x",
+ l_list[i]->getAttr<ATTR_HWAS_STATE>().gardLevel );
+
+ TS_FAIL( "Attribute fields not correct: ");
+ }
+ }
+
+ TS_TRACE(EXIT_MRK "testHWASdefaultPresence" );
+ }
+
+};
+
+#endif //
diff --git a/src/usr/isteps/makefile b/src/usr/hwas/test/makefile
index 4d34a6331..6cc573dbe 100644
--- a/src/usr/isteps/makefile
+++ b/src/usr/hwas/test/makefile
@@ -1,7 +1,7 @@
# IBM_PROLOG_BEGIN_TAG
# This is an automatically generated prolog.
#
-# $Source: src/usr/isteps/makefile $
+# $Source: src/usr/targeting/test/makefile $
#
# IBM CONFIDENTIAL
#
@@ -20,17 +20,19 @@
# Origin: 30
#
# IBM_PROLOG_END
-ROOTPATH = ../../..
+ROOTPATH = ../../../..
-EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/fapi
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/plat
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/hwp
+EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer
-MODULE = isteps
-
-OBJS = istep1.o
+MODULE = testhwas
+TESTS = *.H
-# SUBDIRS = test
+OBJS = attributestrings.o
include ${ROOTPATH}/config.mk
+
+vpath %.C ${GENDIR}
+
diff --git a/src/usr/initservice/baseinitsvc/initservice.C b/src/usr/initservice/baseinitsvc/initservice.C
index e26da0a8c..a51e909ed 100644
--- a/src/usr/initservice/baseinitsvc/initservice.C
+++ b/src/usr/initservice/baseinitsvc/initservice.C
@@ -45,7 +45,7 @@ namespace INITSERVICE
{
trace_desc_t *g_trac_initsvc = NULL;
-TRAC_INIT(&g_trac_initsvc, "INITSERVICE", 4096 );
+TRAC_INIT(&g_trac_initsvc, "INITSVC", 4096 );
errlHndl_t InitService::startTask( const TaskInfo *i_ptask,
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
index 42e66ab0c..addc6f071 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
@@ -44,12 +44,14 @@
#include <errl/errlentry.H> // errlHndl_t
#include <devicefw/userif.H> // targeting
#include <sys/mmio.h> // mmio_scratch_read()
+#include <initservice/taskargs.H> // TaskArgs structs
+
#include "istepdispatcher.H"
#include "splesscommon.H"
-#include <isteps/isteplist.H>
+#include <isteps/istepmasterlist.H>
namespace INITSERVICE
@@ -100,15 +102,26 @@ const TaskInfo *IStepDispatcher::findTaskInfo( const uint16_t i_IStep,
{
const TaskInfo *l_pistep = NULL;
- TRACDCOMP( g_trac_initsvc,
- "g_isteps[%d].numitems = 0x%x",
- i_IStep,
- g_isteps[i_IStep].numitems );
// apply filters
do
{
+ // Sanity check / dummy IStep
+ if ( g_isteps[i_IStep].pti == NULL)
+ {
+ TRACDCOMP( g_trac_initsvc,
+ "g_isteps[%d].pti == NULL",
+ i_IStep );
+ break;
+ }
+
+ TRACDCOMP( g_trac_initsvc,
+ "g_isteps[%d].numitems = 0x%x",
+ i_IStep,
+ g_isteps[i_IStep].numitems );
+
+
// check input range - IStep
if ( i_IStep >= MAX_ISTEPS )
{
@@ -445,7 +458,7 @@ void IStepDispatcher::runAllISteps( void * io_ptr ) const
{
TRACDCOMP( g_trac_initsvc,
- "End of ISubStep list." );
+ "End of ISubStep 0x%x list.", l_SubStep );
break; // break out of inner for loop
}
@@ -457,9 +470,10 @@ void IStepDispatcher::runAllISteps( void * io_ptr ) const
l_args.clear();
TRACFCOMP( g_trac_initsvc,
- "Run IStep 0x%x / Substep 0x%x",
+ INFO_MRK "Run IStep 0x%x / Substep 0x%x %s",
l_IStep,
- l_SubStep );
+ l_SubStep,
+ l_pistep->taskname );
l_errl = InitService::getTheInstance().executeFn( l_pistep,
&l_args );
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.H b/src/usr/initservice/istepdispatcher/istepdispatcher.H
index 352b0f450..b507cbe21 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.H
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.H
@@ -30,6 +30,12 @@
*
*/
+/**
+ * @page IStepDispatcher IStep Dispatcher
+ *
+ *
+ */
+
/******************************************************************************/
// Includes
diff --git a/src/usr/initservice/taskargs/taskargs.C b/src/usr/initservice/taskargs/taskargs.C
index ecb4cd88c..186bb93c6 100644
--- a/src/usr/initservice/taskargs/taskargs.C
+++ b/src/usr/initservice/taskargs/taskargs.C
@@ -60,28 +60,16 @@ extern trace_desc_t *g_trac_initsvc;
void TaskArgs::waitParentSync( )
{
- TRACDCOMP( g_trac_initsvc,
- "Parent: wait for barrier %p", &iv_sync_barrier );
-
barrier_wait( &iv_sync_barrier);
- TRACDCOMP( g_trac_initsvc,
- "Parent: returned from barrier %p", &iv_sync_barrier );
-
}
void TaskArgs::waitChildSync( )
{
- TRACDCOMP( g_trac_initsvc,
- "Child: wait for barrier %p", &iv_sync_barrier );
-
barrier_wait( &iv_sync_barrier);
- TRACDCOMP( g_trac_initsvc,
- "Child: returned from barrier %p", &iv_sync_barrier );
-
}
diff --git a/src/usr/isteps/istep1.C b/src/usr/isteps/istep1.C
deleted file mode 100644
index 73998a55b..000000000
--- a/src/usr/isteps/istep1.C
+++ /dev/null
@@ -1,183 +0,0 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/usr/isteps/istep1.C $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
-
-/**
- * @file istep1.C
- *
- * test ISTep file
- *
- * @note, you must update isteps.h if you change this one
- *
- */
-
-
-/******************************************************************************/
-// Includes
-/******************************************************************************/
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <sys/task.h>
-
-#include <trace/interface.H> // trace support
-#include <errl/errlentry.H> // errlHndl_t
-#include <errl/errlmanager.H>
-#include <initservice/taskargs.H> // task args
-
-// pull in stuff to run HW procedure - from Andrew's hwpf testcase 2
-// NOTE: there are extra include paths in isteps/makefile to find the fapi
-// includes:
-// EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer
-// EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/fapi
-// EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/plat
-
-#include <fapiTarget.H>
-#include <fapiPlatHwpInvoker.H>
-#include <targeting/targetservice.H>
-
-using namespace fapi;
-using namespace TARGETING;
-
-namespace ISTEPS
-{
-
-/******************************************************************************/
-// Globals/Constants
-/******************************************************************************/
-trace_desc_t *g_trac_istep1 = NULL;
-TRAC_INIT(&g_trac_istep1, "ISTEP1", 4096);
-
-extern "C"
-void IStep0sub0( void * io_pArgs )
-{
- INITSERVICE::TaskArgs *pTaskArgs =
- static_cast<INITSERVICE::TaskArgs *>(io_pArgs);
- errlHndl_t l_err = NULL;
- uint64_t command = pTaskArgs->getCommand();
- uint64_t returncode = pTaskArgs->getReturnCode();
-
-
- // print out stuff from taskargs
- TRACFCOMP( g_trac_istep1,
- ENTER_MRK "starting IStep0sub0, command=0x%llx, returncode=0x%llx",
- command, returncode );
- // ----- start ISTEP --------------------------------------------------
-
- // Get the master processor chip
- TARGETING::Target* l_pTarget = NULL;
- TARGETING::targetService().masterProcChipTargetHandle(l_pTarget);
-
- // Create a FAPI Target and invoke the hwpInitialTest HWP
- fapi::Target l_fapiTarget(TARGET_TYPE_PROC_CHIP,
- reinterpret_cast<void *> (l_pTarget));
-
- FAPI_INVOKE_HWP(l_err, hwpInitialTest, l_fapiTarget);
-
- if (l_err)
- {
- TRACFCOMP( g_trac_istep1, "IStep1 failed, posting error code 1");
- errlCommit(l_err);
- pTaskArgs->postReturnCode( 1 );
- }
- else
- {
- TRACFCOMP( g_trac_istep1, "IStep1 finished successfully.");
- pTaskArgs->postReturnCode( 0 );
- }
-
-
-// ----- end ISTEP ------------------------------------------------------
- TRACFCOMP( g_trac_istep1,
- EXIT_MRK "ending IStep0sub0");
-
- // if non-null, wait for the barrier, otherwise just return
- if ( pTaskArgs )
- {
- pTaskArgs->waitChildSync();
- }
-
- task_end();
-}
-
-extern "C"
-void IStep0sub1( void * io_pArgs )
-{
- INITSERVICE::TaskArgs *pTaskArgs =
- static_cast<INITSERVICE::TaskArgs *>(io_pArgs);
- uint64_t command = pTaskArgs->getCommand();
- uint64_t returncode = pTaskArgs->getReturnCode();
-
-
- // print out stuff from taskargs
- TRACFCOMP( g_trac_istep1,
- ENTER_MRK "starting IStep0sub1, command=0x%llx, returncode=0x%llx",
- command, returncode );
- // ----- start ISTEP --------------------------------------------------
-
- pTaskArgs->postReturnCode( 0 );
-
- // ----- end ISTEP ------------------------------------------------------
- TRACFCOMP( g_trac_istep1,
- EXIT_MRK "ending IStep0sub1");
-
- // if non-null, wait for the barrier, otherwise just return
- if ( pTaskArgs )
- {
- pTaskArgs->waitChildSync();
- }
-
- task_end();
-}
-
-extern "C"
-void IStep1sub0( void * io_pArgs )
-{
- INITSERVICE::TaskArgs *pTaskArgs =
- static_cast<INITSERVICE::TaskArgs *>(io_pArgs);
- uint64_t command = pTaskArgs->getCommand();
- uint64_t returncode = pTaskArgs->getReturnCode();
-
-
- // print out stuff from taskargs
- TRACFCOMP( g_trac_istep1,
- ENTER_MRK "starting IStep1sub0, command=0x%llx, returncode=0x%llx",
- command, returncode );
- // ----- start ISTEP --------------------------------------------------
-
- pTaskArgs->postReturnCode( 0 );
-
- // ----- end ISTEP --------------------------------------------------
- TRACFCOMP( g_trac_istep1,
- EXIT_MRK "ending IStep1sub0");
-
- // if non-null, wait for the barrier, otherwise just return
- if ( pTaskArgs )
- {
- pTaskArgs->waitChildSync();
- }
-
- task_end();
-}
-
-} // namespace
diff --git a/src/usr/isteps/isteps.H b/src/usr/isteps/isteps.H
deleted file mode 100644
index 4033f0866..000000000
--- a/src/usr/isteps/isteps.H
+++ /dev/null
@@ -1,42 +0,0 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/usr/isteps/isteps.H $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
-/**
- * @file isteps.H
- *
- * Prototypes of ISteps launched by IStepDispatcher
- *
- */
-
-
-/******************************************************************************/
-// Includes
-/******************************************************************************/
-#include <stdint.h>
-
-namespace ISTEPS
-{
-
-extern "C"
-void IStep1( void * io_pArgs );
-
-} // namespace
diff --git a/src/usr/makefile b/src/usr/makefile
index 55dcb704c..47e8e2d69 100644
--- a/src/usr/makefile
+++ b/src/usr/makefile
@@ -26,6 +26,6 @@ OBJS = module_init.o
SUBDIRS = example.d trace.d cxxtest.d testcore.d errl.d devicefw.d \
scom.d xscom.d targeting.d initservice.d hwpf.d \
- ecmddatabuffer.d isteps.d pnor.d i2c.d vfs.d fsi.d
+ ecmddatabuffer.d pnor.d i2c.d vfs.d fsi.d hwas.d
include ${ROOTPATH}/config.mk
diff --git a/src/usr/targeting/xmltohb/attribute_types.xml b/src/usr/targeting/xmltohb/attribute_types.xml
index 7bcc2c840..229d4a399 100644
--- a/src/usr/targeting/xmltohb/attribute_types.xml
+++ b/src/usr/targeting/xmltohb/attribute_types.xml
@@ -768,6 +768,59 @@
<readable/>
</attribute>
+<attribute>
+ <id>HWAS_STATE</id>
+ <description>HardWare Availability Service State Attribute.
+ Keeps track of Target values poweredOn, present, functional,
+ changedSinceLastIPL, and gardLevel</description>
+ <complexType>
+ <description>struct - so far contains 4 booleans and a 4-bit GARD level
+ field</description>
+ <field>
+ <name>poweredOn</name>
+ <description>boolean: Target is powered on, or Not.
+ comes up as powered off.</description>
+ <type>uint8_t</type>
+ <bits>1</bits>
+ <default>0</default>
+ </field>
+ <field>
+ <name>present</name>
+ <description>Target is present in the system.
+ comes up as Not PRESENT. </description>
+ <type>uint8_t</type>
+ <bits>1</bits>
+ <default>0</default>
+ </field>
+ <field>
+ <name>functional</name>
+ <description>Target is Functional.
+ comes up as Not FUNCTIONAL </description>
+ <type>uint8_t</type>
+ <bits>1</bits>
+ <default>0</default>
+ </field>
+ <field>
+ <name>changedSinceLastIPL</name>
+ <description>Target has changed since last IPL.
+ comes up as FALSE. </description>
+ <type>uint8_t</type>
+ <bits>1</bits>
+ <default>0</default>
+ </field>
+ <field>
+ <name>gardLevel</name>
+ <description>GARD Level. This is a 4-bit value.
+ comes up as 0 </description>
+ <type>uint8_t</type>
+ <bits>4</bits>
+ <default>0</default>
+ </field>
+ </complexType>
+ <persistency>volatile</persistency>
+ <readable/>
+</attribute>
+
</attributes>
diff --git a/src/usr/targeting/xmltohb/target_types.xml b/src/usr/targeting/xmltohb/target_types.xml
index 14b624893..9eef64d64 100644
--- a/src/usr/targeting/xmltohb/target_types.xml
+++ b/src/usr/targeting/xmltohb/target_types.xml
@@ -38,6 +38,7 @@
<attribute>
<id>PRIMARY_CAPABILITIES</id>
</attribute>
+ <attribute><id>HWAS_STATE</id></attribute>
</targetType>
<targetType>
OpenPOWER on IntegriCloud