diff options
author | Bill Schwartz <whs@us.ibm.com> | 2015-08-19 18:33:05 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-08-25 15:00:04 -0500 |
commit | 664897ffe7ac048a96d9eb821f1df24359d4784f (patch) | |
tree | eaf70f7c2eb6763dbcc9c48398a53a9454f6c81e /src/usr | |
parent | afa921d1c9a2930573761fe34525819c6b3cd898 (diff) | |
download | talos-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.C | 11 | ||||
-rw-r--r-- | src/usr/targeting/attrPlatOverride.C | 7 | ||||
-rw-r--r-- | src/usr/targeting/runtime/attrPlatOverride_rt.C | 33 |
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; } }; |