diff options
| author | Stephen Cprek <smcprek@us.ibm.com> | 2014-10-17 14:27:39 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-11-13 09:58:07 -0600 |
| commit | 32796a39f1b46b27632b084066bcc504438f3dbb (patch) | |
| tree | 64eec73ed1d0b375d65d01042302665ad128f0a4 /src/include/usr | |
| parent | a09cff943a1d12904de650f133a1b39a6de42f1e (diff) | |
| download | blackbird-hostboot-32796a39f1b46b27632b084066bcc504438f3dbb.tar.gz blackbird-hostboot-32796a39f1b46b27632b084066bcc504438f3dbb.zip | |
Separate attr override section of PNOR into 2 parts
New Sections: ATTR_TMP, ATTR_PERM
Change-Id: Id66495509076f9637e8720f3d2631e8db7456fb2
RTC:113615
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14168
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr')
| -rwxr-xr-x | src/include/usr/hwpf/plat/fapiPlatAttrOverrideSync.H | 12 | ||||
| -rw-r--r-- | src/include/usr/pnor/pnorif.H | 4 | ||||
| -rw-r--r-- | src/include/usr/targeting/attrPlatOverride.H | 27 | ||||
| -rw-r--r-- | src/include/usr/targeting/common/attributeTank.H | 8 | ||||
| -rw-r--r-- | src/include/usr/targeting/common/targreasoncodes.H | 34 |
5 files changed, 53 insertions, 32 deletions
diff --git a/src/include/usr/hwpf/plat/fapiPlatAttrOverrideSync.H b/src/include/usr/hwpf/plat/fapiPlatAttrOverrideSync.H index fdcee3db8..fbc036eda 100755 --- a/src/include/usr/hwpf/plat/fapiPlatAttrOverrideSync.H +++ b/src/include/usr/hwpf/plat/fapiPlatAttrOverrideSync.H @@ -47,9 +47,8 @@ //****************************************************************************** namespace TARGETING { - errlHndl_t getAttrOverrides(PNOR::SectionId section, - AttributeTank* io_tanks[AttributeTank::TANK_LAYER_LAST], - uint32_t i_pnorSecOffset); + errlHndl_t getAttrOverrides(PNOR::SectionInfo_t &i_sectionInfo, + AttributeTank* io_tanks[AttributeTank::TANK_LAYER_LAST]); } namespace fapi @@ -89,9 +88,10 @@ public: /** * @brief Allow a attribute override to directly access the override tank */ - friend errlHndl_t TARGETING::getAttrOverrides(PNOR::SectionId section, - TARGETING::AttributeTank* io_tanks[TARGETING::AttributeTank::TANK_LAYER_LAST], - uint32_t i_pnorSecOffset); + friend errlHndl_t TARGETING::getAttrOverrides( + PNOR::SectionInfo_t &i_sectionInfo, + TARGETING::AttributeTank* + io_tanks[TARGETING::AttributeTank::TANK_LAYER_LAST]); /** * @brief Maximum size of a direct attribute override diff --git a/src/include/usr/pnor/pnorif.H b/src/include/usr/pnor/pnorif.H index 0272ce832..cfda3aeb2 100644 --- a/src/include/usr/pnor/pnorif.H +++ b/src/include/usr/pnor/pnorif.H @@ -54,10 +54,11 @@ enum SectionId DIMM_JEDEC_VPD, /**< DIMM JEDEC VPD */ MODULE_VPD, /**< Module VPD */ CENTAUR_VPD, /**< Centaur VPD */ - ATTR_OVER, /**< Attribute Override */ NVRAM, /**< Opal NVRAM */ OCC, /**< OCC lid */ FIRDATA, /**< FIRDATA */ + ATTR_TMP, /**< Temporary Attribute Override */ + ATTR_PERM, /**< Permanent Attribute Override */ TEST, /**< Scratch space for PNOR test cases */ NUM_SECTIONS, /**< Number of defined sections */ @@ -116,7 +117,6 @@ errlHndl_t validateAltMaster( void ); */ const uint32_t pnorTestSec_readwrite_offset = 0x100; const uint32_t pnorTestSec_smartwrite_offset = 0x120; -const uint32_t pnorTestSec_BMCAttrOverride_offset = 0x200; } diff --git a/src/include/usr/targeting/attrPlatOverride.H b/src/include/usr/targeting/attrPlatOverride.H index 61eccd8b5..6461228ab 100644 --- a/src/include/usr/targeting/attrPlatOverride.H +++ b/src/include/usr/targeting/attrPlatOverride.H @@ -27,6 +27,7 @@ #include <targeting/common/attributeTank.H> #include <pnor/pnorif.H> +#include <utility> namespace TARGETING { @@ -45,6 +46,21 @@ struct AttrOverrideSection }; /** + * @brief Array containing AttributeTank layers to Pnor Override Sections + * + * The pair is used just to maintain order of AttributeTank::TankLayer + * enums and make it obvious which layers map to what PNOR section. + * Currrently the pair is only used in a test case to keep it in order + */ +const std::pair<AttributeTank::TankLayer, PNOR::SectionId> + tankLayerToPnor[AttributeTank::TANK_LAYER_LAST] = + { + std::make_pair(AttributeTank::TANK_LAYER_FAPI, PNOR::ATTR_TMP), + std::make_pair(AttributeTank::TANK_LAYER_TARG, PNOR::ATTR_TMP), + std::make_pair(AttributeTank::TANK_LAYER_PERM, PNOR::ATTR_PERM) + }; + +/** * @brief This function gets any Attribute Overrides in PNOR * * This function reads attribute overrides in from PNOR and places them in @@ -52,19 +68,14 @@ struct AttrOverrideSection * permanent attribute overrides. Currently there are 3 attribute tanks, * FAPI, Targeting, and Permanent. * - * @param[in] i_section PNOR::SectionId to look for overrides default - * ATTR_OVER + * @param[in] i_sectionInfo PNOR::SectionInfo_t to look for overrides * @param[in] io_tanks Array of pointers to Attribute tanks, used for * test cases, default set to NULL - * @param[in] i_pnorSecOffset Offset within section to read, used for test cases - * default set to 0 * * @return errlHndl_t Error log handle. */ -errlHndl_t getAttrOverrides(PNOR::SectionId i_section = PNOR::ATTR_OVER, - AttributeTank* io_tanks[AttributeTank::TANK_LAYER_LAST] = NULL, - uint32_t i_pnorSecOffset = 0); -//errlCommit( err, TARG_COMP_ID); +errlHndl_t getAttrOverrides(PNOR::SectionInfo_t &i_sectionInfo, + AttributeTank* io_tanks[AttributeTank::TANK_LAYER_LAST] = NULL); } // end of namespace diff --git a/src/include/usr/targeting/common/attributeTank.H b/src/include/usr/targeting/common/attributeTank.H index 94cb69716..2acd48d42 100644 --- a/src/include/usr/targeting/common/attributeTank.H +++ b/src/include/usr/targeting/common/attributeTank.H @@ -86,6 +86,7 @@ public: TANK_LAYER_TARG, TANK_LAYER_PERM, TANK_LAYER_LAST = TANK_LAYER_PERM, + TANK_LAYER_TERM = 0xFFFFFFFF, }; /** @@ -354,6 +355,13 @@ public: */ errlHndl_t writePermAttributes(); + /** + * @brief This retuns the number of attributes overrides in an attr tank + * + * @return size_t Number of overrides in attr tank + */ + size_t size() const; + private: // Copy constructor and assignment operator disabled AttributeTank(const AttributeTank & i_right); diff --git a/src/include/usr/targeting/common/targreasoncodes.H b/src/include/usr/targeting/common/targreasoncodes.H index 63da83bf3..b26b60d9e 100644 --- a/src/include/usr/targeting/common/targreasoncodes.H +++ b/src/include/usr/targeting/common/targreasoncodes.H @@ -50,22 +50,24 @@ enum TargetingModuleId enum TargetingReasonCode { - TARG_RC_TEST_TARGET_FFDC = TARG_COMP_ID | 0x01, - TARG_RC_BAD_EYECATCH = TARG_COMP_ID | 0x02, - TARG_RC_MM_BLOCK_FAIL = TARG_COMP_ID | 0x03, - TARG_RC_MM_PERM_FAIL = TARG_COMP_ID | 0x04, - TARG_RC_ATTR_MSG_FAIL = TARG_COMP_ID | 0x05, - TARG_RC_UNHANDLED_ATTR_SEC_TYPE = TARG_COMP_ID | 0x06, - TARG_RC_ATTR_SYNC_TO_FSP_FAIL = TARG_COMP_ID | 0x07, - TARG_RC_ATTR_SYNC_REQUEST_TO_HB_FAIL = TARG_COMP_ID | 0x08, - TARG_RC_ATTR_SYNC_TO_HB_FAIL = TARG_COMP_ID | 0x09, - TARG_RT_UNIT_TARGET_NOT_FOUND = TARG_COMP_ID | 0x0a, - TARG_RT_NO_PROC_TARGET = TARG_COMP_ID | 0x0b, - TARG_RT_TARGET_TYPE_NOT_SUPPORTED = TARG_COMP_ID | 0x0c, - TARG_RC_ATTR_OVER_PNOR_SEC_SPACE_FAIL = TARG_COMP_ID | 0x0d, - TARG_RC_ATTR_OVER_ATTR_DATA_SIZE_FAIL = TARG_COMP_ID | 0x0e, - TARG_RC_WRITE_PERM_ATTR_FAIL = TARG_COMP_ID | 0x0f, - TARG_RC_WRITE_PERM_ATTR_TARGET_FAIL = TARG_COMP_ID | 0x10, + TARG_RC_TEST_TARGET_FFDC = TARG_COMP_ID | 0x01, + TARG_RC_BAD_EYECATCH = TARG_COMP_ID | 0x02, + TARG_RC_MM_BLOCK_FAIL = TARG_COMP_ID | 0x03, + TARG_RC_MM_PERM_FAIL = TARG_COMP_ID | 0x04, + TARG_RC_ATTR_MSG_FAIL = TARG_COMP_ID | 0x05, + TARG_RC_UNHANDLED_ATTR_SEC_TYPE = TARG_COMP_ID | 0x06, + TARG_RC_ATTR_SYNC_TO_FSP_FAIL = TARG_COMP_ID | 0x07, + TARG_RC_ATTR_SYNC_REQUEST_TO_HB_FAIL = TARG_COMP_ID | 0x08, + TARG_RC_ATTR_SYNC_TO_HB_FAIL = TARG_COMP_ID | 0x09, + TARG_RT_UNIT_TARGET_NOT_FOUND = TARG_COMP_ID | 0x0a, + TARG_RT_NO_PROC_TARGET = TARG_COMP_ID | 0x0b, + TARG_RT_TARGET_TYPE_NOT_SUPPORTED = TARG_COMP_ID | 0x0c, + TARG_RC_ATTR_OVER_PNOR_SEC_SPACE_FAIL = TARG_COMP_ID | 0x0d, + TARG_RC_ATTR_OVER_ATTR_DATA_SIZE_FAIL = TARG_COMP_ID | 0x0e, + TARG_RC_WRITE_PERM_ATTR_FAIL = TARG_COMP_ID | 0x0f, + TARG_RC_WRITE_PERM_ATTR_TARGET_FAIL = TARG_COMP_ID | 0x10, + TARG_RC_WRITE_ATTR_OVER_WRONG_PNOR_SEC = TARG_COMP_ID | 0x11, + TARG_RC_WRITE_ATTR_OVER_NO_TANK_LAYER = TARG_COMP_ID | 0x12, }; }; // End TARGETING namespace |

