diff --git a/README b/README
index 9f61021..2e84fbb 100644
--- a/README
+++ b/README
@@ -10,8 +10,9 @@
 
 1. Install Ubuntu 14.04 or Debian 7.5 64-bit.
 2. Install the packages necessary for the build:
-> sudo apt-get install cscope ctags libz-dev libexpat-dev libc6-dev-i386 \
-  build-essential g++ git bison flex gcc-multilib g++-multilib unzip \
+> sudo apt-get install cscope ctags libz-dev libexpat-dev \
+  python language-pack-en \
+  build-essential g++ git bison flex unzip \
   libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc
 3. Continue with the clone, environment setup, and build as noted above.
 
diff --git a/buildroot b/buildroot
index 9ac423f..80a2f83 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit 9ac423f6f0d99b33e7bb7ad703cf83e80716da8a
+Subproject commit 80a2f83e60f3fd21a38e2bc9aac149f2c3a9ffdd
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index d72cb81..cd32a2c 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -8,6 +8,7 @@
 
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
 
 BR2_OCC_BIN_FILENAME="occ.bin"
 
@@ -37,7 +38,7 @@
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_GIT=y
 BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1444a4e78a9ce324b0b6ac243ccfbfc8fce25d7e"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
new file mode 100644
index 0000000..c5bde78
--- /dev/null
+++ b/openpower/configs/garrison_defconfig
@@ -0,0 +1,59 @@
+BR2_powerpc64=y
+BR2_powerpc_power8=y
+BR2_OPENPOWER_PLATFORM=y
+
+BR2_OPENPOWER_CONFIG_NAME="garrison"
+BR2_OPENPOWER_XML_PACKAGE="garrison-xml"
+BR2_HOSTBOOT_CONFIG_FILE="garrison.config"
+
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="n1.ref_image.hdr.bin.ecc"
+
+BR2_OCC_BIN_FILENAME="occ.bin"
+
+BR2_GARRISON_SYSTEM_XML_FILENAME="GARRISON_hb.system.xml"
+BR2_GARRISON_MRW_XML_FILENAME="GARRISON_hb.mrw.xml"
+BR2_GARRISON_BIOS_XML_FILENAME="GARRISON_bios.xml"
+
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="GARRISON_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="GARRISON_HB.targeting.bin.ecc"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
+BR2_OPENPOWER_PNOR_FILENAME="garrison.pnor"
+BR2_OPENPOWER_PNOR_UPDATE_FILENAME="garrison_update.pnor"
+
+# skiboot requirements
+BR2_TARGET_SKIBOOT=y
+BR2_TARGET_SKIBOOT_EMBED_PAYLOAD=n
+
+# petitboot requirements
+BR2_ENABLE_LOCALE_PURGE=y
+BR2_ENABLE_LOCALE_WHITELIST="C en_US"
+BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ROOTFS_OVERLAY="overlay"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 64b827a..edcad58 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -8,6 +8,7 @@
 
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
 
 BR2_OCC_BIN_FILENAME="occ.bin"
 
@@ -37,7 +38,7 @@
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_GIT=y
 BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1444a4e78a9ce324b0b6ac243ccfbfc8fce25d7e"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
diff --git a/openpower/configs/hostboot/firestone.config b/openpower/configs/hostboot/firestone.config
index 4b96cd9..b7bc93c 100755
--- a/openpower/configs/hostboot/firestone.config
+++ b/openpower/configs/hostboot/firestone.config
@@ -18,6 +18,10 @@
 set CVPD_WRITE_TO_HW
 set CVPD_READ_FROM_PNOR
 set CVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
 set SKIP_RESTRICT_EX_UNITS
 unset CDIMM_FORMAT_FOR_CVPD
 
@@ -32,16 +36,29 @@
 
 # turn on console output
 set CONSOLE
-set CONSOLE_AST2400
+set BMC_AST2400
 
 # Enable Kingston dimm voltage workaround
 set KINGSTON_1_35_VOLT
 
 set NO_DMI_EREPAIR
-set DISABLE_HOSTBOOT_RUNTIME
-unset HTMGT
-unset START_OCC_DURING_BOOT
+unset DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+set HTMGT
+set START_OCC_DURING_BOOT
+
+#PNOR flags
+set PNOR_TWO_SIDE_SUPPORT
+
+set BMC_BT_LPC_IPMI
 
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
 
+# Hostboot will detect hardware changes
+set HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/garrison.config b/openpower/configs/hostboot/garrison.config
new file mode 100755
index 0000000..c78bc7a
--- /dev/null
+++ b/openpower/configs/hostboot/garrison.config
@@ -0,0 +1,61 @@
+# The Serial Flash Controller is the AST2400 BMC.
+set   SFC_IS_AST2400
+set   BMC_DOES_SFC_INIT
+unset SFC_IS_IBM_DPSS
+set   ALLOW_MICRON_PNOR
+set   ALLOW_MACRONIX_PNOR
+
+# VPD options.
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
+set MVPD_READ_FROM_PNOR
+set MVPD_WRITE_FROM_PNOR
+set DJVPD_READ_FROM_HW
+set DJVPD_WRITE_TO_HW
+set DJVPD_READ_FROM_PNOR
+set DJVPD_WRITE_TO_PNOR
+set CVPD_READ_FROM_HW
+set CVPD_WRITE_TO_HW
+set CVPD_READ_FROM_PNOR
+set CVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+set SKIP_RESTRICT_EX_UNITS
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+set PALMETTO_VDDR
+
+# disable sbe updates
+set NO_SBE_UPDATES
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2400
+
+# Enable Kingston dimm voltage workaround
+set KINGSTON_1_35_VOLT
+
+set NO_DMI_EREPAIR
+set DISABLE_HOSTBOOT_RUNTIME
+unset HTMGT
+unset START_OCC_DURING_BOOT
+
+#PNOR flags
+set PNOR_TWO_SIDE_SUPPORT
+
+set BMC_BT_LPC_IPMI
+
+# Enable Checktop Analysis
+set ENABLE_CHECKSTOP_ANALYSIS
+
+# Hostboot will detect hardware changes
+set HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/habanero.config b/openpower/configs/hostboot/habanero.config
index 90e5735..b5d28b4a9 100755
--- a/openpower/configs/hostboot/habanero.config
+++ b/openpower/configs/hostboot/habanero.config
@@ -18,6 +18,10 @@
 set CVPD_WRITE_TO_HW
 set CVPD_READ_FROM_PNOR
 set CVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
 set SKIP_RESTRICT_EX_UNITS
 unset CDIMM_FORMAT_FOR_CVPD
 
@@ -34,7 +38,7 @@
 
 # turn on console output
 set CONSOLE
-set CONSOLE_AST2400
+set BMC_AST2400
 
 # Enable Kingston dimm voltage workaround
 set KINGSTON_1_35_VOLT
@@ -58,5 +62,8 @@
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
 
+# Hostboot will detect hardware changes
+set HOST_HCDB_SUPPORT
+
 # set for trace debug to console
 unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/palmetto.config b/openpower/configs/hostboot/palmetto.config
index 12ebc2c..4288585 100755
--- a/openpower/configs/hostboot/palmetto.config
+++ b/openpower/configs/hostboot/palmetto.config
@@ -18,6 +18,10 @@
 set CVPD_WRITE_TO_HW
 set CVPD_READ_FROM_PNOR
 set CVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
 set SKIP_RESTRICT_EX_UNITS
 unset CDIMM_FORMAT_FOR_CVPD
 
@@ -34,7 +38,7 @@
 
 # turn on console output
 set CONSOLE
-set CONSOLE_AST2400
+set BMC_AST2400
 
 set PNOR_IS_32MB
 
@@ -54,5 +58,8 @@
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
 
+# Hostboot will detect hardware changes
+set HOST_HCDB_SUPPORT
+
 # set for trace debug to console
 unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 5a4bf38..b589463 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -8,6 +8,7 @@
 
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
 
 BR2_OCC_BIN_FILENAME="occ.bin"
 
@@ -36,7 +37,7 @@
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_GIT=y
 BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1444a4e78a9ce324b0b6ac243ccfbfc8fce25d7e"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index 83823fb..92ab00f 100644
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -4,6 +4,7 @@
 source "$BR2_EXTERNAL/package/palmetto-xml/Config.in"
 source "$BR2_EXTERNAL/package/habanero-xml/Config.in"
 source "$BR2_EXTERNAL/package/firestone-xml/Config.in"
+source "$BR2_EXTERNAL/package/garrison-xml/Config.in"
 source "$BR2_EXTERNAL/package/openpower-pnor/Config.in"
 source "$BR2_EXTERNAL/package/p8-pore-binutils/Config.in"
 source "$BR2_EXTERNAL/package/occ/Config.in"
diff --git a/openpower/package/firestone-xml/firestone.mk b/openpower/package/firestone-xml/firestone.mk
index 600c285..66622f7 100644
--- a/openpower/package/firestone-xml/firestone.mk
+++ b/openpower/package/firestone-xml/firestone.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-FIRESTONE_XML_VERSION ?= 3383b31643c225f7bcecc8ce08dcbb6803f3e058
+FIRESTONE_XML_VERSION ?= 44d46e5f009b51fd65594c0efe6bb4f2380d11b1
 FIRESTONE_XML_SITE ?= $(call github,open-power,firestone-xml,$(FIRESTONE_XML_VERSION))
 
 FIRESTONE_XML_LICENSE = Apache-2.0
@@ -32,7 +32,6 @@
         bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
 
         # generate the system mrw xml
-        # Not processing until actaul xml is here
         perl -I $(MRW_HB_TOOLS) \
         $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/firestone.xml
         
diff --git a/openpower/package/garrison-xml/Config.in b/openpower/package/garrison-xml/Config.in
new file mode 100755
index 0000000..a1626d0
--- /dev/null
+++ b/openpower/package/garrison-xml/Config.in
@@ -0,0 +1,23 @@
+config BR2_PACKAGE_GARRISON_XML
+        bool "garrison_xml"
+        default y if (BR2_OPENPOWER_CONFIG_NAME = "garrison")
+        help
+            Utilites for building xml and the targeting binary image
+
+config BR2_GARRISON_SYSTEM_XML_FILENAME
+        string "Garrison targeting system xml filename"
+        default ""
+        help
+            Defines the name of the system XML filename to be used when creating targeting binary image
+
+config BR2_GARRISON_MRW_XML_FILENAME
+        string "Garrison targeting mrw xml filename"
+        default ""
+        help
+            Defines the name of the mrw XML filename to be used when creating targeting binary image
+
+config BR2_GARRISON_BIOS_XML_FILENAME
+        string "Garrison BIOS metadata XML filename"
+        default ""
+        help
+            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/garrison-xml/garrison.mk b/openpower/package/garrison-xml/garrison.mk
new file mode 100644
index 0000000..6781be9
--- /dev/null
+++ b/openpower/package/garrison-xml/garrison.mk
@@ -0,0 +1,75 @@
+################################################################################
+#
+# garrison_xml
+#
+################################################################################
+
+GARRISON_XML_VERSION ?= 26d3a993c0aeadcb68afe52b5f3a04a95c0d252b
+GARRISON_XML_SITE ?= $(call github,open-power,garrison-xml,$(GARRISON_XML_VERSION))
+
+GARRISON_XML_LICENSE = Apache-2.0
+GARRISON_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+
+GARRISON_XML_INSTALL_IMAGES = YES
+GARRISON_XML_INSTALL_TARGET = YES
+
+MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
+MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
+
+# Defines for BIOS metadata creation
+BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
+GARRISON_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_GARRISON_BIOS_XML_FILENAME)
+BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
+PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
+PETITBOOT_BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
+PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
+    $(TARGET_DIR)/usr/share/bios_metadata.xml
+
+define GARRISON_XML_BUILD_CMDS
+        # copy the garrison xml where the common lives
+        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
+
+        # generate the system mrw xml
+        perl -I $(MRW_HB_TOOLS) \
+        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/garrison.xml
+        
+        # merge in any system specific attributes, hostboot attributes
+        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_GARRISON_SYSTEM_XML_FILENAME) \
+            $(MRW_HB_TOOLS)/attribute_types.xml \
+            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
+            $(MRW_HB_TOOLS)/target_types_merged.xml \
+            $(MRW_HB_TOOLS)/target_types_hb.xml \
+            $(MRW_SCRATCH)/$(BR2_GARRISON_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
+
+        # creating the targeting binary
+        $(MRW_HB_TOOLS)/xmltohb.pl  \
+            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
+            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
+            --src-output-dir=none \
+            --img-output-dir=$(MRW_HB_TOOLS)/ \
+            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
+            --bios-xml-file=$(GARRISON_BIOS_XML_CONFIG_FILE) \
+            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
+            --bios-output-file=$(BIOS_XML_METADATA_FILE)
+
+        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
+        xsltproc -o \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_XSLT_FILE) \
+            $(BIOS_XML_METADATA_FILE)
+endef
+
+define GARRISON_XML_INSTALL_IMAGES_CMDS
+        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
+endef
+
+define GARRISON_XML_INSTALL_TARGET_CMDS
+        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
+        $(INSTALL) -D -m 0644 \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
index 557a7da..38232b0 100644
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ b/openpower/package/habanero-xml/habanero-xml.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HABANERO_XML_VERSION ?= b7f0e388bba972fcdcf749f9bb8e31bc9e1022c0
+HABANERO_XML_VERSION ?= b86989fce1e543a07706206f12ef00b0b6a170c7
 HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
 
 HABANERO_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index 03523c3..d9a23df 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= d41753f2b5e2510d6bc6ce58adf8e55207b8d317
+HOSTBOOT_BINARIES_VERSION ?= 22470e51b6342f9c307e28b3ea7cdb194ff954d4
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
 
@@ -13,7 +13,7 @@
 
 define HOSTBOOT_BINARIES_INSTALL_IMAGES_CMDS
      $(INSTALL) -D $(@D)/cvpd.bin  $(STAGING_DIR)/hostboot_binaries/cvpd.bin
-     $(INSTALL) -D $(@D)/p8.ref_image.hdr.bin.ecc  $(STAGING_DIR)/hostboot_binaries/p8.ref_image.hdr.bin.ecc
+     $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_WINK_FILENAME) $(STAGING_DIR)/hostboot_binaries/
      $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) $(STAGING_DIR)/hostboot_binaries/
      $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBE_FILENAME)  $(STAGING_DIR)/hostboot_binaries/
 endef
diff --git a/openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch b/openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch
index 74cb584..5c916d2 100644
--- a/openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch
+++ b/openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch
@@ -18,7 +18,7 @@
              {
                  const uint64_t DELAY_NS = 100;
 -                const uint64_t DELAY_LOOPS = 10000;
-+                const uint64_t DELAY_LOOPS = 1000000;
++                const uint64_t DELAY_LOOPS = 100000000;
  
                  uint8_t data = 0;
                  uint64_t loops = 0;
diff --git a/openpower/package/hostboot/hostboot-0003-Remove-gard-actions-for-memory-plugging-errors.patch b/openpower/package/hostboot/hostboot-0003-Remove-gard-actions-for-memory-plugging-errors.patch
new file mode 100644
index 0000000..ef2a896
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0003-Remove-gard-actions-for-memory-plugging-errors.patch
@@ -0,0 +1,764 @@
+From c53b40e0dcc250d75a159389e099dd40b64e5468 Mon Sep 17 00:00:00 2001
+From: Dan Crowell <dcrowell@us.ibm.com>
+Date: Wed, 27 May 2015 16:39:23 -0500
+Subject: [PATCH] Remove gard actions for memory plugging errors
+
+Modified errors related to unsupported or invalid dimm
+configurations to no longer gard any hardware.
+
+Change-Id: I67459425e973ad1c6f4cf95ccd164b73bdd46a80
+---
+ .../mss_eff_config/memory_mss_eff_config.xml       | 208 +++++----------------
+ .../memory_mss_eff_config_termination.xml          |  69 +------
+ 2 files changed, 50 insertions(+), 227 deletions(-)
+
+diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml
+index ed1de55..c6a2d37 100644
+--- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml
++++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml
+@@ -5,7 +5,7 @@
+ <!--                                                                        -->
+ <!-- OpenPOWER HostBoot Project                                             -->
+ <!--                                                                        -->
+-<!-- Contributors Listed Below - COPYRIGHT 2013,2014                        -->
++<!-- Contributors Listed Below - COPYRIGHT 2013,2015                        -->
+ <!-- [+] International Business Machines Corp.                              -->
+ <!--                                                                        -->
+ <!--                                                                        -->
+@@ -22,7 +22,7 @@
+ <!-- permissions and limitations under the License.                         -->
+ <!--                                                                        -->
+ <!-- IBM_PROLOG_END_TAG                                                     -->
+-<!-- $Id: memory_mss_eff_config.xml,v 1.3 2014/10/20 22:12:59 asaetow Exp $ -->
++<!-- $Id: memory_mss_eff_config.xml,v 1.4 2015-05-27 19:56:31 asaetow Exp $ -->
+ <!-- For file ../../ipl/fapi/mss_eff_config.C -->
+ <!-- // *! OWNER NAME  : Anuwat Saetow     Email: asaetow@us.ibm.com -->
+ <!-- // *! BACKUP NAME : Mark Bellows      Email: bellows@us.ibm.com -->
+@@ -47,9 +47,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -71,9 +68,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -98,9 +92,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -125,9 +116,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -169,10 +157,10 @@
+     <description>Plug rule violation, one position is empty but other are present
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+         <priority>HIGH</priority>
+@@ -186,10 +174,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -198,10 +182,10 @@
+     <description>Plug rule violation, sides do not match
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -216,10 +200,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ 
+@@ -229,10 +209,10 @@
+     <description>Plug rule violation,  top and bottom do not match
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
+-    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
++	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -247,10 +227,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -259,10 +235,10 @@
+     <description>Incompatable DRAM generation 
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>DRAM_DEVICE_TYPE_0_0</ffdc>
+-    <ffdc>DRAM_DEVICE_TYPE_0_1</ffdc>
+-    <ffdc>DRAM_DEVICE_TYPE_1_0</ffdc>
+-    <ffdc>DRAM_DEVICE_TYPE_1_1</ffdc>
++	<ffdc>DRAM_DEVICE_TYPE_0_0</ffdc>
++	<ffdc>DRAM_DEVICE_TYPE_0_1</ffdc>
++	<ffdc>DRAM_DEVICE_TYPE_1_0</ffdc>
++	<ffdc>DRAM_DEVICE_TYPE_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -277,10 +253,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -289,10 +261,10 @@
+     <description>Incompatable DIMM type
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>MODULE_TYPE_0_0</ffdc>
+-    <ffdc>MODULE_TYPE_0_1</ffdc>
+-    <ffdc>MODULE_TYPE_1_0</ffdc>
+-    <ffdc>MODULE_TYPE_1_1</ffdc>
++	<ffdc>MODULE_TYPE_0_0</ffdc>
++	<ffdc>MODULE_TYPE_0_1</ffdc>
++	<ffdc>MODULE_TYPE_1_0</ffdc>
++	<ffdc>MODULE_TYPE_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -307,10 +279,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -319,10 +287,10 @@
+     <description>Incompatable DIMM ranks
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>NUM_RANKS_0_0</ffdc>
+-    <ffdc>NUM_RANKS_0_1</ffdc>
+-    <ffdc>NUM_RANKS_1_0</ffdc>
+-    <ffdc>NUM_RANKS_1_1</ffdc>
++	<ffdc>NUM_RANKS_0_0</ffdc>
++	<ffdc>NUM_RANKS_0_1</ffdc>
++	<ffdc>NUM_RANKS_1_0</ffdc>
++	<ffdc>NUM_RANKS_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -337,10 +305,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -349,10 +313,10 @@
+     <description>Incompatable DIMM banks
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>SDRAM_BANKS_0_0</ffdc>
+-    <ffdc>SDRAM_BANKS_0_1</ffdc>
+-    <ffdc>SDRAM_BANKS_1_0</ffdc>
+-    <ffdc>SDRAM_BANKS_1_1</ffdc>
++	<ffdc>SDRAM_BANKS_0_0</ffdc>
++	<ffdc>SDRAM_BANKS_0_1</ffdc>
++	<ffdc>SDRAM_BANKS_1_0</ffdc>
++	<ffdc>SDRAM_BANKS_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -367,10 +331,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -379,10 +339,10 @@
+     <description>Incompatable DIMM rows
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>SDRAM_ROWS_0_0</ffdc>
+-    <ffdc>SDRAM_ROWS_0_1</ffdc>
+-    <ffdc>SDRAM_ROWS_1_0</ffdc>
+-    <ffdc>SDRAM_ROWS_1_1</ffdc>
++	<ffdc>SDRAM_ROWS_0_0</ffdc>
++	<ffdc>SDRAM_ROWS_0_1</ffdc>
++	<ffdc>SDRAM_ROWS_1_0</ffdc>
++	<ffdc>SDRAM_ROWS_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -397,10 +357,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -409,10 +365,10 @@
+     <description>Incompatable DIMM columns
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>SDRAM_COLS_0_0</ffdc>
+-    <ffdc>SDRAM_COLS_0_1</ffdc>
+-    <ffdc>SDRAM_COLS_1_0</ffdc>
+-    <ffdc>SDRAM_COLS_1_1</ffdc>
++	<ffdc>SDRAM_COLS_0_0</ffdc>
++	<ffdc>SDRAM_COLS_0_1</ffdc>
++	<ffdc>SDRAM_COLS_1_0</ffdc>
++	<ffdc>SDRAM_COLS_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -427,10 +383,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -439,10 +391,10 @@
+     <description>Incompatable DRAM primary bus width
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>BUS_WIDTH_0_0</ffdc>
+-    <ffdc>BUS_WIDTH_0_1</ffdc>
+-    <ffdc>BUS_WIDTH_1_0</ffdc>
+-    <ffdc>BUS_WIDTH_1_1</ffdc>
++	<ffdc>BUS_WIDTH_0_0</ffdc>
++	<ffdc>BUS_WIDTH_0_1</ffdc>
++	<ffdc>BUS_WIDTH_1_0</ffdc>
++	<ffdc>BUS_WIDTH_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -457,10 +409,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ 
+@@ -483,10 +431,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ 
+@@ -496,10 +440,10 @@
+     <description>Incompatable DRAM width
+         </description>
+     <FFDC>TARGET_MBA</FFDC>
+-    <ffdc>DRAM_WIDTH_0_0</ffdc>
+-    <ffdc>DRAM_WIDTH_0_1</ffdc>
+-    <ffdc>DRAM_WIDTH_1_0</ffdc>
+-    <ffdc>DRAM_WIDTH_1_1</ffdc>
++	<ffdc>DRAM_WIDTH_0_0</ffdc>
++	<ffdc>DRAM_WIDTH_0_1</ffdc>
++	<ffdc>DRAM_WIDTH_1_0</ffdc>
++	<ffdc>DRAM_WIDTH_1_1</ffdc>
+ 
+     <callout>
+         <procedure>MEMORY_PLUGGING_ERROR</procedure>
+@@ -514,10 +458,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -540,10 +480,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -566,10 +502,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -591,10 +523,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -616,10 +544,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -641,10 +565,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -666,10 +586,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -691,10 +607,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -716,10 +628,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -741,10 +649,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -766,10 +670,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -791,10 +691,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -816,10 +712,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -841,10 +733,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -866,10 +754,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-        <priority>HIGH</priority>
+-    </gard>
+ </hwpError>
+ 
+ 
+diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml
+index 9f3c89c..f04b0a6 100644
+--- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml
++++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml
+@@ -5,7 +5,9 @@
+ <!--                                                                        -->
+ <!-- OpenPOWER HostBoot Project                                             -->
+ <!--                                                                        -->
+-<!-- COPYRIGHT International Business Machines Corp. 2013,2014              -->
++<!-- Contributors Listed Below - COPYRIGHT 2013,2015                        -->
++<!-- [+] International Business Machines Corp.                              -->
++<!--                                                                        -->
+ <!--                                                                        -->
+ <!-- Licensed under the Apache License, Version 2.0 (the "License");        -->
+ <!-- you may not use this file except in compliance with the License.       -->
+@@ -20,7 +22,7 @@
+ <!-- permissions and limitations under the License.                         -->
+ <!--                                                                        -->
+ <!-- IBM_PROLOG_END_TAG                                                     -->
+-<!-- $Id: memory_mss_eff_config_termination.xml,v 1.2 2014/04/07 23:02:10 lapietra Exp $ -->
++<!-- $Id: memory_mss_eff_config_termination.xml,v 1.3 2015-05-27 20:02:29 asaetow Exp $ -->
+ <!-- For file ../../ipl/fapi/mss_eff_config_termination.C -->
+ <!-- // *! OWNER NAME  : Dave Cadigan      Email: dcadiga@us.ibm.com -->
+ <!-- // *! BACKUP NAME : Anuwat Saetow     Email: asaetow@us.ibm.com -->
+@@ -195,9 +197,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -220,9 +219,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ <!-- *********************************************************************** -->
+   <hwpError>
+@@ -245,9 +241,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -271,9 +264,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -297,9 +287,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -323,9 +310,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -349,9 +333,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -374,9 +355,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -400,9 +378,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -425,9 +400,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -450,9 +422,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -476,9 +445,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -497,9 +463,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -523,9 +486,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ <!-- *********************************************************************** -->
+   <hwpError>
+@@ -650,9 +610,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -675,9 +632,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -699,9 +653,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ 
+@@ -724,9 +675,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -750,9 +698,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -820,9 +765,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ <!-- *********************************************************************** -->
+@@ -845,9 +787,6 @@
+         <target>TARGET_MBA</target>
+     </deconfigure>
+ 
+-    <gard>
+-        <target>TARGET_MBA</target>
+-    </gard>
+ </hwpError>
+ 
+ </hwpErrors>
+-- 
+2.3.0
+
diff --git a/openpower/package/hostboot/hostboot-0004-SW311560-HWP-error-prevent-IPL-on-habanero.patch b/openpower/package/hostboot/hostboot-0004-SW311560-HWP-error-prevent-IPL-on-habanero.patch
new file mode 100644
index 0000000..cb4e060
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0004-SW311560-HWP-error-prevent-IPL-on-habanero.patch
@@ -0,0 +1,60 @@
+From 58a3d0ad88b91c7c9cab1e2c4c9e3dbc7377303f Mon Sep 17 00:00:00 2001
+From: Prachi Gupta <pragupta@us.ibm.com>
+Date: Wed, 17 Jun 2015 09:22:10 -0500
+Subject: [PATCH] SW311560: HWP error prevent IPL on habanero
+
+Change-Id: Ibd19f1986c768e08a97acdbd8b39c174f51bb399
+CQ:SW311560
+---
+ .../hwp/mc_config/mss_eff_config/mss_eff_config_thermal.C  | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_config_thermal.C b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_config_thermal.C
+index 1f1bb7e..996a1e0 100644
+--- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_config_thermal.C
++++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_config_thermal.C
+@@ -22,7 +22,7 @@
+ /* permissions and limitations under the License.                         */
+ /*                                                                        */
+ /* IBM_PROLOG_END_TAG                                                     */
+-// $Id: mss_eff_config_thermal.C,v 1.31 2015/04/06 22:33:11 pardeik Exp $
++// $Id: mss_eff_config_thermal.C,v 1.32 2015/06/16 21:57:30 pardeik Exp $
+ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/
+ //          centaur/working/procedures/ipl/fapi/mss_eff_config_thermal.C,v $
+ //------------------------------------------------------------------------------
+@@ -55,6 +55,9 @@
+ //------------------------------------------------------------------------------
+ // Version:|  Author: |  Date:  | Comment:
+ //---------|----------|---------|-----------------------------------------------
++//   1.32  | pardeik  | 06/16/15| fix for ISDIMM systems to prevent a zero
++//         |          |         |   ATTR_MSS_MEM_WATT_TARGET value
++//         |          |         | Removed unneeded TODO commented section
+ //   1.31  | pardeik  | 04/06/15 | attribute name changed for adjustment enable
+ //   1.30  | pardeik  |12-FEB-15| CDIMM DDR4 throttle updates (set Nmba to Nchip)
+ //         |          |         | Support for vmem regulator power adjustment
+@@ -131,10 +134,6 @@
+ //         |          |         | case. 
+ //   1.1   | pardeik  |01-NOV-11| First Draft.
+ 
+-/*
+-TODO ITEMS:
+-1.  Update ISDIMM power table after hardware measurements are done (GA3)
+-*/
+ 
+ //------------------------------------------------------------------------------
+ //  My Includes
+@@ -583,6 +582,11 @@ extern "C" {
+ //------------------------------------------------------------------------------
+ 
+ // adjust the regulator power limit per dimm if enabled and use this if less than the thermal limit
++// If reg power limit is zero, then set to thermal limit - needed for ISDIMM systems since some of these MRW attributes are not defined
++	if (l_dimm_reg_power_limit_per_dimm == 0)
++	{
++	    l_dimm_reg_power_limit_per_dimm = dimm_thermal_power_limit;
++	}
+ 	l_dimm_reg_power_limit_per_dimm_adj = l_dimm_reg_power_limit_per_dimm;
+ 	if (l_dimm_reg_power_limit_adj_enable == fapi::ENUM_ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE_TRUE)
+ 	{
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/hostboot-0004_mss_thermal_undo.patch b/openpower/package/hostboot/hostboot-0004_mss_thermal_undo.patch
deleted file mode 100644
index 455b3c7..0000000
--- a/openpower/package/hostboot/hostboot-0004_mss_thermal_undo.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d7b5b4a29107c17ad97b2c25cec11f51df485ea1 Mon Sep 17 00:00:00 2001
-From: Brian Horton <brianh@linux.ibm.com>
-Date: Tue, 31 Mar 2015 13:26:40 -0500
-Subject: [PATCH] undo 1.18 change
-
-Change-Id: I477dd4a478fc3c752a7f4f9dd1dff9f03ce39cc1
----
- .../mss_thermal_init/mss_thermal_init.C            |    5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C b/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C
-index a98b58d..b90d1d6 100644
---- a/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C
-+++ b/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C
-@@ -22,7 +22,7 @@
- /* permissions and limitations under the License.                         */
- /*                                                                        */
- /* IBM_PROLOG_END_TAG                                                     */
--// $Id: mss_thermal_init.C,v 1.20 2015/03/02 20:43:37 pardeik Exp $
-+// $Id: mss_thermal_init.C,v 1.20a CHANGED IN OPENPOWER PATCH brianh Exp $
- // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/centaur/working/procedures/ipl/fapi/mss_thermal_init.C,v $
- //------------------------------------------------------------------------------
- // *! (C) Copyright International Business Machines Corp. 2011
-@@ -49,6 +49,7 @@
- //------------------------------------------------------------------------------
- // Version:|  Author: |  Date:  | Comment:
- //---------|----------|---------|-----------------------------------------------
-+//   1.20a | brianh   |31-MAR-15| under 1.18
- //   1.20  | pardeik  |02-MAR-15| initialize l_dimm_ranks_array to zero
- //                              | use const variables in for loops instead of numbers
- //   1.18  | pardeik  |12-FEB-15| change ATTR_MRW_MEM_SENSOR_CACHE_ADDR_MAP to
-@@ -295,7 +296,7 @@ fapi::ReturnCode mss_thermal_init(const fapi::Target & i_target)
-       else
-       {
- 	  // sensor cache address map for non custom dimm temperature sensors (which i2c bus and i2c address they are)
--	  l_rc = FAPI_ATTR_GET(ATTR_MRW_MEM_SENSOR_CACHE_ADDR_MAP, &i_target, l_dimm_sensor_cache_addr_map);
-+	  l_rc = FAPI_ATTR_GET(ATTR_MRW_MEM_SENSOR_CACHE_ADDR_MAP, NULL, l_dimm_sensor_cache_addr_map);
- 	  if (l_rc) return l_rc;
-       }
- 
--- 
-1.7.4.1
-
diff --git a/openpower/package/hostboot/hostboot-0005-Add-PNOR-Version-Information-to-IPMI-Fru-Inventory.patch b/openpower/package/hostboot/hostboot-0005-Add-PNOR-Version-Information-to-IPMI-Fru-Inventory.patch
deleted file mode 100644
index 6f1b80c..0000000
--- a/openpower/package/hostboot/hostboot-0005-Add-PNOR-Version-Information-to-IPMI-Fru-Inventory.patch
+++ /dev/null
@@ -1,350 +0,0 @@
-From 1674da76fadc52f8c6aff6d8435536dd33b7417f Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Mon, 30 Mar 2015 15:11:28 -0500
-Subject: [PATCH] Add PNOR Version Information to IPMI Fru Inventory
-
-Change-Id: Ib49fe67e9c6631b2b7ea0005e692c9aea6d84057
-RTC:123353
----
- src/usr/ipmi/ipmifruinv.C                          | 207 +++++++++++++++++++++
- src/usr/ipmi/ipmifruinvprvt.H                      |  47 +++++
- .../targeting/common/xmltohb/attribute_types.xml   |   8 +
- src/usr/targeting/common/xmltohb/target_types.xml  |   1 +
- 4 files changed, 263 insertions(+)
-
-diff --git a/src/usr/ipmi/ipmifruinv.C b/src/usr/ipmi/ipmifruinv.C
-index 4f0d7d7..aaf62d1 100644
---- a/src/usr/ipmi/ipmifruinv.C
-+++ b/src/usr/ipmi/ipmifruinv.C
-@@ -37,6 +37,7 @@
- #include "ipmifruinvprvt.H"
- #include <stdio.h>
- #include <assert.h>
-+#include <pnor/pnorif.H>
- 
- extern trace_desc_t * g_trac_ipmi;
- 
-@@ -84,6 +85,10 @@ IpmiFruInv *IpmiFruInv::Factory(TARGETING::TargetHandleList i_targets,
-             // @todo-RTC:117702
-             l_fru = new backplaneIpmiFruInv(l_target, i_targets, i_updateData);
-             break;
-+        case TARGETING::TYPE_SYS:
-+            // Use sys target for setting System Firmware Info
-+            l_fru = new systemFwIpmiFruInv(l_target);
-+            break;
-         default:
-             assert(false,
-                 "IpmiFruInv::Factory: No support for target type given: [%08x]",
-@@ -927,6 +932,199 @@ errlHndl_t backplaneIpmiFruInv::addVpdData(std::vector<uint8_t> &io_data,
-     return l_errl;
- }
- 
-+//##############################################################################
-+systemFwIpmiFruInv::systemFwIpmiFruInv( TARGETING::TargetHandle_t i_target )
-+    :IpmiFruInv(i_target)
-+{
-+
-+};
-+
-+errlHndl_t systemFwIpmiFruInv::buildInternalUseArea(std::vector<uint8_t>
-+                                                                       &io_data)
-+{
-+    //This section not needed for proc type
-+    return IpmiFruInv::buildEmptyArea(io_data);
-+}
-+
-+errlHndl_t systemFwIpmiFruInv::buildChassisInfoArea(std::vector<uint8_t>
-+                                                                       &io_data)
-+{
-+    //This section not needed for system firmware type
-+    return IpmiFruInv::buildEmptyArea(io_data);
-+}
-+
-+errlHndl_t systemFwIpmiFruInv::buildBoardInfoArea(std::vector<uint8_t> &io_data)
-+{
-+    //This section not needed for system firmware type
-+    return IpmiFruInv::buildEmptyArea(io_data);
-+}
-+
-+errlHndl_t systemFwIpmiFruInv::buildProductInfoArea(std::vector<uint8_t>
-+                                                                       &io_data)
-+{
-+    errlHndl_t l_errl = NULL;
-+
-+    do {
-+        //Set formatting data that goes at the beginning of the record
-+        preFormatProcessing(io_data, true);
-+
-+        uint8_t l_data[] = {IPMIFRUINV::TYPELENGTH_BYTE_NULL,
-+                            IPMIFRUINV::TYPELENGTH_BYTE_ASCII + 18, 'O','p','e',
-+                            'n','P','O','W','E','R',' ','F','i','r','m','w','a',
-+                            'r','e', IPMIFRUINV::TYPELENGTH_BYTE_NULL};
-+
-+        io_data.insert( io_data.end(),
-+                    &l_data[0],
-+                    &l_data[0] + (uint8_t(sizeof(l_data) / sizeof(uint8_t))));
-+
-+        //Get PNOR Version Here
-+        PNOR::SectionInfo_t l_pnorInfo;
-+        l_errl = getSectionInfo( PNOR::VERSION , l_pnorInfo);
-+        if (l_errl) { break; }
-+
-+        uint8_t* l_versionData = reinterpret_cast<uint8_t*>( l_pnorInfo.vaddr );
-+        //Total Bytes in PNOR Version String
-+        uint8_t l_numBytes = 0;
-+        uint8_t l_curOffset = 0;
-+
-+        //Total Number of fields needed to print PNOR Version String
-+        uint8_t l_numFields = 0;
-+        bool l_clearStandardFields = true;
-+
-+        //First determine number of bytes in PNOR Version string
-+        //  with the caveat there is a max record size allowed, so
-+        //  the string will be cut off if too long
-+        //Also, remove newline chars
-+        while ((l_numBytes < IPMIFRUINV::MAX_RECORD_SIZE -
-+                              (uint8_t(sizeof(l_data) / sizeof(uint8_t))) -
-+                              IPMIFRUINV::COMMON_HEADER_FORMAT_SIZE - 8)
-+                               && (((char)(l_versionData[l_numBytes])) != '\0'))
-+        {
-+
-+            if (((char)(l_versionData[l_numBytes])) == '\n')
-+            {
-+
-+                if (l_numBytes > l_curOffset)
-+                {
-+                    //Add on size of this field to the data buffer
-+                    io_data.push_back(
-+                         IPMIFRUINV::TYPELENGTH_BYTE_ASCII
-+                           + (l_numBytes-l_curOffset));
-+
-+                    io_data.insert(io_data.end(),
-+                       &l_versionData[0]+(l_curOffset),
-+                       &l_versionData[0]+(l_numBytes));
-+                }
-+
-+                //Null data for standard fields needs to be indicated once after
-+                // the first segment of data is displayed to match the
-+                // ipmi fru spec
-+                if (l_clearStandardFields)
-+                {
-+                    //Add Empty Asset Tag
-+                    io_data.push_back(uint8_t(0));
-+                    //FRU File ID - Empty
-+                    io_data.push_back(IPMIFRUINV::TYPELENGTH_BYTE_NULL);
-+                    io_data.push_back(uint8_t(0)); // Empty FRU File ID bytes
-+                    l_clearStandardFields = false;
-+                }
-+
-+                //Increment past the newline char
-+                l_curOffset = l_numBytes + 1;
-+            }
-+            l_numBytes++;
-+        }
-+
-+        if (l_curOffset == 0)
-+        {
-+            //Calculate the number of fields required to display this data
-+            //  given only MAX_ASCII_FIELD_SIZE bytes can be in any one given
-+            //  IPMI fru inventory field
-+            l_numFields = l_numBytes / IPMIFRUINV::MAX_ASCII_FIELD_SIZE;
-+            if (l_numBytes % IPMIFRUINV::MAX_ASCII_FIELD_SIZE)
-+            {
-+                l_numFields += 1;
-+            }
-+
-+            //Count by number of fields, adding the data to the buffer as
-+            // we go.
-+            for (uint8_t i=0; i < l_numFields; i++)
-+            {
-+                //Determine the data size for this particular field
-+                uint8_t l_dataSize=IPMIFRUINV::MAX_ASCII_FIELD_SIZE;
-+                if (i == l_numFields - 1)
-+                {
-+                    l_dataSize = l_numBytes -
-+                           (i * IPMIFRUINV::MAX_ASCII_FIELD_SIZE);
-+                }
-+
-+                //Add on size of this field to the data buffer
-+                io_data.push_back(IPMIFRUINV::TYPELENGTH_BYTE_ASCII
-+                                         + l_dataSize);
-+
-+                //Insert this segment of version string data
-+                io_data.insert(io_data.end(),
-+                       &l_versionData[0]+(i * IPMIFRUINV::MAX_ASCII_FIELD_SIZE),
-+                       &l_versionData[0]+(i * IPMIFRUINV::MAX_ASCII_FIELD_SIZE)
-+                                        +l_dataSize);
-+
-+                //Null data for standard fields needs to be indicated once after
-+                // the first segment of data is displayed to match the
-+                // ipmi fru spec
-+                if (l_clearStandardFields)
-+                {
-+                    //Add Empty Asset Tag
-+                    io_data.push_back(uint8_t(0));
-+                    //FRU File ID - Empty
-+                    io_data.push_back(IPMIFRUINV::TYPELENGTH_BYTE_NULL);
-+                    //io_data.push_back(uint8_t(0)); // Empty FRU File ID bytes
-+                    l_clearStandardFields = false;
-+                }
-+
-+            }
-+        }
-+        else
-+        {
-+            if (l_numBytes > l_curOffset)
-+            {
-+                io_data.push_back( IPMIFRUINV::TYPELENGTH_BYTE_ASCII
-+                        + (l_numBytes-l_curOffset));
-+
-+                io_data.insert(io_data.end(),
-+                       &l_versionData[0]+(l_curOffset),
-+                       &l_versionData[0]+(l_numBytes));
-+            }
-+
-+        }
-+
-+        if (l_clearStandardFields)
-+        {
-+            //Add Asset Tag
-+            io_data.push_back(uint8_t(0)); //No Asset Tag needed - O bytes
-+            //FRU File ID - Empty
-+            io_data.push_back(IPMIFRUINV::TYPELENGTH_BYTE_NULL);
-+            //io_data.push_back(uint8_t(0)); // Empty FRU File ID bytes
-+        }
-+
-+        io_data.push_back(IPMIFRUINV::END_OF_CUSTOM_FIELDS);
-+
-+        //Finalize section formatting
-+        postFormatProcessing(io_data);
-+
-+    } while(0);
-+
-+    return l_errl;
-+}
-+
-+errlHndl_t systemFwIpmiFruInv::buildMultiRecordInfoArea(std::vector<uint8_t>
-+                                                                       &io_data)
-+{
-+    //This section not needed for system firmware type
-+    return IpmiFruInv::buildEmptyArea(io_data);
-+}
-+
-+
-+
- void IpmiFruInv::addEcidData(const TARGETING::TargetHandle_t& i_target,
-                              const TARGETING::ATTR_ECID_type& i_ecidInfo,
-                              std::vector<uint8_t> &io_data)
-@@ -997,6 +1195,15 @@ void IPMIFRUINV::setData(bool i_updateData)
-             IPMIFRUINV::gatherClearData(pSys, frusToClear);
-         }
- 
-+        //Get System FW FRU_ID if available
-+        uint32_t l_systemFwFruId;
-+        bool hasSystemFwFruId =
-+                  pSys->tryGetAttr<TARGETING::ATTR_BMC_FRU_ID>(l_systemFwFruId);
-+        if (hasSystemFwFruId)
-+        {
-+            l_potentialFrus.push_back(std::make_pair(pSys, l_systemFwFruId));
-+        }
-+
-         // Find list of all target types that may need a fru inv. record set
-         IPMIFRUINV::gatherSetData(pSys, frusToClear,
-                                      l_potentialFrus, i_updateData);
-diff --git a/src/usr/ipmi/ipmifruinvprvt.H b/src/usr/ipmi/ipmifruinvprvt.H
-index 2573a84..468a47f 100644
---- a/src/usr/ipmi/ipmifruinvprvt.H
-+++ b/src/usr/ipmi/ipmifruinvprvt.H
-@@ -42,6 +42,8 @@ namespace IPMIFRUINV
-         COMMON_HEADER_FORMAT_SIZE     = 8, //size in bytes
-         DEFAULT_CHASSIS_TYPE          = 0x05,
-         DEFAULT_FRU_OFFSET            = 0,
-+        MAX_ASCII_FIELD_SIZE          = 0x3F, //size in bytes
-+        MAX_RECORD_SIZE               = 0xFF, //size in bytes
-     };
- };
- 
-@@ -460,4 +462,49 @@ class backplaneIpmiFruInv : public IpmiFruInv
- 
- };
- 
-+//Child class for building up System Firwmare Fru Inventory Record Data
-+class systemFwIpmiFruInv : public IpmiFruInv
-+{
-+
-+  public:
-+    /**
-+    * @brief Constructor
-+    *
-+    * @param[in] TargetHandle_t, Handle to target for which
-+    *             to get relevant IPMI FRU Data from
-+    */
-+    systemFwIpmiFruInv( TARGETING::TargetHandle_t i_target);
-+
-+    /**
-+     * @brief Builds the Internal Use Area Data Section
-+     * @param[in/out] data, The container to put internal use area data in
-+     */
-+    errlHndl_t buildInternalUseArea(std::vector<uint8_t> &io_data);
-+
-+    /**
-+     * @brief Builds the Chassis Info Area Data Section
-+     * @param[in/out] data, The container to put chassis info area data in
-+     */
-+    errlHndl_t buildChassisInfoArea(std::vector<uint8_t> &io_data);
-+
-+    /**
-+     * @brief Builds the Board Info Area Data Section
-+     * @param[in/out] data, The container to put board info area data in
-+     */
-+    errlHndl_t buildBoardInfoArea(std::vector<uint8_t> &io_data);
-+
-+    /**
-+     * @brief Builds the Product Info Area Data Section
-+     * @param[in/out] data, The container to put product info area data in
-+     */
-+    errlHndl_t buildProductInfoArea(std::vector<uint8_t> &io_data);
-+
-+    /**
-+     * @brief Builds the MultiRecord Info Area Data Section
-+     * @param[in/out] data, The container to put multirecord info area data in
-+     */
-+    errlHndl_t buildMultiRecordInfoArea(std::vector<uint8_t> &io_data);
-+
-+};
-+
- #endif
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
-index ec256de..17729cd 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
-@@ -11659,6 +11659,14 @@ firmware notes: Platforms should initialize this attribute to AUTO (0)</descript
- </attribute>
- 
- <attribute>
-+    <id>BMC_FRU_ID</id>
-+    <description>BMC FRU ID attribute for node class</description>
-+    <simpleType><uint32_t><default>0</default></uint32_t></simpleType>
-+    <persistency>non-volatile</persistency>
-+    <readable/>
-+</attribute>
-+
-+<attribute>
-     <id>PLCK_IPL_ATTR_OVERRIDES_EXIST</id>
-     <description>
-       Set to 1 by HWSV to indicate that attribute overrides exist in a PLCK IPL
-diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
-index 15d7921..82ec014 100644
---- a/src/usr/targeting/common/xmltohb/target_types.xml
-+++ b/src/usr/targeting/common/xmltohb/target_types.xml
-@@ -300,6 +300,7 @@
-     <attribute><id>MNFG_TH_CEN_L4_CACHE_CES</id></attribute>
-     <attribute><id>OPT_MEMMAP_GROUP_POLICY</id></attribute>
-     <attribute><id>FRU_ID</id></attribute>
-+    <attribute><id>BMC_FRU_ID</id></attribute>
- </targetType>
- 
- <targetType>
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0005-shutdown-deconfig-outside-reconfig-loop.patch b/openpower/package/hostboot/hostboot-0005-shutdown-deconfig-outside-reconfig-loop.patch
new file mode 100644
index 0000000..773a9db
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0005-shutdown-deconfig-outside-reconfig-loop.patch
@@ -0,0 +1,187 @@
+From 7c592db2c42b8dbef0f31a8daebb97ff0ed6a3ac Mon Sep 17 00:00:00 2001
+From: Stephen Cprek <smcprek@us.ibm.com>
+Date: Tue, 30 Jun 2015 16:49:22 -0500
+Subject: [PATCH] Shutdown when deconfig outside of reconfig loop on BMC
+ systems
+
+Change-Id: I1faf0ab0d831a41c332993f555231a8dbecf53ef
+CQ:SW312075
+---
+ src/include/usr/initservice/initsvcreasoncodes.H   |   4 +-
+ .../initservice/istepdispatcher/istepdispatcher.C  | 120 ++++++++++++++++-----
+ 2 files changed, 98 insertions(+), 26 deletions(-)
+
+diff --git a/src/include/usr/initservice/initsvcreasoncodes.H b/src/include/usr/initservice/initsvcreasoncodes.H
+index d11824e..e174564 100644
+--- a/src/include/usr/initservice/initsvcreasoncodes.H
++++ b/src/include/usr/initservice/initsvcreasoncodes.H
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2011,2014                        */
++/* Contributors Listed Below - COPYRIGHT 2011,2015                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -74,6 +74,8 @@ enum    InitServiceReasonCode
+     //termination_rc
+     SBE_EXTRACT_RC_REQUEST_REIPL =   INITSVC_COMP_ID | 0x0e,
+     RECONFIG_LOOP_TEST_RC        =   INITSVC_COMP_ID | 0x0f,
++    //termination_rc
++    SHUTDOWN_NOT_RECONFIG_LOOP   =   INITSVC_COMP_ID | 0x10,
+ };
+ 
+ enum InitServiceUserDetailDataSubSection
+diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
+index d3581e9..7f3c0b7 100644
+--- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
++++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
+@@ -96,6 +96,10 @@ const uint8_t OUTER_STOP_STEP = 14;
+ const uint8_t OUTER_STOP_SUBSTEP = 5;
+ const uint8_t HB_START_ISTEP = 6;
+ 
++// @todo RTC 124679 - Remove Once BMC Monitors Shutdown Attention
++// Set Watchdog Timer To 15 seconds before calling doShutdown()
++const uint16_t SET_WD_TIMER_IN_SECS = 15;
++
+ /**
+  * _start() task entry procedure using the macro in taskargs.H
+  */
+@@ -506,14 +510,58 @@ errlHndl_t IStepDispatcher::executeAllISteps()
+                 }
+                 else
+                 {
+-                    // Reconfig loop required, but the istep is either outside
+-                    // of the reconfig loop, too many reconfigs have been
+-                    // attempted, in manufacturing mode, or in MPIPL.
+-                    // Return an error to cause termination
++
+                     if (!err)
+                     {
+-                        err = failedDueToDeconfig(istep, substep,
+-                                                  newIstep, newSubstep);
++                        // Reconfig loop required, but the istep is either outside
++                        // of the reconfig loop, too many reconfigs have been
++                        // attempted, in manufacturing mode, or in MPIPL.
++                        // Return an error to cause termination on FSP systems
++                        if (iv_spBaseServicesEnabled)
++                        {
++                            err = failedDueToDeconfig(istep, substep,
++                                                      newIstep, newSubstep);
++                        }
++                        // Otherwise increment the reboot count and shutdown
++                        #ifdef CONFIG_BMC_IPMI
++                        else
++                        {
++                            uint16_t l_count = 0;
++                            SENSOR::RebootCountSensor l_sensor;
++
++                            // Read reboot count sensor
++                            err = l_sensor.getRebootCount(l_count);
++                            if (err)
++                            {
++                                TRACFCOMP(g_trac_initsvc, ERR_MRK"executeAllISteps: getRebootCount failed");
++                                break;
++                            }
++                            // Increment reboot count
++                            l_count++;
++                            err = l_sensor.setRebootCount(l_count);
++                            if (err)
++                            {
++                                TRACFCOMP(g_trac_initsvc, ERR_MRK"executeAllISteps: setRebootCount to %d failed", l_count);
++                                break;
++                            }
++
++                            // @TODO RTC:124679 - Remove Once BMC Monitors
++                            // Shutdown Attention
++                            // Set Watchdog Timer before calling doShutdown()
++                            TRACFCOMP( g_trac_initsvc,"executeAllISteps: "
++                                       "Set Watch Dog Timer To %d Seconds",
++                                       SET_WD_TIMER_IN_SECS);
++
++                            err = IPMIWATCHDOG::setWatchDogTimer(
++                               SET_WD_TIMER_IN_SECS,  // new time
++                               static_cast<uint8_t>
++                                          (IPMIWATCHDOG::DO_NOT_STOP |
++                                           IPMIWATCHDOG::BIOS_FRB2), // default
++                                           IPMIWATCHDOG::TIMEOUT_HARD_RESET);
++
++                            shutdownDuringIpl();
++                        }
++                        #endif
+                     }
+                     // else return the error from doIstep
+                 }
+@@ -1260,27 +1308,49 @@ void IStepDispatcher::shutdownDuringIpl()
+ {
+     TRACFCOMP(g_trac_initsvc, ENTER_MRK"IStepDispatcher::shutdownDuringIpl");
+ 
+-    // Create and commit error log for FFDC
+-
+-    /*@
+-     * @errortype
+-     * @reasoncode       SHUTDOWN_REQUESTED_BY_FSP
+-     * @severity         ERRORLOG::ERRL_SEV_INFORMATIONAL
+-     * @moduleid         ISTEP_INITSVC_MOD_ID
+-     * @userdata1        Current IStep
+-     * @userdata2        Current SubStep
+-     * @devdesc          Received shutdown request from FSP
+-     */
+-    errlHndl_t err = new ERRORLOG::ErrlEntry(
+-        ERRORLOG::ERRL_SEV_INFORMATIONAL,
+-        ISTEP_INITSVC_MOD_ID,
+-        SHUTDOWN_REQUESTED_BY_FSP,
+-        this->iv_curIStep, this->iv_curSubStep);
++    // Create and commit error log for FFDC and call doShutdown with the RC
++    // to initiate a TI
++    if (iv_spBaseServicesEnabled)
++    {
++        /*@
++         * @errortype
++         * @reasoncode       SHUTDOWN_REQUESTED_BY_FSP
++         * @severity         ERRORLOG::ERRL_SEV_INFORMATIONAL
++         * @moduleid         ISTEP_INITSVC_MOD_ID
++         * @userdata1        Current IStep
++         * @userdata2        Current SubStep
++         * @devdesc          Received shutdown request from FSP
++         */
++        errlHndl_t err = new ERRORLOG::ErrlEntry(
++            ERRORLOG::ERRL_SEV_INFORMATIONAL,
++            ISTEP_INITSVC_MOD_ID,
++            SHUTDOWN_REQUESTED_BY_FSP,
++            this->iv_curIStep, this->iv_curSubStep);
+ 
+-    errlCommit(err, INITSVC_COMP_ID);
++        errlCommit(err, INITSVC_COMP_ID);
++        INITSERVICE::doShutdown(SHUTDOWN_REQUESTED_BY_FSP);
++    }
++    else
++    {
++        /*@
++         * @errortype
++         * @reasoncode       SHUTDOWN_NOT_RECONFIG_LOOP
++         * @severity         ERRORLOG::ERRL_SEV_INFORMATIONAL
++         * @moduleid         ISTEP_INITSVC_MOD_ID
++         * @userdata1        Current IStep
++         * @userdata2        Current SubStep
++         * @devdesc          Received shutdown request due to deconfigure
++         *                   outside of reconfig loop
++         */
++        errlHndl_t err = new ERRORLOG::ErrlEntry(
++            ERRORLOG::ERRL_SEV_INFORMATIONAL,
++            ISTEP_INITSVC_MOD_ID,
++            SHUTDOWN_NOT_RECONFIG_LOOP,
++            this->iv_curIStep, this->iv_curSubStep);
+ 
+-    // Call doShutdown with the RC to initiate a TI
+-    INITSERVICE::doShutdown(SHUTDOWN_REQUESTED_BY_FSP);
++        errlCommit(err, INITSVC_COMP_ID);
++        INITSERVICE::doShutdown(SHUTDOWN_NOT_RECONFIG_LOOP);
++    }
+ 
+ }
+ 
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/hostboot-0006-Move-slave-sbe-start-before-proc-cen-ref-clk-enable.patch b/openpower/package/hostboot/hostboot-0006-Move-slave-sbe-start-before-proc-cen-ref-clk-enable.patch
deleted file mode 100644
index 06e4730..0000000
--- a/openpower/package/hostboot/hostboot-0006-Move-slave-sbe-start-before-proc-cen-ref-clk-enable.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From d6882c71233b9c4b2fb801c4f3e588b47c2c73bc Mon Sep 17 00:00:00 2001
-From: Dan Crowell <dcrowell@us.ibm.com>
-Date: Wed, 1 Apr 2015 11:07:42 -0500
-Subject: [PATCH] Move slave sbe start before proc_cen_ref_clk_enable
-
-The proc_cen_ref_clk_enable step contains scoms to the processor
-that do not work if the proc hasn't run through its sbe code yet.
-
-Change-Id: I7665992a01bd66a37cd5e79aa2bb2142a304a8f4
----
- src/include/usr/isteps/istep06list.H | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/include/usr/isteps/istep06list.H b/src/include/usr/isteps/istep06list.H
-index 6adb784..6a26b2a 100644
---- a/src/include/usr/isteps/istep06list.H
-+++ b/src/include/usr/isteps/istep06list.H
-@@ -68,12 +68,12 @@ namespace   INITSERVICE
-  *      :   Clear deconfigured states
-  *  06.8    proc_revert_sbe_mcs_setup
-  *      :   Clean up MCS extent regs
-- *  06.9    proc_cen_ref_clk_enable
-- *      :   Setup centaur ref clocks
-- *  06.10    host_slave_sbe_config
-+ *  06.10   host_slave_sbe_config
-  *  06.11   host_sbe_start
-  *  06.12   proc_check_slave_sbe_seeprom_complete
-  *        : Check Slave SBE Complete
-+ *  06.9    proc_cen_ref_clk_enable
-+ *      :   Setup centaur ref clocks
-  *  06.13   proc_xmit_sbe
-  *        : vSBE Init of Slave Chips
-  *
-@@ -127,11 +127,6 @@ const   TaskInfo    g_istep06[]  =   {
-                 { START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
-         },
-         {
--                ISTEPNAME(06,09,"proc_cen_ref_clk_enable"),
--                SLAVE_SBE::call_proc_cen_ref_clk_enable,
--                { START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
--        },
--        {
-                 ISTEPNAME(06,10,"host_slave_sbe_config"),
-                 SLAVE_SBE::call_host_slave_sbe_config,
-                 { START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
-@@ -147,6 +142,11 @@ const   TaskInfo    g_istep06[]  =   {
-                 { START_FN, EXT_IMAGE, NORMAL_IPL_OP | MPIPL_OP, false }
-         },
-         {
-+                ISTEPNAME(06,09,"proc_cen_ref_clk_enable"),
-+                SLAVE_SBE::call_proc_cen_ref_clk_enable,
-+                { START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
-+        },
-+        {
-                 ISTEPNAME(06,13,"proc_xmit_sbe"),
-                 SLAVE_SBE::call_proc_xmit_sbe,
-                 { START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0007-Fix-Bug-in-mss_setup_bars.patch b/openpower/package/hostboot/hostboot-0007-Fix-Bug-in-mss_setup_bars.patch
deleted file mode 100644
index 8a14eda..0000000
--- a/openpower/package/hostboot/hostboot-0007-Fix-Bug-in-mss_setup_bars.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5b26d8a2da4c8bba72781e45ec89572843f55f35 Mon Sep 17 00:00:00 2001
-From: Mike Baiocchi <baiocchi@us.ibm.com>
-Date: Tue, 21 Apr 2015 13:23:36 -0500
-Subject: [PATCH] Fix Bug in mss_setup_bars
-
-There was an update made to mss_setup_bars.C to fix memory corruption, but
-this commit corrects an issue that was missed by this initial update.
-
-Change-Id: I32889a5d07b33f5496e5ea12ec50a0f26d0e1561
-CQ: SW296125
----
- src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C
-index 274dfdc..6c58193 100644
---- a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C
-+++ b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C
-@@ -615,7 +615,7 @@ fapi::ReturnCode mss_setup_bars(const fapi::Target& i_pu_target,   std::vector<f
-                     if(mcs_sz !=  sizeInfo.MCS_size[group_data[i][j]])
-                     {
-                           FAPI_INF(" Group %zd will not be configured as MCS %d is not valid grouped size is %d , present MCS size is %d \n",i,group_data[i][j],mcs_sz, sizeInfo.MCS_size[group_data[i][j]]);
--                          for(uint8_t k = 0; k<32;k++) { group_data[i][k]=0; }
-+                          for(uint8_t k = 0; k<16;k++) { group_data[i][k]=0; }
-                      }
-                }
-            }
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0008-Limit-attribute-NPU_MMIO_BAR_BASE_ADDR-to-Naples-bas.patch b/openpower/package/hostboot/hostboot-0008-Limit-attribute-NPU_MMIO_BAR_BASE_ADDR-to-Naples-bas.patch
deleted file mode 100644
index 8f8a15e..0000000
--- a/openpower/package/hostboot/hostboot-0008-Limit-attribute-NPU_MMIO_BAR_BASE_ADDR-to-Naples-bas.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 0134ed35efb10842f8a1d59d456e39338e63eaea Mon Sep 17 00:00:00 2001
-From: Mike Baiocchi <baiocchi@us.ibm.com>
-Date: Tue, 21 Apr 2015 16:41:38 -0500
-Subject: [PATCH] Limit attribute NPU_MMIO_BAR_BASE_ADDR to Naples-based
- systems
-
-This commit limits the use of the NPU_MMIO_BAR_BASE_ADDR to the
-systems for which it is defined.
-
-Change-Id: I7eab012a84611365e8e6cb6c44b49c4a4ffac8e4
----
- src/usr/targeting/common/processMrw.pl | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
-index 3515841..5d44e74 100644
---- a/src/usr/targeting/common/processMrw.pl
-+++ b/src/usr/targeting/common/processMrw.pl
-@@ -580,10 +580,15 @@ sub setupBars
-     my $proc   = $targetObj->getAttribute($target, "FABRIC_CHIP_ID");
-     $targetObj->{TOPOLOGY}->{$node}->{$proc}++;
- 
--    my @bars=("NPU_MMIO_BAR_BASE_ADDR","FSP_BASE_ADDR","PSI_BRIDGE_BASE_ADDR",
-+    my @bars=("FSP_BASE_ADDR","PSI_BRIDGE_BASE_ADDR",
-               "INTP_BASE_ADDR","PHB_BASE_ADDRS","PCI_BASE_ADDRS_32",
-               "PCI_BASE_ADDRS_64","RNG_BASE_ADDR","IBSCOM_PROC_BASE_ADDR");
- 
-+    # Attribute only valid in naples-based systems
-+    if (!$targetObj->isBadAttribute($target,"NPU_MMIO_BAR_BASE_ADDR") ) {
-+          push(@bars,"NPU_MMIO_BAR_BASE_ADDR");
-+    }
-+
-     foreach my $bar (@bars)
-     {
-         my ($num,$base,$node_offset,$proc_offset,$offset) = split(/,/,
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0009-targeting-support-for-backplane-VPD.patch b/openpower/package/hostboot/hostboot-0009-targeting-support-for-backplane-VPD.patch
deleted file mode 100644
index 5779f22..0000000
--- a/openpower/package/hostboot/hostboot-0009-targeting-support-for-backplane-VPD.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From bc07c585c41d4c6119d8608af27ab7ad1acdaab8 Mon Sep 17 00:00:00 2001
-From: Mike Baiocchi <baiocchi@us.ibm.com>
-Date: Wed, 22 Apr 2015 10:31:08 -0500
-Subject: [PATCH] Add targeting support for backplane VPD
-
-Only the targeting support required by "Updated VPD_REC_NUM numbering"
-
-Change-Id: Ifa095f719b35de2cfae9344496dee63aea190334
-RTC: 118373
----
- src/usr/targeting/common/xmltohb/target_types.xml | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
-index 82ec014..759b73e 100644
---- a/src/usr/targeting/common/xmltohb/target_types.xml
-+++ b/src/usr/targeting/common/xmltohb/target_types.xml
-@@ -913,6 +913,8 @@
-     <attribute><id>FRU_ID</id></attribute>
-     <attribute><id>TPM_PRIMARY_INFO</id></attribute>
-     <attribute><id>TPM_BACKUP_INFO</id></attribute>
-+    <attribute><id>EEPROM_VPD_PRIMARY_INFO</id></attribute>
-+    <attribute><id>VPD_REC_NUM</id></attribute>
- </targetType>
- 
- <targetType>
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0010-PRD-getBusEndpoints-parameter-issue.patch b/openpower/package/hostboot/hostboot-0010-PRD-getBusEndpoints-parameter-issue.patch
deleted file mode 100644
index 07a64bb..0000000
--- a/openpower/package/hostboot/hostboot-0010-PRD-getBusEndpoints-parameter-issue.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 82374feb7e8ee67f254b7d8ec657a9239b622975 Mon Sep 17 00:00:00 2001
-From: Zane Shelley <zshelle@us.ibm.com>
-Date: Thu, 23 Apr 2015 11:18:12 -0500
-Subject: [PATCH 1/2] PRD: getBusEndpoints() parameter issue
-
-Change-Id: I947eeb506337f9c2fb8f845bbe04a20fb8b62bde
-CQ: SW304932
----
- .../prdf/common/plat/pegasus/prdfCalloutUtil.C     |    2 +-
- .../prdf/common/plat/pegasus/prdfCalloutUtil.H     |    4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.C
-index f09ec6c..67941d6 100644
---- a/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.C
-+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.C
-@@ -229,7 +229,7 @@ TargetHandleList getConnectedDimms( TargetHandle_t i_mba,
- //------------------------------------------------------------------------------
- 
- int32_t getBusEndpoints( ExtensibleChip * i_chip,
--                         TargetHandle_t o_rxTrgt, TargetHandle_t o_txTrgt,
-+                         TargetHandle_t & o_rxTrgt, TargetHandle_t & o_txTrgt,
-                          TYPE i_busType, uint32_t i_busPos )
- {
-     #define PRDF_FUNC "[CalloutUtil::getBusEndpoints] "
-diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.H
-index fa3e843..502467b 100644
---- a/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.H
-+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCalloutUtil.H
-@@ -136,8 +136,8 @@ TARGETING::TargetHandleList getConnectedDimms( TARGETING::TargetHandle_t i_mba,
-  *
-  */
- int32_t getBusEndpoints( ExtensibleChip * i_chip,
--                         TARGETING::TargetHandle_t o_rxTrgt,
--                         TARGETING::TargetHandle_t o_txTrgt,
-+                         TARGETING::TargetHandle_t & o_rxTrgt,
-+                         TARGETING::TargetHandle_t & o_txTrgt,
-                          TARGETING::TYPE i_busType = TARGETING::TYPE_NA,
-                          uint32_t i_busPos = 0 );
- 
--- 
-1.7.9.5
-
diff --git a/openpower/package/hostboot/hostboot-0011-Fix-for-Bad-DQ-Bitmap-spare-byte-triggering-false-DR.patch b/openpower/package/hostboot/hostboot-0011-Fix-for-Bad-DQ-Bitmap-spare-byte-triggering-false-DR.patch
deleted file mode 100644
index 02202c3..0000000
--- a/openpower/package/hostboot/hostboot-0011-Fix-for-Bad-DQ-Bitmap-spare-byte-triggering-false-DR.patch
+++ /dev/null
@@ -1,260 +0,0 @@
-From 3b397cfb77ca5315f6403874ad10534e5f42f8a6 Mon Sep 17 00:00:00 2001
-From: Corey Swenson <cswenson@us.ibm.com>
-Date: Tue, 14 Apr 2015 13:47:12 -0500
-Subject: [PATCH 1/2] Fix for Bad DQ Bitmap spare byte triggering false DRAM
- repairs
-
-Change-Id: I6b443fc7c05d1fda1f97d180e317ac8a93eb77ad
-RTC: 125477
----
- src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C | 122 ++++++++++++++++++++++------
- 1 file changed, 99 insertions(+), 23 deletions(-)
-
-diff --git a/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C b/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C
-index 4c61ab8..98f9bf9 100644
---- a/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C
-+++ b/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C
-@@ -5,7 +5,7 @@
- /*                                                                        */
- /* OpenPOWER HostBoot Project                                             */
- /*                                                                        */
--/* Contributors Listed Below - COPYRIGHT 2012,2014                        */
-+/* Contributors Listed Below - COPYRIGHT 2012,2015                        */
- /* [+] International Business Machines Corp.                              */
- /*                                                                        */
- /*                                                                        */
-@@ -22,7 +22,7 @@
- /* permissions and limitations under the License.                         */
- /*                                                                        */
- /* IBM_PROLOG_END_TAG                                                     */
--// $Id: dimmBadDqBitmapAccessHwp.C,v 1.15 2014/03/27 20:55:12 whs Exp $
-+// $Id: dimmBadDqBitmapAccessHwp.C,v 1.16 2015/04/22 20:09:16 cswenson Exp $
- /**
-  *  @file dimmBadDqBitmapAccessHwp.C
-  *
-@@ -53,6 +53,7 @@
-  *                          whs         02/24/2014  Capture bad DQs as FFDC
-  *                                                  in mnfg error logs
-  *                          whs         03/27/2014  fix current FFDC bit map
-+ *                          cswenson    04/22/2014  fix spare byte translate
-  */
- 
- #include <dimmBadDqBitmapAccessHwp.H>
-@@ -78,23 +79,19 @@ extern "C"
- {
- 
- /**
-- * @brief Called by dimmBadDqBitmapAccessHwp() to query ATTR_EFF_DIMM_SPARE
-- * and set bits for unconnected spare DRAM in caller's data.
-+ * @brief Returns bits for unconnected spare DRAM.
-  *
-  *
-  * @param[in] i_mba       Reference to MBA Target.
-  * @param[in] i_dimm      Reference to DIMM Target.
-- * @param[o]  o_data      Reference to Bad DQ Bitmap set by
-- *                        the caller.  Only the SPARE_DRAM_DQ_BYTE_NUMBER_INDEX
-- *                        byte is modified by this function.
-+ * @param[o]  o_spareByte Reference to the spare byte returned to caller.
-  *
-  * @return ReturnCode
-  */
--
--fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
-+fapi::ReturnCode dimmGetDqBitmapSpareByte(
-     const fapi::Target & i_mba,
-     const fapi::Target & i_dimm,
--    uint8_t (&o_data)[DIMM_DQ_MAX_DIMM_RANKS][DIMM_DQ_RANK_BITMAP_SIZE])
-+    uint8_t (&o_spareByte)[DIMM_DQ_MAX_DIMM_RANKS])
- {
-     fapi::ReturnCode l_rc;
- 
-@@ -108,7 +105,7 @@ fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
-         l_rc = FAPI_ATTR_GET(ATTR_VPD_DIMM_SPARE, &i_mba, l_mbaSpare);
-         if (l_rc)
-         {
--            FAPI_ERR("dimmUpdateDqBitmapSpareByte: "
-+            FAPI_ERR("dimmGetDqBitmapSpareByte: "
-                      "Error getting DRAM Spare data");
-             break;
-         }
-@@ -117,7 +114,7 @@ fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
-         l_rc = FAPI_ATTR_GET(ATTR_MBA_PORT, &i_dimm, l_mbaPort);
-         if (l_rc)
-         {
--            FAPI_ERR("dimmUpdateDqBitmapSpareByte: "
-+            FAPI_ERR("dimmGetDqBitmapSpareByte: "
-                      "Error getting MBA port number");
-             break;
-         }
-@@ -126,7 +123,7 @@ fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
-         l_rc = FAPI_ATTR_GET(ATTR_MBA_DIMM, &i_dimm, l_dimm);
-         if (l_rc)
-         {
--            FAPI_ERR("dimmUpdateDqBitmapSpareByte: "
-+            FAPI_ERR("dimmGetDqBitmapSpareByte: "
-                      "Error getting dimm number");
-             break;
-         }
-@@ -139,20 +136,21 @@ fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
-                 case fapi::ENUM_ATTR_VPD_DIMM_SPARE_NO_SPARE:
-                     // Set DQ bits reflecting unconnected
-                     // spare DRAM in caller's data
--                    o_data[i][SPARE_DRAM_DQ_BYTE_NUMBER_INDEX] = 0xFF;
-+                    o_spareByte[i] = 0xFF;
-                     break;
- 
-                 case fapi::ENUM_ATTR_VPD_DIMM_SPARE_LOW_NIBBLE:
--                    o_data[i][SPARE_DRAM_DQ_BYTE_NUMBER_INDEX] |= 0x0F;
-+                    o_spareByte[i] = 0x0F;
-                     break;
- 
-                 case fapi::ENUM_ATTR_VPD_DIMM_SPARE_HIGH_NIBBLE:
--                    o_data[i][SPARE_DRAM_DQ_BYTE_NUMBER_INDEX] |= 0xF0;
-+                    o_spareByte[i] = 0xF0;
-                     break;
- 
-                 // As erroneous value will not be encountered.
-                 case fapi::ENUM_ATTR_VPD_DIMM_SPARE_FULL_BYTE:
-                 default:
-+                    o_spareByte[i] = 0x0;
-                     break;
-             }
-         }
-@@ -161,6 +159,45 @@ fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
- }
- 
- /**
-+ * @brief Called by dimmBadDqBitmapAccessHwp() to query ATTR_EFF_DIMM_SPARE
-+ * and set bits for unconnected spare DRAM in caller's data.
-+ *
-+ *
-+ * @param[in] i_mba       Reference to MBA Target.
-+ * @param[in] i_dimm      Reference to DIMM Target.
-+ * @param[o]  o_data      Reference to Bad DQ Bitmap set by
-+ *                        the caller.  Only the SPARE_DRAM_DQ_BYTE_NUMBER_INDEX
-+ *                        byte is modified by this function.
-+ *
-+ * @return ReturnCode
-+ */
-+
-+fapi::ReturnCode dimmUpdateDqBitmapSpareByte(
-+    const fapi::Target & i_mba,
-+    const fapi::Target & i_dimm,
-+    uint8_t (&o_data)[DIMM_DQ_MAX_DIMM_RANKS][DIMM_DQ_RANK_BITMAP_SIZE])
-+{
-+    fapi::ReturnCode l_rc;
-+
-+    uint8_t spareByte[DIMM_DQ_MAX_DIMM_RANKS];
-+    memset(spareByte, 0, sizeof(spareByte));
-+
-+    l_rc = dimmGetDqBitmapSpareByte(i_mba,i_dimm,spareByte);
-+    if (l_rc)
-+    {
-+        FAPI_ERR("dimmUpdateDqBitmapSpareByte: "
-+                 "Error getting spare byte");
-+        return l_rc;
-+    }
-+
-+    for (uint32_t i=0; i<DIMM_DQ_MAX_DIMM_RANKS; i++)
-+    {
-+        o_data[i][SPARE_DRAM_DQ_BYTE_NUMBER_INDEX] |= spareByte[i];
-+    }
-+    return l_rc;
-+}
-+
-+/**
-  * @brief Called by dimmBadDqBitmapAccessHwp() to query
-  * ATTR_SPD_MODULE_MEMORY_BUS_WIDTH in order to determine
-  * ECC support for this DIMM.  This function will set
-@@ -472,8 +509,13 @@ fapi::ReturnCode dimmBadDqBitmapSet(
-     uint8_t (l_prev_data)[DIMM_DQ_MAX_DIMM_RANKS]
-                          [DIMM_DQ_RANK_BITMAP_SIZE];
-     bool badDQSet = false;
--    dimmBadDqBitmapGet(i_mba, i_dimm, l_prev_data, i_wiringData,
--                       i_allMnfgFlags);
-+    l_rc = dimmBadDqBitmapGet(i_mba, i_dimm, l_prev_data, i_wiringData,
-+                              i_allMnfgFlags);
-+    if (l_rc)
-+    {
-+        FAPI_ERR("dimmBadDqBitmapAccessHwp: Error getting DQ bitmap");
-+        return l_rc;
-+    }
- 
-     // Check if Bad DQ bit set
-     for (uint8_t i = 0; i < DIMM_DQ_MAX_DIMM_RANKS; i++)
-@@ -654,6 +696,18 @@ fapi::ReturnCode dimmBadDqBitmapSet(
-         l_pSpdData->iv_reserved3 = 0;
-         memset(l_pSpdData->iv_bitmaps, 0, sizeof(l_pSpdData->iv_bitmaps));
- 
-+        // Get the spare byte
-+        uint8_t spareByte[DIMM_DQ_MAX_DIMM_RANKS];
-+        memset(spareByte, 0, sizeof(spareByte));
-+
-+        l_rc = dimmGetDqBitmapSpareByte(i_mba,i_dimm,spareByte);
-+        if (l_rc)
-+        {
-+            FAPI_ERR("dimmBadDqBitmapAccessHwp: "
-+                    "Error getting spare byte");
-+            break;
-+        }
-+
-         // Translate bitmap from Centaur DQ to DIMM DQ point of view for
-         // each rank
-         for (uint8_t i = 0; i < DIMM_DQ_MAX_DIMM_RANKS; i++)
-@@ -661,6 +715,16 @@ fapi::ReturnCode dimmBadDqBitmapSet(
-             // Iterate through all the DQ bits in the rank
-             for (uint8_t j = 0; j < DIMM_DQ_NUM_DQS; j++)
-             {
-+                if ((j/8) == SPARE_DRAM_DQ_BYTE_NUMBER_INDEX)
-+                {
-+                    // The spareByte can be one of: 0x00 0x0F 0xF0 0xFF
-+                    // If a bit is set, then that spare is unconnected
-+                    // so continue to the next num_dqs, do not translate
-+                    if (spareByte[i] & (0x80 >> (j % 8)))
-+                    {
-+                        continue;
-+                    }
-+                }
-                 if ((i_data[i][j/8]) & (0x80 >> (j % 8)))
-                 {
-                     // Centaur DQ bit set in callers data.
-@@ -747,13 +811,25 @@ fapi::ReturnCode dimmBadDqBitmapAccessHwp(
- 
-         if (i_get)
-         {
--            dimmBadDqBitmapGet(i_mba, i_dimm, io_data, l_wiringData,
--                               l_allMnfgFlags);
-+            l_rc = dimmBadDqBitmapGet(i_mba, i_dimm, io_data, l_wiringData,
-+                                      l_allMnfgFlags);
-+            if (l_rc)
-+            {
-+                FAPI_ERR("dimmBadDqBitmapAccessHwp: "
-+                        "Error getting DQ bitmap");
-+                break;
-+            }
-         }
-         else
-         {
--            dimmBadDqBitmapSet(i_mba, i_dimm, io_data, l_wiringData,
--                               l_allMnfgFlags);
-+            l_rc = dimmBadDqBitmapSet(i_mba, i_dimm, io_data, l_wiringData,
-+                                      l_allMnfgFlags);
-+            if (l_rc)
-+            {
-+                FAPI_ERR("dimmBadDqBitmapAccessHwp: "
-+                        "Error setting DQ bitmap");
-+                break;
-+            }
-         }
- 
-     }while(0);
-@@ -763,4 +839,4 @@ fapi::ReturnCode dimmBadDqBitmapAccessHwp(
-     return l_rc;
- }
- 
--}
-+}
-\ No newline at end of file
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0012-Disable-Centaur-I2C-at-runtime.patch b/openpower/package/hostboot/hostboot-0012-Disable-Centaur-I2C-at-runtime.patch
deleted file mode 100644
index 3455e34..0000000
--- a/openpower/package/hostboot/hostboot-0012-Disable-Centaur-I2C-at-runtime.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From e33d32a5c249e5298a545889bba86129218c213d Mon Sep 17 00:00:00 2001
-From: Corey Swenson <cswenson@us.ibm.com>
-Date: Thu, 23 Apr 2015 14:55:20 -0500
-Subject: [PATCH 2/2] Disable Centaur I2C at runtime
-
-Change-Id: I0425f642ed84041e604ad8004f77f0c385227526
----
- src/usr/i2c/runtime/rt_i2c.C | 76 ++++++++++++++++++++++++--------------------
- 1 file changed, 42 insertions(+), 34 deletions(-)
-
-diff --git a/src/usr/i2c/runtime/rt_i2c.C b/src/usr/i2c/runtime/rt_i2c.C
-index 5d21bbf..bdadbbe 100755
---- a/src/usr/i2c/runtime/rt_i2c.C
-+++ b/src/usr/i2c/runtime/rt_i2c.C
-@@ -139,44 +139,52 @@ errlHndl_t i2cPerformOp( DeviceFW::OperationType i_opType,
-     proc_engine_port |= (uint64_t)(args.engine) << HBRT_I2C_MASTER_ENGINE_SHIFT;
-     proc_engine_port |= (uint64_t)(args.port) << HBRT_I2C_MASTER_PORT_SHIFT;
- 
--    if(i_opType == DeviceFW::READ)
-+    // Send I2C op to host interface
-+    // Centaur I2C not yet supported
-+    // @todo RTC:127533 -- Enable Centaur I2C at runtime
-+    if( i_target->getAttr<TARGETING::ATTR_TYPE>() != TARGETING::TYPE_MEMBUF )
-     {
--        if(g_hostInterfaces->i2c_read != NULL)
-+        if(i_opType == DeviceFW::READ)
-         {
--            rc = g_hostInterfaces->i2c_read
--                    (
--                        proc_engine_port,   // Master Chip/Engine/Port
--                        args.devAddr,       // Dev Addr
--                        args.offset_length, // Offset size
--                        offset,             // Offset
--                        io_buflen,          // Buffer length
--                        io_buffer           // Buffer
--                    );
-+            if(g_hostInterfaces->i2c_read != NULL)
-+            {
-+                rc = g_hostInterfaces->i2c_read
-+                        (
-+                            proc_engine_port,   // Master Chip/Engine/Port
-+                            args.devAddr,       // Dev Addr
-+                            args.offset_length, // Offset size
-+                            offset,             // Offset
-+                            io_buflen,          // Buffer length
-+                            io_buffer           // Buffer
-+                        );
-+            }
-+            else
-+            {
-+                TRACFCOMP(g_trac_i2c,
-+                    ERR_MRK"Hypervisor I2C read interface not linked");
-+                l_host_if_enabled = false;
-+            }
-         }
--        else
--        {
--            TRACFCOMP(g_trac_i2c,ERR_MRK"Hypervisor I2C read interface not linked");
--            l_host_if_enabled = false;
--        }
--    }
--    else if (i_opType == DeviceFW::WRITE)
--    {
--        if(g_hostInterfaces->i2c_write != NULL)
--        {
--            rc = g_hostInterfaces->i2c_write
--                    (
--                        proc_engine_port,   // Master Chip/Engine/Port
--                        args.devAddr,       // Dev Addr
--                        args.offset_length, // Offset size
--                        offset,             // Offset
--                        io_buflen,          // Buffer length
--                        io_buffer           // Buffer
--                    );
--        }
--        else
-+        else if (i_opType == DeviceFW::WRITE)
-         {
--            TRACFCOMP(g_trac_i2c,ERR_MRK"Hypervisor I2C write interface not linked");
--            l_host_if_enabled = false;
-+            if(g_hostInterfaces->i2c_write != NULL)
-+            {
-+                rc = g_hostInterfaces->i2c_write
-+                        (
-+                            proc_engine_port,   // Master Chip/Engine/Port
-+                            args.devAddr,       // Dev Addr
-+                            args.offset_length, // Offset size
-+                            offset,             // Offset
-+                            io_buflen,          // Buffer length
-+                            io_buffer           // Buffer
-+                        );
-+            }
-+            else
-+            {
-+                TRACFCOMP(g_trac_i2c,
-+                    ERR_MRK"Hypervisor I2C write interface not linked");
-+                l_host_if_enabled = false;
-+            }
-         }
-     }
- 
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index 5f423da..b1c3805 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_VERSION ?= 6bdbe42ee0a2808be1f2f38026e57290cdfa8fc6
+HOSTBOOT_VERSION ?= 3f6449495b5922c13c9b977b252f9638ccb8cf4c
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
 
 HOSTBOOT_LICENSE = Apache-2.0
diff --git a/openpower/package/openpower-ffs/openpower-ffs.mk b/openpower/package/openpower-ffs/openpower-ffs.mk
index 1e6b9bf..ff82950 100644
--- a/openpower/package/openpower-ffs/openpower-ffs.mk
+++ b/openpower/package/openpower-ffs/openpower-ffs.mk
@@ -1,4 +1,4 @@
-OPENPOWER_FFS_VERSION ?= bf4630076762d9c20c16c80c1c791f352b046dd1
+OPENPOWER_FFS_VERSION ?= 2e790b8409071ca15767d822dabfa8e60f12c6e2
 OPENPOWER_FFS_SITE ?= $(call github,open-power,ffs,$(OPENPOWER_FFS_VERSION))
 OPENPOWER_FFS_LICENSE = GPLv2+
 
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index 6a23e51..2234d4e 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -46,6 +46,11 @@
         help
             String used to define name of sbec hostboot binary file
 
+config BR2_HOSTBOOT_BINARY_WINK_FILENAME
+        string "Name of winkle hostboot binary"
+        help
+            String used to define name of winkle hostboot binary file
+
 config BR2_OPENPOWER_TARGETING_BIN_FILENAME
         string "Name of openpower binary targeting file"
         help
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index fb7e230..658a949 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -8,7 +8,7 @@
 # make doesn't care for quotes in the dependencies.
 XML_PACKAGE=$(subst $\",,$(BR2_OPENPOWER_XML_PACKAGE))
 
-OPENPOWER_PNOR_VERSION ?= 3748ff041448a3909d5ffc5e62befcfcb597c0c1
+OPENPOWER_PNOR_VERSION ?= ed1682e10526ebd85825427fbf397361bb0e34aa
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
@@ -48,6 +48,7 @@
             -targeting_binary_source $(BR2_OPENPOWER_TARGETING_BIN_FILENAME) \
             -sbe_binary_filename $(BR2_HOSTBOOT_BINARY_SBE_FILENAME) \
             -sbec_binary_filename $(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) \
+            -wink_binary_filename $(BR2_HOSTBOOT_BINARY_WINK_FILENAME) \
             -occ_binary_filename $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME) \
             -capp_binary_filename $(BINARIES_DIR)/$(BR2_CAPP_UCODE_BIN_FILENAME) \
             -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE)
@@ -63,6 +64,7 @@
             -bootkernel $(BINARIES_DIR)/$(LINUX_IMAGE_NAME) \
             -sbe_binary_filename $(BR2_HOSTBOOT_BINARY_SBE_FILENAME) \
             -sbec_binary_filename $(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) \
+            -wink_binary_filename $(BR2_HOSTBOOT_BINARY_WINK_FILENAME) \
             -occ_binary_filename $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME) \
             -targeting_binary_filename $(BR2_OPENPOWER_TARGETING_ECC_FILENAME) \
             -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE)
diff --git a/openpower/package/palmetto-xml/palmetto-xml.mk b/openpower/package/palmetto-xml/palmetto-xml.mk
index 41c348e..2573450 100644
--- a/openpower/package/palmetto-xml/palmetto-xml.mk
+++ b/openpower/package/palmetto-xml/palmetto-xml.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PALMETTO_XML_VERSION = 9206323e35e40ca8957049965ba8e2564467040e
+PALMETTO_XML_VERSION = a712d271730f1ea28438e8d1bc30793db072510a
 PALMETTO_XML_SITE = $(call github,open-power,palmetto-xml,$(PALMETTO_XML_VERSION))
 
 PALMETTO_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index e3acbda..e2e3af0 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -70,16 +70,16 @@
 echo -n "-" >> $$($(2)_VERSION_FILE); \
 \
 cd "$$($(2)_SITE)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
-	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/;s/$(1)-//;' | xargs echo -n \
 	>> $$($(2)_VERSION_FILE); \
 \
-cd "$$($(2)_SITE)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
+cd "$$($(2)_SITE)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/;' | \
 	xargs echo -n >> $$($(2)_VERSION_FILE); \
 else \
 \
 [ `echo -n $$($(2)_VERSION) | wc -c` == "40" ] && (echo -n $$($(2)_VERSION) | \
-	sed "s/^\([0-9a-f]\{7\}\).*/\1/" >> $$($(2)_VERSION_FILE)) \
-	|| echo -n $$($(2)_VERSION) >> $$($(2)_VERSION_FILE); \
+	sed "s/^\([0-9a-f]\{7\}\).*/\1/;s/$(1)-//;" >> $$($(2)_VERSION_FILE)) \
+	|| echo -n $$($(2)_VERSION) | sed -e 's/$(1)-//' >> $$($(2)_VERSION_FILE); \
 \
 cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | \
 	if grep -e "-dirty"; then \
diff --git a/openpower/package/skiboot/skiboot.mk b/openpower/package/skiboot/skiboot.mk
index 3b4ad1a..7601f85 100644
--- a/openpower/package/skiboot/skiboot.mk
+++ b/openpower/package/skiboot/skiboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-SKIBOOT_VERSION = skiboot-5.0-rc3
+SKIBOOT_VERSION = skiboot-5.0.4
 SKIBOOT_SITE = $(call github,open-power,skiboot,$(SKIBOOT_VERSION))
 SKIBOOT_INSTALL_IMAGES = YES
 SKIBOOT_INSTALL_TARGET = NO
