summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
authorStephen Cprek <smcprek@us.ibm.com>2014-10-17 14:27:39 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-11-13 09:58:07 -0600
commit32796a39f1b46b27632b084066bcc504438f3dbb (patch)
tree64eec73ed1d0b375d65d01042302665ad128f0a4 /src/include/usr
parenta09cff943a1d12904de650f133a1b39a6de42f1e (diff)
downloadblackbird-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-xsrc/include/usr/hwpf/plat/fapiPlatAttrOverrideSync.H12
-rw-r--r--src/include/usr/pnor/pnorif.H4
-rw-r--r--src/include/usr/targeting/attrPlatOverride.H27
-rw-r--r--src/include/usr/targeting/common/attributeTank.H8
-rw-r--r--src/include/usr/targeting/common/targreasoncodes.H34
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
OpenPOWER on IntegriCloud