summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2015-08-19 18:33:05 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-08-25 15:00:04 -0500
commit664897ffe7ac048a96d9eb821f1df24359d4784f (patch)
treeeaf70f7c2eb6763dbcc9c48398a53a9454f6c81e /src/usr
parentafa921d1c9a2930573761fe34525819c6b3cd898 (diff)
downloadtalos-hostboot-664897ffe7ac048a96d9eb821f1df24359d4784f.tar.gz
talos-hostboot-664897ffe7ac048a96d9eb821f1df24359d4784f.zip
Propagate ATTR_TMP overrides into HBRT
Load ATTR_TMP overrides at host boot runtime RTC: 129055 Change-Id: Id01889b6a1498af05732cee7c797d3e18af10f8d Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19951 Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Tested-by: Jenkins Server
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/diag/attn/runtime/attn_rt.C11
-rw-r--r--src/usr/targeting/attrPlatOverride.C7
-rw-r--r--src/usr/targeting/runtime/attrPlatOverride_rt.C33
3 files changed, 50 insertions, 1 deletions
diff --git a/src/usr/diag/attn/runtime/attn_rt.C b/src/usr/diag/attn/runtime/attn_rt.C
index 60a242df0..404ee42a9 100644
--- a/src/usr/diag/attn/runtime/attn_rt.C
+++ b/src/usr/diag/attn/runtime/attn_rt.C
@@ -47,6 +47,17 @@ namespace ATTN_RT
*/
int enableAttns(void)
{
+ // TODO RTC 134050 Post init setups are temporarily here because
+ // Opal has not set up pnor or ipmi before calling rt_main.
+ static bool onlyCallApplyTempOverridesOnce = false;
+ if (!onlyCallApplyTempOverridesOnce)
+ {
+ ATTN_SLOW("ATTN_RT::enableAttns - call initialzation routines");
+ postInitCalls_t* rtPost = getPostInitCalls();
+ rtPost->callApplyTempOverrides();
+ onlyCallApplyTempOverridesOnce = true;
+ }
+
ATTN_SLOW(ENTER_MRK"ATTN_RT::enableAttns");
int rc = 0;
diff --git a/src/usr/targeting/attrPlatOverride.C b/src/usr/targeting/attrPlatOverride.C
index f9c13d1d2..9368c4af1 100644
--- a/src/usr/targeting/attrPlatOverride.C
+++ b/src/usr/targeting/attrPlatOverride.C
@@ -199,10 +199,15 @@ errlHndl_t getAttrOverrides(PNOR::SectionInfo_t &i_sectionInfo,
// Only apply attribute override if in the correct PNOR section
else
{
+ TRACFCOMP(g_trac_targeting,"getAttrOverrides:"
+ " override into TankLayer 0x%X",
+ l_pAttrOverSec->iv_layer);
+
// Get the AttributeTank that corresponds to the TankLayer in
// the AttrOverrideSection. Enum starts with TANK_LAYER_NONE
// so need to subtract 1
- AttributeTank* l_ptank = l_pOverTanks[l_pAttrOverSec->iv_layer - 1];
+ AttributeTank* l_ptank =
+ l_pOverTanks[l_pAttrOverSec->iv_layer - 1];
// Create serialized chunck with AttrOverrideSection data
AttributeTank::AttributeSerializedChunk l_chunk;
diff --git a/src/usr/targeting/runtime/attrPlatOverride_rt.C b/src/usr/targeting/runtime/attrPlatOverride_rt.C
index be39e65cf..98d063fa0 100644
--- a/src/usr/targeting/runtime/attrPlatOverride_rt.C
+++ b/src/usr/targeting/runtime/attrPlatOverride_rt.C
@@ -86,6 +86,37 @@ int apply_attr_override(uint8_t* i_data,
return rc;
}
+void applyTempOverrides()
+{
+ TRACFCOMP(g_trac_targeting, ENTER_MRK"applyTempOverrides");
+ errlHndl_t l_err = NULL;
+ PNOR::SectionInfo_t l_info;
+ // Get temporary attribute overrides from pnor
+ l_err = PNOR::getSectionInfo(PNOR::ATTR_TMP, l_info);
+
+ // Attr override sections are optional so just delete error
+ if (l_err)
+ {
+ TRACFCOMP(g_trac_targeting," HBRT: error getting ATTR_TMP pnor "
+ "section. Not applying temp attributes.");
+ delete l_err;
+ l_err = NULL;
+ }
+ else
+ {
+ TRACFCOMP(g_trac_targeting," HBRT: processing temporary "
+ "overrides");
+ l_err = TARGETING::getAttrOverrides(l_info);
+ if (l_err)
+ {
+ TRACFCOMP(g_trac_targeting," HBRT: Failed applyTempOverrides:"
+ " getting temporary overrides");
+ errlCommit( l_err, TARG_COMP_ID );
+ }
+ }
+
+ TRACFCOMP(g_trac_targeting, EXIT_MRK"applyTempOverrides");
+}
//------------------------------------------------------------------------
struct registerTargRT
@@ -94,6 +125,8 @@ struct registerTargRT
{
runtimeInterfaces_t * rt_intf = getRuntimeInterfaces();
rt_intf->apply_attr_override = &apply_attr_override;
+ postInitCalls_t * rt_post = getPostInitCalls();
+ rt_post->callApplyTempOverrides = &applyTempOverrides;
}
};
OpenPOWER on IntegriCloud