From 664897ffe7ac048a96d9eb821f1df24359d4784f Mon Sep 17 00:00:00 2001 From: Bill Schwartz Date: Wed, 19 Aug 2015 18:33:05 -0500 Subject: 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 Tested-by: Jenkins Server --- src/usr/targeting/attrPlatOverride.C | 7 +++++- src/usr/targeting/runtime/attrPlatOverride_rt.C | 33 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) (limited to 'src/usr/targeting') 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; } }; -- cgit v1.2.1