diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2018-02-22 09:59:11 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-02-24 21:42:48 -0500 |
commit | 431a3cc0aa10884e9f9f27a12c6d1c97206bc83a (patch) | |
tree | e8361b4da7d862f05141536537854ae3ee162241 /src/include | |
parent | 24bc6a1bee514ae580733f1695c7d82edc4da4cb (diff) | |
download | talos-hostboot-431a3cc0aa10884e9f9f27a12c6d1c97206bc83a.tar.gz talos-hostboot-431a3cc0aa10884e9f9f27a12c6d1c97206bc83a.zip |
Bug fixes for concurrent update of HBRT
Fixed a bug where the wrong copy of the attribute was being used
after our code update preparation was run.
Fixed a bug due to not having enough memory allocated to update
the attribute values during the transition.
Added space to initial reserved memory to allow for new
attributes to be added at runtime.
Change-Id: I97c4d20ff1c369398be470fef718bbd001f71c1b
CQ: SW417526
ForwardPort: yes
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54685
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/usr/runtime/rt_targeting.H | 18 | ||||
-rw-r--r-- | src/include/usr/targeting/attrrp.H | 6 | ||||
-rw-r--r-- | src/include/usr/targeting/common/target.H | 16 | ||||
-rw-r--r-- | src/include/usr/targeting/common/targreasoncodes.H | 2 | ||||
-rw-r--r-- | src/include/usr/targeting/targplatreasoncodes.H | 17 |
5 files changed, 36 insertions, 23 deletions
diff --git a/src/include/usr/runtime/rt_targeting.H b/src/include/usr/runtime/rt_targeting.H index 3f1ccb480..9f3d96818 100644 --- a/src/include/usr/runtime/rt_targeting.H +++ b/src/include/usr/runtime/rt_targeting.H @@ -68,11 +68,11 @@ namespace RT_TARG * @param[in] Pointer to current Reserved Memory targeting binary data * @param[in/out] Pointer to new LID Structure targeting binary data * @param[out] Error log userdata2 value associated with non-zero rtn code - * @return 0 on success, else return code + * @return nullptr on success, else error log */ - int saveRestoreAttrs(void *i_rsvdMemPtr, - void *io_lidStructPtr, - uint64_t& o_userdata2); + errlHndl_t saveRestoreAttrs(void *i_rsvdMemPtr, + void *io_lidStructPtr, + uint64_t& o_userdata2); /** * @brief Validate LID Structure against Reserved Memory. Check that the @@ -81,12 +81,14 @@ namespace RT_TARG * match. * @param[in] Pointer to new LID Structure targeting binary data * @param[in] Pointer to current Reserved Memory targeting binary data + * @param[out] Total size of all sections in the new lid * @param[out] Error log userdata2 value associated with non-zero rtn code - * @return 0 on success, else return code + * @return nullptr on success, else error log */ - int validateData(void *i_lidStructPtr, - void *i_rsvdMemPtr, - uint64_t& o_userdata2); + errlHndl_t validateData(void *i_lidStructPtr, + void *i_rsvdMemPtr, + size_t& o_lidTotalSize, + uint64_t& o_userdata2); /** * @brief Apply ATTR_TMP overrides to be available for run time diff --git a/src/include/usr/targeting/attrrp.H b/src/include/usr/targeting/attrrp.H index fefb94d4b..b9398d429 100644 --- a/src/include/usr/targeting/attrrp.H +++ b/src/include/usr/targeting/attrrp.H @@ -73,9 +73,9 @@ class AttrRP const TARGETING::NODE_ID i_nodeId); #ifdef __HOSTBOOT_RUNTIME - friend int RT_TARG::saveRestoreAttrs(void *, - void *, - uint64_t&); + friend errlHndl_t RT_TARG::saveRestoreAttrs(void *, + void *, + uint64_t&); #endif public: diff --git a/src/include/usr/targeting/common/target.H b/src/include/usr/targeting/common/target.H index cc5f4a1f1..7bdd16f54 100644 --- a/src/include/usr/targeting/common/target.H +++ b/src/include/usr/targeting/common/target.H @@ -55,12 +55,16 @@ // Forward declarations to allow friend functions to work //****************************************************************************** #ifdef __HOSTBOOT_RUNTIME +namespace ERRORLOG +{ + class ErrlEntry; +} namespace RT_TARG { void adjustTargeting4Runtime(); - int saveRestoreAttrs(void *i_rsvdMemPtr, - void *io_lidStructPtr, - uint64_t& o_userdata2); + ERRORLOG::ErrlEntry* saveRestoreAttrs(void *i_rsvdMemPtr, + void *io_lidStructPtr, + uint64_t& o_userdata2); } #endif @@ -698,9 +702,9 @@ class Target #ifdef __HOSTBOOT_RUNTIME friend void RT_TARG::adjustTargeting4Runtime(); - friend int RT_TARG::saveRestoreAttrs(void *, - void *, - uint64_t&); + friend ERRORLOG::ErrlEntry* RT_TARG::saveRestoreAttrs(void *, + void *, + uint64_t&); #endif diff --git a/src/include/usr/targeting/common/targreasoncodes.H b/src/include/usr/targeting/common/targreasoncodes.H index f7bcdbc6b..6e21afd8c 100644 --- a/src/include/usr/targeting/common/targreasoncodes.H +++ b/src/include/usr/targeting/common/targreasoncodes.H @@ -50,7 +50,6 @@ enum TargetingModuleId TARG_APPLY_ATTR_OVER = 0x0A, TARG_HANDLE_ENUM_CHECK_FAILURE = 0x0B, TARG_HANDLE_RANGE_CHECK_FAILURE = 0x0C, - TARG_RT_HBRT_UPDATE_PREP = 0x0D, }; enum TargetingReasonCode @@ -78,7 +77,6 @@ enum TargetingReasonCode TARG_RC_MM_BLOCK_UNMAP_FAIL = TARG_COMP_ID | 0x15, TARG_RC_ATTRIBUTE_ENUM_CHECK_FAIL = TARG_COMP_ID | 0x16, TARG_RC_ATTRIBUTE_RANGE_CHECK_FAIL = TARG_COMP_ID | 0x17, - TARG_RC_CONCURRENT_CODE_UPDATE_FAIL = TARG_COMP_ID | 0x18, }; }; // End TARGETING namespace diff --git a/src/include/usr/targeting/targplatreasoncodes.H b/src/include/usr/targeting/targplatreasoncodes.H index de2283bac..ac93bf2b9 100644 --- a/src/include/usr/targeting/targplatreasoncodes.H +++ b/src/include/usr/targeting/targplatreasoncodes.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2017 */ +/* Contributors Listed Below - COPYRIGHT 2013,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -58,6 +58,9 @@ enum PlatTargetingModuleId TARG_MOD_ATTRRP_RT = 0x82, TARG_MOD_SAVE_OVERRIDE_TANK = 0x83, TARG_MOD_SAVE_ATTR_TANK = 0x84, + TARG_RT_HBRT_UPDATE_PREP = 0x85, + TARG_RT_VALIDATEDATA = 0x86, + TARG_RT_SAVERESTOREATTRS = 0x87, }; /** @@ -68,9 +71,15 @@ enum PlatTargetingModuleId */ enum PlatTargetingReasonCode { - TARG_RC_INVALID_NODE = TARG_COMP_ID | 0x80, - TARG_RC_TARGET_NOT_FOUND = TARG_COMP_ID | 0x81, - TARG_SPACE_OVERRUN = TARG_COMP_ID | 0x82, + TARG_RC_INVALID_NODE = TARG_COMP_ID | 0x80, + TARG_RC_TARGET_NOT_FOUND = TARG_COMP_ID | 0x81, + TARG_SPACE_OVERRUN = TARG_COMP_ID | 0x82, + TARG_RT_BAD_EYECATCHER_LID = TARG_COMP_ID | 0x83, + TARG_RT_BAD_EYECATCHER_MEM = TARG_COMP_ID | 0x84, + TARG_RT_SECTION_NUM_MISMATCH = TARG_COMP_ID | 0x85, + TARG_RT_SECTION_MISMATCH = TARG_COMP_ID | 0x86, + TARG_RT_MISSING_ATTR = TARG_COMP_ID | 0x87, + TARG_RT_BAD_ATTR_SIZES = TARG_COMP_ID | 0x88, }; } // End TARGETING namespace |