summaryrefslogtreecommitdiffstats
path: root/src/usr/vpd
diff options
context:
space:
mode:
authorMarty Gloff <mgloff@us.ibm.com>2018-03-15 08:52:50 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-04-10 16:14:46 -0400
commit67de094e51e209b16622bee4788a97dd28b538c6 (patch)
treea785b4673e61a8e85032f2eb86979f5917a76ca3 /src/usr/vpd
parent7a4cb95b51a4090a1a4c3506bf206915bb73de21 (diff)
downloadtalos-hostboot-67de094e51e209b16622bee4788a97dd28b538c6.tar.gz
talos-hostboot-67de094e51e209b16622bee4788a97dd28b538c6.zip
Support multiple nodes in HBRT - Remove Single Node Items
There are some items that applied to a single node implementation that can be removed after all dependencies on them have been removed by other tasks. This single node support is being moved/removed. Also a check is being added to the VPD support so the node value does not index beyond the end of the array of reserved memory addresses. Change-Id: I7fea5ac9cdfa9f37caa57905d320633a8039e79d RTC: 186585 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/55917 Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/vpd')
-rw-r--r--src/usr/vpd/runtime/rt_vpd.C28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/usr/vpd/runtime/rt_vpd.C b/src/usr/vpd/runtime/rt_vpd.C
index e10759b82..4ced81370 100644
--- a/src/usr/vpd/runtime/rt_vpd.C
+++ b/src/usr/vpd/runtime/rt_vpd.C
@@ -58,6 +58,7 @@ extern trace_desc_t* g_trac_vpd;
// host interface get_reserved_mem function. We only want to call the
// function once as memory is allocated with every call.
static uint64_t g_reserved_mem_addr[] = {0, 0, 0, 0};
+#define MAX_RSVD_MEM_ADDRS (sizeof(g_reserved_mem_addr) / sizeof(uint64_t))
namespace VPD
@@ -103,8 +104,33 @@ errlHndl_t getPnorAddr( pnorInformation & i_pnorInfo,
{
errlHndl_t err = NULL;
+ if( i_instance >= MAX_RSVD_MEM_ADDRS )
+ {
+ TRACFCOMP(g_trac_vpd,ERR_MRK"rt_vpd: Node %d is too large for size "
+ "of reserved memory address array %d",
+ i_instance,
+ MAX_RSVD_MEM_ADDRS);
+ /*@
+ * @errortype
+ * @moduleid VPD::VPD_RT_GET_ADDR
+ * @reasoncode VPD::VPD_RT_NODE_TOO_LARGE
+ * @userdata1 Node ID
+ * @userdata2 Rsvd Mem Address array size
+ * @devdesc Node for VPD is too large
+ */
+ err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ VPD::VPD_RT_GET_ADDR,
+ VPD::VPD_RT_NODE_TOO_LARGE,
+ i_instance,
+ MAX_RSVD_MEM_ADDRS);
+
+ err->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE,
+ HWAS::SRCI_PRIORITY_HIGH);
+
+ err->collectTrace( "VPD", 256);
+ }
// Get the reserved_mem_addr only once
- if( g_reserved_mem_addr[i_instance] == 0 )
+ else if( g_reserved_mem_addr[i_instance] == 0 )
{
uint64_t l_vpdSize;
g_reserved_mem_addr[i_instance] =
OpenPOWER on IntegriCloud