Merge pull request #792 from open-power/master-next

Merge master-next to master for v1.13.
diff --git a/README.md b/README.md
index 9eeabd0..907b586 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,22 @@
-# OpenPower Firmware Build Environment
+# OpenPOWER Firmware Build Environment
 
-The OpenPower firmware build process uses Buildroot to create a toolchain and
+The OpenPOWER firmware build process uses Buildroot to create a toolchain and
 build the various components of the PNOR firmware, including Hostboot, Skiboot,
 OCC, Petitboot etc.
 
 ## Development
 
-Issues, Milestones, pull requests and code hosting is on github:
+Issues, Milestones, pull requests and code hosting is on GitHub:
 https://github.com/open-power/op-build
 
 Mailing list: openpower-firmware@lists.ozlabs.org  
 Info/Subscribe: https://lists.ozlabs.org/listinfo/openpower-firmware  
-Archives: https://lists.ozlabs.org/pipermail/openpower-firmware/  
+Archives: https://lists.ozlabs.org/pipermail/openpower-firmware/
 
 ## Building an image
 
+To build an image for a Palmetto system:
+
 ```
 git clone --recursive git@github.com:open-power/op-build.git
 cd op-build
@@ -22,14 +24,18 @@
 op-build palmetto_defconfig && op-build
 ```
 
-This will build an image for a Palmetto system. There exists default
-configurations for other platforms in openpower/configs/ such as
-Habanero and Firestone.
+There are also default configurations for other platforms in
+`openpower/configs/` such as Habanero and Firestone.
 
-### Dependancies for *64-bit* Ubuntu/Debian systems
+Buildroot/op-build supports both native and cross-compilation - it will
+automatically download and build an appropriate toolchain as part of the build
+process, so you don't need to worry about setting up a
+cross-compiler. Cross-compiling from a x86-64 host is officially supported.
+
+### Dependencies for *64-bit* Ubuntu/Debian systems
 
 1. Install Ubuntu (>= 14.04) or Debian (>= 7.5) 64-bit.
-2. Enable Universe:
+2. Enable Universe (Ubuntu only):
 
         sudo apt-get install software-properties-common
         sudo add-apt-repository universe
@@ -41,7 +47,7 @@
           libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
           wget bc
 
-### Dependancies for *64-bit* Fedora systems
+### Dependencies for *64-bit* Fedora systems
 
 1. Install Fedora 23 64-bit.
 2. Install the packages necessary for the build:
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index 1d76ffe..fa1b81b 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,10 +13,10 @@
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 5024b40..8c19b7b 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -12,10 +12,10 @@
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firenze-firmware-whitelist"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 78fbdaa..1e42dac 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,10 +13,10 @@
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index ae894eb..d545fed 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,10 +13,10 @@
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 4ebb591..f005265 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,10 +13,10 @@
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/hostboot/witherspoon.config b/openpower/configs/hostboot/witherspoon.config
index 01f9587..5e1197d 100755
--- a/openpower/configs/hostboot/witherspoon.config
+++ b/openpower/configs/hostboot/witherspoon.config
@@ -1,48 +1,46 @@
 # The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2400
-unset   BMC_DOES_SFC_INIT
+set   SFC_IS_AST2500
+unset SFC_IS_AST2400
+unset BMC_DOES_SFC_INIT
 unset SFC_IS_IBM_DPSS
 set   ALLOW_MICRON_PNOR
 set   ALLOW_MACRONIX_PNOR
 
 # VPD options.
-unset MVPD_READ_FROM_HW
-unset MVPD_WRITE_TO_HW
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
 set MVPD_READ_FROM_PNOR
 set MVPD_WRITE_TO_PNOR
-unset DJVPD_READ_FROM_HW
+set DJVPD_READ_FROM_HW
 unset DJVPD_WRITE_TO_HW
 set DJVPD_READ_FROM_PNOR
 set DJVPD_WRITE_TO_PNOR
-unset CVPD_READ_FROM_HW
-unset CVPD_WRITE_TO_HW
+set CVPD_READ_FROM_HW
+set CVPD_WRITE_TO_HW
 set CVPD_READ_FROM_PNOR
 set CVPD_WRITE_TO_PNOR
-unset PVPD_READ_FROM_HW
-unset PVPD_WRITE_TO_HW
-unset PVPD_READ_FROM_PNOR
-unset PVPD_WRITE_TO_PNOR
-unset SKIP_RESTRICT_EX_UNITS
-set CDIMM_FORMAT_FOR_CVPD
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
 
 # gpio config
-unset GPIODD
+set GPIODD
 unset PALMETTO_VDDR
 
 # Enable SBE updates
 unset SBE_UPDATE_INDEPENDENT
-set SBE_UPDATE_SEQUENTIAL
+unset SBE_UPDATE_SEQUENTIAL
+set NO_SBE_UPDATES
 
-set PCIE_HOTPLUG_CONTROLLER
+unset PCIE_HOTPLUG_CONTROLLER
 
 # turn on console output
-unset CONSOLE
-unset BMC_AST2400
+set CONSOLE
+set BMC_AST2500
 
-# Enable Kingston dimm voltage workaround
-unset KINGSTON_1_35_VOLT
-
-unset DISABLE_HOSTBOOT_RUNTIME
+set DISABLE_HOSTBOOT_RUNTIME
 
 # Compile in hostboot runtime PRD
 set HBRT_PRD
@@ -63,3 +61,7 @@
 
 # set for trace debug to console
 unset CONSOLE_OUTPUT_TRACE
+
+unset CONFIG_SECUREBOOT
+unset CONFIG_TPMDD
+unset CONFIG_TPM_NUVOTON
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index 1dc5b14..39905a5 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -11,10 +11,10 @@
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
index 5624845..e1d1774 100644
--- a/openpower/configs/openpower_p9_mambo_defconfig
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -11,10 +11,10 @@
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9"
 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/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 1764787..131e97d 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -11,10 +12,10 @@
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.24"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.39"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index c95c5e2..0935a21 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -12,13 +12,14 @@
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9"
 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_LINUX_KERNEL_XZ=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
@@ -37,14 +38,16 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="witherspoon.config"
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
 BR2_OPENPOWER_CONFIG_NAME="witherspoon"
 BR2_OPENPOWER_XML_PACKAGE="witherspoon-xml"
 BR2_OPENPOWER_PNOR_FILENAME="witherspoon.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="witherspoon_update.pnor"
+#BR2_OPENPOWER_PNOR_UPDATE_FILENAME="witherspoon_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
 BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9n.ref_image.hdr.bin.ecc"
+BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
+BR2_IMA_CATALOG_ECC_FILENAME="ima_catalog.bin.ecc"
 BR2_OPENPOWER_TARGETING_BIN_FILENAME="WITHERSPOON_HB.targeting.bin"
 BR2_OPENPOWER_TARGETING_ECC_FILENAME="WITHERSPOON_HB.targeting.bin.ecc"
 BR2_PACKAGE_PETITBOOT=y
diff --git a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index fba7aea..3f528e9 100644
--- a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
+++ b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -1,7 +1,7 @@
-From 4e3853e7c718ebcb2ef4118f2082078f6ee01f7c Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Thadeu Lima De Souza Cascardo <thadeul@br.ibm.com>
 Date: Tue, 25 Mar 2014 10:45:16 -0400
-Subject: [PATCH 1/9] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 01/13] xhci: Use xhci_pci_remove for xhci device shutdown
 
 Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
 Signed-off-by: Joel Stanley <joel@jms.id.au>
@@ -10,10 +10,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 963867c2c1d5..5e6a369f635b 100644
+index cf147ccac7d3..af1f7f01bc7a 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -447,7 +447,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -449,7 +449,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
@@ -23,5 +23,5 @@
  	.driver = {
  		.pm = &usb_hcd_pci_pm_ops
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch b/openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
index c39a6a0..1284572 100644
--- a/openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
+++ b/openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
@@ -1,7 +1,7 @@
-From 467166476e10cf9428be4be1a58597eeeeb60810 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Jeremy Kerr <jk@ozlabs.org>
 Date: Wed, 2 Mar 2016 11:25:47 +0800
-Subject: [PATCH 2/9] drivers/drm/ast: Switch SCU to VGA output on POST
+Subject: [PATCH 02/13] drivers/drm/ast: Switch SCU to VGA output on POST
 
 On AST BMC platforms, the BMC may be using the VGA device for UART
 mirroring. In this case, we need to switch the DAC output to
@@ -68,5 +68,5 @@
 +	ast_moutdwm(ast, scu_addr | 0x2c, val);
 +}
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0003-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch b/openpower/linux/0003-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
index 575c88d..083bf93 100644
--- a/openpower/linux/0003-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
+++ b/openpower/linux/0003-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
@@ -1,7 +1,7 @@
-From eeaa35188dc3a1b59d44ad1f8596160074a765f7 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Huy Nguyen <huyn@mellanox.com>
 Date: Wed, 17 Feb 2016 17:24:26 +0200
-Subject: [PATCH 3/9] net/mlx4_core: Set UAR page size to 4KB regardless of
+Subject: [PATCH 03/13] net/mlx4_core: Set UAR page size to 4KB regardless of
  system page size
 
 problem description:
@@ -295,5 +295,5 @@
 +}
  #endif /* MLX4_DEVICE_H */
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch
index 443286b..38a24b7 100644
--- a/openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch
+++ b/openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch
@@ -1,7 +1,7 @@
-From 984ed87aa4eb894c46ffd6af4174fdf432763bcd Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
 Date: Tue, 19 Jul 2016 22:43:26 +0930
-Subject: [PATCH 4/9] xhci: do not halt the secondary HCD
+Subject: [PATCH 04/13] xhci: do not halt the secondary HCD
 
 We can't halt the secondary HCD, because it's also the primary HCD,
 which will cause problems if we have devices attached to the primary
@@ -52,5 +52,5 @@
  
  	/* Deleting Compliance Mode Recovery Timer */
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0005-net-mlx5-Add-pci-shutdown-callback.patch b/openpower/linux/0005-net-mlx5-Add-pci-shutdown-callback.patch
index bd6ff96..ef75ac4 100644
--- a/openpower/linux/0005-net-mlx5-Add-pci-shutdown-callback.patch
+++ b/openpower/linux/0005-net-mlx5-Add-pci-shutdown-callback.patch
@@ -1,7 +1,7 @@
-From fc4dab6aa83c38b2d2bc69c965da1128a6eccd28 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Carol L Soto <clsoto@linux.vnet.ibm.com>
 Date: Tue, 12 Jul 2016 17:04:07 -0500
-Subject: [PATCH 5/9] net/mlx5: Add pci shutdown callback
+Subject: [PATCH 05/13] net/mlx5: Add pci shutdown callback
 
 Backport of commit 5fc7197d3a256 ("net/mlx5: Add pci shutdown callback")
 so we can use for the OpenPower kernel.
@@ -157,5 +157,5 @@
  					  enum mlx5_dev_event event,
  					  unsigned long param);
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0006-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch b/openpower/linux/0006-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch
index 226f70d..e1a6f5d 100644
--- a/openpower/linux/0006-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch
+++ b/openpower/linux/0006-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch
@@ -1,7 +1,7 @@
-From 2357f5b53bbaf6a41c40001dccac19143810b4da Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Oliver O'Halloran <oohall@gmail.com>
 Date: Fri, 24 Jun 2016 17:28:43 +1000
-Subject: [PATCH 6/9] powerpc/boot: Add OPAL console to epapr wrappers
+Subject: [PATCH 06/13] powerpc/boot: Add OPAL console to epapr wrappers
 
 This patch adds an OPAL console backend to the powerpc boot wrapper so
 that decompression failures inside the wrapper can be reported to the
@@ -282,5 +282,5 @@
  	typeof(x) _x = (x);	\
  	typeof(y) _y = (y);	\
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0007-tty-hvc-Use-opal-irqchip-interface-if-available.patch b/openpower/linux/0007-tty-hvc-Use-opal-irqchip-interface-if-available.patch
index 5366678..0ddb72f 100644
--- a/openpower/linux/0007-tty-hvc-Use-opal-irqchip-interface-if-available.patch
+++ b/openpower/linux/0007-tty-hvc-Use-opal-irqchip-interface-if-available.patch
@@ -1,7 +1,7 @@
-From fbcbae65d9d7159fc2057f5df2363bbbee6ef26f Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
 Date: Wed, 13 Jul 2016 11:15:42 +1000
-Subject: [PATCH 7/9] tty/hvc: Use opal irqchip interface if available
+Subject: [PATCH 07/13] tty/hvc: Use opal irqchip interface if available
 
 Update the hvc driver to use the OPAL irqchip if made available by the
 running firmware. If it is not present, the driver falls back to the
@@ -34,5 +34,5 @@
  		pr_err("hvc_opal: Unable to map interrupt for device %s\n",
  			dev->dev.of_node->full_name);
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0008-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch b/openpower/linux/0008-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
index 0cf9d38..d84418e 100644
--- a/openpower/linux/0008-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
+++ b/openpower/linux/0008-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
@@ -1,7 +1,7 @@
-From d9b5f57b4dc56d34c9dc00904b2a33a99be338d0 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
 Date: Wed, 13 Jul 2016 11:15:41 +1000
-Subject: [PATCH 8/9] tty/hvc: Use IRQF_SHARED for OPAL hvc consoles
+Subject: [PATCH 08/13] tty/hvc: Use IRQF_SHARED for OPAL hvc consoles
 
 Commit 2def86a7200c
 ("hvc: Convert to using interrupts instead of opal events")
@@ -84,5 +84,5 @@
  
  	return 0;
 -- 
-2.9.3
+2.11.0
 
diff --git a/openpower/linux/0009-Release-4.4.24-openpower1.patch b/openpower/linux/0009-Release-4.4.24-openpower1.patch
deleted file mode 100644
index 8452fd3..0000000
--- a/openpower/linux/0009-Release-4.4.24-openpower1.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 66f15d99fc5d6bb115b4b4e4088031d5a8a8bffe Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Tue, 16 Aug 2016 23:00:23 +0930
-Subject: [PATCH 9/9] Release 4.4.24-openpower1
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index cdbc185c3539..29d768f12699 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 4
- PATCHLEVEL = 4
- SUBLEVEL = 24
--EXTRAVERSION =
-+EXTRAVERSION = -openpower1
- NAME = Blurry Fish Butt
- 
- # *DOCUMENTATION*
--- 
-2.9.3
-
diff --git a/openpower/linux/0009-usb-xhci-allow-xhci_check_bandwith-in-XHCI_STATE_REM.patch b/openpower/linux/0009-usb-xhci-allow-xhci_check_bandwith-in-XHCI_STATE_REM.patch
new file mode 100644
index 0000000..e4a5ff1
--- /dev/null
+++ b/openpower/linux/0009-usb-xhci-allow-xhci_check_bandwith-in-XHCI_STATE_REM.patch
@@ -0,0 +1,63 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jeremy Kerr <jk@ozlabs.org>
+Date: Thu, 1 Dec 2016 18:15:59 +0800
+Subject: [PATCH 09/13] usb/xhci: allow xhci_check_bandwith in
+ XHCI_STATE_REMOVING
+
+Change 98d74f9ce (and backported as 0eb1e16bf9) introduced
+XHCI_STATE_REMOVING, where PCI XHCI HCDs are flagged as removing dring
+pci->remove. This included a check in xhci_check_bandwith to supress any
+configuration changes while the hcd is in this state.
+
+However, it looks like some controllers hang during halt if we haven't
+set configration 0 (via usb_hcd_alloc_bandwidth()).
+
+This change allows the configuration 0 update while removing.
+
+[This may be specific to our XHCI hacks for kexec...]
+
+From Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>:
+
+ > What concerned me about 0004-xhci-do-not-halt-the-secondary-HCD.patch
+ > was that I'd still see eventual halt failures , though they seemed to
+ > occur on the shutdown hook, instead of the distro probe path. But since
+ > the probe goes ok, the bind continues and the device doesn't disappear.
+ > With JK's patch applied, I ran a bind-unbind stress test and couldn't
+ > reproduce the halt failure anymore. further probe and enumeration seems
+ > to work ok.
+ >
+ > I don't understand why the change fixes the hang but as JK said, it may
+ > be a particularity of this TI device not handling halts correctly . I
+ > don't think it will be accepted upstream as is, though, so we might want
+ > to make it a hardware quirk for this specific device if we confirm the
+ > TI device requires it for proper halting.
+ >
+ > Other than that, i think it's safe to make the change, and I don't think
+ > xhci spec forbids reconfiguration prior to halt.
+ >
+ > In short, this seems to work but I don't fully understand why. It
+ > doesn't seem harmful and if it fixes the issue, we can make it a quirk.
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/usb/host/xhci.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
+index ec92a843325b..db557113cf3d 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -2770,8 +2770,7 @@ int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev)
+ 	if (ret <= 0)
+ 		return ret;
+ 	xhci = hcd_to_xhci(hcd);
+-	if ((xhci->xhc_state & XHCI_STATE_DYING) ||
+-		(xhci->xhc_state & XHCI_STATE_REMOVING))
++	if (xhci->xhc_state & XHCI_STATE_DYING)
+ 		return -ENODEV;
+ 
+ 	xhci_dbg(xhci, "%s called for udev %p\n", __func__, udev);
+-- 
+2.11.0
+
diff --git a/openpower/linux/0010-powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch b/openpower/linux/0010-powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch
new file mode 100644
index 0000000..1773d17
--- /dev/null
+++ b/openpower/linux/0010-powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch
@@ -0,0 +1,79 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Nicholas Piggin <npiggin@gmail.com>
+Date: Mon, 28 Nov 2016 12:42:26 +1100
+Subject: [PATCH 10/13] powerpc/boot: Request no dynamic linker for boot
+ wrapper
+
+The boot wrapper performs its own relocations and does not require
+PT_INTERP segment. However currently we don't tell the linker that.
+
+Prior to binutils 2.28 that works OK. But since binutils commit
+1a9ccd70f9a7 ("Fix the linker so that it will not silently generate ELF
+binaries with invalid program headers. Fix readelf to report such
+invalid binaries.") binutils tries to create a program header segment
+due to PT_INTERP, and the link fails because there is no space for it:
+
+  ld: arch/powerpc/boot/zImage.pseries: Not enough room for program headers, try linking with -N
+  ld: final link failed: Bad value
+
+So tell the linker not to do that, by passing --no-dynamic-linker.
+
+Cc: stable@vger.kernel.org
+Reported-by: Anton Blanchard <anton@samba.org>
+Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
+[mpe: Drop dependency on ld-version.sh and massage change log]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit ff45000fcb56b5b0f1a14a865d3541746d838a0a)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/boot/wrapper | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
+index ceaa75d5a684..8c8394e4e164 100755
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -161,6 +161,28 @@ case "$elfformat" in
+     elf32-powerpc)	format=elf32ppc	;;
+ esac
+ 
++ld_version()
++{
++    # Poached from scripts/ld-version.sh, but we don't want to call that because
++    # this script (wrapper) is distributed separately from the kernel source.
++    # Extract linker version number from stdin and turn into single number.
++    awk '{
++	gsub(".*\\)", "");
++	gsub(".*version ", "");
++	gsub("-.*", "");
++	split($1,a, ".");
++	print a[1]*100000000 + a[2]*1000000 + a[3]*10000;
++	exit
++    }'
++}
++
++# Do not include PT_INTERP segment when linking pie. Non-pie linking
++# just ignores this option.
++LD_VERSION=$(${CROSS}ld --version | ld_version)
++LD_NO_DL_MIN_VERSION=$(echo 2.26 | ld_version)
++if [ "$LD_VERSION" -ge "$LD_NO_DL_MIN_VERSION" ] ; then
++	nodl="--no-dynamic-linker"
++fi
+ 
+ platformo=$object/"$platform".o
+ lds=$object/zImage.lds
+@@ -412,7 +434,8 @@ if [ "$platform" != "miboot" ]; then
+     if [ -n "$link_address" ] ; then
+         text_start="-Ttext $link_address"
+     fi
+-    ${CROSS}ld -m $format -T $lds $text_start $pie -o "$ofile" \
++#link everything
++    ${CROSS}ld -m $format -T $lds $text_start $pie $nodl -o "$ofile" \
+ 	$platformo $tmp $object/wrapper.a
+     rm $tmp
+ fi
+-- 
+2.11.0
+
diff --git a/openpower/linux/0011-powerpc-Convert-cmp-to-cmpd-in-idle-enter-sequence.patch b/openpower/linux/0011-powerpc-Convert-cmp-to-cmpd-in-idle-enter-sequence.patch
new file mode 100644
index 0000000..4f0edfa
--- /dev/null
+++ b/openpower/linux/0011-powerpc-Convert-cmp-to-cmpd-in-idle-enter-sequence.patch
@@ -0,0 +1,45 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Segher Boessenkool <segher@kernel.crashing.org>
+Date: Thu, 6 Oct 2016 13:42:19 +0000
+Subject: [PATCH 11/13] powerpc: Convert cmp to cmpd in idle enter sequence
+
+PowerPC's "cmp" instruction has four operands. Normally people write
+"cmpw" or "cmpd" for the second cmp operand 0 or 1. But, frequently
+people forget, and write "cmp" with just three operands.
+
+With older binutils this is silently accepted as if this was "cmpw",
+while often "cmpd" is wanted. With newer binutils GAS will complain
+about this for 64-bit code. For 32-bit code it still silently assumes
+"cmpw" is what is meant.
+
+In this instance the code comes directly from ISA v2.07, including the
+cmp, but cmpd is correct. Backport to stable so that new toolchains can
+build old kernels.
+
+Fixes: 948cf67c4726 ("powerpc: Add NAP mode support on Power7 in HV mode")
+Cc: stable@vger.kernel.org # v3.0
+Reviewed-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
+Signed-off-by: Segher Boessenkool <segher@kernel.crashing.org>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit 80f23935cadb1c654e81951f5a8b7ceae0acc1b4)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/kernel/idle_power7.S | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/kernel/idle_power7.S b/arch/powerpc/kernel/idle_power7.S
+index 112ccf497562..73f638789a38 100644
+--- a/arch/powerpc/kernel/idle_power7.S
++++ b/arch/powerpc/kernel/idle_power7.S
+@@ -44,7 +44,7 @@
+ 	std	r0,0(r1);					\
+ 	ptesync;						\
+ 	ld	r0,0(r1);					\
+-1:	cmp	cr0,r0,r0;					\
++1:	cmpd	cr0,r0,r0;					\
+ 	bne	1b;						\
+ 	IDLE_INST;						\
+ 	b	.
+-- 
+2.11.0
+
diff --git a/openpower/linux/0012-drivers-gpu-drm-ast-Fix-infinite-loop-if-read-fails.patch b/openpower/linux/0012-drivers-gpu-drm-ast-Fix-infinite-loop-if-read-fails.patch
new file mode 100644
index 0000000..b6011c7
--- /dev/null
+++ b/openpower/linux/0012-drivers-gpu-drm-ast-Fix-infinite-loop-if-read-fails.patch
@@ -0,0 +1,49 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Russell Currey <ruscur@russell.cc>
+Date: Thu, 15 Dec 2016 16:12:41 +1100
+Subject: [PATCH 12/13] drivers/gpu/drm/ast: Fix infinite loop if read fails
+
+ast_get_dram_info() configures a window in order to access BMC memory.
+A BMC register can be configured to disallow this, and if so, causes
+an infinite loop in the ast driver which renders the system unusable.
+
+Fix this by erroring out if an error is detected.  On powerpc systems with
+EEH, this leads to the device being fenced and the system continuing to
+operate.
+
+Cc: <stable@vger.kernel.org> # 3.10+
+Signed-off-by: Russell Currey <ruscur@russell.cc>
+Reviewed-by: Joel Stanley <joel@jms.id.au>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/gpu/drm/ast/ast_main.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
+index e0b4586a26fd..9b8f0b975ca6 100644
+--- a/drivers/gpu/drm/ast/ast_main.c
++++ b/drivers/gpu/drm/ast/ast_main.c
+@@ -223,7 +223,8 @@ static int ast_get_dram_info(struct drm_device *dev)
+ 	ast_write32(ast, 0x10000, 0xfc600309);
+ 
+ 	do {
+-		;
++		if (pci_channel_offline(dev->pdev))
++			return -EIO;
+ 	} while (ast_read32(ast, 0x10000) != 0x01);
+ 	data = ast_read32(ast, 0x10004);
+ 
+@@ -429,7 +430,9 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
+ 	ast_detect_chip(dev, &need_post);
+ 
+ 	if (ast->chip != AST1180) {
+-		ast_get_dram_info(dev);
++		ret = ast_get_dram_info(dev);
++		if (ret)
++			goto out_free;
+ 		ast->vram_size = ast_get_vram_info(dev);
+ 		DRM_INFO("dram %d %d %d %08x\n", ast->mclk, ast->dram_type, ast->dram_bus_width, ast->vram_size);
+ 	}
+-- 
+2.11.0
+
diff --git a/openpower/linux/0013-Release-4.4.39-openpower1.patch b/openpower/linux/0013-Release-4.4.39-openpower1.patch
new file mode 100644
index 0000000..1ae0420
--- /dev/null
+++ b/openpower/linux/0013-Release-4.4.39-openpower1.patch
@@ -0,0 +1,34 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Wed, 14 Dec 2016 13:20:09 +1030
+Subject: [PATCH 13/13] Release 4.4.39-openpower1
+
+ - Add "drivers/gpu/drm/ast: Fix infinite loop if read fails" to avoid
+   hanging when probing the the Aspeed graphics device. This is queued in
+   drm-misc-fixes[1]
+
+ - Move to latest upstream stable release 4.4.39
+
+[1] https://patchwork.kernel.org/patch/9477147/
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 88d26a632bef..f10041067025 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 4
+ PATCHLEVEL = 4
+ SUBLEVEL = 39
+-EXTRAVERSION =
++EXTRAVERSION = -openpower1
+ NAME = Blurry Fish Butt
+ 
+ # *DOCUMENTATION*
+-- 
+2.11.0
+
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
index a2d65b5..165f63d 100644
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ b/openpower/package/habanero-xml/habanero-xml.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HABANERO_XML_VERSION ?= 5565b8fe1feaa4cdb3b296912069c02f46c4cc59
+HABANERO_XML_VERSION ?= 6a78496c286e284719a8201148a5088030b897de
 HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
 
 HABANERO_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index 62ab9ff..7d15d28 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -3,8 +3,8 @@
 # hostboot
 #
 ################################################################################
-HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= 5a94e290bf5ff80147b818e131b52964bb099efe
-HOSTBOOT_VERSION_BRANCH_MASTER ?= 6ac254a49dc82a8c3007adb0d47c9feea75672b0
+HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= e28b28fa9995ab3039b44f2c200fdbbc58313677
+HOSTBOOT_VERSION_BRANCH_MASTER ?= abc4a878dc90b34f48ec66554776717490fd2efb
 
 HOSTBOOT_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(HOSTBOOT_VERSION_BRANCH_MASTER),$(HOSTBOOT_VERSION_BRANCH_MASTER_P8))
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch b/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch
new file mode 100644
index 0000000..f6c6710
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch
@@ -0,0 +1,32 @@
+From bc7b8b21549752274b162c64dbce3c81d20f2cab Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:22:30 +1000
+Subject: [PATCH 03/10] Default to std=gnu++03
+
+Seeing as no C++ dialect was previously selected, GCC < 6 defaulted
+to GNU++98 as the standard C++ mode. However... it seems that C++03
+is a better match for HostBoot code (confirmed by Patrick Williams
+in https://github.com/open-power/hostboot/pull/62#discussion_r76830612 )
+
+Change-Id: I6661b5b61319c85c2a90926beb6e2662e96dcf06
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/build/mkrules/cflags.env.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk
+index c805999..0bae0ec 100644
+--- a/src/build/mkrules/cflags.env.mk
++++ b/src/build/mkrules/cflags.env.mk
+@@ -41,7 +41,7 @@ CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
+ 	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian
+ ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian
+ CXXFLAGS += $(CFLAGS) -nostdinc++ -fno-rtti -fno-exceptions -Wall \
+-	    -fuse-cxa-atexit
++	    -fuse-cxa-atexit -std=gnu++03
+ LDFLAGS += --nostdlib --sort-common -EB $(COMMONFLAGS)
+ 
+ INCFLAGS = $(addprefix -I, $(INCDIR) )
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch b/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch
new file mode 100644
index 0000000..b1ecacd
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch
@@ -0,0 +1,28 @@
+From 6ae906e70c7209e69b750f6566263fe4998dfb48 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:22:00 +1000
+Subject: [PATCH 04/10] fix build error: return-statement with a value, in
+ function returning 'void'
+
+Change-Id: I9dc8b698fec95488e209cbc40b928769a26b6de6
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/usr/devicefw/driverif.H | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/include/usr/devicefw/driverif.H b/src/include/usr/devicefw/driverif.H
+index a148725..fb43073 100644
+--- a/src/include/usr/devicefw/driverif.H
++++ b/src/include/usr/devicefw/driverif.H
+@@ -266,7 +266,7 @@ namespace DeviceFW
+                              TargType i_targetType,
+                              deviceOp_t i_regRoute)
+     {
+-        return InvalidParameterType(); // Cause a compile fail if not one of
++        InvalidParameterType(); // Cause a compile fail if not one of
+                                        // the explicit template specializations.
+     }
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch b/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch
new file mode 100644
index 0000000..fcfe570
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch
@@ -0,0 +1,71 @@
+From 550d36dca3cdec84d47f05711c2569990d3b4708 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:27:04 +1000
+Subject: [PATCH 05/10] error: dereferencing type-punned pointer will break
+ strict-aliasing rules
+
+Change-Id: I63accd3e881c941736ece4b4498c2c9d06ff8761
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H             | 7 +++++++
+ .../usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H        | 1 -
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C        | 6 +++---
+ 3 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+index e5af2c9..7edf2bf 100755
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+@@ -227,6 +227,13 @@ namespace getAttrData
+         uint8_t              iv_systemType;
+         uint8_t              iv_systemType_ext;
+         uint8_t              iv_dataVersion;
++    public:
++	MBvpdVMKeyword() : iv_version(0),iv_systemType(0),
++			   iv_systemType_ext(0),iv_dataVersion(0) {};
++	operator uint32_t() const {
++		return iv_version << 24 | iv_systemType << 16 |
++			iv_systemType_ext << 8 | iv_dataVersion;
++	}
+     };
+ //  Attribute definition
+     struct MBvpdAttrDef
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+index f172508..85460b2 100644
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+@@ -33,7 +33,6 @@
+ #define _HWP_GETMBVPDMEMDATAVERSION_
+ 
+ #include <fapi.H>
+-#define VM_KEYWORD_DEFAULT_VALUE 0x00000000
+ 
+ // function pointer typedef definition for HWP call support
+ typedef fapi::ReturnCode (*getMBvpdMemoryDataVersion_FP_t)
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+index 2f83fa2..ef64515 100644
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+@@ -50,7 +50,7 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
+     fapi::ReturnCode l_fapirc;
+     DimmType l_dimmType = ISDIMM;
+     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX;
+-    uint32_t l_vpdMemoryDataVersion = VM_KEYWORD_DEFAULT_VALUE;   
++    MBvpdVMKeyword l_vpdMemoryDataVersion;
+     uint32_t l_bufSize = sizeof(l_vpdMemoryDataVersion);
+ 
+     FAPI_DBG("getMBvpdMemoryDataVersion: entry ");
+@@ -140,8 +140,8 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
+         }
+                     
+         // Check if the format byte in the value returned is in between valid range
+-        if (( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version >  VM_SUPPORTED_HIGH_VER )||
+-            ( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version == VM_NOT_SUPPORTED ))
++        if ((l_vpdMemoryDataVersion.iv_version >  VM_SUPPORTED_HIGH_VER )||
++            (l_vpdMemoryDataVersion.iv_version == VM_NOT_SUPPORTED ))
+         {
+             FAPI_ERR("getMBvpdMemoryDataVersion:"
+                      " keyword data returned is invalid : %d ",
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch b/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
new file mode 100644
index 0000000..666c747
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
@@ -0,0 +1,70 @@
+From 74d099aaffa37498859c0840771052f50253ce4d Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:33:42 +1000
+Subject: [PATCH 06/10] Change cv_forcedMemPeriodic to uint8_t as bool is
+ invalid
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GCC6 throws the following error:
+operand type ‘bool*’ is incompatible with argument 1 of ‘__sync_fetch_and_and’
+
+GCC documents that bool is invalid for __sync builtins over at:
+https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#g_t_005f_005fsync-Builtins
+" GCC allows any scalar type that is 1, 2, 4 or 8 bytes in size other than the C type _Bool or the C++ type bool"
+
+Change-Id: Iab6415348cb19f590921d8ccc5349867fa57a42d
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/kernel/cpumgr.H | 2 +-
+ src/kernel/cpumgr.C         | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/include/kernel/cpumgr.H b/src/include/kernel/cpumgr.H
+index 68f8972..6e9b697 100644
+--- a/src/include/kernel/cpumgr.H
++++ b/src/include/kernel/cpumgr.H
+@@ -215,7 +215,7 @@ class CpuManager
+              */
+         static uint64_t cv_cpuSeq;
+ 
+-        static bool cv_forcedMemPeriodic;       //!<  force free / coalesce.
++        static uint8_t cv_forcedMemPeriodic;       //!<  force free / coalesce.
+ 
+         // If a shutdown of all CPUs is requested
+         static bool cv_shutdown_requested;
+diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
+index 44f61a1..ce7516f 100644
+--- a/src/kernel/cpumgr.C
++++ b/src/kernel/cpumgr.C
+@@ -50,7 +50,7 @@ cpu_t** CpuManager::cv_cpus[KERNEL_MAX_SUPPORTED_NODES];
+ bool CpuManager::cv_shutdown_requested = false;
+ uint64_t CpuManager::cv_shutdown_status = 0;
+ size_t CpuManager::cv_cpuSeq = 0;
+-bool CpuManager::cv_forcedMemPeriodic = false;
++uint8_t CpuManager::cv_forcedMemPeriodic = 0;
+ InteractiveDebug CpuManager::cv_interactive_debug;
+ 
+ CpuManager::CpuManager() : iv_lastStartTimebase(0)
+@@ -361,7 +361,7 @@ void CpuManager::executePeriodics(cpu_t * i_cpu)
+         }
+ 
+         bool forceMemoryPeriodic = __sync_fetch_and_and(&cv_forcedMemPeriodic,
+-                                                        false);
++                                                        0);
+ 
+         ++(i_cpu->periodic_count);
+         if((0 == (i_cpu->periodic_count % CPU_PERIODIC_CHECK_MEMORY)) ||
+@@ -461,7 +461,7 @@ size_t CpuManager::getThreadCount()
+ 
+ void CpuManager::forceMemoryPeriodic()
+ {
+-    cv_forcedMemPeriodic = true;
++    cv_forcedMemPeriodic = 1;
+ }
+ 
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch b/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
new file mode 100644
index 0000000..9c2c8f4
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
@@ -0,0 +1,34 @@
+From 8797f215a09a89c271dab484b892ceedd2486615 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:13:11 +1000
+Subject: [PATCH 07/10] =?UTF-8?q?error:=20the=20compiler=20can=20assume=20?=
+ =?UTF-8?q?that=20the=20address=20of=20=E2=80=98r=E2=80=99=20will=20never?=
+ =?UTF-8?q?=20be=20NULL?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+     PRDF_ASSERT( &r  != NULL );
+
+Change-Id: I2d60075f9e2232512efe45a5c6aa5563f3a565f5
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
+index 9ee1358..ef7279b 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
++++ b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
+@@ -120,8 +120,6 @@ ErrorRegister::ErrorRegister( SCAN_COMM_REGISTER_CLASS & r, ResolutionMap & rm,
+     ErrorRegisterType(), scr(r), scr_rc(SUCCESS), rMap(rm),
+     xNoErrorOnZeroScr(false), xScrId(scrId)
+ {
+-    PRDF_ASSERT( &r  != NULL );
+-    PRDF_ASSERT( &rm != NULL );
+ }
+ 
+ /*---------------------------------------------------------------------*/
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch b/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
new file mode 100644
index 0000000..73adecc
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
@@ -0,0 +1,90 @@
+From b315c53f2803b84e35fe646aa82702b82e8ecd98 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:07:58 +1000
+Subject: [PATCH 08/10] Fix compiler can assume address will never be NULL
+ error with GCC6
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+So, it turns out that relying on the address of something passed by
+reference being able to be NULL isn't exactly a good idea, or remotely
+obvious code. So, instead, do the sane thing and pass a pointer and
+check it.
+
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:
+In constructor ‘PRDF::AttnTypeRegister::AttnTypeRegister(PRDF::SCAN_COMM_REGISTE
+R_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF
+::SCAN_COMM_REGISTER_CLASS&)’:
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+42:21: error: the compiler can assume that the address of ‘i_check’ will never b
+e NULL [-Werror=address]
+         iv_check(  NULL == &i_check   ? &cv_null : &i_check),
+                   ~~^~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+43:21: error: the compiler can assume that the address of ‘i_recov’ will never b
+e NULL [-Werror=address]
+         iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
+                   ~~^~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+44:22: error: the compiler can assume that the address of ‘i_special’ will never
+ be NULL [-Werror=address]
+         iv_special(NULL == &i_special ? &cv_null : &i_special),
+                    ~~^~~~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+45:22: error: the compiler can assume that the address of ‘i_proccs’ will never
+be NULL [-Werror=address]
+         iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
+                    ~~^~~~~~~~~~~~
+
+Change-Id: Iecd8636da67aac24f64f73fd82b1f7ccbfced900
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ .../common/framework/register/prdfOperatorRegister.H     | 16 ++++++++--------
+ .../prdf/common/framework/register/prdfScanFacility.C    |  2 +-
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
+index b0513e4..a26a76e 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
++++ b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
+@@ -434,15 +434,15 @@ class AttnTypeRegister : public SCAN_COMM_REGISTER_CLASS
+         iv_bs = &iv_iBS;
+     }
+ 
+-    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS & i_check,
+-                      SCAN_COMM_REGISTER_CLASS & i_recov,
+-                      SCAN_COMM_REGISTER_CLASS & i_special,
+-                      SCAN_COMM_REGISTER_CLASS & i_proccs ) :
++    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS *i_check,
++                      SCAN_COMM_REGISTER_CLASS *i_recov,
++                      SCAN_COMM_REGISTER_CLASS *i_special,
++                      SCAN_COMM_REGISTER_CLASS *i_proccs ) :
+         SCAN_COMM_REGISTER_CLASS( ),
+-        iv_check(  NULL == &i_check   ? &cv_null : &i_check),
+-        iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
+-        iv_special(NULL == &i_special ? &cv_null : &i_special),
+-        iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
++        iv_check(  NULL == i_check   ? &cv_null : i_check),
++        iv_recov(  NULL == i_recov   ? &cv_null : i_recov),
++        iv_special(NULL == i_special ? &cv_null : i_special),
++        iv_proccs( NULL == i_proccs  ? &cv_null : i_proccs),
+         iv_iBS(0)         // will fully initialize this inside ctor.
+     {
+         uint32_t l_length = 1024;
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
+index 0d379cf..cad5ce8 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
++++ b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
+@@ -166,7 +166,7 @@ SCAN_COMM_REGISTER_CLASS &  ScanFacility::GetAttnTypeRegister(
+                                            SCAN_COMM_REGISTER_CLASS * i_special,
+                                            SCAN_COMM_REGISTER_CLASS * i_proccs )
+ {
+-  AttnTypeRegister r(*i_check, *i_recov, *i_special, *i_proccs);
++  AttnTypeRegister r(i_check, i_recov, i_special, i_proccs);
+   return iv_attnRegFw.get(r);
+ }
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch b/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
new file mode 100644
index 0000000..7e17bf9
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
@@ -0,0 +1,33 @@
+From 9279a2bf255392321594b9457a67b796195b0891 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Wed, 31 Aug 2016 13:07:17 +1000
+Subject: [PATCH 09/10] =?UTF-8?q?error:=20in=20C++98=20=E2=80=98l=5FvmVers?=
+ =?UTF-8?q?ionBuf=E2=80=99=20must=20be=20initialized=20by=20constructor?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fix GCC6 thrown error
+
+Change-Id: I9aa508843f54c99ebb59822c39590811423ad0b1
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+index 3739c75..a4685ad 100755
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+@@ -392,7 +392,7 @@ fapi::ReturnCode getVersion  (const fapi::Target    & i_mbaTarget,
+     fapi::Target l_mbTarget;
+     fapi::MBvpdKeyword l_keyword = fapi::MBVPD_KEYWORD_VM;  // try VM first
+     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX; // default to SPDX
+-    MBvpdVMKeyword l_vmVersionBuf={};
++    MBvpdVMKeyword l_vmVersionBuf;
+     uint32_t l_version = 0;
+     uint32_t l_vmBufSize = sizeof(MBvpdVMKeyword); // VM keyword is of 4 bytes.
+     uint16_t l_versionBuf = 0;
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch b/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch
new file mode 100644
index 0000000..a9cef3f
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch
@@ -0,0 +1,69 @@
+From 9852975319c864b47759cc8d7814bf6f9f0f1f4c Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 3 Nov 2016 14:36:19 +1100
+Subject: [PATCH 10/10] Use -std=gnu++03 for host g++ invocations
+
+Seeing as the ancient GCC on RHEL6 doesn't actually support -std=gnu++03
+we have to go through some hoops to detect it (we use the same magic
+Make as we use in skiboot to do the same)
+
+Change-Id: I338560ae2ebdac842c8055c07519d542564c3923
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/hwpf/makefile | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile
+index 8d0bb72..ee8cf13 100644
+--- a/src/usr/hwpf/makefile
++++ b/src/usr/hwpf/makefile
+@@ -5,7 +5,7 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# Contributors Listed Below - COPYRIGHT 2011,2015
++# Contributors Listed Below - COPYRIGHT 2011,2016
+ # [+] International Business Machines Corp.
+ #
+ #
+@@ -402,18 +402,26 @@ $(call GENTARGET, ${IF_CMP_FLEX_TARGET}) : \
+ 	$(C2) "    FLEX       $(notdir $<)"
+ 	$(C1)flex -o$@ $^
+ 
++try = $(shell set -e; if ($(1)) >/dev/null 2>&1; \
++        then echo "$(2)"; \
++        else echo "$(3)"; fi )
++
++try-cflag = $(call try,$(1) $(2) -x c -c /dev/null -o /dev/null,$(2))
++HOSTCFLAGS:=-O3
++HOSTCFLAGS+=$(call try-cflag,$(HOST_PREFIX)g++,-std=gnu++03)
++
+ $(GENDIR)/$(IF_CMP_SUBDIR)/%.host.o: \
+ 	    ifcompiler/%.C $(IF_COMPILER_H_FILES) \
+ 	    $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+ $(GENDIR)/$(IF_CMP_YACC_C_TARGET:.c=.host.o): \
+     $(GENDIR)/$(IF_CMP_YACC_C_TARGET) $(IF_COMPILER_H_FILES)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+@@ -421,7 +429,7 @@ $(GENDIR)/$(IF_CMP_FLEX_TARGET:.c=.host.o): \
+     $(GENDIR)/$(IF_CMP_FLEX_TARGET) $(IF_COMPILER_H_FILES) \
+     $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0003-processMrw-fixes-to-work-with-latest-witherspoon.xml.patch b/openpower/package/hostboot/p9Patches/hostboot-0003-processMrw-fixes-to-work-with-latest-witherspoon.xml.patch
new file mode 100644
index 0000000..ee27fc8
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0003-processMrw-fixes-to-work-with-latest-witherspoon.xml.patch
@@ -0,0 +1,377 @@
+From 06f2d36f5e7b7f48d85f93da974816d5b25dfaf1 Mon Sep 17 00:00:00 2001
+From: Prachi Gupta <pragupta@us.ibm.com>
+Date: Tue, 29 Nov 2016 09:46:43 -0600
+Subject: [PATCH 1/4] processMrw: fixes to work with latest witherspoon.xml
+
+- Fix logic to find lpc bus under the bmc target
+- Updated I2C_BUS_SPEED_ARRAY to be 4x4
+- Fixed XBUS HUID
+- Update all BAR attributes
+
+Change-Id: I82dcf21e28f77bcd1fb2391a5bd40d8ce1a6b172
+---
+ src/usr/targeting/common/Targets.pm                | 81 +++++++++++++++++++--
+ src/usr/targeting/common/processMrw.pl             | 83 ++++++++++++----------
+ .../targeting/common/xmltohb/attribute_types.xml   |  2 +-
+ .../targeting/common/xmltohb/target_types_hb.xml   |  4 +-
+ 4 files changed, 123 insertions(+), 47 deletions(-)
+
+diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
+index fc18675..42780dd 100644
+--- a/src/usr/targeting/common/Targets.pm
++++ b/src/usr/targeting/common/Targets.pm
+@@ -123,7 +123,8 @@ sub loadXML
+     print "Loading MRW XML: $filename\n";
+     $self->{xml} =
+       XMLin($filename,forcearray => [ 'child_id', 'hidden_child_id', 'bus',
+-                                      'property', 'field', 'attribute' ]);
++                                      'property', 'field', 'attribute',
++                                      'enumerator' ]);
+ 
+     if (defined($self->{xml}->{'enumerationTypes'}))
+     {
+@@ -462,7 +463,6 @@ sub buildHierarchy
+     {
+         $baseptr = $self->{xml}->{'targetInstances'}->{'targetInstance'};
+     }
+-
+     if ($target eq "")
+     {
+         ## find system target
+@@ -816,7 +816,11 @@ sub setCommonAttrForChiplet
+ 
+     my $fapi_name       = getFapiName($tgt_type, $node, $proc, $pos);
+ 
+-    $self->{huid_idx}->{$tgt_type} = $pos;
++    if ($tgt_type ne "XBUS")
++    {
++       $self->{huid_idx}->{$tgt_type} = $pos;
++    }
++
+     $self->setHuid($target, $sys, $node);
+     $self->setAttribute($target, "FAPI_NAME",       $fapi_name);
+     $self->setAttribute($target, "PHYS_PATH",       $physical_path);
+@@ -1332,16 +1336,16 @@ sub findConnections
+     my $target   = shift;
+     my $bus_type = shift;
+     my $end_type = shift;
++
+     my %connections;
+     my $num=0;
+     my $target_children = $self->getTargetChildren($target);
+-
+     if ($target_children eq "")
+     {
+         return "";
+     }
+ 
+-    foreach my $child (@{ $self->getTargetChildren($target) })
++    foreach my $child ($self->getAllTargetChildren($target))
+     {
+         my $child_bus_type = $self->getBusType($child);
+         if ($child_bus_type eq $bus_type)
+@@ -1353,7 +1357,6 @@ sub findConnections
+                 my $type        = $self->getMrwType($dest_parent);
+                 my $dest_type   = $self->getType($dest_parent);
+                 my $dest_class  = $self->getAttribute($dest_parent,"CLASS");
+-
+                 if ($type eq "NA")
+                 {
+                     $type = $dest_type;
+@@ -1361,6 +1364,29 @@ sub findConnections
+                 if ($type eq "NA") {
+                     $type = $dest_class;
+                 }
++
++                if ($end_type ne "") {
++                    #Look for an end_type match on any ancestor, as
++                    #connections may have a destination unit with a hierarchy
++                    #like unit->pingroup->muxgroup->chip where the chip has
++                    #the interesting type.
++                    while ($type ne $end_type) {
++
++                        $dest_parent = $self->getTargetParent($dest_parent);
++                        if ($dest_parent eq "") {
++                            last;
++                        }
++
++                        $type = $self->getMrwType($dest_parent);
++                        if ($type eq "NA") {
++                            $type = $self->getType($dest_parent);
++                        }
++                        if ($type eq "NA") {
++                            $type = $self->getAttribute($dest_parent, "CLASS");
++                        }
++                    }
++                }
++
+                 if ($type eq $end_type || $end_type eq "")
+                 {
+                     $connections{CONN}[$num]{SOURCE}=$child;
+@@ -1554,6 +1580,22 @@ sub renameAttribute
+     return 0;
+ }
+ 
++## remove an attribute from a target
++sub removeAttribute
++{
++    my $self = shift;
++    my $target = shift;
++    my $attribute = shift;
++
++    my $target_ptr = $self->{data}->{TARGETS}->{$target};
++    if (!defined($target_ptr->{ATTRIBUTES}->{$attribute}))
++    {
++        return 1;
++    }
++    delete($target_ptr->{ATTRIBUTES}->{$attribute});
++    $self->log($target, "Removing attribute: $attribute");
++}
++
+ ## copy an attribute between targets
+ sub copyAttribute
+ {
+@@ -1589,7 +1631,6 @@ sub setAttributeField
+     my $value     = shift;
+     $self->{data}->{TARGETS}->{$target}->{ATTRIBUTES}->{$attribute}->{default}
+       ->{field}->{$field}->{value} = $value;
+-
+     $self->log($target, "Setting Attribute: $attribute ($field) =$value");
+ }
+ ## returns complex attribute value
+@@ -1652,6 +1693,27 @@ sub getTargetChildren
+     return $target_ptr->{CHILDREN};
+ }
+ 
++## returns an array of all child (including grandchildren) target names
++sub getAllTargetChildren
++{
++    my $self   = shift;
++    my $target = shift;
++    my @children;
++
++    my $targets = $self->getTargetChildren($target);
++    if ($targets ne "")
++    {
++        for my $child (@$targets)
++        {
++            push @children, $child;
++            my @more = $self->getAllTargetChildren($child);
++            push @children, @more;
++        }
++    }
++
++    return @children;
++}
++
+ sub getEnumValue
+ {
+     my $self     = shift;
+@@ -1964,6 +2026,11 @@ C<INDEX>.
+ Returns an array of target strings representing all the children of target
+ C<TARGET_STRING>.
+ 
++=item getAllTargetChildren(C<TARGET_STRING>)
++
++Returns an array of target strings representing all the children of target
++C<TARGET_STRING>, including grandchildren and below as well.
++
+ =item getEnumValue(C<ENUM_TYPE>,C<ENUM_NAME>)
+ 
+ Returns the enum value of type C<ENUM_TYPE> and name C<ENUM_NAME>.  The
+diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
+index f898500..312582d 100644
+--- a/src/usr/targeting/common/processMrw.pl
++++ b/src/usr/targeting/common/processMrw.pl
+@@ -112,7 +112,7 @@ foreach my $target (sort keys %{ $targetObj->getAllTargets() })
+         processApss($targetObj, $target);
+     }
+ 
+-    processIpmiSensors($targetObj,$target);
++    #processIpmiSensors($targetObj,$target);
+ }
+ 
+ ## check topology
+@@ -427,16 +427,6 @@ sub processProcessor
+        $targetObj->getTargetParent($target);
+     $targetObj->copyAttribute($module_target,$target,"LOCATION_CODE");
+ 
+-    ## Copy all attributes from module
+-    foreach my $attr (sort (keys
+-           %{ $targetObj->getTarget($module_target)->{TARGET}->{attribute} }))
+-    {
+-        if (($attr ne "TYPE") && ($attr ne "PHYS_PATH"))
+-        {
+-            $targetObj->copyAttribute($module_target,$target,$attr);
+-        }
+-    }
+-
+     ## Copy PCIE attributes from socket
+     ## Copy Position attribute from socket
+     foreach my $attr (sort (keys
+@@ -453,7 +443,7 @@ sub processProcessor
+     }
+ 
+     $targetObj->log($target,"Finding master proc");
+-    my $lpcs=$targetObj->findConnections($target,"LPC","FSP");
++    my $lpcs=$targetObj->findConnections($target,"LPC","BMC");
+     if ($lpcs ne "")
+     {
+        $targetObj->log ($target, "Setting master proc to $target");
+@@ -522,9 +512,9 @@ sub processProcessor
+     {
+         $targetObj->setAttributeField($target, "FSI_OPTION_FLAGS", "reserved",
+             "0");
+-        $targetObj->setAttribute($target, "FSI_MASTER_CHIP",    "physical:sys");
++        $targetObj->setAttribute($target, "FSI_MASTER_CHIP",    "physical:sys-0");
+         $targetObj->setAttribute($target, "FSI_MASTER_PORT",    "0xFF");
+-        $targetObj->setAttribute($target, "ALTFSI_MASTER_CHIP", "physical:sys");
++        $targetObj->setAttribute($target, "ALTFSI_MASTER_CHIP", "physical:sys-0");
+         $targetObj->setAttribute($target, "ALTFSI_MASTER_PORT", "0xFF");
+         $targetObj->setAttribute($target, "FSI_MASTER_TYPE",    "NO_MASTER");
+         $targetObj->setAttribute($target, "FSI_SLAVE_CASCADE",  "0");
+@@ -534,6 +524,7 @@ sub processProcessor
+     {
+         $targetObj->setAttribute($target, "PROC_MASTER_TYPE",
+             "NOT_MASTER");
++        $targetObj->setAttribute($target, "ALTFSI_MASTER_CHIP", "physical:sys-0");
+     }
+     ## Update bus speeds
+     processI2cSpeeds($targetObj,$target);
+@@ -562,15 +553,19 @@ sub processI2cSpeeds
+     $bus_speeds[0][0] = $bus_speeds2[0];
+     $bus_speeds[0][1] = $bus_speeds2[1];
+     $bus_speeds[0][2] = $bus_speeds2[2];
+-    $bus_speeds[1][0] = $bus_speeds2[3];
+-    $bus_speeds[1][1] = $bus_speeds2[4];
+-    $bus_speeds[1][2] = $bus_speeds2[5];
+-    $bus_speeds[2][0] = $bus_speeds2[6];
+-    $bus_speeds[2][1] = $bus_speeds2[7];
+-    $bus_speeds[2][2] = $bus_speeds2[8];
+-    $bus_speeds[3][0] = $bus_speeds2[9];
+-    $bus_speeds[3][1] = $bus_speeds2[10];
+-    $bus_speeds[3][2] = $bus_speeds2[11];
++    $bus_speeds[0][3] = $bus_speeds2[3];
++    $bus_speeds[1][0] = $bus_speeds2[4];
++    $bus_speeds[1][1] = $bus_speeds2[5];
++    $bus_speeds[1][2] = $bus_speeds2[6];
++    $bus_speeds[1][3] = $bus_speeds2[7];
++    $bus_speeds[2][0] = $bus_speeds2[8];
++    $bus_speeds[2][1] = $bus_speeds2[9];
++    $bus_speeds[2][2] = $bus_speeds2[10];
++    $bus_speeds[2][3] = $bus_speeds2[11];
++    $bus_speeds[3][0] = $bus_speeds2[12];
++    $bus_speeds[3][1] = $bus_speeds2[13];
++    $bus_speeds[3][2] = $bus_speeds2[14];
++    $bus_speeds[3][3] = $bus_speeds2[15];
+ 
+     my $i2cs=$targetObj->findConnections($target,"I2C","");
+     if ($i2cs ne "") {
+@@ -581,13 +576,11 @@ sub processI2cSpeeds
+             my $bus_speed=$targetObj->getBusAttribute(
+                   $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED");
+ 
+-            #@todo RTC:164224 > currently the bus_speed fields are empty in the xml
+-=begin
+             if ($bus_speed eq "" || $bus_speed==0) {
+                 print "ERROR: I2C bus speed not defined for $i2c->{SOURCE}\n";
+                 $targetObj->myExit(3);
+             }
+-=cut
++
+             ## choose lowest bus speed
+             if ($bus_speeds[$engine][$port] eq "" ||
+                   $bus_speeds[$engine][$port]==0  ||
+@@ -599,15 +592,19 @@ sub processI2cSpeeds
+     $bus_speed_attr = $bus_speeds[0][0].",".
+                       $bus_speeds[0][1].",".
+                       $bus_speeds[0][2].",".
++                      $bus_speeds[0][3].",".
+                       $bus_speeds[1][0].",".
+                       $bus_speeds[1][1].",".
+                       $bus_speeds[1][2].",".
++                      $bus_speeds[1][3].",".
+                       $bus_speeds[2][0].",".
+                       $bus_speeds[2][1].",".
+                       $bus_speeds[2][2].",".
++                      $bus_speeds[2][3].",".
+                       $bus_speeds[3][0].",".
+                       $bus_speeds[3][1].",".
+-                      $bus_speeds[3][2];
++                      $bus_speeds[3][2].",".
++                      $bus_speeds[3][3];
+ 
+     $targetObj->setAttribute($target,"I2C_BUS_SPEED_ARRAY",$bus_speed_attr);
+ }
+@@ -626,16 +623,28 @@ sub setupBars
+     my $proc   = $targetObj->getAttribute($target, "FABRIC_CHIP_ID");
+     $targetObj->{TOPOLOGY}->{$group}->{$proc}++;
+ 
+-    my @bars=("FSP_BASE_ADDR","PSI_BRIDGE_BASE_ADDR",
+-              "INTP_BASE_ADDR","PHB_MMIO_ADDRS_64","PHB_MMIO_ADDRS_32",
+-              "PHB_XIVE_ESB_ADDRS","PHB_REG_ADDRS","XIVE_ROUTING_ESB_ADDR",
+-              "XIVE_ROUTING_END_ADDR","XIVE_PRESENTATION_NVT_ADDR",
+-              "VAS_HYPERVISOR_WINDOW_CONTEXT_ADDR",
+-              "VAS_USER_WINDOW_CONTEXT_ADDR","LPC_BUS_ADDR",
+-              "NVIDIA_NPU_PRIVILEGED_ADDR","NVIDIA_NPU_USER_REG_ADDR",
+-              "NVIDIA_PHY0_REG_ADDR","NVIDIA_PHY1_REG_ADDR",
+-              "XIVE_CONTROLLER_BAR_ADDR","XIVE_PRESENTATION_BAR_ADDR",
+-              "NX_RNG_ADDR");
++    my @bars=(  "FSP_BASE_ADDR", #
++                "PSI_BRIDGE_BASE_ADDR", #
++                "INTP_BASE_ADDR",
++                "PHB_MMIO_ADDRS_64", #
++                "PHB_MMIO_ADDRS_32", #
++                "PHB_XIVE_ESB_ADDRS", #
++                "PHB_REG_ADDRS", #
++                "XIVE_ROUTING_ESB_ADDR", #
++                "XIVE_ROUTING_END_ADDR", #
++                "XIVE_PRESENTATION_NVT_ADDR", #
++                "VAS_HYPERVISOR_WINDOW_CONTEXT_ADDR", #
++                "VAS_USER_WINDOW_CONTEXT_ADDR", #
++                "LPC_BUS_ADDR", #
++                "NVIDIA_NPU_PRIVILEGED_ADDR", #
++                "NVIDIA_NPU_USER_REG_ADDR", #
++                "NVIDIA_PHY0_REG_ADDR", #
++                "NVIDIA_PHY1_REG_ADDR", #
++                "PSI_HB_ESB_ADDR", #
++                "XIVE_CONTROLLER_BAR_ADDR", #
++                "XIVE_PRESENTATION_BAR_ADDR", #
++                "XSCOM_BASE_ADDRESS", #
++                "NX_RNG_ADDR"); #
+ 
+     # Attribute only valid in naples-based systems
+     if (!$targetObj->isBadAttribute($target,"NPU_MMIO_BAR_BASE_ADDR") ) {
+diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
+index 9fce73d..70342c5 100644
+--- a/src/usr/targeting/common/xmltohb/attribute_types.xml
++++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
+@@ -15548,7 +15548,7 @@ Measured in GB</description>
+ <attribute>
+     <id>REDUNDANT_CLOCKS</id>
+     <description>
+-        1 = System has redundant clock oscillators
++        1 = System has redundant clock oscillators
+         0 = System does not have redundant clock oscillators
+         From the Machine Readable Workbook
+     </description>
+diff --git a/src/usr/targeting/common/xmltohb/target_types_hb.xml b/src/usr/targeting/common/xmltohb/target_types_hb.xml
+index aa941be..4e2447d 100755
+--- a/src/usr/targeting/common/xmltohb/target_types_hb.xml
++++ b/src/usr/targeting/common/xmltohb/target_types_hb.xml
+@@ -258,10 +258,10 @@
+     <attribute><id>VPD_SWITCHES</id></attribute>
+ </targetTypeExtension>
+ 
+-<targetType>
++<targetTypeExtension>
+     <id>unit-xbus-nimbus</id>
+     <attribute><id>HB_TARGET_SCOMABLE</id></attribute>
+-</targetType>
++</targetTypeExtension>
+ 
+ <targetTypeExtension>
+     <id>occ</id>
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0003-remove-sbfw-check-hbDistribute.patch b/openpower/package/hostboot/p9Patches/hostboot-0003-remove-sbfw-check-hbDistribute.patch
deleted file mode 100644
index 74be3df..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0003-remove-sbfw-check-hbDistribute.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 52929548d943e0387fabb70d658905120cad7cd8 Mon Sep 17 00:00:00 2001
-From: Matt Ploetz <maploetz@us.ibm.com>
-Date: Tue, 6 Sep 2016 12:49:13 -0500
-Subject: [PATCH] Add openpower conditional to sbfw directory in hbDistribute
-
-Change-Id: I5e6759526a07fcbeea3a510a9a11369546367bf9
-RTC:160442
----
- src/build/tools/hbDistribute | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/src/build/tools/hbDistribute b/src/build/tools/hbDistribute
-index e999b49..75d0b14 100755
---- a/src/build/tools/hbDistribute
-+++ b/src/build/tools/hbDistribute
-@@ -116,12 +116,16 @@ fi
- echo "sbfw dir = ${SBFW_DIR}"
- # Verify SBFW directory or default to sandbox.
- if [ "${SBFW_DIR}" == "invalid directory" ]; then
--    if [ -z "${SANDBOXROOT}" -o -z "${SANDBOXNAME}" ]; then
--        echo "ERROR:SBFW - No path specified and \$SANDBOXBASE undefined."
--        print_usage
--        exit -1
-+    if [ "${TARGET}" == "openpower_TARGET" ]; then
-+        :
-     else
--        SBFW_DIR=${SANDBOXROOT}/${SANDBOXNAME}/src/sbei/sbfw
-+        if [ -z "${SANDBOXROOT}" -o -z "${SANDBOXNAME}" ]; then
-+            echo "ERROR:SBFW - No path specified and \$SANDBOXBASE undefined."
-+            print_usage
-+            exit -1
-+        else
-+            SBFW_DIR=${SANDBOXROOT}/${SANDBOXNAME}/src/sbei/sbfw
-+        fi
-     fi
- fi
- 
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0005-add-nimbus-simics-xml.patch b/openpower/package/hostboot/p9Patches/hostboot-0005-add-nimbus-simics-xml.patch
deleted file mode 100644
index f2f7d0b..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0005-add-nimbus-simics-xml.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 56e613d9e7cb2ef6cc1ab0adfae691cfcbdcf9e5 Mon Sep 17 00:00:00 2001
-From: Matt Ploetz <maploetz@us.ibm.com>
-Date: Wed, 28 Sep 2016 17:06:31 -0500
-Subject: [PATCH] Add nimbus simics xml to openPower until processMrw changes
- are in
-
-Change-Id: Iac895ed08b7e182301e223d45ce064715e459723
-RTC:143114
----
- src/build/mkrules/dist.targets.mk | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
-index ecd4b58..0e2434c 100644
---- a/src/build/mkrules/dist.targets.mk
-+++ b/src/build/mkrules/dist.targets.mk
-@@ -81,6 +81,7 @@ COPY_FILES = \
-     src/usr/targeting/common/xmltohb/attribute_types.xml:openpower \
-     src/usr/targeting/common/xmltohb/attribute_types_hb.xml:openpower \
-     src/usr/targeting/common/xmltohb/target_types_hb.xml:openpower \
-+    src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml:openpower \
-     src/usr/targeting/common/xmltohb/xmltohb.pl:openpower \
-     src/usr/targeting/xmltohb/updatetempsxml.pl:openpower \
-     src/include/usr/vmmconst.h:openpower \
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0005-filter_out_unwanted_attributes-initial-check-in.patch b/openpower/package/hostboot/p9Patches/hostboot-0005-filter_out_unwanted_attributes-initial-check-in.patch
new file mode 100644
index 0000000..21153e8
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0005-filter_out_unwanted_attributes-initial-check-in.patch
@@ -0,0 +1,168 @@
+From 0e0e28e214d7277698a781d271a846b81ebbd834 Mon Sep 17 00:00:00 2001
+From: Prachi Gupta <pragupta@us.ibm.com>
+Date: Tue, 6 Dec 2016 17:09:35 -0600
+Subject: [PATCH 2/4] filter_out_unwanted_attributes:initial check-in
+
+script to remove any unwanted attributes from mrw xml
+based on target_types
+
+Change-Id: Ic8965134a122a2561383481128036245ce158c02
+---
+ .../common/filter_out_unwanted_attributes.pl       | 145 +++++++++++++++++++++
+ 1 file changed, 145 insertions(+)
+ create mode 100755 src/usr/targeting/common/filter_out_unwanted_attributes.pl
+
+diff --git a/src/usr/targeting/common/filter_out_unwanted_attributes.pl b/src/usr/targeting/common/filter_out_unwanted_attributes.pl
+new file mode 100755
+index 0000000..8f2a69f
+--- /dev/null
++++ b/src/usr/targeting/common/filter_out_unwanted_attributes.pl
+@@ -0,0 +1,145 @@
++#! /usr/bin/perl
++# IBM_PROLOG_BEGIN_TAG
++# This is an automatically generated prolog.
++#
++# $Source: src/usr/targeting/common/filter_out_unwanted_attributes.pl $
++#
++# OpenPOWER HostBoot Project
++#
++# Contributors Listed Below - COPYRIGHT 2016
++#
++#
++# Licensed under the Apache License, Version 2.0 (the "License");
++# you may not use this file except in compliance with the License.
++# You may obtain a copy of the License at
++#
++#     http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS,
++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
++# implied. See the License for the specific language governing
++# permissions and limitations under the License.
++#
++# IBM_PROLOG_END_TAG
++
++use strict;
++use XML::Simple;
++use XML::LibXML;
++use XML::Parser;
++use Data::Dumper;
++use feature "state";
++use Getopt::Long qw(GetOptions);
++
++my @tgt_files;
++my $mrw_file;
++
++GetOptions(
++    "tgt-xml=s"    => \@tgt_files,
++    "mrw-xml=s"    => \$mrw_file,
++);
++
++if ((scalar @tgt_files eq 0) || ($mrw_file eq ""))
++{
++    print "ERROR: tgt-xml or mrw-xml is not specified\n";
++    print "tgt-xml: \n";
++    print Dumper @tgt_files;
++    print "mrw-xml: $mrw_file\n";
++    exit (-1);
++}
++
++$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
++
++#Load all the attr-files
++my @tgt_xmls;
++foreach my $i (0 .. $#tgt_files)
++{
++    my $tgt_file  = $tgt_files[$i];
++    print "Loading TGT XML: $tgt_file in $i\n";
++
++    $tgt_xmls[$i] =
++           XMLin($tgt_file,
++                forcearray => ['attribute', 'targetType', 'field']);
++}
++
++#Load MRW XML
++$XML::LibXML::skipXMLDeclaration = 1;
++print "Loading MRW XML: $mrw_file\n";
++my $parser = XML::LibXML->new();
++my $mrw_parsed = $parser->parse_file($mrw_file);
++
++foreach my $tgt
++    ($mrw_parsed->findnodes('/attributes/targetInstance'))
++{
++    my $tgt_type = $tgt->findnodes('./type');
++    foreach my $attr ($tgt->findnodes('./attribute'))
++    {
++        my $attr_id = $attr->findnodes('./id');
++        my $found = findAttribute($tgt_type, $attr_id);
++        if ($found eq 0)
++        {
++            print "Target: $tgt_type Attr: $attr_id\n";
++            $tgt->removeChild($attr);
++        }
++    }
++}
++
++
++sub findAttribute
++{
++    my $tgt  = shift;
++    my $attr = shift;
++    foreach my $i (0 .. $#tgt_xmls)
++    {
++        my $tgt_xml = $tgt_xmls[$i];
++        if (defined $tgt_xml->{targetType}{$tgt}{attribute}{$attr})
++        {
++            return 1;
++        }
++        else
++        {
++            my %tgt_hash = %$tgt_xml;
++            if (lookAtParentAttributes (\%tgt_hash, $tgt, $attr) eq 1)
++            {
++                return 1;
++            }
++        }
++    }
++    return 0;
++}
++
++sub lookAtParentAttributes
++{
++    my ($tgt_xml, $tgt, $attr) = @_;
++
++    my $parent = $tgt_xml->{targetType}{$tgt}{parent};
++
++    if ($parent eq "")
++    {
++        return 0;
++    }
++    elsif ($parent eq "base")
++    {
++         return (defined  $tgt_xml->{targetType}{$parent}{attribute}{$attr}) ?
++                        1 : 0;
++    }
++    else
++    {
++        if (defined  $tgt_xml->{targetType}{$parent}{attribute}{$attr})
++        {
++            return 1;
++        }
++        else
++        {
++            my %tgt_hash = %$tgt_xml;
++            return lookAtParentAttributes(\%tgt_hash, $parent, $attr);
++        }
++    }
++}
++#OUTPUT
++my $xml_fh;
++my $filename = $mrw_file . ".updated";
++print "Creating XML: $filename\n";
++open($xml_fh, ">$filename") || die "Unable to create: $filename";
++print {$xml_fh} $mrw_parsed->toString();
++close($xml_fh);
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0006-fix-AST2500-config.patch b/openpower/package/hostboot/p9Patches/hostboot-0006-fix-AST2500-config.patch
new file mode 100644
index 0000000..2c52864
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0006-fix-AST2500-config.patch
@@ -0,0 +1,26 @@
+From 4bd0930e6d63bf714188ecacbe06a162b3529351 Mon Sep 17 00:00:00 2001
+From: Matt Ploetz <maploetz@us.ibm.com>
+Date: Sun, 6 Nov 2016 19:20:39 -0600
+Subject: [PATCH] Change AST2400 to default only if AST2500 isn't set
+
+Change-Id: Ic9c1da281fcdc650e7528a84377d4fbe51355c84
+---
+ src/usr/pnor/HBconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/usr/pnor/HBconfig b/src/usr/pnor/HBconfig
+index c0dfde8..9ce13b1 100644
+--- a/src/usr/pnor/HBconfig
++++ b/src/usr/pnor/HBconfig
+@@ -5,7 +5,7 @@ config SFC_IS_IBM_DPSS
+         The Serial Flash Controller is the IBM DPSS FPGA.
+ 
+ config SFC_IS_AST2400
+-    default y
++    default y if !SFC_IS_AST2500
+     depends on !SFC_IS_IBM_DPSS && !SFC_IS_FAKE && !SFC_IS_AST2500
+     help
+         The Serial Flash Controller is the AST2400 BMC.
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0007-Add-filtering-script-to-openpower-distribution.patch b/openpower/package/hostboot/p9Patches/hostboot-0007-Add-filtering-script-to-openpower-distribution.patch
new file mode 100644
index 0000000..682caeb
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0007-Add-filtering-script-to-openpower-distribution.patch
@@ -0,0 +1,25 @@
+From fbcbbde51e42bf8ed34999685b9db3a1ec16762c Mon Sep 17 00:00:00 2001
+From: Prachi Gupta <pragupta@us.ibm.com>
+Date: Tue, 6 Dec 2016 17:38:31 -0600
+Subject: [PATCH 3/4] Add filtering script to openpower distribution
+
+Change-Id: I3cab96608b05641c0ce10d1c6b8b3011ead9f1fa
+---
+ src/build/mkrules/dist.targets.mk | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
+index 2ec1ee6..5bae3dd 100644
+--- a/src/build/mkrules/dist.targets.mk
++++ b/src/build/mkrules/dist.targets.mk
+@@ -79,6 +79,7 @@ COPY_FILES = \
+     src/build/buildpnor/PnorUtils.pm:openpower \
+     src/usr/targeting/common/processMrw.pl:openpower \
+     src/usr/targeting/common/Targets.pm:openpower \
++    src/usr/targeting/common/filter_out_unwanted_attributes.pl:openpower \
+     src/usr/targeting/common/xmltohb/mergexml.sh:openpower \
+     src/usr/targeting/common/xmltohb/attribute_types.xml:openpower \
+     src/usr/targeting/common/xmltohb/attribute_types_hb.xml:openpower \
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch b/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch
new file mode 100644
index 0000000..29d2444
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch
@@ -0,0 +1,122 @@
+From 85b90b1ceae68b9f473a12b652bdaf2c8d78a007 Mon Sep 17 00:00:00 2001
+From: Prachi Gupta <pragupta@us.ibm.com>
+Date: Wed, 7 Dec 2016 10:44:25 -0600
+Subject: [PATCH 4/4] Add Hacked values for VPD attributes
+
+Change-Id: Ida797dba646f0110637521daf27dfeea0f730959
+---
+ src/usr/targeting/common/Targets.pm    | 14 ++++++++
+ src/usr/targeting/common/processMrw.pl | 61 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 75 insertions(+)
+
+diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
+index 42780dd..25fe0cb 100644
+--- a/src/usr/targeting/common/Targets.pm
++++ b/src/usr/targeting/common/Targets.pm
+@@ -1655,6 +1655,20 @@ sub getAttributeField
+ }
+ 
+ ## returns an attribute from a bus
++sub setBusAttribute
++{
++    my $self       = shift;
++    my $target     = shift;
++    my $busnum     = shift;
++    my $attr       = shift;
++    my $value      = shift;
++    my $target_ptr = $self->getTarget($target);
++    $target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}->{$attr}->{default}
++        = $value;
++    $self->log($target, "Setting Attribute (BusNum=$busnum): $attr=$value");
++}
++
++## returns an attribute from a bus
+ sub getBusAttribute
+ {
+     my $self       = shift;
+diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
+index 312582d..bfe33a4 100644
+--- a/src/usr/targeting/common/processMrw.pl
++++ b/src/usr/targeting/common/processMrw.pl
+@@ -538,6 +538,7 @@ sub processProcessor
+     $targetObj->setAttributeField($target, "SCOM_SWITCHES", "useXscom", "0");
+ 
+     processMembufVpdAssociation($targetObj,$target);
++    processNodeVpd($targetObj, $target);
+     setupBars($targetObj,$target);
+ }
+ 
+@@ -1110,10 +1111,70 @@ sub processOcc
+     $targetObj->setAttribute($target,"OCC_MASTER_CAPABLE",$master_capable);
+ }
+ 
++#@FIXME: This is just a hack to get the witherspoon xml to compile
++sub processNodeVpd
++{
++    my $targetObj = shift;
++    my $target    = shift; #proc target
++    my $name      = "EEPROM_VPD_PRIMARY_INFO";
++    foreach my $child (@{$targetObj->getTargetChildren($target)})
++    {
++        if ($targetObj->getType($child) eq "MCBIST")
++        {
++            foreach my $mcs (@{$targetObj->getTargetChildren($child)})
++            {
++                if ($targetObj->getType($mcs) eq "MCS")
++                {
++                    my $path            = "physical:sys-0/node-0";
++                    my $port            = 0x02;
++                    my $addr            = 0xE0;
++                    my $engine          = 1;
++                    my $offset          = 0x01;
++                    my $mem             = 0x01;
++                    my $count           = 2;
++                    my $page            = 0x50;
++                    my $cycle           = 0x05;
++                    $targetObj->setAttributeField($mcs, $name, "i2cMasterPath", $path);
++                    $targetObj->setAttributeField($mcs, $name, "port", $port);
++                    $targetObj->setAttributeField($mcs, $name, "devAddr", $addr);
++                    $targetObj->setAttributeField($mcs, $name, "engine", $engine);
++                    $targetObj->setAttributeField($mcs, $name, "byteAddrOffset", $offset);
++                    $targetObj->setAttributeField($mcs, $name, "maxMemorySizeKB", $mem);
++                    $targetObj->setAttributeField($mcs, $name, "chipCount", $count);
++                    $targetObj->setAttributeField($mcs, $name, "writePageSize", $page);
++                    $targetObj->setAttributeField($mcs, $name, "writeCycleTime", $cycle);
++                }
++
++            }
++        }
++    }
++
++}
++
+ sub processMembufVpdAssociation
+ {
+     my $targetObj = shift;
+     my $target    = shift;
++    my $dimms=$targetObj->findConnections($target,"I2C","SPD");
++    if ($dimms ne "") {
++        foreach my $dimm (@{$dimms->{CONN}}) {
++            my $dimm_target = $targetObj->getTargetParent($dimm->{DEST_PARENT});
++
++            #@FIXME: hacked value for now
++            my $addr = $targetObj->setBusAttribute($dimm->{SOURCE},
++                    $dimm->{BUS_NUM}, "I2C_ADDRESS", 0xE0);
++
++            setEepromAttributes($targetObj,
++                       "EEPROM_VPD_PRIMARY_INFO",$dimm_target,
++                       $dimm);
++            my $i2cMasterPath = $targetObj->getAttributeField($dimm_target,
++                "EEPROM_VPD_PRIMARY_INFO", "i2cMasterPath");
++
++            $targetObj->setAttributeField($dimm_target,"TEMP_SENSOR_I2C_CONFIG",
++                "i2cMasterPath", $i2cMasterPath);
++        }
++    }
++
+     my $vpds=$targetObj->findConnections($target,"I2C","VPD");
+     if ($vpds ne "" ) {
+         my $vpd = $vpds->{CONN}->[0];
+-- 
+1.8.2.2
+
diff --git a/openpower/package/occ/occ.mk b/openpower/package/occ/occ.mk
index 61d0d27..d10c0f5 100644
--- a/openpower/package/occ/occ.mk
+++ b/openpower/package/occ/occ.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-OCC_VERSION_BRANCH_MASTER_P8 ?= bb092e95266788920751389f7df189425f1ec1d6
-OCC_VERSION_BRANCH_MASTER ?= 64fcfd7e3f3899e761d21eda204b53114d494aaa
+OCC_VERSION_BRANCH_MASTER_P8 ?= d7efe30d9bee683578c31171af28baf8251ced4e
+OCC_VERSION_BRANCH_MASTER ?= a4e04571d60b58c0c778c870bc215bf467085fb6
 
 OCC_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_VERSION_BRANCH_MASTER),$(OCC_VERSION_BRANCH_MASTER_P8))
 OCC_SITE ?= $(call github,open-power,occ,$(OCC_VERSION))
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index 922ee4d..b39e3b8 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -7,6 +7,7 @@
         select BR2_PACKAGE_OPENPOWER_FFS
         select BR2_PACKAGE_OCC
         select BR2_PACKAGE_CAPP_UCODE
+        select BR2_PACKAGE_WITHERSPOON_XML if (BR2_OPENPOWER_XML_PACKAGE = "witherspoon-xml")
         select BR2_PACKAGE_BARRELEYE_XML if (BR2_OPENPOWER_XML_PACKAGE = "barreleye-xml")
         select BR2_PACKAGE_FIRESTONE_XML if (BR2_OPENPOWER_XML_PACKAGE = "firestone-xml")
         select BR2_PACKAGE_GARRISON_XML if (BR2_OPENPOWER_XML_PACKAGE = "garrison-xml")
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index 83eb3e5..ef72704 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 ?= 77ffb0442330c079bac911a23b379977a15e65de
+OPENPOWER_PNOR_VERSION ?= bf4b7288c38e772f5d71207dc2ed44edd2900571
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
@@ -28,6 +28,12 @@
 OPENPOWER_PNOR_DEPENDENCIES += host-xz
 endif
 
+ifeq ($(BR2_OPENPOWER_POWER9),y)
+    OPENPOWER_RELEASE=p9
+else
+    OPENPOWER_RELEASE=p8
+endif
+
 
 OPENPOWER_PNOR_INSTALL_IMAGES = YES
 OPENPOWER_PNOR_INSTALL_TARGET = NO
@@ -45,6 +51,7 @@
         mkdir -p $(OPENPOWER_PNOR_SCRATCH_DIR)
 
         $(TARGET_MAKE_ENV) $(@D)/update_image.pl \
+            -release  $(OPENPOWER_RELEASE) \
             -op_target_dir $(HOSTBOOT_IMAGE_DIR) \
             -hb_image_dir $(HOSTBOOT_IMAGE_DIR) \
             -scratch_dir $(OPENPOWER_PNOR_SCRATCH_DIR) \
@@ -63,7 +70,8 @@
 
         mkdir -p $(STAGING_DIR)/pnor/
         $(TARGET_MAKE_ENV) $(@D)/create_pnor_image.pl \
-            -xml_layout_file $(@D)/$(BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME) \
+            -release $(OPENPOWER_RELEASE) \
+            -xml_layout_file $(@D)/"$(OPENPOWER_RELEASE)"Layouts/$(BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME) \
             -pnor_filename $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME) \
             -hb_image_dir $(HOSTBOOT_IMAGE_DIR) \
             -scratch_dir $(OPENPOWER_PNOR_SCRATCH_DIR) \
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
index 16b7e01..2f13eb5 100644
--- a/openpower/package/petitboot/petitboot.mk
+++ b/openpower/package/petitboot/petitboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PETITBOOT_VERSION = v1.3.1
+PETITBOOT_VERSION = v1.3.2
 PETITBOOT_SITE ?= $(call github,open-power,petitboot,$(PETITBOOT_VERSION))
 PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex lvm2
 PETITBOOT_LICENSE = GPLv2
@@ -44,7 +44,7 @@
 	$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/petitboot/boot.d
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
-	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb_updates \
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
diff --git a/openpower/package/ppe42-gcc/ppe42-gcc.mk b/openpower/package/ppe42-gcc/ppe42-gcc.mk
index cf8ac73..2ebdf5b 100644
--- a/openpower/package/ppe42-gcc/ppe42-gcc.mk
+++ b/openpower/package/ppe42-gcc/ppe42-gcc.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PPE42_GCC_VERSION ?= 246277a8513f622a65f97cb59e3079fc8834a913
+PPE42_GCC_VERSION ?= d8a1bac8634033a3edd4e9a22455f97318718f43
 PPE42_GCC_SITE ?= $(call github,open-power,ppe42-gcc,$(PPE42_GCC_VERSION))
 PPE42_GCC_LICENSE = GPLv3+
 
@@ -17,14 +17,14 @@
         cd $(@D) && \
         ./configure --prefix=$(PPE42_GCC_DIR) \
                     --exec-prefix=$(PPE42_GCC_BIN) \
-					--target=powerpc-eabi \
-					--without-headers \
-					--with-newlib \
-					--with-gnu-as \
-					--with-gnu-ld \
-					--with-gmp=$(HOST_DIR)/usr \
-					--with-mpfr=$(HOST_DIR)/usr \
-					&& \
+                    --target=powerpc-eabi \
+                    --without-headers \
+                    --with-newlib \
+                    --with-gnu-as \
+                    --with-gnu-ld \
+                    --with-gmp=$(HOST_DIR)/usr \
+                    --with-mpfr=$(HOST_DIR)/usr \
+                    && \
         make configure-host && \
         make all-gcc
 endef
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index f767cd1..9a9d60e 100644
--- a/openpower/package/skiboot/Config.in
+++ b/openpower/package/skiboot/Config.in
@@ -31,7 +31,7 @@
 
 config BR2_SKIBOOT_VERSION
 	string
-	default "skiboot-5.3.7" if BR2_SKIBOOT_LATEST_VERSION
+	default "skiboot-5.4.2" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/package/witherspoon-xml/witherspoon.mk b/openpower/package/witherspoon-xml/witherspoon.mk
index 1d53545..2975378 100644
--- a/openpower/package/witherspoon-xml/witherspoon.mk
+++ b/openpower/package/witherspoon-xml/witherspoon.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-WITHERSPOON_XML_VERSION ?= 166b3135edbc7299aaa991a42f6eb0fc40d784e6
+WITHERSPOON_XML_VERSION ?=5cfb191919a40752001e5918fb84dd64a783a00a
 WITHERSPOON_XML_SITE ?= $(call github,open-power,witherspoon-xml,$(WITHERSPOON_XML_VERSION))
 
 WITHERSPOON_XML_LICENSE = Apache-2.0
@@ -32,19 +32,27 @@
         bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
 
         # generate the system mrw xml
-        #perl -I $(MRW_HB_TOOLS) \
+        perl -I $(MRW_HB_TOOLS) \
         $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/witherspoon.xml
-        
-        # copy local simics_NIMBUS xml until processMrw changes are in
-        # RTC: 143114
-        cp $(MRW_HB_TOOLS)/simics_NIMBUS.system.xml $(MRW_SCRATCH)/$(BR2_WITHERSPOON_SYSTEM_XML_FILENAME)
+
+        chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
+
+       $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
+            --mrw-xml $(MRW_SCRATCH)/WITHERSPOON_hb.mrw.xml
+
+       cp  $(MRW_SCRATCH)/WITHERSPOON_hb.mrw.xml.updated  $(MRW_SCRATCH)/WITHERSPOON_hb.mrw.xml
 
         # merge in any system specific attributes, hostboot attributes
         $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_WITHERSPOON_SYSTEM_XML_FILENAME) \
             $(MRW_HB_TOOLS)/attribute_types.xml \
             $(MRW_HB_TOOLS)/attribute_types_hb.xml \
+            $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml \
             $(MRW_HB_TOOLS)/target_types_merged.xml \
             $(MRW_HB_TOOLS)/target_types_hb.xml \
+            $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
             $(MRW_SCRATCH)/$(BR2_WITHERSPOON_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
 
         # creating the targeting binary
diff --git a/openpower/scripts/firenze-firmware-whitelist b/openpower/scripts/firmware-whitelist
similarity index 76%
rename from openpower/scripts/firenze-firmware-whitelist
rename to openpower/scripts/firmware-whitelist
index e8fc660..e4e4bd2 100755
--- a/openpower/scripts/firenze-firmware-whitelist
+++ b/openpower/scripts/firmware-whitelist
@@ -2,13 +2,14 @@
 # Scan the /lib/firmware directory of the target and delete any firmware
 # binaries that are not in our whitelist
 
-# A whitelist of entire directories or specific binary files
-whitelist=(     'acenic'
-                'bnx2'
-                'bnx2x'
-                'cxgb4'
-                'cxgb3'
-                'e100'
+# A whitelist of entire directories or specific binary files. The trailing
+# slash is required.
+whitelist=(     'acenic/'
+                'bnx2/'
+                'bnx2x/bnx2x-e2-7.12.30.0.fw'
+                'cxgb4/'
+                'cxgb3/'
+                'e100/'
                 'radeon/CEDAR_rlc.bin'
                 'radeon/CEDAR_pfp.bin'
                 'radeon/CEDAR_smc.bin'