summaryrefslogtreecommitdiffstats
path: root/src/usr/hdat
diff options
context:
space:
mode:
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