summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard J. Knight <rjknight@us.ibm.com>2013-04-19 07:17:37 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-05-16 09:38:39 -0500
commit4b1f946d7558f8ca95c87d89e637513f18e87818 (patch)
tree5c70bf865fb77bf34ca08dc9b2ed461a933657d3 /src
parent91572a1c887aac732ff84e60f5a2be4e25f650ac (diff)
downloadtalos-hostboot-4b1f946d7558f8ca95c87d89e637513f18e87818.tar.gz
talos-hostboot-4b1f946d7558f8ca95c87d89e637513f18e87818.zip
Add new istep for multinode support in Hostboot and FSP
Change-Id: I1e9b0662ded03828f5df9e16aa35960ccb8d90cc RTC:63129 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4247 Reviewed-by: Van H. Lee <vanlee@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/hwas/hostbootIstep.H45
-rw-r--r--src/include/usr/isteps/istep07list.H50
-rw-r--r--src/include/usr/isteps/istep11list.H57
-rw-r--r--src/include/usr/isteps/istep12list.H31
-rw-r--r--src/include/usr/isteps/istep18list.H39
-rw-r--r--src/usr/hwpf/hwp/dmi_training/dmi_training.C16
-rw-r--r--src/usr/hwpf/hwp/dmi_training/dmi_training.H58
-rw-r--r--src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C85
-rw-r--r--src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H72
-rw-r--r--src/usr/hwpf/hwp/establish_system_smp/makefile33
-rw-r--r--src/usr/hwpf/hwp/mc_config/mc_config.C14
-rw-r--r--src/usr/hwpf/hwp/mc_config/mc_config.H57
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C58
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H56
-rw-r--r--src/usr/initservice/istepdispatcher/istep_mbox_msgs.H59
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.C49
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.H17
-rw-r--r--src/usr/initservice/istepdispatcher/makefile3
18 files changed, 555 insertions, 244 deletions
diff --git a/src/include/usr/hwas/hostbootIstep.H b/src/include/usr/hwas/hostbootIstep.H
index 94c55e71f..46a99ab72 100644
--- a/src/include/usr/hwas/hostbootIstep.H
+++ b/src/include/usr/hwas/hostbootIstep.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/include/usr/hwas/hostbootIstep.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * 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_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/hwas/hostbootIstep.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* 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 otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
/**
* @file hostbootIstep.H
*
diff --git a/src/include/usr/isteps/istep07list.H b/src/include/usr/isteps/istep07list.H
index 41b95117b..c407a963a 100644
--- a/src/include/usr/isteps/istep07list.H
+++ b/src/include/usr/isteps/istep07list.H
@@ -27,23 +27,25 @@
* @file istep07list.H
*
* IStep 07 Nest Chiplets
- * IPL FLow Doc v1.28 (12/03/12)
+ * IPL FLow Doc v1.35 (04/11/13)
*
- * 07.1 proc_a_x_pci_dmi_pll_initf
+ * 07.1 proc_attr_update
+ * : Proc attr update
+ * 07.2 proc_a_x_pci_dmi_pll_initf
* : PLL Initfile for A, X, PCIe, DMI
- * 07.2 proc_a_x_pci_dmi_pll_setup
+ * 07.3 proc_a_x_pci_dmi_pll_setup
* : Setup PLL for A, X, PCIe, DMI
- * 07.3 proc_startclock_chiplets
+ * 07.4 proc_startclock_chiplets
* : Start clocks on A, X, PCIe chiplets
- * 07.4 proc_chiplet_scominit
+ * 07.5 proc_chiplet_scominit
* : Apply scom inits to chiplets
- * 07.5 proc_xbus_scominit
- * : Apply scom inits to Xbus
- * 07.6 proc_abus_scominit
- * : Apply scom inits to Abus
- * 07.7 proc_pcie_scominit
+ * 07.6 proc_xbus_scominit
+ * : Apply scom inits to Xbus
+ * 07.7 proc_abus_scominit
+ * : Apply scom inits to Abus
+ * 07.8 proc_pcie_scominit
* : Apply scom inits to PCIE chiplets
- * 07.8 proc_scomoverride_chiplets
+ * 07.9 proc_scomoverride_chiplets
* : Apply sequenced scom inits
*
* Please see the note in initsvcstructs.H for description of
@@ -73,7 +75,17 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(07,01,"proc_a_x_pci_dmi_pll_initf"),
+ ISTEPNAME(07,01,"proc_attr_update"),
+ NEST_CHIPLETS::call_proc_attr_update,
+ {
+ START_FN,
+ EXT_IMAGE,
+ NORMAL_IPL_OP,
+ false,
+ }
+ },
+ {
+ ISTEPNAME(07,02,"proc_a_x_pci_dmi_pll_initf"),
NEST_CHIPLETS::call_proc_a_x_pci_dmi_pll_initf,
{
START_FN,
@@ -84,7 +96,7 @@ namespace INITSERVICE
},
{
- ISTEPNAME(07,02,"proc_a_x_pci_dmi_pll_setup"),
+ ISTEPNAME(07,03,"proc_a_x_pci_dmi_pll_setup"),
NEST_CHIPLETS::call_proc_a_x_pci_dmi_pll_setup,
{
START_FN,
@@ -96,7 +108,7 @@ namespace INITSERVICE
{
- ISTEPNAME(07,03,"proc_startclock_chiplets"),
+ ISTEPNAME(07,04,"proc_startclock_chiplets"),
NEST_CHIPLETS::call_proc_startclock_chiplets,
{
START_FN,
@@ -108,7 +120,7 @@ namespace INITSERVICE
{
- ISTEPNAME(07,04,"proc_chiplet_scominit"),
+ ISTEPNAME(07,05,"proc_chiplet_scominit"),
NEST_CHIPLETS::call_proc_chiplet_scominit,
{
START_FN,
@@ -118,7 +130,7 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(07,05,"proc_xbus_scominit"),
+ ISTEPNAME(07,06,"proc_xbus_scominit"),
NEST_CHIPLETS::call_proc_xbus_scominit,
{
START_FN,
@@ -128,7 +140,7 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(07,06,"proc_abus_scominit"),
+ ISTEPNAME(07,07,"proc_abus_scominit"),
NEST_CHIPLETS::call_proc_abus_scominit,
{
START_FN,
@@ -138,7 +150,7 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(07,07,"proc_pcie_scominit"),
+ ISTEPNAME(07,08,"proc_pcie_scominit"),
NEST_CHIPLETS::call_proc_pcie_scominit,
{
START_FN,
@@ -148,7 +160,7 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(07,08,"proc_scomoverride_chiplets"),
+ ISTEPNAME(07,09,"proc_scomoverride_chiplets"),
NEST_CHIPLETS::call_proc_scomoverride_chiplets,
{
START_FN,
diff --git a/src/include/usr/isteps/istep11list.H b/src/include/usr/isteps/istep11list.H
index 408a94a89..7a6567f76 100644
--- a/src/include/usr/isteps/istep11list.H
+++ b/src/include/usr/isteps/istep11list.H
@@ -25,31 +25,33 @@
/**
* list of functions called for DMI Training - ISTEP 11 according to Dean's
- * IPL Flow Doc v1.28 (12/03/12)
+ * IPL Flow Doc v1.35 (04/11/13)
*
* 11.1 mss_getecid
* : Read out ECID orff all Centaurs
- * 11.2 proc_dmi_scominit
+ * 11.2 dmi_attr_update
+ * :DMI ATTR update
+ * 11.3 proc_dmi_scominit
* : DMI Scom setup on P8 MCS
- * 11.3 dmi_scominit
+ * 11.4 dmi_scominit
* : Scom setup on centaur
- * 11.4 dmi_erepair
+ * 11.5 dmi_erepair
* : Restore EDI Bus eRepair data
- * 11.5 dmi_io_dccal
+ * 11.6 dmi_io_dccal
* : Calibrate DMI interfaces
- * 11.6 dmi_pre_trainadv
+ * 11.7 dmi_pre_trainadv
* : Advanced pre DMI training
- * 11.7 dmi_io_run_training
+ * 11.8 dmi_io_run_training
* : Run training on MC buses
- * 11.8 dmi_post_trainadv
+ * 11.9 dmi_post_trainadv
* : Advanced post DMI training
- * 11.9 proc_cen_framelock
+ * 11.10 proc_cen_framelock
* : Initialize EDI Frame
- * 11.10 host_startprd_dmi
+ * 11.11 host_startprd_dmi
* : Load prd for DMI domain
- * 11.11 host_attnlisten_cen
+ * 11.12 host_attnlisten_cen
* : Start listening for attentions
- * 11.12 cen_set_inband_addr
+ * 11.13 cen_set_inband_addr
* : Set the Inband base addresses
*/
@@ -95,7 +97,18 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,02,"proc_dmi_scominit"), // substep name
+ ISTEPNAME(11,02,"dmi_attr_update"), // substep name
+ DMI_TRAINING::call_dmi_attr_update, // pointer to fn
+ {
+ START_FN, // task type
+ EXT_IMAGE, // Extended Module
+ NORMAL_IPL_OP,
+ true,
+ }
+ },
+
+ {
+ ISTEPNAME(11,03,"proc_dmi_scominit"), // substep name
DMI_TRAINING::call_proc_dmi_scominit, // pointer to fn
{
START_FN, // task type
@@ -106,7 +119,7 @@ const TaskInfo g_istep11[] = {
},
{
- ISTEPNAME(11,03,"dmi_scominit"), // substep name
+ ISTEPNAME(11,04,"dmi_scominit"), // substep name
DMI_TRAINING::call_dmi_scominit, // pointer to fn
{
START_FN, // task type
@@ -117,7 +130,7 @@ const TaskInfo g_istep11[] = {
},
{
- ISTEPNAME(11,04,"dmi_erepair"), // substep name
+ ISTEPNAME(11,05,"dmi_erepair"), // substep name
DMI_TRAINING::call_dmi_erepair, // pointer to fn
{
START_FN, // task type
@@ -127,7 +140,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,05,"dmi_io_dccal"), // substep name
+ ISTEPNAME(11,06,"dmi_io_dccal"), // substep name
DMI_TRAINING::call_dmi_io_dccal, // pointer to fn
{
START_FN, // task type
@@ -137,7 +150,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,06,"dmi_pre_trainadv"), // substep name
+ ISTEPNAME(11,07,"dmi_pre_trainadv"), // substep name
DMI_TRAINING::call_dmi_pre_trainadv, // pointer to fn
{
START_FN, // task type
@@ -147,7 +160,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,07,"dmi_io_run_training"), // substep name
+ ISTEPNAME(11,08,"dmi_io_run_training"), // substep name
DMI_TRAINING::call_dmi_io_run_training, // pointer to fn
{
START_FN, // task type
@@ -167,7 +180,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,09,"proc_cen_framelock"), // substep name
+ ISTEPNAME(11,10,"proc_cen_framelock"), // substep name
DMI_TRAINING::call_proc_cen_framelock, // pointer to fn
{
START_FN, // task type
@@ -177,7 +190,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,10,"host_startprd_dmi"), // substep name
+ ISTEPNAME(11,11,"host_startprd_dmi"), // substep name
DMI_TRAINING::call_host_startprd_dmi, // pointer to fn
{
START_FN, // task type
@@ -187,7 +200,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,11,"host_attnlisten_cen"), // substep name
+ ISTEPNAME(11,12,"host_attnlisten_cen"), // substep name
DMI_TRAINING::call_host_attnlisten_cen, // pointer to fn
{
START_FN, // task type
@@ -197,7 +210,7 @@ const TaskInfo g_istep11[] = {
}
},
{
- ISTEPNAME(11,12,"cen_set_inband_addr"), // substep name
+ ISTEPNAME(11,13,"cen_set_inband_addr"), // substep name
DMI_TRAINING::call_cen_set_inband_addr, // pointer to fn
{
START_FN, // task type
diff --git a/src/include/usr/isteps/istep12list.H b/src/include/usr/isteps/istep12list.H
index f980e7a44..93c7fbe65 100644
--- a/src/include/usr/isteps/istep12list.H
+++ b/src/include/usr/isteps/istep12list.H
@@ -27,18 +27,20 @@
* @file istep12list.H
*
* IStep 12 Step 12 MC Config
- * IPL FLow Doc v1.28 (12/03/12)
+ * IPL FLow Doc v1.35 (04/11/13)
*
- * 12.1 host_collect_dimm_spd
+ * 12.1 host_collect_dimm_spd
* : Collect Master dimm SPD
- * 12.2 mss_volt
+ * 12.2 mss_volt
* : Calc dimm voltage
- * 12.3 mss_freq
+ * 12.3 mss_freq
* : Calc dimm frequency
- * 12.4 mss_eff_config
+ * 12.4 mss_eff_config
* : Determine effective config
- *
- * *****************************************************************
+ * 12.5 mss_attr_update
+ * : MSS ATTR update
+*
+* *****************************************************************
* THIS FILE WAS GENERATED ON 2012-03-01:1032
* *****************************************************************
*
@@ -58,13 +60,13 @@ namespace INITSERVICE
const TaskInfo g_istep12[] = {
{
- "", // dummy, index 0
+ "", // dummy, index 0
NULL,
{
NONE,
EXT_IMAGE,
IPL_NOOP,
- false, // true = check for attentions
+ false, // true = check for attentions
}
},
@@ -108,6 +110,17 @@ const TaskInfo g_istep12[] = {
true,
}
},
+ {
+ ISTEPNAME(12,05,"mss_attr_update"),
+ MC_CONFIG::call_mss_attr_update,
+ {
+ START_FN,
+ EXT_IMAGE,
+ NORMAL_IPL_OP,
+ true,
+ }
+ },
+
// END OF LIST!
};
diff --git a/src/include/usr/isteps/istep18list.H b/src/include/usr/isteps/istep18list.H
index 98bb9ca85..48bd78c78 100644
--- a/src/include/usr/isteps/istep18list.H
+++ b/src/include/usr/isteps/istep18list.H
@@ -27,13 +27,13 @@
* @file istep18list.H
*
* IStep 18 Establish System SMP
- * IPL FLow Doc v1.28 (12/03/12)
+ * IPL FLow Doc v1.35 (04/11/13)
*
- * 18.10 host_coalesce_host
+ * 18.12 host_coalesce_host
* : Create single host image
- * 18.11 proc_tod_setup
+ * 18.13 proc_tod_setup
* : Create TOD topology
- * 18.12 proc_tod_init
+ * 18.14 proc_tod_init
* : Start TOD to running state
*
* *****************************************************************
@@ -64,7 +64,7 @@ namespace INITSERVICE
NONE,
EXT_IMAGE,
IPL_NOOP,
- false, // true = check for attentions
+ false, // true = check for attentions
}
},
@@ -146,7 +146,6 @@ namespace INITSERVICE
}
},
{
-
ISTEPNAME(18,08,""),
NULL,
{
@@ -157,7 +156,6 @@ namespace INITSERVICE
}
},
{
-
ISTEPNAME(18,09,""),
NULL,
{
@@ -168,7 +166,28 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(18,10,"host_coalesce_host"),
+
+ ISTEPNAME(18,10,""),
+ NULL,
+ {
+ NONE,
+ EXT_IMAGE,
+ IPL_NOOP,
+ false,
+ }
+ },
+ {
+ ISTEPNAME(18,11,""),
+ NULL,
+ {
+ NONE,
+ EXT_IMAGE,
+ IPL_NOOP,
+ false,
+ }
+ },
+ {
+ ISTEPNAME(18,12,"host_coalesce_host"),
ESTABLISH_SYSTEM_SMP::call_host_coalesce_host,
{
START_FN,
@@ -178,7 +197,7 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(18,11,"proc_tod_setup"),
+ ISTEPNAME(18,13,"proc_tod_setup"),
TOD::call_tod_setup,
{
START_FN,
@@ -188,7 +207,7 @@ namespace INITSERVICE
}
},
{
- ISTEPNAME(18,12,"proc_tod_init"),
+ ISTEPNAME(18,14,"proc_tod_init"),
TOD::call_tod_init,
{
START_FN,
diff --git a/src/usr/hwpf/hwp/dmi_training/dmi_training.C b/src/usr/hwpf/hwp/dmi_training/dmi_training.C
index e5ebb3420..8e15a46ab 100644
--- a/src/usr/hwpf/hwp/dmi_training/dmi_training.C
+++ b/src/usr/hwpf/hwp/dmi_training/dmi_training.C
@@ -282,6 +282,22 @@ void* call_mss_getecid( void *io_pArgs )
return l_StepError.getErrorHandle();
}
+//
+// Wrapper function to call dmi_attr_update
+//
+void * call_dmi_attr_update( void * io_pArgs )
+{
+ IStepError l_StepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_dmi_attr_update entry" );
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_dmi_attr_update exit" );
+
+ return l_StepError.getErrorHandle();
+
+}
//
// Wrapper function to call proc_dmi_scominit
diff --git a/src/usr/hwpf/hwp/dmi_training/dmi_training.H b/src/usr/hwpf/hwp/dmi_training/dmi_training.H
index ee0e0a7f0..88d892e74 100644
--- a/src/usr/hwpf/hwp/dmi_training/dmi_training.H
+++ b/src/usr/hwpf/hwp/dmi_training/dmi_training.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/hwpf/hwp/dmi_training/dmi_training.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * 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_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/dmi_training/dmi_training.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* 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 otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __DMI_TRAINING_DMI_TRAINING_H
#define __DMI_TRAINING_DMI_TRAINING_H
/**
@@ -136,6 +135,19 @@ namespace DMI_TRAINING
*/
void* call_mss_getecid( void * io_pArgs );
+/**
+ * @brief dmi_attr_update
+ *
+ * Stub HWP to allow FW to override attributes programmatically
+ *
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return any error logs to istep
+ *
+ */
+
+void * call_dmi_attr_update( void * io_pArgs );
/**
* @brief proc_dmi_scominit
diff --git a/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C b/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C
index 1ea2f46e1..426aa8d39 100644
--- a/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C
+++ b/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C
@@ -47,6 +47,8 @@
#include <hwpisteperror.H>
+#include <istep_mbox_msgs.H>
+
// targeting support
#include <targeting/common/commontargeting.H>
@@ -68,7 +70,6 @@ using namespace TARGETING;
using namespace fapi;
-
//
// Wrapper function to call host_coalesce_host
//
@@ -116,6 +117,88 @@ void* call_host_coalesce_host( void *io_pArgs )
return l_errl;
}
+//******************************************************************************
+// host_sys_fab_iovalid_processing function
+//******************************************************************************
+void host_sys_fab_iovalid_processing( msg_t* io_pMsg )
+{
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "host_sys_fab_iovalid_processing entry" );
+
+ iovalid_msg * drawerData = NULL;
+
+ uint16_t count = 0;
+
+ std::vector<TARGETING::EntityPath> present_drawers;
+
+ errlHndl_t l_errl = NULL;
+
+ // if there is extra data, start processing it
+ // else send back a msg to indicate invalid msg
+ if(io_pMsg->extra_data)
+ {
+ drawerData = (iovalid_msg *)io_pMsg->extra_data;
+
+ // setup a pointer to the first drawer entry in our data
+ TARGETING::EntityPath * ptr = drawerData->drawers;
+
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,"Master node %s "
+ "List size = %d bytes "
+ "Drawer count = %d",
+ ptr->toString(), drawerData->size, drawerData->count);
+ count = drawerData->count;
+
+ // create a vector with the present drawers
+ for(uint8_t i = 0; i < count; i++)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "list entry[%d] - %s", i, ptr->toString());
+
+ present_drawers.push_back(*ptr);
+ ptr++;
+ }
+
+ // $TODO RTC:63128 - exchange between present drawers to agree
+ // on valid endpoints
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "$TODO RTC:63128 - hb instances exchange and agree on cfg");
+
+ // $TODO RTC:63132 after agreement, open abuses as required
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "$TODO RTC:63132 - open the required A-busses "
+ " after agreement is reached");
+
+ // release the storage from the message
+ free(io_pMsg->extra_data);
+ io_pMsg->extra_data = NULL;
+
+ io_pMsg->data[0] = INITSERVICE::HWSVR_MSG_SUCCESS;
+ }
+ else
+ {
+ // message needs to have at least one entry
+ // in the drawer list, else we will say invalid msg
+ io_pMsg->data[0] = INITSERVICE::HWSVR_INVALID_MESSAGE;
+ }
+
+ io_pMsg->data[1] = 0;
+
+ // if there is an error log add the ID to
+ // data 0
+ if(l_errl)
+ {
+ io_pMsg->data[0] = l_errl->eid();
+ errlCommit(l_errl, HWPF_COMP_ID);
+ }
+
+ // response will be sent by calling routine
+ // IStepDispatcher::handleMoreWorkNeededMsg()
+ // which will also execute the procedure to winkle all cores
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "host_sys_fab_iovalid_processing exit" );
+}
}; // end namespace
diff --git a/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H b/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H
index 43efa5283..25bcf0a1f 100644
--- a/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H
+++ b/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * 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_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* 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 otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __ESTABLISH_SYSTEM_SMP_ESTABLISH_SYSTEM_SMP_H
#define __ESTABLISH_SYSTEM_SMP_ESTABLISH_SYSTEM_SMP_H
@@ -41,13 +40,13 @@
*/
/* @tag isteplist
- * @docversion v1.28 (12/03/12)
+ * @docversion v1.35 (04/11/13)
* @istepname establish_system_smp
* @istepnum 18
* @istepdesc Establish System SMP
*
* @{
- * @substepnum 10
+ * @substepnum 12
* @substepname host_coalesce_host
* @substepdesc : Create single host image
* @target_sched serial
@@ -63,7 +62,16 @@
namespace ESTABLISH_SYSTEM_SMP
{
-
+ /**
+ * @brief structure to hold iovalid processing data
+ *
+ */
+ struct iovalid_msg {
+ uint32_t size; //!Data length in bytes
+ uint16_t type; //! IPL/CCM type message
+ uint16_t count; //! Number of drawer HUIDs in data
+ TARGETING::EntityPath drawers[0]; //! Place holder for data
+ };
/**
* @brief host_coalesce_host
@@ -77,7 +85,17 @@ namespace ESTABLISH_SYSTEM_SMP
*/
void* call_host_coalesce_host( void *io_pArgs );
-
+/**
+ * @brief host_sys_fab_iovalid_processing
+ *
+ * Do hostboot side processing for fsp istep
+ * sys_proc_fab_iovalid
+ *
+ * param[in,out] io_pMsg - input message buffer with drawer info,
+ * also used for response message to FSP
+ *
+ */
+void host_sys_fab_iovalid_processing( msg_t* io_pMsg );
}; // end namespace
diff --git a/src/usr/hwpf/hwp/establish_system_smp/makefile b/src/usr/hwpf/hwp/establish_system_smp/makefile
index 3a13446e7..3ce0dbdcc 100644
--- a/src/usr/hwpf/hwp/establish_system_smp/makefile
+++ b/src/usr/hwpf/hwp/establish_system_smp/makefile
@@ -1,31 +1,32 @@
-# IBM_PROLOG_BEGIN_TAG
-# This is an automatically generated prolog.
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
#
-# $Source: src/usr/hwpf/hwp/establish_system_smp/makefile $
+# $Source: src/usr/hwpf/hwp/establish_system_smp/makefile $
#
-# IBM CONFIDENTIAL
+# IBM CONFIDENTIAL
#
-# COPYRIGHT International Business Machines Corp. 2012
+# COPYRIGHT International Business Machines Corp. 2012,2013
#
-# p1
+# p1
#
-# Object Code Only (OCO) source materials
-# Licensed Internal Code Source Materials
-# IBM HostBoot Licensed Internal Code
+# 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.
+# The source code for this program is not published or otherwise
+# divested of its trade secrets, irrespective of what has been
+# deposited with the U.S. Copyright Office.
#
-# Origin: 30
+# Origin: 30
#
-# IBM_PROLOG_END
+# IBM_PROLOG_END_TAG
ROOTPATH = ../../../../..
MODULE = establish_system_smp
## support for Targeting and fapi
+EXTRAINCDIR += ${ROOTPATH}/src/usr/initservice/istepdispatcher
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/fapi
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/plat
@@ -34,7 +35,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/hwp
## pointer to common HWP files
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/include
-## NOTE: add the base istep dir here.
+## NOTE: add the base istep dir here.
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/establish_system_smp
## Include sub dirs
@@ -46,7 +47,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/establish_system_smp
## NOTE: add new object files when you add a new HWP
OBJS = establish_system_smp.o
-
+
## NOTE: add a new directory onto the vpaths when you add a new HWP
## EXAMPLE:
# VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/establish_system_smp/<HWP_dir>
diff --git a/src/usr/hwpf/hwp/mc_config/mc_config.C b/src/usr/hwpf/hwp/mc_config/mc_config.C
index 173824391..bd02760f7 100644
--- a/src/usr/hwpf/hwp/mc_config/mc_config.C
+++ b/src/usr/hwpf/hwp/mc_config/mc_config.C
@@ -508,6 +508,20 @@ void* call_mss_eff_config( void *io_pArgs )
return l_StepError.getErrorHandle();
}
+//
+// Wrapper function to call mss_attr_update
+//
+void* call_mss_attr_update( void *io_pArgs )
+{
+
+ IStepError l_StepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_attr_update entry" );
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_attr_update exit" );
+
+ return l_StepError.getErrorHandle();
+}
+
}; // end namespace
diff --git a/src/usr/hwpf/hwp/mc_config/mc_config.H b/src/usr/hwpf/hwp/mc_config/mc_config.H
index 93c5267f8..aed6efa7a 100644
--- a/src/usr/hwpf/hwp/mc_config/mc_config.H
+++ b/src/usr/hwpf/hwp/mc_config/mc_config.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/hwpf/hwp/mc_config/mc_config.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * 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_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/mc_config/mc_config.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* 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 otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __MC_CONFIG_MC_CONFIG_H
#define __MC_CONFIG_MC_CONFIG_H
@@ -135,6 +134,18 @@ void* call_mss_freq( void * io_pArgs );
*/
void* call_mss_eff_config( void * io_pArgs );
+/**
+ * @brief mss_attr_update
+ *
+ * Stub HWP to allow FW to override attributes programmatically
+ *
+ * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct,
+ * or NULL.
+ * return any error logs to istep
+ *
+ */
+void* call_mss_attr_update( void *io_pArgs );
+
}; // end namespace
diff --git a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C
index a9d2f1a45..91824b288 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C
+++ b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C
@@ -86,6 +86,22 @@ using namespace TARGETING;
using namespace fapi;
//*****************************************************************************
+// wrapper function to call proc_attr_update
+//*****************************************************************************
+void * call_proc_attr_update( void * io_pArgs )
+{
+ IStepError l_StepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_attr_update entry" );
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_attr_update exit" );
+
+ return l_StepError.getErrorHandle();
+
+}
+//*****************************************************************************
// wrapper function to call proc_a_x_pci_dmi_pll_initf
//*****************************************************************************
void* call_proc_a_x_pci_dmi_pll_initf( void *io_pArgs )
@@ -94,7 +110,7 @@ void* call_proc_a_x_pci_dmi_pll_initf( void *io_pArgs )
IStepError l_StepError;
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_proc_a_x_pci_dmi_pll_initf entry" );
TARGETING::TargetHandleList l_procTargetList;
@@ -171,7 +187,7 @@ void* call_proc_a_x_pci_dmi_pll_setup( void *io_pArgs )
IStepError l_StepError;
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_proc_a_x_pci_dmi_pll_setup entry" );
TARGETING::TargetHandleList l_procTargetList;
@@ -201,8 +217,8 @@ void* call_proc_a_x_pci_dmi_pll_setup( void *io_pArgs )
if (l_err)
{
TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: proc_a_x_pci_dmi_pll_setup \
- HWP returns error",
+ "ERROR 0x%.8X: proc_a_x_pci_dmi_pll_setup"
+ " HWP returns error",
l_err->reasonCode());
// capture the target data in the elog
@@ -234,7 +250,7 @@ void* call_proc_a_x_pci_dmi_pll_setup( void *io_pArgs )
}
}
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_proc_a_x_pci_dmi_pll_setup exit" );
// end task, returning any errorlogs to IStepDisp
@@ -252,7 +268,7 @@ errlHndl_t customizeChipRegions(TARGETING::Target* i_procTarget)
do{
- size_t l_pgSize = 0;
+ size_t l_pgSize = 0;
// First get the size
l_err = deviceRead(i_procTarget,
@@ -293,24 +309,24 @@ errlHndl_t customizeChipRegions(TARGETING::Target* i_procTarget)
static const size_t PG_START_POS = ( 64-16-4);
//prepare the vector to be populated to ATTR_CHIP_REGIONS_TO_ENABLE
- TARGETING::ATTR_CHIP_REGIONS_TO_ENABLE_type l_chipRegionData;
+ TARGETING::ATTR_CHIP_REGIONS_TO_ENABLE_type l_chipRegionData;
memset(l_chipRegionData,sizeof(ATTR_CHIP_REGIONS_TO_ENABLE_type),0);
//Skip the header
uint16_t *l_partialGoodUint16=reinterpret_cast<uint16_t*>(
&l_pgData[VPD_CP00_PG_HDR_LENGTH]);
- //For customizing the image data, the 16 bit partial good value
- //retrieved for the chiplets ( 32 no. ) , should be set from bit 4..19
+ //For customizing the image data, the 16 bit partial good value
+ //retrieved for the chiplets ( 32 no. ) , should be set from bit 4..19
//of the attribute ATTR_CHIP_REGIONS_TO_ENABLE for the processor
- for ( uint32_t l_chipRegionIndex = 0 ;
+ for ( uint32_t l_chipRegionIndex = 0 ;
l_chipRegionIndex < MAX_CHIPLETS_PER_PROC ;
++l_chipRegionIndex)
{
- l_chipRegionData[l_chipRegionIndex] =
+ l_chipRegionData[l_chipRegionIndex] =
l_partialGoodUint16[l_chipRegionIndex];
- l_chipRegionData[l_chipRegionIndex] =
+ l_chipRegionData[l_chipRegionIndex] =
l_chipRegionData[l_chipRegionIndex]<<PG_START_POS;
}
@@ -326,7 +342,7 @@ errlHndl_t customizeChipRegions(TARGETING::Target* i_procTarget)
free(l_pgData);
return l_err;
-
+
}
//*****************************************************************************
@@ -338,7 +354,7 @@ void* call_proc_startclock_chiplets( void *io_pArgs )
IStepError l_StepError;
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_proc_startclock_chiplets entry" );
TARGETING::TargetHandleList l_procTargetList;
@@ -384,7 +400,7 @@ void* call_proc_startclock_chiplets( void *io_pArgs )
break;
}
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"Running proc_startclock_chiplets HWP on "
"target HUID %.8X", TARGETING::get_huid(l_proc_target));
@@ -425,15 +441,15 @@ void* call_proc_startclock_chiplets( void *io_pArgs )
}
else
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"SUCCESS : proc_startclock_chiplets HWP( )" );
}
}
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_proc_startclock_chiplets exit" );
- // end task, returning any errorlogs to IStepDisp
+ // end task, returning any errorlogs to IStepDisp
return l_StepError.getErrorHandle();
}
@@ -832,7 +848,7 @@ void* call_proc_scomoverride_chiplets( void *io_pArgs )
if (l_errl)
{
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
"ERROR 0x%.8X : proc_scomoverride_chiplets "
"HWP returns error",
l_errl->reasonCode());
@@ -855,11 +871,11 @@ void* call_proc_scomoverride_chiplets( void *io_pArgs )
}
else
{
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
"SUCCESS : proc_scomoverride_chiplets HWP");
}
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_proc_scomoverride_chiplets exit" );
// end task, returning any errorlogs to IStepDisp
diff --git a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H
index 135042cb8..35f034633 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H
+++ b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * 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_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* 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 otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __NEST_CHIPLETS_NEST_CHIPLETS_H
#define __NEST_CHIPLETS_NEST_CHIPLETS_H
@@ -105,6 +104,17 @@
namespace NEST_CHIPLETS
{
+/**
+ * @brief call_proc_attr_update
+ *
+ * Stub to enable platforms to override attributes
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any error logs to istep
+ *
+ */
+void * call_proc_attr_update( void * io_pArgs );
/**
* @brief proc_a_x_pci_dmi_pll_initf
diff --git a/src/usr/initservice/istepdispatcher/istep_mbox_msgs.H b/src/usr/initservice/istepdispatcher/istep_mbox_msgs.H
index d61d41d65..f07545388 100644
--- a/src/usr/initservice/istepdispatcher/istep_mbox_msgs.H
+++ b/src/usr/initservice/istepdispatcher/istep_mbox_msgs.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/initservice/istepdispatcher/istep_mbox_msgs.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * 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_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/initservice/istepdispatcher/istep_mbox_msgs.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* 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 otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __INITSERVICE_ISTEP_MBOX_MSGS_H
#define __INITSERVICE_ISTEP_MBOX_MSGS_H
@@ -38,12 +37,24 @@ namespace INITSERVICE
const uint32_t SPLESS_MSG = 0x000F0000;
const uint32_t ISTEP_WORKER_MSG = 0x00F00000;
+const uint32_t ISTEP_MSG_SUCCESS = 0x00F00000;
+const uint32_t ISTEP_INVALID_MESSAGE = 0x00F00000;
+
+// ------------------------------------------------------------------
+// HwSvr Msg Type RC values
+enum
+{
+ HWSVR_MSG_SUCCESS = 0x00,
+ HWSVR_INVALID_MESSAGE = 0x01,
+};
+
// ------------------------------------------------------------------
// HwSvr Msg Type Enums
enum
{
HWSVR_BREAKPOINT = 0x00,
HWSVR_SYNC_POINT = 0x10,
+ HWSVR_DO_IOVALID_PROCESSING = 0xC1,
};
// ------------------------------------------------------------------
@@ -65,6 +76,8 @@ enum
HWSVR_SYNC_POINT,
BREAKPOINT = MBOX::FIRST_UNSECURE_MSG |
HWSVR_BREAKPOINT,
+ PROCESS_IOVALID_REQUEST = MBOX::FIRST_UNSECURE_MSG |
+ HWSVR_DO_IOVALID_PROCESSING,
// --------------------------------------------------------------
// Worker Thread Messages
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
index b47eabcac..6b403f2b1 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
@@ -39,6 +39,9 @@
#include <kernel/console.H> // printk status
+// for VFS::module_load
+#include <vfs/vfs.H>
+
#include <sys/task.h> // tid_t, task_create, etc
#include <errl/errlentry.H> // errlHndl_t
@@ -53,6 +56,9 @@
#include <targeting/common/targetservice.H>
#include <targeting/attrsync.H>
+
+#include <establish_system_smp.H>
+
#include <hwpf/plat/fapiPlatAttributeService.H>
#include <mbox/mbox_queues.H> // HB_ISTEP_MSGQ
@@ -63,6 +69,7 @@
#include "istepdispatcher.H"
#include "istepWorker.H"
+#include "istep_mbox_msgs.H"
#include "splesscommon.H"
@@ -485,6 +492,22 @@ errlHndl_t IStepDispatcher::msgHndlr ( void )
handleMoreWorkNeededMsg( (theMsg->data[0] == 1) );
break;
+ case PROCESS_IOVALID_REQUEST:
+ TRACFCOMP( g_trac_initsvc,
+ "msgHndlr : PROCESS_IOVALID_REQUEST" );
+
+ // make sure the library is loaded
+ err = VFS::module_load("libestablish_system_smp.so");
+
+ // if the module loaded ok, do the processing
+ if( err == NULL )
+ {
+ iv_Msg = theMsg;
+ handleProcFabIovalidMsg();
+ }
+ break;
+
+
default:
// Default Message
// This SHOULD be a message from the Fsp with the Step/substep
@@ -1037,6 +1060,32 @@ bool IStepDispatcher::checkMpiplMode( ) const
return l_isMpiplMode;
}
+void IStepDispatcher::handleProcFabIovalidMsg( )
+{
+ TRACDCOMP( g_trac_initsvc,
+ ENTER_MRK"IStepDispatcher::handleProcFabIovalidMsg()" );
+
+ // do hostboot processing for istep
+ // sys_proc_fab_ipvalid
+ ESTABLISH_SYSTEM_SMP::host_sys_fab_iovalid_processing( iv_Msg );
+
+ // Send the message back as a response
+ msg_respond(iv_msgQ, iv_Msg);
+
+ // if there was an error don't winkle ?
+ if( iv_Msg->data[0] == HWSVR_MSG_SUCCESS )
+ {
+ TRACFCOMP( g_trac_initsvc,
+ "$TODO RTC:71447 - winkle all cores");
+ }
+
+ TRACDCOMP( g_trac_initsvc,
+ EXIT_MRK"IStepDispatcher::handleProcFabIovalidMsg()" );
+
+ iv_Msg = NULL;
+}
+
+
} // namespace
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.H b/src/usr/initservice/istepdispatcher/istepdispatcher.H
index b9df814f0..3bfdf5eff 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.H
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.H
@@ -173,7 +173,7 @@ public:
uint8_t & o_subStep );
/**
- * @brief This function will return whether or not we are in MPIPL mode
+ * @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
@@ -193,6 +193,8 @@ public:
*/
bool getIStepMode( ) const;
+
+
protected:
/**
@@ -267,6 +269,15 @@ private:
void handleMoreWorkNeededMsg ( bool i_first );
/**
+ * @brief This function is used to handle the message from the FSP
+ * telling hostboot to execute the processing required for
+ * the sys_proc_fab_iovalid istep
+ *
+ * @return NONE.
+ */
+ void handleProcFabIovalidMsg( void );
+
+ /**
* @brief This function is used to handle the single Istep requests from
* outside sources.
*
@@ -288,9 +299,9 @@ private:
* @return bool - whether we are SPLESS.
*/
bool spLess ( void );
-
+
/**
- * @brief This function will check whether or not we are in MPIPL mode
+ * @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
diff --git a/src/usr/initservice/istepdispatcher/makefile b/src/usr/initservice/istepdispatcher/makefile
index 041d27794..fbcf0ea18 100644
--- a/src/usr/initservice/istepdispatcher/makefile
+++ b/src/usr/initservice/istepdispatcher/makefile
@@ -5,7 +5,7 @@
#
# IBM CONFIDENTIAL
#
-# COPYRIGHT International Business Machines Corp. 2011,2012
+# COPYRIGHT International Business Machines Corp. 2011,2013
#
# p1
#
@@ -23,6 +23,7 @@
ROOTPATH = ../../../..
MODULE = istepdisp
+EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/establish_system_smp
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/fapi
EXTRAINCDIR += ${ROOTPATH}/src/include/usr/hwpf/plat
OpenPOWER on IntegriCloud