diff --git a/.gitmodules b/.gitmodules
index 4f0f85e..e8dfd5e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
 [submodule "buildroot"]
 	path = buildroot
-	branch = 2016.08-op-build
+	branch = 2016.11-op-build
 	url = https://github.com/open-power/buildroot
diff --git a/buildroot b/buildroot
index 211bd05..6b9fd80 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit 211bd050aa32bfda12da1e9495234e01d6862b3c
+Subproject commit 6b9fd8036d7293b785f5b315ed1fda2c04d26719
diff --git a/openpower/Config.in b/openpower/Config.in
index 19a2859..b6decad 100644
--- a/openpower/Config.in
+++ b/openpower/Config.in
@@ -1,15 +1,15 @@
 menu "OpenPower"
 
-source "$BR2_EXTERNAL/platform/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/platform/Config.in"
 
 menu "OpenPower Packages"
 if BR2_OPENPOWER_PLATFORM
-source "$BR2_EXTERNAL/package/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/Config.in"
 endif
 endmenu
 
 menu "Custom Packages"
-source "$BR2_EXTERNAL/custom/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/custom/Config.in"
 endmenu
 
 endmenu
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index fa1b81b..93a36c8 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -16,11 +17,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/busybox.fragment b/openpower/configs/busybox.fragment
new file mode 100644
index 0000000..1b13459
--- /dev/null
+++ b/openpower/configs/busybox.fragment
@@ -0,0 +1 @@
+CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 8c19b7b..e372c5f 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -15,11 +16,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_RADEON=y
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 1e42dac..fdfc0db 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -16,11 +17,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index d545fed..758b1fd 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -16,11 +17,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index f005265..66d3adb 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -16,11 +17,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/hostboot/zaius.config b/openpower/configs/hostboot/zaius.config
new file mode 100755
index 0000000..1ed4615
--- /dev/null
+++ b/openpower/configs/hostboot/zaius.config
@@ -0,0 +1,67 @@
+# The Serial Flash Controller is the AST2500 BMC.
+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.
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
+set MVPD_READ_FROM_PNOR
+set MVPD_WRITE_TO_PNOR
+set DJVPD_READ_FROM_HW
+set DJVPD_WRITE_TO_HW
+set DJVPD_READ_FROM_PNOR
+set DJVPD_WRITE_TO_PNOR
+unset MEMVPD_READ_FROM_HW
+unset MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_PNOR
+set MEMVPD_WRITE_TO_PNOR
+unset PVPD_READ_FROM_HW
+unset PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+unset PALMETTO_VDDR
+
+# Disable SBE updates
+unset SBE_UPDATE_INDEPENDENT
+unset SBE_UPDATE_SEQUENTIAL
+set NO_SBE_UPDATES
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2500
+
+set DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+unset HTMGT
+unset START_OCC_DURING_BOOT
+
+#PNOR flags
+unset PNOR_TWO_SIDE_SUPPORT
+
+unset BMC_BT_LPC_IPMI
+
+# Disable Checktop Analysis
+unset ENABLE_CHECKSTOP_ANALYSIS
+unset IPLTIME_CHECKSTOP_ANALYSIS
+
+# Hostboot will not detect hardware changes
+unset HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+set CONSOLE_OUTPUT_TRACE
+
+unset CONFIG_SECUREBOOT
+unset CONFIG_TPMDD
+unset CONFIG_TPM_NUVOTON
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index afee3a2..114eb00 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -1,5 +1,4 @@
 CONFIG_PPC64=y
-CONFIG_POWER8_CPU=y
 CONFIG_ALTIVEC=y
 CONFIG_VSX=y
 CONFIG_SMP=y
@@ -37,6 +36,7 @@
 # CONFIG_PPC_PSERIES is not set
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_CPU_IDLE=y
+CONFIG_GEN_RTC=y
 CONFIG_HZ_100=y
 CONFIG_KEXEC=y
 CONFIG_IRQ_ALL_CPUS=y
@@ -139,8 +139,9 @@
 CONFIG_E1000E=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
-CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
 CONFIG_MYRI10GE=m
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
@@ -156,7 +157,6 @@
 CONFIG_IPMI_DEVICE_INTERFACE=y
 CONFIG_IPMI_POWERNV=y
 CONFIG_HW_RANDOM=y
-CONFIG_GEN_RTC=y
 CONFIG_RAW_DRIVER=y
 CONFIG_MAX_RAW_DEVS=1024
 CONFIG_TCG_TIS_I2C_NUVOTON=y
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index 39905a5..c2dd7e2 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -14,11 +15,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
index e1d1774..a9d89b9 100644
--- a/openpower/configs/openpower_p9_mambo_defconfig
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -14,10 +15,11 @@
 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.9"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 131e97d..812f962 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -1,7 +1,8 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_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"
@@ -15,11 +16,12 @@
 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.39"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index 0935a21..c8f248c 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -1,8 +1,10 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_BINUTILS_VERSION_2_26_X=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_4_9_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -15,11 +17,12 @@
 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.9"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.4"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
@@ -42,7 +45,7 @@
 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"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
new file mode 100644
index 0000000..8aae3a0
--- /dev/null
+++ b/openpower/configs/zaius_defconfig
@@ -0,0 +1,64 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_4_9_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+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/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10-rc4"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+BR2_HOSTBOOT_CONFIG_FILE="zaius.config"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
+BR2_OPENPOWER_CONFIG_NAME="zaius"
+BR2_OPENPOWER_XML_PACKAGE="zaius-xml"
+BR2_OPENPOWER_PNOR_FILENAME="zaius.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="ZAIUS_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="ZAIUS_HB.targeting.bin.ecc"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+BR2_SKIBOOT_CUSTOM_VERSION=y
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="ca4a1ee53c0081020b0330acc6f4bcf446bccbbd"
+BR2_PACKAGE_LOADKEYS=y
+BR2_ZAIUS_SYSTEM_XML_FILENAME="ZAIUS_hb.system.xml"
+BR2_ZAIUS_MRW_XML_FILENAME="ZAIUS_hb.mrw.xml"
+BR2_ZAIUS_BIOS_XML_FILENAME="ZAIUS_bios.xml"
diff --git a/openpower/external.desc b/openpower/external.desc
new file mode 100644
index 0000000..2088d4b
--- /dev/null
+++ b/openpower/external.desc
@@ -0,0 +1,2 @@
+name: OP_BUILD
+desc: The OpenPower Firmware build environment
diff --git a/openpower/external.mk b/openpower/external.mk
index 8d7b578..e8f46f1 100644
--- a/openpower/external.mk
+++ b/openpower/external.mk
@@ -1,6 +1,6 @@
-include $(sort $(wildcard $(BR2_EXTERNAL)/package/*.mk))
-include $(sort $(wildcard $(BR2_EXTERNAL)/package/*/*.mk))
+include $(sort $(wildcard $(BR2_EXTERNAL_OP_BUILD_PATH)/package/*.mk))
+include $(sort $(wildcard $(BR2_EXTERNAL_OP_BUILD_PATH)/package/*/*.mk))
 
 # Utilize user-defined custom directory.
-include $(sort $(wildcard $(BR2_EXTERNAL)/custom/*.mk))
-BR2_GLOBAL_PATCH_DIR += "$(BR2_EXTERNAL)/custom/patches"
+include $(sort $(wildcard $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/*.mk))
+BR2_GLOBAL_PATCH_DIR += "$(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches"
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 3f528e9..bf42988 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 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 01/13] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 1/4] 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 cf147ccac7d3..af1f7f01bc7a 100644
+index 954abfd5014d..dc8c490f6dd4 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -449,7 +449,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -471,7 +471,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
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 1284572..c1a82ba 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 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 02/13] drivers/drm/ast: Switch SCU to VGA output on POST
+Subject: [PATCH 2/4] 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
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
deleted file mode 100644
index 083bf93..0000000
--- a/openpower/linux/0003-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
+++ /dev/null
@@ -1,299 +0,0 @@
-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 03/13] net/mlx4_core: Set UAR page size to 4KB regardless of
- system page size
-
-problem description:
-
-The current code sets UAR page size equal to system page size.
-The ConnectX-3 and ConnectX-3 Pro HWs require minimum 128 UAR pages.
-The mlx4 kernel drivers are not loaded if there is less than 128 UAR pages.
-
-solution:
-
-Always set UAR page to 4KB. This allows more UAR pages if the OS
-has PAGE_SIZE larger than 4KB. For example, PowerPC kernel use 64KB
-system page size, with 4MB uar region, there are 4MB/2/64KB = 32
-uars (half for uar, half for blueflame). This does not meet minimum 128
-UAR pages requirement. With 4KB UAR page, there are 4MB/2/4KB = 512 uars
-which meet the minimum requirement.
-
-Note that only codes in mlx4_core that deal with firmware know that uar
-page size is 4KB. Codes that deal with usr page in cq and qp context
-(mlx4_ib, mlx4_en and part of mlx4_core) still have the same assumption
-that uar page size equals to system page size.
-
-Note that with this implementation, on 64KB system page size kernel, there
-are 16 uars per system page but only one uars is used. The other 15
-uars are ignored because of the above assumption.
-
-Regarding SR-IOV, mlx4_core in hypervisor will set the uar page size
-to 4KB and mlx4_core code in virtual OS will obtain the uar page size from
-firmware.
-
-Regarding backward compatibility in SR-IOV, if hypervisor has this new code,
-the virtual OS must be updated. If hypervisor has old code, and the virtual
-OS has this new code, the new code will be backward compatible with the
-old code. If the uar size is big enough, this new code in VF continues to
-work with 64 KB uar page size (on PowerPc kernel). If the uar size does not
-meet 128 uars requirement, this new code not loaded in VF and print the same
-error message as the old code in Hypervisor.
-
-Signed-off-by: Huy Nguyen <huyn@mellanox.com>
-Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-(cherry picked from commit 85743f1eb34548ba4b056d2f184a3d107a3b8917)
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/infiniband/hw/mlx4/qp.c                   |  7 ++-
- drivers/net/ethernet/mellanox/mlx4/cq.c           |  4 +-
- drivers/net/ethernet/mellanox/mlx4/en_resources.c |  3 +-
- drivers/net/ethernet/mellanox/mlx4/en_tx.c        |  4 +-
- drivers/net/ethernet/mellanox/mlx4/eq.c           |  7 +--
- drivers/net/ethernet/mellanox/mlx4/main.c         | 56 ++++++++++++++++++-----
- drivers/net/ethernet/mellanox/mlx4/pd.c           | 12 +++--
- include/linux/mlx4/device.h                       | 13 ++++++
- 8 files changed, 84 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
-index f350f2d61c15..d1a9858566eb 100644
---- a/drivers/infiniband/hw/mlx4/qp.c
-+++ b/drivers/infiniband/hw/mlx4/qp.c
-@@ -1593,9 +1593,12 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
- 	}
- 
- 	if (qp->ibqp.uobject)
--		context->usr_page = cpu_to_be32(to_mucontext(ibqp->uobject->context)->uar.index);
-+		context->usr_page = cpu_to_be32(
-+			mlx4_to_hw_uar_index(dev->dev,
-+					     to_mucontext(ibqp->uobject->context)->uar.index));
- 	else
--		context->usr_page = cpu_to_be32(dev->priv_uar.index);
-+		context->usr_page = cpu_to_be32(
-+			mlx4_to_hw_uar_index(dev->dev, dev->priv_uar.index));
- 
- 	if (attr_mask & IB_QP_DEST_QPN)
- 		context->remote_qpn = cpu_to_be32(attr->dest_qp_num);
-diff --git a/drivers/net/ethernet/mellanox/mlx4/cq.c b/drivers/net/ethernet/mellanox/mlx4/cq.c
-index 3348e646db70..a849da92f857 100644
---- a/drivers/net/ethernet/mellanox/mlx4/cq.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/cq.c
-@@ -318,7 +318,9 @@ int mlx4_cq_alloc(struct mlx4_dev *dev, int nent,
- 	if (timestamp_en)
- 		cq_context->flags  |= cpu_to_be32(1 << 19);
- 
--	cq_context->logsize_usrpage = cpu_to_be32((ilog2(nent) << 24) | uar->index);
-+	cq_context->logsize_usrpage =
-+		cpu_to_be32((ilog2(nent) << 24) |
-+			    mlx4_to_hw_uar_index(dev, uar->index));
- 	cq_context->comp_eqn	    = priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(vector)].eqn;
- 	cq_context->log_page_size   = mtt->page_shift - MLX4_ICM_PAGE_SHIFT;
- 
-diff --git a/drivers/net/ethernet/mellanox/mlx4/en_resources.c b/drivers/net/ethernet/mellanox/mlx4/en_resources.c
-index 12aab5a659d3..02e925d6f734 100644
---- a/drivers/net/ethernet/mellanox/mlx4/en_resources.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/en_resources.c
-@@ -58,7 +58,8 @@ void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride,
- 	} else {
- 		context->sq_size_stride = ilog2(TXBB_SIZE) - 4;
- 	}
--	context->usr_page = cpu_to_be32(mdev->priv_uar.index);
-+	context->usr_page = cpu_to_be32(mlx4_to_hw_uar_index(mdev->dev,
-+					mdev->priv_uar.index));
- 	context->local_qpn = cpu_to_be32(qpn);
- 	context->pri_path.ackto = 1 & 0x07;
- 	context->pri_path.sched_queue = 0x83 | (priv->port - 1) << 6;
-diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
-index e4019a803a9c..0debb611da8b 100644
---- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
-@@ -213,7 +213,9 @@ int mlx4_en_activate_tx_ring(struct mlx4_en_priv *priv,
- 	mlx4_en_fill_qp_context(priv, ring->size, ring->stride, 1, 0, ring->qpn,
- 				ring->cqn, user_prio, &ring->context);
- 	if (ring->bf_alloced)
--		ring->context.usr_page = cpu_to_be32(ring->bf.uar->index);
-+		ring->context.usr_page =
-+			cpu_to_be32(mlx4_to_hw_uar_index(mdev->dev,
-+							 ring->bf.uar->index));
- 
- 	err = mlx4_qp_to_ready(mdev->dev, &ring->wqres.mtt, &ring->context,
- 			       &ring->qp, &ring->qp_state);
-diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c
-index 603d1c3d3b2e..ad6240e45441 100644
---- a/drivers/net/ethernet/mellanox/mlx4/eq.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/eq.c
-@@ -924,9 +924,10 @@ static void __iomem *mlx4_get_eq_uar(struct mlx4_dev *dev, struct mlx4_eq *eq)
- 
- 	if (!priv->eq_table.uar_map[index]) {
- 		priv->eq_table.uar_map[index] =
--			ioremap(pci_resource_start(dev->persist->pdev, 2) +
--				((eq->eqn / 4) << PAGE_SHIFT),
--				PAGE_SIZE);
-+			ioremap(
-+				pci_resource_start(dev->persist->pdev, 2) +
-+				((eq->eqn / 4) << (dev->uar_page_shift)),
-+				(1 << (dev->uar_page_shift)));
- 		if (!priv->eq_table.uar_map[index]) {
- 			mlx4_err(dev, "Couldn't map EQ doorbell for EQN 0x%06x\n",
- 				 eq->eqn);
-diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
-index 31c491e02e69..225551150442 100644
---- a/drivers/net/ethernet/mellanox/mlx4/main.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
-@@ -168,6 +168,20 @@ struct mlx4_port_config {
- 
- static atomic_t pf_loading = ATOMIC_INIT(0);
- 
-+static inline void mlx4_set_num_reserved_uars(struct mlx4_dev *dev,
-+					      struct mlx4_dev_cap *dev_cap)
-+{
-+	/* The reserved_uars is calculated by system page size unit.
-+	 * Therefore, adjustment is added when the uar page size is less
-+	 * than the system page size
-+	 */
-+	dev->caps.reserved_uars	=
-+		max_t(int,
-+		      mlx4_get_num_reserved_uar(dev),
-+		      dev_cap->reserved_uars /
-+			(1 << (PAGE_SHIFT - dev->uar_page_shift)));
-+}
-+
- int mlx4_check_port_params(struct mlx4_dev *dev,
- 			   enum mlx4_port_type *port_type)
- {
-@@ -386,8 +400,6 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
- 	dev->caps.reserved_mtts      = dev_cap->reserved_mtts;
- 	dev->caps.reserved_mrws	     = dev_cap->reserved_mrws;
- 
--	/* The first 128 UARs are used for EQ doorbells */
--	dev->caps.reserved_uars	     = max_t(int, 128, dev_cap->reserved_uars);
- 	dev->caps.reserved_pds	     = dev_cap->reserved_pds;
- 	dev->caps.reserved_xrcds     = (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) ?
- 					dev_cap->reserved_xrcds : 0;
-@@ -405,6 +417,15 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
- 	dev->caps.max_gso_sz	     = dev_cap->max_gso_sz;
- 	dev->caps.max_rss_tbl_sz     = dev_cap->max_rss_tbl_sz;
- 
-+	/* Save uar page shift */
-+	if (!mlx4_is_slave(dev)) {
-+		/* Virtual PCI function needs to determine UAR page size from
-+		 * firmware. Only master PCI function can set the uar page size
-+		 */
-+		dev->uar_page_shift = DEFAULT_UAR_PAGE_SHIFT;
-+		mlx4_set_num_reserved_uars(dev, dev_cap);
-+	}
-+
- 	if (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_PHV_EN) {
- 		struct mlx4_init_hca_param hca_param;
- 
-@@ -815,16 +836,25 @@ static int mlx4_slave_cap(struct mlx4_dev *dev)
- 		return -ENODEV;
- 	}
- 
--	/* slave gets uar page size from QUERY_HCA fw command */
--	dev->caps.uar_page_size = 1 << (hca_param.uar_page_sz + 12);
-+	/* Set uar_page_shift for VF */
-+	dev->uar_page_shift = hca_param.uar_page_sz + 12;
- 
--	/* TODO: relax this assumption */
--	if (dev->caps.uar_page_size != PAGE_SIZE) {
--		mlx4_err(dev, "UAR size:%d != kernel PAGE_SIZE of %ld\n",
--			 dev->caps.uar_page_size, PAGE_SIZE);
--		return -ENODEV;
-+	/* Make sure the master uar page size is valid */
-+	if (dev->uar_page_shift > PAGE_SHIFT) {
-+		mlx4_err(dev,
-+			 "Invalid configuration: uar page size is larger than system page size\n");
-+		return  -ENODEV;
- 	}
- 
-+	/* Set reserved_uars based on the uar_page_shift */
-+	mlx4_set_num_reserved_uars(dev, &dev_cap);
-+
-+	/* Although uar page size in FW differs from system page size,
-+	 * upper software layers (mlx4_ib, mlx4_en and part of mlx4_core)
-+	 * still works with assumption that uar page size == system page size
-+	 */
-+	dev->caps.uar_page_size = PAGE_SIZE;
-+
- 	memset(&func_cap, 0, sizeof(func_cap));
- 	err = mlx4_QUERY_FUNC_CAP(dev, 0, &func_cap);
- 	if (err) {
-@@ -2092,8 +2122,12 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
- 
- 		dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1;
- 
--		init_hca.log_uar_sz = ilog2(dev->caps.num_uars);
--		init_hca.uar_page_sz = PAGE_SHIFT - 12;
-+		/* Always set UAR page size 4KB, set log_uar_sz accordingly */
-+		init_hca.log_uar_sz = ilog2(dev->caps.num_uars) +
-+				      PAGE_SHIFT -
-+				      DEFAULT_UAR_PAGE_SHIFT;
-+		init_hca.uar_page_sz = DEFAULT_UAR_PAGE_SHIFT - 12;
-+
- 		init_hca.mw_enabled = 0;
- 		if (dev->caps.flags & MLX4_DEV_CAP_FLAG_MEM_WINDOW ||
- 		    dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN)
-diff --git a/drivers/net/ethernet/mellanox/mlx4/pd.c b/drivers/net/ethernet/mellanox/mlx4/pd.c
-index 609c59dc854e..b3cc3ab63799 100644
---- a/drivers/net/ethernet/mellanox/mlx4/pd.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/pd.c
-@@ -269,9 +269,15 @@ EXPORT_SYMBOL_GPL(mlx4_bf_free);
- 
- int mlx4_init_uar_table(struct mlx4_dev *dev)
- {
--	if (dev->caps.num_uars <= 128) {
--		mlx4_err(dev, "Only %d UAR pages (need more than 128)\n",
--			 dev->caps.num_uars);
-+	int num_reserved_uar = mlx4_get_num_reserved_uar(dev);
-+
-+	mlx4_dbg(dev, "uar_page_shift = %d", dev->uar_page_shift);
-+	mlx4_dbg(dev, "Effective reserved_uars=%d", dev->caps.reserved_uars);
-+
-+	if (dev->caps.num_uars <= num_reserved_uar) {
-+		mlx4_err(
-+			dev, "Only %d UAR pages (need more than %d)\n",
-+			dev->caps.num_uars, num_reserved_uar);
- 		mlx4_err(dev, "Increase firmware log2_uar_bar_megabytes?\n");
- 		return -ENODEV;
- 	}
-diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
-index d3133be12d92..8bab38f8872a 100644
---- a/include/linux/mlx4/device.h
-+++ b/include/linux/mlx4/device.h
-@@ -44,6 +44,8 @@
- 
- #include <linux/timecounter.h>
- 
-+#define DEFAULT_UAR_PAGE_SHIFT  12
-+
- #define MAX_MSIX_P_PORT		17
- #define MAX_MSIX		64
- #define MIN_MSIX_P_PORT		5
-@@ -853,6 +855,7 @@ struct mlx4_dev {
- 	u64			regid_promisc_array[MLX4_MAX_PORTS + 1];
- 	u64			regid_allmulti_array[MLX4_MAX_PORTS + 1];
- 	struct mlx4_vf_dev     *dev_vfs;
-+	u8  uar_page_shift;
- };
- 
- struct mlx4_clock_params {
-@@ -1527,4 +1530,14 @@ int mlx4_ACCESS_PTYS_REG(struct mlx4_dev *dev,
- int mlx4_get_internal_clock_params(struct mlx4_dev *dev,
- 				   struct mlx4_clock_params *params);
- 
-+static inline int mlx4_to_hw_uar_index(struct mlx4_dev *dev, int index)
-+{
-+	return (index << (PAGE_SHIFT - dev->uar_page_shift));
-+}
-+
-+static inline int mlx4_get_num_reserved_uar(struct mlx4_dev *dev)
-+{
-+	/* The first 128 UARs are used for EQ doorbells */
-+	return (128 >> (PAGE_SHIFT - dev->uar_page_shift));
-+}
- #endif /* MLX4_DEVICE_H */
--- 
-2.11.0
-
diff --git a/openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0003-xhci-do-not-halt-the-secondary-HCD.patch
similarity index 87%
rename from openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch
rename to openpower/linux/0003-xhci-do-not-halt-the-secondary-HCD.patch
index 38a24b7..ce3a4c0 100644
--- a/openpower/linux/0004-xhci-do-not-halt-the-secondary-HCD.patch
+++ b/openpower/linux/0003-xhci-do-not-halt-the-secondary-HCD.patch
@@ -1,7 +1,7 @@
 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 04/13] xhci: do not halt the secondary HCD
+Subject: [PATCH 3/4] 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
@@ -14,10 +14,10 @@
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index adc169d2fd76..ec92a843325b 100644
+index ad0624386950..0c2272558ded 100644
 --- a/drivers/usb/host/xhci.c
 +++ b/drivers/usb/host/xhci.c
-@@ -682,6 +682,21 @@ void xhci_stop(struct usb_hcd *hcd)
+@@ -683,6 +683,21 @@ void xhci_stop(struct usb_hcd *hcd)
  
  	mutex_lock(&xhci->mutex);
  
@@ -39,7 +39,7 @@
  	if (!(xhci->xhc_state & XHCI_STATE_HALTED)) {
  		spin_lock_irq(&xhci->lock);
  
-@@ -693,11 +708,6 @@ void xhci_stop(struct usb_hcd *hcd)
+@@ -694,11 +709,6 @@ void xhci_stop(struct usb_hcd *hcd)
  		spin_unlock_irq(&xhci->lock);
  	}
  
diff --git a/openpower/linux/0004-Release-4.9.4-openpower1.patch b/openpower/linux/0004-Release-4.9.4-openpower1.patch
new file mode 100644
index 0000000..c92fb8e
--- /dev/null
+++ b/openpower/linux/0004-Release-4.9.4-openpower1.patch
@@ -0,0 +1,26 @@
+From 0000000000000000000000000000000000000000 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 4/4] Release 4.9.4-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 9175706bfe7f..eca9a2739def 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 4
+ PATCHLEVEL = 9
+ SUBLEVEL = 4
+-EXTRAVERSION =
++EXTRAVERSION = -openpower1
+ NAME = Roaring Lionus
+ 
+ # *DOCUMENTATION*
+-- 
+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
deleted file mode 100644
index ef75ac4..0000000
--- a/openpower/linux/0005-net-mlx5-Add-pci-shutdown-callback.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-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 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.
-
-This patch introduces kexec support for mlx5.
-When switching kernels, kexec() calls shutdown, which unloads
-the driver and cleans its resources.
-
-In addition, remove unregister netdev from shutdown flow. This will
-allow a clean shutdown, even if some netdev clients did not release their
-reference from this netdev. Releasing The HW resources only is enough as
-the kernel is shutting down
-
-Signed-off-by: Majd Dibbiny <majd@mellanox.com>
-Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
-Signed-off-by: Haggai Abramovsky <hagaya@mellanox.com>
-Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Carol L Soto <clsoto@linux.vnet.ibm.com>
-(cherry picked from commit 5fc7197d3a256d9c5de3134870304b24892a4908)
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 15 +++++++++++++--
- drivers/net/ethernet/mellanox/mlx5/core/main.c    | 23 +++++++++++++++++++----
- include/linux/mlx5/driver.h                       |  7 ++++---
- 3 files changed, 36 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
-index 90e876ecc720..984668ec8a0b 100644
---- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
-@@ -2241,7 +2241,16 @@ static void mlx5e_destroy_netdev(struct mlx5_core_dev *mdev, void *vpriv)
- 	schedule_work(&priv->set_rx_mode_work);
- 	mlx5e_disable_async_events(priv);
- 	flush_scheduled_work();
--	unregister_netdev(netdev);
-+	if (test_bit(MLX5_INTERFACE_STATE_SHUTDOWN, &mdev->intf_state)) {
-+		netif_device_detach(netdev);
-+		mutex_lock(&priv->state_lock);
-+		if (test_bit(MLX5E_STATE_OPENED, &priv->state))
-+			mlx5e_close_locked(netdev);
-+		mutex_unlock(&priv->state_lock);
-+	} else {
-+		unregister_netdev(netdev);
-+	}
-+
- 	mlx5e_destroy_flow_tables(priv);
- 	mlx5e_destroy_tirs(priv);
- 	mlx5e_destroy_rqt(priv, MLX5E_SINGLE_RQ_RQT);
-@@ -2252,7 +2261,9 @@ static void mlx5e_destroy_netdev(struct mlx5_core_dev *mdev, void *vpriv)
- 	mlx5_dealloc_transport_domain(priv->mdev, priv->tdn);
- 	mlx5_core_dealloc_pd(priv->mdev, priv->pdn);
- 	mlx5_unmap_free_uar(priv->mdev, &priv->cq_uar);
--	free_netdev(netdev);
-+
-+	if (!test_bit(MLX5_INTERFACE_STATE_SHUTDOWN, &mdev->intf_state))
-+		free_netdev(netdev);
- }
- 
- static void *mlx5e_get_netdev(void *vpriv)
-diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
-index 6cf6d93d8831..8a371bdb823e 100644
---- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
-@@ -914,7 +914,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
- 	int err;
- 
- 	mutex_lock(&dev->intf_state_mutex);
--	if (dev->interface_state == MLX5_INTERFACE_STATE_UP) {
-+	if (test_bit(MLX5_INTERFACE_STATE_UP, &dev->intf_state)) {
- 		dev_warn(&dev->pdev->dev, "%s: interface is up, NOP\n",
- 			 __func__);
- 		goto out;
-@@ -1063,7 +1063,8 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
- 	if (err)
- 		pr_info("failed request module on %s\n", MLX5_IB_MOD);
- 
--	dev->interface_state = MLX5_INTERFACE_STATE_UP;
-+	clear_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state);
-+	set_bit(MLX5_INTERFACE_STATE_UP, &dev->intf_state);
- out:
- 	mutex_unlock(&dev->intf_state_mutex);
- 
-@@ -1125,7 +1126,7 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
- 	int err = 0;
- 
- 	mutex_lock(&dev->intf_state_mutex);
--	if (dev->interface_state == MLX5_INTERFACE_STATE_DOWN) {
-+	if (test_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state)) {
- 		dev_warn(&dev->pdev->dev, "%s: interface is down, NOP\n",
- 			 __func__);
- 		goto out;
-@@ -1155,7 +1156,8 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
- 	mlx5_cmd_cleanup(dev);
- 
- out:
--	dev->interface_state = MLX5_INTERFACE_STATE_DOWN;
-+	clear_bit(MLX5_INTERFACE_STATE_UP, &dev->intf_state);
-+	set_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state);
- 	mutex_unlock(&dev->intf_state_mutex);
- 	return err;
- }
-@@ -1365,6 +1367,18 @@ static const struct pci_error_handlers mlx5_err_handler = {
- 	.resume		= mlx5_pci_resume
- };
- 
-+static void shutdown(struct pci_dev *pdev)
-+{
-+	struct mlx5_core_dev *dev  = pci_get_drvdata(pdev);
-+	struct mlx5_priv *priv = &dev->priv;
-+
-+	dev_info(&pdev->dev, "Shutdown was called\n");
-+	/* Notify mlx5 clients that the kernel is being shut down */
-+	set_bit(MLX5_INTERFACE_STATE_SHUTDOWN, &dev->intf_state);
-+	mlx5_unload_one(dev, priv);
-+	mlx5_pci_disable_device(dev);
-+}
-+
- static const struct pci_device_id mlx5_core_pci_table[] = {
- 	{ PCI_VDEVICE(MELLANOX, 0x1011) }, /* Connect-IB */
- 	{ PCI_VDEVICE(MELLANOX, 0x1012) }, /* Connect-IB VF */
-@@ -1382,6 +1396,7 @@ static struct pci_driver mlx5_core_driver = {
- 	.id_table       = mlx5_core_pci_table,
- 	.probe          = init_one,
- 	.remove         = remove_one,
-+	.shutdown       = shutdown,
- 	.err_handler	= &mlx5_err_handler
- };
- 
-diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
-index 412aa988c6ad..dc26d9942120 100644
---- a/include/linux/mlx5/driver.h
-+++ b/include/linux/mlx5/driver.h
-@@ -493,8 +493,9 @@ enum mlx5_device_state {
- };
- 
- enum mlx5_interface_state {
--	MLX5_INTERFACE_STATE_DOWN,
--	MLX5_INTERFACE_STATE_UP,
-+	MLX5_INTERFACE_STATE_DOWN = BIT(0),
-+	MLX5_INTERFACE_STATE_UP = BIT(1),
-+	MLX5_INTERFACE_STATE_SHUTDOWN = BIT(2),
- };
- 
- enum mlx5_pci_status {
-@@ -518,7 +519,7 @@ struct mlx5_core_dev {
- 	enum mlx5_device_state	state;
- 	/* sync interface state */
- 	struct mutex		intf_state_mutex;
--	enum mlx5_interface_state interface_state;
-+	unsigned long		intf_state;
- 	void			(*event) (struct mlx5_core_dev *dev,
- 					  enum mlx5_dev_event event,
- 					  unsigned long param);
--- 
-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
deleted file mode 100644
index e1a6f5d..0000000
--- a/openpower/linux/0006-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch
+++ /dev/null
@@ -1,286 +0,0 @@
-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 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
-user. This is important since it typically indicates data corruption in
-the firmware and other nasty things.
-
-Currently this only works when building a little endian kernel. When
-compiling a 64 bit BE kernel the wrapper is always build 32 bit to be
-compatible with some 32 bit firmwares. BE support will be added at a
-later date. Another limitation of this is that only the "raw" type of
-OPAL console is supported, however machines that provide a hvsi console
-also provide a raw console so this is not an issue in practice.
-
-Actually-written-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
-Cc: Stewart Smith <stewart@linux.vnet.ibm.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/boot/Makefile     |  4 +-
- arch/powerpc/boot/opal-calls.S | 58 +++++++++++++++++++++++++
- arch/powerpc/boot/opal.c       | 97 ++++++++++++++++++++++++++++++++++++++++++
- arch/powerpc/boot/ops.h        |  1 +
- arch/powerpc/boot/ppc_asm.h    |  4 ++
- arch/powerpc/boot/serial.c     |  2 +
- arch/powerpc/boot/types.h      | 10 +++++
- 7 files changed, 174 insertions(+), 2 deletions(-)
- create mode 100644 arch/powerpc/boot/opal-calls.S
- create mode 100644 arch/powerpc/boot/opal.c
-
-diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
-index 99e4487248ff..321a603f6ae3 100644
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -70,7 +70,7 @@ $(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o): \
- libfdt       := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
- libfdtheader := fdt.h libfdt.h libfdt_internal.h
- 
--$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o): \
-+$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
- 	$(addprefix $(obj)/,$(libfdtheader))
- 
- src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
-@@ -78,7 +78,7 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
- 		ns16550.c serial.c simple_alloc.c div64.S util.S \
- 		gunzip_util.c elf_util.c $(zlib) devtree.c stdlib.c \
- 		oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
--		uartlite.c mpc52xx-psc.c
-+		uartlite.c mpc52xx-psc.c opal.c opal-calls.S
- src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
- src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
- src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
-diff --git a/arch/powerpc/boot/opal-calls.S b/arch/powerpc/boot/opal-calls.S
-new file mode 100644
-index 000000000000..ff2f1b97bc53
---- /dev/null
-+++ b/arch/powerpc/boot/opal-calls.S
-@@ -0,0 +1,58 @@
-+/*
-+ * Copyright (c) 2016 IBM Corporation.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version
-+ * 2 of the License, or (at your option) any later version.
-+ */
-+
-+#include "ppc_asm.h"
-+#include "../include/asm/opal-api.h"
-+
-+	.text
-+
-+#define OPAL_CALL(name, token)				\
-+	.globl name;					\
-+name:							\
-+	li	r0, token;				\
-+	b	opal_call;
-+
-+opal_call:
-+	mflr	r11
-+	std	r11,16(r1)
-+	mfcr	r12
-+	stw	r12,8(r1)
-+	mr	r13,r2
-+
-+	/* Set opal return address */
-+	ld	r11,opal_return@got(r2)
-+	mtlr	r11
-+	mfmsr	r12
-+
-+	/* switch to BE when we enter OPAL */
-+	li	r11,MSR_LE
-+	andc	r12,r12,r11
-+	mtspr	SPRN_HSRR1,r12
-+
-+	/* load the opal call entry point and base */
-+	ld	r11,opal@got(r2)
-+	ld	r12,8(r11)
-+	ld	r2,0(r11)
-+	mtspr	SPRN_HSRR0,r12
-+	hrfid
-+
-+opal_return:
-+	FIXUP_ENDIAN
-+	mr	r2,r13;
-+	lwz	r11,8(r1);
-+	ld	r12,16(r1)
-+	mtcr	r11;
-+	mtlr	r12
-+	blr
-+
-+OPAL_CALL(opal_console_write,			OPAL_CONSOLE_WRITE);
-+OPAL_CALL(opal_console_read,			OPAL_CONSOLE_READ);
-+OPAL_CALL(opal_console_write_buffer_space,	OPAL_CONSOLE_WRITE_BUFFER_SPACE);
-+OPAL_CALL(opal_poll_events,			OPAL_POLL_EVENTS);
-+OPAL_CALL(opal_console_flush,			OPAL_CONSOLE_FLUSH);
-diff --git a/arch/powerpc/boot/opal.c b/arch/powerpc/boot/opal.c
-new file mode 100644
-index 000000000000..3a2ce1e1f048
---- /dev/null
-+++ b/arch/powerpc/boot/opal.c
-@@ -0,0 +1,97 @@
-+/*
-+ * Copyright (c) 2016 IBM Corporation.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version
-+ * 2 of the License, or (at your option) any later version.
-+ */
-+
-+#include "ops.h"
-+#include "stdio.h"
-+#include "io.h"
-+#include <libfdt.h>
-+#include "../include/asm/opal-api.h"
-+
-+/* Global OPAL struct used by opal-call.S */
-+struct opal {
-+	u64 base;
-+	u64 entry;
-+} opal;
-+
-+static u32 opal_con_id;
-+
-+int64_t opal_console_write(int64_t term_number, u64 *length, const u8 *buffer);
-+int64_t opal_console_read(int64_t term_number, uint64_t *length, u8 *buffer);
-+int64_t opal_console_write_buffer_space(uint64_t term_number, uint64_t *length);
-+int64_t opal_console_flush(uint64_t term_number);
-+int64_t opal_poll_events(uint64_t *outstanding_event_mask);
-+
-+static int opal_con_open(void)
-+{
-+	return 0;
-+}
-+
-+static void opal_con_putc(unsigned char c)
-+{
-+	int64_t rc;
-+	uint64_t olen, len;
-+
-+	do {
-+		rc = opal_console_write_buffer_space(opal_con_id, &olen);
-+		len = be64_to_cpu(olen);
-+		if (rc)
-+			return;
-+		opal_poll_events(NULL);
-+	} while (len < 1);
-+
-+
-+	olen = cpu_to_be64(1);
-+	opal_console_write(opal_con_id, &olen, &c);
-+}
-+
-+static void opal_con_close(void)
-+{
-+	opal_console_flush(opal_con_id);
-+}
-+
-+static void opal_init(void)
-+{
-+	void *opal_node;
-+
-+	opal_node = finddevice("/ibm,opal");
-+	if (!opal_node)
-+		return;
-+	if (getprop(opal_node, "opal-base-address", &opal.base, sizeof(u64)) < 0)
-+		return;
-+	opal.base = be64_to_cpu(opal.base);
-+	if (getprop(opal_node, "opal-entry-address", &opal.entry, sizeof(u64)) < 0)
-+		return;
-+	opal.entry = be64_to_cpu(opal.entry);
-+}
-+
-+#ifdef __powerpc64__
-+int opal_console_init(void *devp, struct serial_console_data *scdp)
-+{
-+	opal_init();
-+
-+	if (devp) {
-+		int n = getprop(devp, "reg", &opal_con_id, sizeof(u32));
-+		if (n != sizeof(u32))
-+			return -1;
-+		opal_con_id = be32_to_cpu(opal_con_id);
-+	} else
-+		opal_con_id = 0;
-+
-+	scdp->open = opal_con_open;
-+	scdp->putc = opal_con_putc;
-+	scdp->close = opal_con_close;
-+
-+	return 0;
-+}
-+#else
-+int opal_console_init(void *devp, struct serial_console_data *scdp)
-+{
-+	return -1;
-+}
-+#endif
-diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h
-index 5e75e1c5518e..e19b64ef977a 100644
---- a/arch/powerpc/boot/ops.h
-+++ b/arch/powerpc/boot/ops.h
-@@ -89,6 +89,7 @@ int mpsc_console_init(void *devp, struct serial_console_data *scdp);
- int cpm_console_init(void *devp, struct serial_console_data *scdp);
- int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp);
- int uartlite_console_init(void *devp, struct serial_console_data *scdp);
-+int opal_console_init(void *devp, struct serial_console_data *scdp);
- void *simple_alloc_init(char *base, unsigned long heap_size,
- 			unsigned long granularity, unsigned long max_allocs);
- extern void flush_cache(void *, unsigned long);
-diff --git a/arch/powerpc/boot/ppc_asm.h b/arch/powerpc/boot/ppc_asm.h
-index 35ea60c1f070..b03373d8b386 100644
---- a/arch/powerpc/boot/ppc_asm.h
-+++ b/arch/powerpc/boot/ppc_asm.h
-@@ -61,6 +61,10 @@
- 
- #define SPRN_TBRL	268
- #define SPRN_TBRU	269
-+#define SPRN_HSRR0	0x13A	/* Hypervisor Save/Restore 0 */
-+#define SPRN_HSRR1	0x13B	/* Hypervisor Save/Restore 1 */
-+
-+#define MSR_LE		0x0000000000000001
- 
- #define FIXUP_ENDIAN						   \
- 	tdi   0, 0, 0x48; /* Reverse endian of b . + 8		*/ \
-diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c
-index 167ee9433de6..e04c1e4063ae 100644
---- a/arch/powerpc/boot/serial.c
-+++ b/arch/powerpc/boot/serial.c
-@@ -132,6 +132,8 @@ int serial_console_init(void)
- 	else if (dt_is_compatible(devp, "xlnx,opb-uartlite-1.00.b") ||
- 		 dt_is_compatible(devp, "xlnx,xps-uartlite-1.00.a"))
- 		rc = uartlite_console_init(devp, &serial_cd);
-+	else if (dt_is_compatible(devp, "ibm,opal-console-raw"))
-+		rc = opal_console_init(devp, &serial_cd);
- 
- 	/* Add other serial console driver calls here */
- 
-diff --git a/arch/powerpc/boot/types.h b/arch/powerpc/boot/types.h
-index 31393d17a9c1..85565a89bcc2 100644
---- a/arch/powerpc/boot/types.h
-+++ b/arch/powerpc/boot/types.h
-@@ -12,6 +12,16 @@ typedef short			s16;
- typedef int			s32;
- typedef long long		s64;
- 
-+/* required for opal-api.h */
-+typedef u8  uint8_t;
-+typedef u16 uint16_t;
-+typedef u32 uint32_t;
-+typedef u64 uint64_t;
-+typedef s8  int8_t;
-+typedef s16 int16_t;
-+typedef s32 int32_t;
-+typedef s64 int64_t;
-+
- #define min(x,y) ({ \
- 	typeof(x) _x = (x);	\
- 	typeof(y) _y = (y);	\
--- 
-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
deleted file mode 100644
index 0ddb72f..0000000
--- a/openpower/linux/0007-tty-hvc-Use-opal-irqchip-interface-if-available.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-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 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
-existing OPAL event number.
-
-Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
-Cc: <stable@vger.kernel.org> # 4.1.x-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/tty/hvc/hvc_opal.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
-index 47b54c6aefd2..276b796b24e4 100644
---- a/drivers/tty/hvc/hvc_opal.c
-+++ b/drivers/tty/hvc/hvc_opal.c
-@@ -214,7 +214,13 @@ static int hvc_opal_probe(struct platform_device *dev)
- 		dev->dev.of_node->full_name,
- 		boot ? " (boot console)" : "");
- 
--	irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
-+	irq = irq_of_parse_and_map(dev->dev.of_node, 0);
-+	if (!irq) {
-+		pr_info("hvc%d: No interrupts property, using OPAL event\n",
-+				termno);
-+		irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
-+	}
-+
- 	if (!irq) {
- 		pr_err("hvc_opal: Unable to map interrupt for device %s\n",
- 			dev->dev.of_node->full_name);
--- 
-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
deleted file mode 100644
index d84418e..0000000
--- a/openpower/linux/0008-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-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 08/13] tty/hvc: Use IRQF_SHARED for OPAL hvc consoles
-
-Commit 2def86a7200c
-("hvc: Convert to using interrupts instead of opal events")
-enabled the use of interrupts in the hvc_driver for OPAL platforms.
-However on machines with more than one hvc console, any console after
-the first will fail to register an interrupt handler in
-notifier_add_irq() since all consoles share the same IRQ number but do
-not set the IRQF_SHARED flag:
-
-[   51.179907] genirq: Flags mismatch irq 31. 00000000 (hvc_console) vs.
-00000000 (hvc_console)
-[   51.180010] hvc_open: request_irq failed with rc -16.
-
-This error propagates up to hvc_open() and the console is closed, but
-OPAL will still generate interrupts that are not handled, leading to
-rcu_sched stall warnings.
-
-Set IRQF_SHARED when calling request_irq, allowing additional consoles
-to start properly. This is only set for consoles handled by
-hvc_opal_probe(), leaving other types unaffected.
-
-Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
-Cc: <stable@vger.kernel.org> # 4.1.x-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/tty/hvc/hvc_console.h | 1 +
- drivers/tty/hvc/hvc_irq.c     | 7 +++++--
- drivers/tty/hvc/hvc_opal.c    | 3 +++
- 3 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/tty/hvc/hvc_console.h b/drivers/tty/hvc/hvc_console.h
-index 913101980827..798c48d0d32c 100644
---- a/drivers/tty/hvc/hvc_console.h
-+++ b/drivers/tty/hvc/hvc_console.h
-@@ -60,6 +60,7 @@ struct hvc_struct {
- 	struct winsize ws;
- 	struct work_struct tty_resize;
- 	struct list_head next;
-+	unsigned long flags;
- };
- 
- /* implemented by a low level driver */
-diff --git a/drivers/tty/hvc/hvc_irq.c b/drivers/tty/hvc/hvc_irq.c
-index c9adb0559f61..57d9df7ee1c9 100644
---- a/drivers/tty/hvc/hvc_irq.c
-+++ b/drivers/tty/hvc/hvc_irq.c
-@@ -14,6 +14,9 @@ static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance)
- 	/* if hvc_poll request a repoll, then kick the hvcd thread */
- 	if (hvc_poll(dev_instance))
- 		hvc_kick();
-+	/* We're safe to always return IRQ_HANDLED as the hvcd thread will
-+	 * iterate through each hvc_struct
-+	 */
- 	return IRQ_HANDLED;
- }
- 
-@@ -28,8 +31,8 @@ int notifier_add_irq(struct hvc_struct *hp, int irq)
- 		hp->irq_requested = 0;
- 		return 0;
- 	}
--	rc = request_irq(irq, hvc_handle_interrupt, 0,
--			   "hvc_console", hp);
-+	rc = request_irq(irq, hvc_handle_interrupt, hp->flags,
-+			"hvc_console", hp);
- 	if (!rc)
- 		hp->irq_requested = 1;
- 	return rc;
-diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
-index 276b796b24e4..510799311099 100644
---- a/drivers/tty/hvc/hvc_opal.c
-+++ b/drivers/tty/hvc/hvc_opal.c
-@@ -230,6 +230,9 @@ static int hvc_opal_probe(struct platform_device *dev)
- 	hp = hvc_alloc(termno, irq, ops, MAX_VIO_PUT_CHARS);
- 	if (IS_ERR(hp))
- 		return PTR_ERR(hp);
-+
-+	/* hvc consoles on powernv may need to share a single irq */
-+	hp->flags = IRQF_SHARED;
- 	dev_set_drvdata(&dev->dev, hp);
- 
- 	return 0;
--- 
-2.11.0
-
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
deleted file mode 100644
index e4a5ff1..0000000
--- a/openpower/linux/0009-usb-xhci-allow-xhci_check_bandwith-in-XHCI_STATE_REM.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-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
deleted file mode 100644
index 1773d17..0000000
--- a/openpower/linux/0010-powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-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
deleted file mode 100644
index 4f0edfa..0000000
--- a/openpower/linux/0011-powerpc-Convert-cmp-to-cmpd-in-idle-enter-sequence.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-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
deleted file mode 100644
index b6011c7..0000000
--- a/openpower/linux/0012-drivers-gpu-drm-ast-Fix-infinite-loop-if-read-fails.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-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
deleted file mode 100644
index 1ae0420..0000000
--- a/openpower/linux/0013-Release-4.4.39-openpower1.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-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/overlay/etc/init.d/S10udev b/openpower/overlay/etc/init.d/S10udev
new file mode 100755
index 0000000..fd8179e
--- /dev/null
+++ b/openpower/overlay/etc/init.d/S10udev
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# udev	This is a minimal non-LSB version of a UDEV startup script.  It
+#	was derived by stripping down the udev-058 LSB version for use
+#	with buildroot on embedded hardware using Linux 2.6.34+ kernels.
+#
+#	You may need to customize this for your system's resource limits
+#	(including startup time!) and administration.  For example, if
+#	your early userspace has a custom initramfs or initrd you might
+#	need /dev much earlier; or without hotpluggable busses (like USB,
+#	PCMCIA, MMC/SD, and so on) your /dev might be static after boot.
+#
+#	This script assumes your system boots right into the eventual root
+#	filesystem, and that init runs this udev script before any programs
+#	needing more device nodes than the bare-bones set -- /dev/console,
+#	/dev/zero, /dev/null -- that's needed to boot and run this script.
+#
+
+# Check for missing binaries
+UDEV_BIN=/sbin/udevd
+test -x $UDEV_BIN || exit 5
+
+# Check for config file and read it
+UDEV_CONFIG=/etc/udev/udev.conf
+test -r $UDEV_CONFIG || exit 6
+. $UDEV_CONFIG
+
+case "$1" in
+    start)
+        printf "Populating ${udev_root:-/dev} using udev: "
+        printf '\000\000\000\000' > /proc/sys/kernel/hotplug
+        $UDEV_BIN -d || (echo "FAIL" && exit 1)
+        udevadm trigger --type=subsystems --action=add
+        udevadm trigger --type=devices --action=add
+        echo "done"
+        ;;
+    stop)
+        # Stop execution of events
+        udevadm control --stop-exec-queue
+        killall udevd
+        ;;
+    *)
+        echo "Usage: $0 {start|stop}"
+        exit 1
+        ;;
+esac
+
+
+exit 0
diff --git a/openpower/overlay/etc/init.d/S17udevsettle b/openpower/overlay/etc/init.d/S17udevsettle
new file mode 100755
index 0000000..92d3f9c
--- /dev/null
+++ b/openpower/overlay/etc/init.d/S17udevsettle
@@ -0,0 +1,10 @@
+#!/bin/sh
+case "$1" in
+    start)
+        udevadm settle --timeout=30 || echo "udevadm settle failed"
+	;;
+    *)
+        exit 1;;
+esac
+
+exit 0
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index cbeae17..db58166 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -1,21 +1,22 @@
-source "$BR2_EXTERNAL/package/openpower-ffs/Config.in"
-source "$BR2_EXTERNAL/package/hostboot/Config.in"
-source "$BR2_EXTERNAL/package/hostboot-binaries/Config.in"
-source "$BR2_EXTERNAL/package/openpower-mrw/Config.in"
-source "$BR2_EXTERNAL/package/common-p8-xml/Config.in"
-source "$BR2_EXTERNAL/package/palmetto-xml/Config.in"
-source "$BR2_EXTERNAL/package/habanero-xml/Config.in"
-source "$BR2_EXTERNAL/package/firestone-xml/Config.in"
-source "$BR2_EXTERNAL/package/garrison-xml/Config.in"
-source "$BR2_EXTERNAL/package/barreleye-xml/Config.in"
-source "$BR2_EXTERNAL/package/openpower-pnor/Config.in"
-source "$BR2_EXTERNAL/package/petitboot/Config.in"
-source "$BR2_EXTERNAL/package/p8-pore-binutils/Config.in"
-source "$BR2_EXTERNAL/package/occ/Config.in"
-source "$BR2_EXTERNAL/package/capp-ucode/Config.in"
-source "$BR2_EXTERNAL/package/skiboot/Config.in"
-source "$BR2_EXTERNAL/package/libflash/Config.in"
-source "$BR2_EXTERNAL/package/loadkeys/Config.in"
-source "$BR2_EXTERNAL/package/witherspoon-xml/Config.in"
-source "$BR2_EXTERNAL/package/ppe42-binutils/Config.in"
-source "$BR2_EXTERNAL/package/ppe42-gcc/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-ffs/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot-binaries/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-mrw/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/common-p8-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/palmetto-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/habanero-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/firestone-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/garrison-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/barreleye-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-pnor/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/petitboot/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/p8-pore-binutils/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/occ/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/capp-ucode/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/skiboot/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/libflash/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/loadkeys/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/witherspoon-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-binutils/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-gcc/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/zaius-xml/Config.in"
diff --git a/openpower/package/capp-ucode/capp-ucode.mk b/openpower/package/capp-ucode/capp-ucode.mk
index 79fbbf6..c846638 100644
--- a/openpower/package/capp-ucode/capp-ucode.mk
+++ b/openpower/package/capp-ucode/capp-ucode.mk
@@ -6,6 +6,7 @@
 CAPP_UCODE_VERSION ?= 1bb7503078ed39b74a7b9c46925da75e547ceea6
 CAPP_UCODE_SITE ?= $(call github,open-power,capp-ucode,$(CAPP_UCODE_VERSION))
 CAPP_UCODE_LICENSE = Apache-2.0
+CAPP_UCODE_LICENSE_FILES = NOTICES
 
 CAPP_UCODE_INSTALL_IMAGES = YES
 
diff --git a/openpower/package/common-p8-xml/common-p8-xml.mk b/openpower/package/common-p8-xml/common-p8-xml.mk
index 282adb3..cd0afe4 100644
--- a/openpower/package/common-p8-xml/common-p8-xml.mk
+++ b/openpower/package/common-p8-xml/common-p8-xml.mk
@@ -8,6 +8,7 @@
 COMMON_P8_XML_SITE ?= $(call github,open-power,common-p8-xml,$(COMMON_P8_XML_VERSION))
 
 COMMON_P8_XML_LICENSE = Apache-2.0
+COMMON_P8_XML_LICENSE_FILES = LICENSE
 COMMON_P8_XML_DEPENDENCIES =
 
 COMMON_P8_XML_INSTALL_IMAGES = YES
diff --git a/openpower/package/garrison-xml/garrison.mk b/openpower/package/garrison-xml/garrison.mk
index e7ded4b..5b95379 100644
--- a/openpower/package/garrison-xml/garrison.mk
+++ b/openpower/package/garrison-xml/garrison.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-GARRISON_XML_VERSION ?= e1e8d687a2c60f9da28f5bebf06058bf538272f2
+GARRISON_XML_VERSION ?= c4d238ee2f893d2b52b88c36c993e2c497ee6443
 GARRISON_XML_SITE ?= $(call github,open-power,garrison-xml,$(GARRISON_XML_VERSION))
 
 GARRISON_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
index 165f63d..66f2791 100644
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ b/openpower/package/habanero-xml/habanero-xml.mk
@@ -8,6 +8,7 @@
 HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
 
 HABANERO_XML_LICENSE = Apache-2.0
+HABANERO_XML_LICENSE_FILES = LICENSE
 HABANERO_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
 
 HABANERO_XML_INSTALL_IMAGES = YES
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index a0dc5b1..2310898 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,9 +4,10 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= 56532f5370ea875dfafb10a049b5f3ff6882cc08
+HOSTBOOT_BINARIES_VERSION ?= 674c6357f6133de25f016cb20891b37302e1bdf8
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
+HOSTBOOT_BINARIES_LICENSE_FILES = LICENSE
 
 HOSTBOOT_BINARIES_INSTALL_IMAGES = YES
 HOSTBOOT_BINARIES_INSTALL_TARGET = NO
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index 7d15d28..c2e3f99 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -4,33 +4,34 @@
 #
 ################################################################################
 HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= e28b28fa9995ab3039b44f2c200fdbbc58313677
-HOSTBOOT_VERSION_BRANCH_MASTER ?= abc4a878dc90b34f48ec66554776717490fd2efb
+HOSTBOOT_VERSION_BRANCH_MASTER ?= edea301d5c25b3a305b747c14fe30de79d74b788
 
 HOSTBOOT_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(HOSTBOOT_VERSION_BRANCH_MASTER),$(HOSTBOOT_VERSION_BRANCH_MASTER_P8))
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
 
 HOSTBOOT_LICENSE = Apache-2.0
+HOSTBOOT_LICENSE_FILES = LICENSE
 HOSTBOOT_DEPENDENCIES = host-binutils
 
 HOSTBOOT_INSTALL_IMAGES = YES
 HOSTBOOT_INSTALL_TARGET = NO
 
 HOSTBOOT_ENV_VARS=$(TARGET_MAKE_ENV) \
-    CONFIG_FILE=$(BR2_EXTERNAL)/configs/hostboot/$(BR2_HOSTBOOT_CONFIG_FILE) \
+    CONFIG_FILE=$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/hostboot/$(BR2_HOSTBOOT_CONFIG_FILE) \
     OPENPOWER_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) HOST_PREFIX="" HOST_BINUTILS_DIR=$(HOST_BINUTILS_DIR) \
     HOSTBOOT_VERSION=`cat $(HOSTBOOT_VERSION_FILE)` 
 
 define HOSTBOOT_APPLY_PATCHES
        if [ "$(BR2_OPENPOWER_POWER9)" == "y" ]; then \
-           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/package/hostboot/p9Patches \*.patch; \
-           if [ -d $(BR2_EXTERNAL)/custom/patches/hostboot/p9Patches ]; then \
-               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/custom/patches/hostboot/p9Patches \*.patch; \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/hostboot/p9Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p9Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p9Patches \*.patch; \
            fi; \
        fi; \
        if [ "$(BR2_OPENPOWER_POWER8)" == "y" ]; then \
-           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/package/hostboot/p8Patches \*.patch; \
-           if [ -d $(BR2_EXTERNAL)/custom/patches/hostboot/p8Patches ]; then \
-               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/custom/patches/hostboot/p8Patches \*.patch; \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/hostboot/p8Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p8Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p8Patches \*.patch; \
            fi; \
        fi;
 endef
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
deleted file mode 100644
index ee27fc8..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0003-processMrw-fixes-to-work-with-latest-witherspoon.xml.patch
+++ /dev/null
@@ -1,377 +0,0 @@
-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-0005-filter_out_unwanted_attributes-initial-check-in.patch b/openpower/package/hostboot/p9Patches/hostboot-0005-filter_out_unwanted_attributes-initial-check-in.patch
deleted file mode 100644
index 21153e8..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0005-filter_out_unwanted_attributes-initial-check-in.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-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-0007-Add-filtering-script-to-openpower-distribution.patch b/openpower/package/hostboot/p9Patches/hostboot-0007-Add-filtering-script-to-openpower-distribution.patch
deleted file mode 100644
index 682caeb..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0007-Add-filtering-script-to-openpower-distribution.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-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-0007-Skip-running-p9_mss_eff_config_thermal.patch b/openpower/package/hostboot/p9Patches/hostboot-0007-Skip-running-p9_mss_eff_config_thermal.patch
new file mode 100644
index 0000000..38a85c8
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0007-Skip-running-p9_mss_eff_config_thermal.patch
@@ -0,0 +1,28 @@
+From d68ea0cc45fa21821f3820dfb83fb8332c8eec8f Mon Sep 17 00:00:00 2001
+From: Bill Hoffa <wghoffa@us.ibm.com>
+Date: Wed, 18 Jan 2017 21:56:18 -0600
+Subject: [PATCH 5/6] Temporarily Skip running p9_mss_eff_config_thermal
+
+Change-Id: I491c8e30fef9431663aaa29147ef96c0d897a015
+---
+ src/usr/isteps/istep07/call_mss_eff_config.C | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/usr/isteps/istep07/call_mss_eff_config.C b/src/usr/isteps/istep07/call_mss_eff_config.C
+index e13dace..761a07d 100644
+--- a/src/usr/isteps/istep07/call_mss_eff_config.C
++++ b/src/usr/isteps/istep07/call_mss_eff_config.C
+@@ -241,8 +241,8 @@ void*    call_mss_eff_config( void *io_pArgs )
+         }
+         // Call the mss_eff_config_thermal HWP
+         TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+-                   "p9_mss_eff_config_thermal HWP. ");
+-        FAPI_INVOKE_HWP(l_err, p9_mss_eff_config_thermal,l_fapi_mcs_targs);
++                   "Temporarily skipping p9_mss_eff_config_thermal HWP. ");
++        //FAPI_INVOKE_HWP(l_err, p9_mss_eff_config_thermal,l_fapi_mcs_targs);
+ 
+         if (l_err)
+         {
+-- 
+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
deleted file mode 100644
index 29d2444..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-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/hostboot/p9Patches/hostboot-0008-Mask-IPOLL-Interrupts-Disable-Nest-Pulse.patch b/openpower/package/hostboot/p9Patches/hostboot-0008-Mask-IPOLL-Interrupts-Disable-Nest-Pulse.patch
new file mode 100644
index 0000000..cbc3077
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0008-Mask-IPOLL-Interrupts-Disable-Nest-Pulse.patch
@@ -0,0 +1,81 @@
+From cde8d0c32b37f398b157e17e4f20c3e3abe53599 Mon Sep 17 00:00:00 2001
+From: Bill Hoffa <wghoffa@us.ibm.com>
+Date: Fri, 20 Jan 2017 12:16:47 -0600
+Subject: [PATCH] Mask IPOLL Interrupts + Disable Nest Pulse
+
+Change-Id: I5e479ee475b4edb275de60d2c158c5732f908e46
+---
+ src/usr/isteps/istep14/call_mss_memdiag.C | 43 ++++++++++++++++++++++++++++++-
+ 1 file changed, 42 insertions(+), 1 deletion(-)
+
+diff --git a/src/usr/isteps/istep14/call_mss_memdiag.C b/src/usr/isteps/istep14/call_mss_memdiag.C
+index 8354e5f..1cf9ca5 100644
+--- a/src/usr/isteps/istep14/call_mss_memdiag.C
++++ b/src/usr/isteps/istep14/call_mss_memdiag.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2015,2016                        */
++/* Contributors Listed Below - COPYRIGHT 2015,2017                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -30,6 +30,7 @@
+ #include <diag/attn/attn.H>
+ #include <diag/mdia/mdia.H>
+ #include <targeting/common/targetservice.H>
++#include <devicefw/driverif.H>
+ 
+ using   namespace   ISTEP;
+ using   namespace   ISTEP_ERROR;
+@@ -101,6 +102,46 @@ void* call_mss_memdiag (void* io_pArgs)
+             break;
+         }
+ 
++        //Mask IPOLL Interrupts
++        TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
++                  "Mask IPOLL Interrupts");
++
++        // Get all functional proc chip targets
++        //Use targeting code to get a list of all processors
++        TARGETING::TargetHandleList l_procChips;
++        getAllChips( l_procChips, TARGETING::TYPE_PROC   );
++
++        for (auto l_procChip: l_procChips)
++        {
++            uint64_t l_data = 0xfff0000000000000;
++            size_t l_data_sz = sizeof(uint64_t);
++
++            l_errl = deviceWrite( l_procChip, &l_data, l_data_sz,
++                  DEVICE_SCOM_ADDRESS(0x000F0033) );
++
++            if( NULL != l_errl )
++            {
++                TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
++                   "IPOLL MASK ERROR: deviceWrite on 0x%08X failed HUID:0x%08X",
++                   0x000F0033, get_huid(l_procChip));
++                break;
++            }
++
++            //Disable the nest pulse to the bottom 4 bits of the TB
++            l_data = 0x0000000000000000;
++
++            l_errl = deviceWrite( l_procChip, &l_data, l_data_sz,
++                  DEVICE_SCOM_ADDRESS(0x010F0023) );
++
++            if( NULL != l_errl )
++            {
++                TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
++                   "Disable nest pulse: deviceWrite on 0x%08X failed HUID:0x%08X",
++                   0x010F0023, get_huid(l_procChip));
++                break;
++            }
++        }
++
+     }while( 0 );
+ 
+     if( NULL != l_errl )
+-- 
+1.8.2.2
+
diff --git a/openpower/package/libflash/libflash.mk b/openpower/package/libflash/libflash.mk
index f39e8c8..a76aa4d 100644
--- a/openpower/package/libflash/libflash.mk
+++ b/openpower/package/libflash/libflash.mk
@@ -10,6 +10,8 @@
 LIBFLASH_INSTALL_STAGING = YES
 LIBFLASH_INSTALL_TARGET = YES
 
+LIBFLASH_LICENSE_FILES = LICENCE
+
 LIBFLASH_MAKE_OPTS += CC="$(TARGET_CC)" LD="$(TARGET_LD)" \
 		     AS="$(TARGET_AS)" AR="$(TARGET_AR)" NM="$(TARGET_NM)" \
 		     OBJCOPY="$(TARGET_OBJCOPY)" OBJDUMP="$(TARGET_OBJDUMP)" \
diff --git a/openpower/package/loadkeys/loadkeys.mk b/openpower/package/loadkeys/loadkeys.mk
index db6cbca..0a05026 100644
--- a/openpower/package/loadkeys/loadkeys.mk
+++ b/openpower/package/loadkeys/loadkeys.mk
@@ -20,9 +20,9 @@
 endef
 
 define LOADKEYS_POST_INSTALL
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/loadkeys/S16-keymap \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/loadkeys/S16-keymap \
 		$(TARGET_DIR)/etc/init.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/loadkeys/backtab-keymap \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/loadkeys/backtab-keymap \
 		$(TARGET_DIR)/etc/kbd/config
 endef
 
diff --git a/openpower/package/occ/occ.mk b/openpower/package/occ/occ.mk
index d10c0f5..17117aa 100644
--- a/openpower/package/occ/occ.mk
+++ b/openpower/package/occ/occ.mk
@@ -4,12 +4,13 @@
 #
 ################################################################################
 
-OCC_VERSION_BRANCH_MASTER_P8 ?= d7efe30d9bee683578c31171af28baf8251ced4e
-OCC_VERSION_BRANCH_MASTER ?= a4e04571d60b58c0c778c870bc215bf467085fb6
+OCC_VERSION_BRANCH_MASTER_P8 ?= f0189405ba8c5bf974a68290bbdeec500e2fb397
+OCC_VERSION_BRANCH_MASTER ?= 4141b5f5fef2ba4b444aabbda1677e7f583cd4e8
 
 OCC_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_VERSION_BRANCH_MASTER),$(OCC_VERSION_BRANCH_MASTER_P8))
 OCC_SITE ?= $(call github,open-power,occ,$(OCC_VERSION))
 OCC_LICENSE = Apache-2.0
+OCC_LICENSE_FILES = src/LICENSE
 
 OCC_INSTALL_IMAGES = YES
 OCC_INSTALL_TARGET = NO
@@ -24,15 +25,15 @@
 
 define OCC_APPLY_PATCHES
        if [ "$(BR2_OPENPOWER_POWER9)" == "y" ]; then \
-           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/package/occ/p9Patches \*.patch; \
-           if [ -d $(BR2_EXTERNAL)/custom/patches/occ/p9Patches ]; then \
-               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/custom/patches/occ/p9Patches \*.patch; \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/occ/p9Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p9Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p9Patches \*.patch; \
            fi; \
        fi; \
        if [ "$(BR2_OPENPOWER_POWER8)" == "y" ]; then \
-           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/package/occ/p8Patches \*.patch; \
-           if [ -d $(BR2_EXTERNAL)/custom/patches/occ/p8Patches ]; then \
-               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL)/custom/patches/occ/p8Patches \*.patch; \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/occ/p8Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p8Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p8Patches \*.patch; \
            fi; \
        fi;
 endef
diff --git a/openpower/package/openpower-ffs/openpower-ffs.mk b/openpower/package/openpower-ffs/openpower-ffs.mk
index ff82950..b2909cf 100644
--- a/openpower/package/openpower-ffs/openpower-ffs.mk
+++ b/openpower/package/openpower-ffs/openpower-ffs.mk
@@ -1,6 +1,7 @@
 OPENPOWER_FFS_VERSION ?= 2e790b8409071ca15767d822dabfa8e60f12c6e2
 OPENPOWER_FFS_SITE ?= $(call github,open-power,ffs,$(OPENPOWER_FFS_VERSION))
 OPENPOWER_FFS_LICENSE = GPLv2+
+OPENPOWER_FFS_LICENSE_FILES = LICENSE
 
 define HOST_OPENPOWER_FFS_BUILD_CMDS
 	cd $(@D) ; \
diff --git a/openpower/package/openpower-mrw/openpower-mrw.mk b/openpower/package/openpower-mrw/openpower-mrw.mk
index ccd059f..e70cbd6 100644
--- a/openpower/package/openpower-mrw/openpower-mrw.mk
+++ b/openpower/package/openpower-mrw/openpower-mrw.mk
@@ -8,6 +8,7 @@
 OPENPOWER_MRW_SITE = $(call github,open-power,openpower-mrw,$(OPENPOWER_MRW_VERSION))
 
 OPENPOWER_MRW_LICENSE = Apache-2.0
+OPENPOWER_MRW_LICENSE_FILES = LICENSE
 OPENPOWER_MRW_DEPENDENCIES =
 
 OPENPOWER_MRW_INSTALL_IMAGES = YES
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index b39e3b8..3750609 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_ZAIUS_XML if (BR2_OPENPOWER_XML_PACKAGE = "zaius-xml")
         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")
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index ef72704..70e96a9 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -12,6 +12,7 @@
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
+OPENPOWER_PNOR_LICENSE_FILES = LICENSE
 OPENPOWER_PNOR_DEPENDENCIES = hostboot hostboot-binaries $(XML_PACKAGE) skiboot host-openpower-ffs occ capp-ucode
 
 ifeq ($(BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD),n)
diff --git a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
index 070e4dc..a94d8c6 100644
--- a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
+++ b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
@@ -4,10 +4,10 @@
 #
 ################################################################################
 
-P8_PORE_BINUTILS_VERSION ?= 1d6a41d5a5104ce9bc8b6ad59f8e58c3a50824a4
+P8_PORE_BINUTILS_VERSION ?= 91069b732e4c253055cd94fff6ad179116563df9
 P8_PORE_BINUTILS_SITE ?= $(call github,open-power,p8-pore-binutils,$(P8_PORE_BINUTILS_VERSION))
 P8_PORE_BINUTILS_LICENSE = GPLv3+
-
+P8_PORE_BINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB
 HOST_P8_PORE_BINUTILS_DEPENDENCIES = host-binutils
 
 P8_PORE_BINUTILS_DIR = $(STAGING_DIR)/p8-pore-binutils
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
index 2f13eb5..c39a7b8 100644
--- a/openpower/package/petitboot/petitboot.mk
+++ b/openpower/package/petitboot/petitboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PETITBOOT_VERSION = v1.3.2
+PETITBOOT_VERSION = v1.4.0
 PETITBOOT_SITE ?= $(call github,open-power,petitboot,$(PETITBOOT_VERSION))
 PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex lvm2
 PETITBOOT_LICENSE = GPLv2
@@ -17,7 +17,7 @@
 	      --localstatedir=/var \
 	      HOST_PROG_KEXEC=/usr/sbin/kexec \
 	      HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot \
-	      $(if $(BR2_PACKAGE_BUSYBOX),--with-tftp=busybox)
+	      $(if $(BR2_PACKAGE_BUSYBOX),--with-tftp=busybox --enable-busybox)
 
 PETITBOOT_AUTORECONF_ENV += PETITBOOT_VERSION=`cat $(PETITBOOT_VERSION_FILE) | cut -d '-' -f 2-`
 
@@ -49,19 +49,19 @@
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
 
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S14silence-console \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/S14silence-console \
 		$(TARGET_DIR)/etc/init.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S15pb-discover \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/S15pb-discover \
 		$(TARGET_DIR)/etc/init.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/kexec-restart \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/kexec-restart \
 		$(TARGET_DIR)/usr/sbin/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/petitboot-console-ui.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/petitboot-console-ui.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/removable-event-poll.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/removable-event-poll.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/63-md-raid-arrays.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/63-md-raid-arrays.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/65-md-incremental.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/65-md-incremental.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
 
 	ln -sf /usr/sbin/pb-udhcpc \
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index 5ad1323..23ac15c 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -33,16 +33,16 @@
 		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 	fi; \
 else \
-	if ls $$(BR2_EXTERNAL)/package/$(1)/*.patch 2>/dev/null; then sha512sum \
-		$$(BR2_EXTERNAL)/package/$(1)/*.patch | sha512sum | \
+	if ls $$(BR2_EXTERNAL_OP_BUILD_PATH)/package/$(1)/*.patch 2>/dev/null; then sha512sum \
+		$$(BR2_EXTERNAL_OP_BUILD_PATH)/package/$(1)/*.patch | sha512sum | \
 		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 	fi; \
 fi
 
 # If this is for linux, also check openpower/linux
 if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
-	if ls $$(BR2_EXTERNAL)/$(1)/*.patch 2>/dev/null; then sha512sum \
-		$$(BR2_EXTERNAL)/$(1)/*.patch | sha512sum | \
+	if ls $$(BR2_EXTERNAL_OP_BUILD_PATH)/$(1)/*.patch 2>/dev/null; then sha512sum \
+		$$(BR2_EXTERNAL_OP_BUILD_PATH)/$(1)/*.patch | sha512sum | \
 		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 	fi; \
 fi;
@@ -97,7 +97,7 @@
 	fi; \
 fi; \
 \
-cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; git describe --all --dirty | \
 	if grep -e "-dirty"; then \
 	echo -n "-opdirty" >> $$($(2)_VERSION_FILE); \
 	fi; \
@@ -170,13 +170,13 @@
 if [ "$$(OPBUILD_VERSION)" != '' ]; then \
 	echo -n "$$(OPBUILD_VERSION)" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 else \
-cd "$$(BR2_EXTERNAL)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
 	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
 	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 fi
 
 # Check if op-build is dirty
-cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
 	xargs echo -n >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
 
 # Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
@@ -185,10 +185,10 @@
 # Add a specific line for op-build if it has been overwritten
 if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
 echo -n "	op-build-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-cd "$$(BR2_EXTERNAL)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
 	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
 	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
 	xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 fi
 
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index 9a9d60e..6c194b4 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.4.2" if BR2_SKIBOOT_LATEST_VERSION
+	default "skiboot-5.4.3" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/package/skiboot/skiboot.mk b/openpower/package/skiboot/skiboot.mk
index 8ff9159..b14855f 100644
--- a/openpower/package/skiboot/skiboot.mk
+++ b/openpower/package/skiboot/skiboot.mk
@@ -8,6 +8,7 @@
 
 SKIBOOT_SITE = $(call github,open-power,skiboot,$(SKIBOOT_VERSION))
 SKIBOOT_LICENSE = Apache-2.0
+SKIBOOT_LICENSE_FILES = LICENCE
 SKIBOOT_INSTALL_IMAGES = YES
 SKIBOOT_INSTALL_TARGET = NO
 
diff --git a/openpower/package/witherspoon-xml/witherspoon.mk b/openpower/package/witherspoon-xml/witherspoon.mk
index 2975378..de0c416 100644
--- a/openpower/package/witherspoon-xml/witherspoon.mk
+++ b/openpower/package/witherspoon-xml/witherspoon.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-WITHERSPOON_XML_VERSION ?=5cfb191919a40752001e5918fb84dd64a783a00a
+WITHERSPOON_XML_VERSION ?= 4f0049c31eefbe9fca907b17cc3e306d8e0ecd65
 WITHERSPOON_XML_SITE ?= $(call github,open-power,witherspoon-xml,$(WITHERSPOON_XML_VERSION))
 
 WITHERSPOON_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/zaius-xml/Config.in b/openpower/package/zaius-xml/Config.in
new file mode 100755
index 0000000..b335ff3
--- /dev/null
+++ b/openpower/package/zaius-xml/Config.in
@@ -0,0 +1,23 @@
+config BR2_PACKAGE_ZAIUS_XML
+        bool "zaius_xml"
+        default y if (BR2_OPENPOWER_CONFIG_NAME = "zaius")
+        help
+            Utilities for building xml and the targeting binary image
+
+config BR2_ZAIUS_SYSTEM_XML_FILENAME
+        string "Zaius targeting system xml filename"
+        default ""
+        help
+            Defines the name of the system XML filename to be used when creating targeting binary image
+
+config BR2_ZAIUS_MRW_XML_FILENAME
+        string "Zaius targeting mrw xml filename"
+        default ""
+        help
+            Defines the name of the mrw XML filename to be used when creating targeting binary image
+
+config BR2_ZAIUS_BIOS_XML_FILENAME
+        string "Zaius BIOS metadata XML filename"
+        default ""
+        help
+            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/zaius-xml/zaius.mk b/openpower/package/zaius-xml/zaius.mk
new file mode 100644
index 0000000..5385c88
--- /dev/null
+++ b/openpower/package/zaius-xml/zaius.mk
@@ -0,0 +1,89 @@
+################################################################################
+#
+# zaius_xml
+#
+################################################################################
+
+ZAIUS_XML_VERSION ?= b877062971163638c8e4348be10dc9c5ebbe52ee
+ZAIUS_XML_SITE ?= $(call github,open-power,zaius-xml,$(ZAIUS_XML_VERSION))
+
+ZAIUS_XML_LICENSE = Apache-2.0
+ZAIUS_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+
+ZAIUS_XML_INSTALL_IMAGES = YES
+ZAIUS_XML_INSTALL_TARGET = YES
+
+MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
+MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
+
+# Defines for BIOS metadata creation
+BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
+ZAIUS_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_ZAIUS_BIOS_XML_FILENAME)
+BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
+PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
+PETITBOOT_BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
+PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
+    $(TARGET_DIR)/usr/share/bios_metadata.xml
+
+define ZAIUS_XML_BUILD_CMDS
+        # copy the zaius xml where the common lives
+        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
+
+        # generate the system mrw xml
+        perl -I $(MRW_HB_TOOLS) \
+        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/zaius.xml
+
+        # filter out unwanted attributes
+        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)/$(BR2_ZAIUS_MRW_XML_FILENAME)
+
+        cp $(MRW_SCRATCH)/$(BR2_ZAIUS_MRW_XML_FILENAME).updated \
+            $(MRW_SCRATCH)/$(BR2_ZAIUS_MRW_XML_FILENAME)
+
+        # merge in any system specific attributes, hostboot attributes
+        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_ZAIUS_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_ZAIUS_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
+
+        # creating the targeting binary
+        $(MRW_HB_TOOLS)/xmltohb.pl  \
+            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
+            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
+            --src-output-dir=none \
+            --img-output-dir=$(MRW_HB_TOOLS)/ \
+            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
+            --bios-xml-file=$(ZAIUS_BIOS_XML_CONFIG_FILE) \
+            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
+            --bios-output-file=$(BIOS_XML_METADATA_FILE)
+
+        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
+        xsltproc -o \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_XSLT_FILE) \
+            $(BIOS_XML_METADATA_FILE)
+endef
+
+define ZAIUS_XML_INSTALL_IMAGES_CMDS
+        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
+endef
+
+define ZAIUS_XML_INSTALL_TARGET_CMDS
+        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
+        $(INSTALL) -D -m 0644 \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/scripts/firmware-whitelist b/openpower/scripts/firmware-whitelist
index e4e4bd2..2d0fc05 100755
--- a/openpower/scripts/firmware-whitelist
+++ b/openpower/scripts/firmware-whitelist
@@ -6,7 +6,7 @@
 # slash is required.
 whitelist=(     'acenic/'
                 'bnx2/'
-                'bnx2x/bnx2x-e2-7.12.30.0.fw'
+                'bnx2x/bnx2x-e2-7.13.1.0.fw'
                 'cxgb4/'
                 'cxgb3/'
                 'e100/'
diff --git a/openpower/scripts/release-notes b/openpower/scripts/release-notes
index 402c88d..2bf1b90 100755
--- a/openpower/scripts/release-notes
+++ b/openpower/scripts/release-notes
@@ -31,6 +31,12 @@
     'barreleye-xml'  => { REPO => "http://github.com/open-power/barreleye-xml" ,
                     DIR => "openpower/package/barreleye-xml",
                     PACKAGE => "BARRELEYE_XML" },
+    'witherspoon-xml'  => { REPO => "http://github.com/open-power/witherspoon-xml" ,
+                    DIR => "openpower/package/witherspoon-xml",
+                    PACKAGE => "WITHERSPOON_XML" },
+    'zaius-xml'  => { REPO => "http://github.com/open-power/zaius-xml" ,
+                    DIR => "openpower/package/zaius-xml",
+                    PACKAGE => "ZAIUS_XML" },
     'petitboot'     => { REPO => "http://github.com/open-power/petitboot" ,
                     DIR => "openpower/package/petitboot",
                     PACKAGE => "PETITBOOT" },
@@ -77,11 +83,22 @@
         print "Old $1:$3\n";
         $old_level->{$1} = $3;
     }
+    if ($line =~ m/-([^[:space:]]*)_VERSION_BRANCH_MASTER([[:space:]]*\?*=[[:space:]]*)(.*)/)
+    {
+        print "Old $1:$3\n";
+        $old_level->{$1} = $3;
+    }
     if ($line =~ m/\+([^[:space:]]*)_VERSION([[:space:]]*\?*=[[:space:]]*)(.*)/)
     {
         print "New $1:$3\n";
         $new_level->{$1} = $3;
     }
+    if ($line =~ m/\+([^[:space:]]*)_VERSION_BRANCH_MASTER([[:space:]]*\?*=[[:space:]]*)(.*)/)
+    {
+        print "New $1:$3\n";
+        $new_level->{$1} = $3;
+    }
+
     if ($line =~ m/-[[:space:]]*default[[:space:]]*"([^[:space:]]*)"[[:space:]]*if[[:space:]]BR2_([^[:space:]]*)_LATEST_VERSION/)
     {
         print "Old $2:$1\n";
