summaryrefslogtreecommitdiffstats
path: root/src/usr/hdat
diff options
context:
space:
mode:
authorStephen Cprek <smcprek@us.ibm.com>2017-08-21 16:54:52 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-08-29 10:18:58 -0400
commitcd1d9e3aa3aca78d6b9d3bfce3f944a7be3918d0 (patch)
treeaa5adf9ba9dd75fed7373e1a95858251233ea98a /src/usr/hdat
parent5ee8711939091cb92bc7637383eb31605b8195d5 (diff)
downloadtalos-hostboot-cd1d9e3aa3aca78d6b9d3bfce3f944a7be3918d0.tar.gz
talos-hostboot-cd1d9e3aa3aca78d6b9d3bfce3f944a7be3918d0.zip
Add HDAT Permissions type to Hostboot Reserved Memory Sections
Additionally pre-verified images are now marked read only Change-Id: Ieba7a4d3e787d155bb3217d52fd9f7cd6ea3dae2 RTC:178470 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44936 Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-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> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hdat')
-rwxr-xr-xsrc/usr/hdat/hdatmsvpd.C9
-rwxr-xr-xsrc/usr/hdat/hdatmsvpd.H8
2 files changed, 12 insertions, 5 deletions
diff --git a/src/usr/hdat/hdatmsvpd.C b/src/usr/hdat/hdatmsvpd.C
index 9a488351c..ca079fe4f 100755
--- a/src/usr/hdat/hdatmsvpd.C
+++ b/src/usr/hdat/hdatmsvpd.C
@@ -278,7 +278,8 @@ errlHndl_t HdatMsVpd::addUEAddrRange(hdatMsAddr_t &i_addr)
errlHndl_t HdatMsVpd::addRHBAddrRange(uint32_t i_dbob_id, hdatMsAddr_t &i_start,
hdatMsAddr_t &i_end, uint32_t i_labelSize,
- uint8_t* &i_labelStringPtr)
+ uint8_t* &i_labelStringPtr,
+ hdatRhbPermType i_permission)
{
errlHndl_t l_errlHndl = NULL;
hdatMsVpdRhbAddrRange_t *l_addr;
@@ -318,6 +319,8 @@ errlHndl_t HdatMsVpd::addRHBAddrRange(uint32_t i_dbob_id, hdatMsAddr_t &i_start,
HDAT_INF("hdatmsvpd:addRHBAddrRange "
"i_labelStringPtr is NULL");
}
+ l_addr->hdatRhbPermission = i_permission;
+
iv_RHBaddrRngArrayHdr.hdatArrayCnt++;
}
else
@@ -1367,7 +1370,7 @@ errlHndl_t HdatMsVpd::hdatLoadMsData(uint32_t &o_size, uint32_t &o_count)
l_pMcsTarget->getAttr<TARGETING::ATTR_HUID>());
break;
}
-
+
// Need to get i2c Master data correctly
std::vector<hdatI2cData_t> l_i2cDevEntries;
@@ -1519,7 +1522,7 @@ errlHndl_t HdatMsVpd::hdatLoadMsData(uint32_t &o_size, uint32_t &o_count)
}
if(l_pProcTarget->getAttr<TARGETING::ATTR_MODEL>() == TARGETING::MODEL_NIMBUS)
{
- // Set the memory controller ID
+ // Set the memory controller ID
l_hdatMemcntrlID |= 1 << (31 - l_pMcbistTarget->getAttr<TARGETING::ATTR_CHIP_UNIT>());
l_hdatMemcntrlID |= 1 << (31 - (l_pMcsTarget->getAttr<TARGETING::ATTR_CHIP_UNIT>() + 4));
l_hdatMemcntrlID |= 1 << (31 - (l_pMcaTarget->getAttr<TARGETING::ATTR_CHIP_UNIT>() + 8));
diff --git a/src/usr/hdat/hdatmsvpd.H b/src/usr/hdat/hdatmsvpd.H
index 0f3b7924f..429d4dc3c 100755
--- a/src/usr/hdat/hdatmsvpd.H
+++ b/src/usr/hdat/hdatmsvpd.H
@@ -184,7 +184,8 @@ struct hdatMsVpdRhbAddrRange_t
// address+1
uint32_t hdatRhbLabelSize; // 0x0014 Label size
uint8_t hdatRhbLabelString[64]; // 0x0018 Label string Ptr
- uint8_t reserved[8]; // 0x0058 Reserved
+ hdatRhbPermType hdatRhbPermission; // 0x0058 R/W Permissions
+ uint8_t reserved[7]; // 0x0059 Reserved
} __attribute__ ((packed));
/** @brief Reserved HB length
@@ -388,6 +389,7 @@ class HdatMsVpd : public HdatHdif
* @param[in] i_end - The end address of the range
* @param[in] i_labelSize - RHB Label Size
* @param[in] i_labelStringPtr - RHB Label String
+ * @param[in] i_permission - R/W permissions for RHB.
*
* @return A null error log handle if successful, else the return code
* pointed to by o_errlHndl contains one of:
@@ -397,7 +399,9 @@ class HdatMsVpd : public HdatHdif
errlHndl_t addRHBAddrRange( uint32_t i_dbob_id, hdatMsAddr_t &i_start,
hdatMsAddr_t &i_end, uint32_t i_labelSize,
- uint8_t* &i_labelStringPtr);
+ uint8_t* &i_labelStringPtr,
+ hdatRhbPermType i_permission =
+ HDAT::RHB_READ_WRITE);
/**
* @brief Update the mainstore VPD with Barrier Synchronization Register
OpenPOWER on IntegriCloud