sync opbuild with latest hostboot commits.
diff --git a/openpower/package/hostboot/hostboot-0006_POWER_CONTROL_CAPABLE.patch b/openpower/package/hostboot/hostboot-0006_POWER_CONTROL_CAPABLE.patch
new file mode 100644
index 0000000..e7a902b
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0006_POWER_CONTROL_CAPABLE.patch
@@ -0,0 +1,181 @@
+From c474b26291b009f7a9c97e2bf94ad2917f11b1b9 Mon Sep 17 00:00:00 2001
+From: Dan Crowell <dcrowell@us.ibm.com>
+Date: Sun, 22 Mar 2015 23:03:57 -0500
+Subject: [PATCH] Add support for POWER_CONTROL_CAPABLE to ISDIMMs
+
+Change-Id: If9de980385cac7706b321a9fefc1158dc540b7e0
+---
+ .../usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H | 11 +++-
+ .../hwp/mvpd_accessors/getControlCapableData.C | 54 ++++++++++----------
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C | 16 ++++++
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttrData.C | 3 +
+ 4 files changed, 55 insertions(+), 29 deletions(-)
+
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+index 07ea5fc..810cb40 100644
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+@@ -46,11 +46,14 @@ namespace getAttrData
+ const uint8_t NUM_PORTS = 2; //Each MBA has 2 ports
+ const uint8_t NUM_DIMMS = 2; //Each port has 2 DIMMs
+ const uint8_t NUM_RANKS = 4; //Number of ranks
+- const uint8_t PORT_SECTION_SIZE = 64; //Each port has 64 bytes
++ //Each port has 64 bytes of space, but only 62 bytes is useable
++ const uint8_t PORT_SECTION_SIZE = 64;
++ const uint8_t PORT_SECTION_USED = 62;
+
+ struct port_attributes
+ {
+- uint8_t port_attr[PORT_SECTION_SIZE];
++ uint8_t port_attr[PORT_SECTION_USED];
++ uint8_t nonport_data[PORT_SECTION_SIZE-PORT_SECTION_USED];
+ };
+ struct mba_attributes
+ {
+@@ -102,6 +105,7 @@ namespace getAttrData
+ UINT32_BY2 =0x0004, // uint32_t [2]
+ UINT32_BY2_BY2 =0x0005, // uint32_t [2][2]
+ UINT64 =0x0006, // uint64_t
++ UINT8 =0x0007, // uint8_t
+ };
+ const uint16_t OUTPUT_TYPE_MASK = 0x00FF;
+
+@@ -111,6 +115,7 @@ namespace getAttrData
+ typedef uint32_t UINT32_BY2_t [2];
+ typedef uint32_t UINT32_BY2_BY2_t [2][2];
+ typedef uint64_t UINT64_t;
++ typedef uint8_t UINT8_t;
+
+ // Special processing
+ // Rules:
+@@ -343,6 +348,8 @@ template<>class MBvpdAttrDataType<fapi::ATTR_VPD_TSYS_ADR>
+ { public: typedef fapi::ATTR_VPD_TSYS_ADR_Type Type; };
+ template<>class MBvpdAttrDataType<fapi::ATTR_VPD_TSYS_DP18>
+ { public: typedef fapi::ATTR_VPD_TSYS_DP18_Type Type; };
++template<>class MBvpdAttrDataType<fapi::ATTR_VPD_POWER_CONTROL_CAPABLE>
++ { public: typedef fapi::ATTR_VPD_POWER_CONTROL_CAPABLE_Type Type; };
+
+
+ // Template function that checks that the type is as expected.
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getControlCapableData.C b/src/usr/hwpf/hwp/mvpd_accessors/getControlCapableData.C
+index 4e4fe02..90afda6 100644
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getControlCapableData.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getControlCapableData.C
+@@ -5,7 +5,7 @@
+ /* */
+ /* OpenPOWER HostBoot Project */
+ /* */
+-/* Contributors Listed Below - COPYRIGHT 2014 */
++/* Contributors Listed Below - COPYRIGHT 2014,2015 */
+ /* [+] International Business Machines Corp. */
+ /* */
+ /* */
+@@ -40,38 +40,38 @@ fapi::ReturnCode getControlCapableData(
+ const fapi::Target &i_mbTarget,
+ uint8_t & o_val)
+ {
+- //Record:VSPD, Keyword:MR, offset: 253, 1 byte.
+- const uint32_t MR_KEYWORD_SIZE = 255;
++ fapi::ReturnCode l_rc;
+
+- struct mr_keyword
+- {
+- uint8_t filler[253];
+- uint8_t position; //offset 253
+- uint8_t extraFiller[MR_KEYWORD_SIZE-sizeof(filler)-sizeof(position)];
+- };
+-
+- fapi::ReturnCode l_fapirc;
+- mr_keyword * l_pMrBuffer = new mr_keyword;
+- uint32_t l_MrBufsize = MR_KEYWORD_SIZE;
+- do{
+-
+- l_fapirc = fapiGetMBvpdField(fapi::MBVPD_RECORD_VSPD,
+- fapi::MBVPD_KEYWORD_MR,
+- i_mbTarget,
+- reinterpret_cast<uint8_t *>(l_pMrBuffer),
+- l_MrBufsize);
+- if(l_fapirc)
++ FAPI_DBG("getControlCapableData: start");
++ do {
++ // ATTR_VPD_POWER_CONTROL_CAPABLE is at the membuf level, but the
++ // getMBvpdAttr() function takes a mba, so need to do a
++ // conversion
++ std::vector<fapi::Target> l_mbas;
++ l_rc = fapiGetChildChiplets( i_mbTarget,
++ fapi::TARGET_TYPE_MBA_CHIPLET,
++ l_mbas );
++ if( l_rc )
+ {
+- FAPI_ERR("getControlCapableData: Read of MR Keyword failed");
++ FAPI_ERR("getControlCapableData: fapiGetChildChiplets failed");
+ break;
+ }
+- o_val = l_pMrBuffer->position;
+
+- }while(0);
++ // If we don't have any functional MBAs then we will fail in
++ // the other function so just return a default value here
++ if( l_mbas.empty() )
++ {
++ o_val = fapi::ENUM_ATTR_VPD_POWER_CONTROL_CAPABLE_NONE;
++ break;
++ }
+
+- delete l_pMrBuffer;
+- l_pMrBuffer = NULL;
++ // Call a VPD Accessor HWP to get the data
++ FAPI_EXEC_HWP(l_rc, getMBvpdAttr,
++ l_mbas[0], ATTR_VPD_POWER_CONTROL_CAPABLE,
++ &o_val, sizeof(ATTR_VPD_POWER_CONTROL_CAPABLE_Type));
++ } while(0);
++ FAPI_ERR("getControlCapableData: end");
+
+- return l_fapirc;
++ return l_rc;
+ }
+ }
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+index b13e4f9..7be8ed2 100644
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+@@ -976,6 +976,22 @@ fapi::ReturnCode returnValue (const MBvpdAttrDef* i_pAttrDef,
+ (*(UINT64_t*)o_pVal) = l_value;
+ break ;
+ }
++ case UINT8: // uint8_t
++ {
++ // make sure return value size is correct
++ if (sizeof(UINT8_t) != i_valSize)
++ {
++ l_fapirc = sizeMismatch(sizeof(UINT8_t),
++ i_valSize,
++ i_pAttrDef->iv_attrId);
++ break; //return with error
++ }
++
++ // only 1 value is present, it isn't stored per mba/port
++ uint8_t l_value = (reinterpret_cast<uint8_t*>(i_pBuffer))[l_attrOffset];
++ (*(UINT8_t*)o_pVal) = l_value;
++ break ;
++ }
+ default: // Hard to do, but needs to be caught
+ FAPI_ERR("returnValue: invalid output type 0x%04x for"
+ " attribute ID 0x%08x",
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttrData.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttrData.C
+index 4b18e40..5a599b5 100644
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttrData.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttrData.C
+@@ -178,6 +178,9 @@ const MBvpdAttrDef g_MBVPD_ATTR_DEF_array [] =
+ {ATTR_VPD_DRAM_2N_MODE_ENABLED,ALL_DIMM,ALL_VER,MBVPD_KEYWORD_MR,48,UINT8_BY2,0},
+ {ATTR_VPD_TSYS_ADR,ALL_DIMM,ALL_VER,MBVPD_KEYWORD_MR,49,UINT8_BY2|PORT00,0},
+ {ATTR_VPD_TSYS_DP18,ALL_DIMM,ALL_VER,MBVPD_KEYWORD_MR,49,UINT8_BY2|PORT11,0},
++
++// Membuf-level data that is stored within MR
++ {ATTR_VPD_POWER_CONTROL_CAPABLE,ALL_DIMM,ALL_VER,MBVPD_KEYWORD_MR,253,UINT8,0},
+ };
+
+ const uint32_t g_MBVPD_ATTR_DEF_array_size =
+--
+1.7.4.1
+