Merge pull request #2 from open-power/master

Bringing fork up to date
diff --git a/.gitmodules b/.gitmodules
index 324fa00..3152edd 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
 [submodule "buildroot"]
 	path = buildroot
-	branch = 2017.02-op-build
+	branch = 2017.08-op-build
 	url = https://github.com/open-power/buildroot
diff --git a/buildroot b/buildroot
index 23118ce..5e23247 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit 23118cea706cc738c334b868606b19bfda016705
+Subproject commit 5e232471b49a2e6c9a79de04e655f3c298fcfa1d
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index d3e3943..c3b4006 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -26,13 +24,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 13d4990..92463ea 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
@@ -11,11 +8,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -26,13 +24,14 @@
 BR2_PACKAGE_LINUX_FIRMWARE_RADEON=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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO=y
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 46f7956..a2ada30 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -26,13 +24,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index 172a8f7..a90a182 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -26,13 +24,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index f4ebe50..387f10e 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -1,10 +1,7 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OP_BUILD_PATH)/patches/habanero-patches"
-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"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -13,11 +10,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -27,13 +25,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/hostboot/p9dsu.config b/openpower/configs/hostboot/p9dsu.config
index 52ff4c9..e254881 100644
--- a/openpower/configs/hostboot/p9dsu.config
+++ b/openpower/configs/hostboot/p9dsu.config
@@ -1,6 +1,8 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2500
+# The BMC MBOX Protocol is used to access PNOR
+unset SFC_IS_AST2500
 unset SFC_IS_AST2400
+set   PNORDD_IS_BMCMBOX
+unset PNORDD_IS_SFC
 unset BMC_DOES_SFC_INIT
 unset SFC_IS_IBM_DPSS
 set   ALLOW_MICRON_PNOR
@@ -15,12 +17,12 @@
 unset 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_HW
+set 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_HW
+set PVPD_WRITE_TO_HW
 set PVPD_READ_FROM_PNOR
 set PVPD_WRITE_TO_PNOR
 unset CDIMM_FORMAT_FOR_CVPD
@@ -29,10 +31,11 @@
 set GPIODD
 unset PALMETTO_VDDR
 
-# Enable SBE updates
+# Enable Consecutive SBE Updates
+set   SBE_UPDATE_CONSECUTIVE
 unset SBE_UPDATE_INDEPENDENT
 unset SBE_UPDATE_SEQUENTIAL
-set SBE_UPDATE_SIMULTANEOUS
+unset SBE_UPDATE_SIMULTANEOUS
 unset NO_SBE_UPDATES
 
 unset PCIE_HOTPLUG_CONTROLLER
@@ -45,24 +48,26 @@
 
 # Compile in hostboot runtime PRD
 set HBRT_PRD
-unset HTMGT
-unset START_OCC_DURING_BOOT
+
+# Compile in hb rt HTMGT : Load/Start OCC
+set HTMGT
+set START_OCC_DURING_BOOT
+unset CONSOLE_OUTPUT_OCC_COMM
 
 #PNOR flags
 unset PNOR_TWO_SIDE_SUPPORT
 
 set 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
+# Enable Checkstop Analysis for both
+#   Runtime and IPLtime scenarios
+set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # set for trace debug to console
 set CONSOLE_OUTPUT_TRACE
+set CONSOLE_OUTPUT_FFDCDISPLAY
 
-unset CONFIG_SECUREBOOT
-unset CONFIG_TPMDD
-unset CONFIG_TPM_NUVOTON
+unset SECUREBOOT
+unset TPMDD
+unset TPM_NUVOTON
diff --git a/openpower/configs/hostboot/romulus.config b/openpower/configs/hostboot/romulus.config
index 3d8aaad..486017d 100755
--- a/openpower/configs/hostboot/romulus.config
+++ b/openpower/configs/hostboot/romulus.config
@@ -1,6 +1,8 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2500
+# The BMC MBOX Protocol is used to access PNOR
+unset SFC_IS_AST2500
 unset SFC_IS_AST2400
+set   PNORDD_IS_BMCMBOX
+unset PNORDD_IS_SFC
 unset BMC_DOES_SFC_INIT
 unset SFC_IS_IBM_DPSS
 set   ALLOW_MICRON_PNOR
@@ -29,10 +31,11 @@
 set GPIODD
 unset PALMETTO_VDDR
 
-# Enable SBE updates
+# Enable Consecutive SBE Updates
+set   SBE_UPDATE_CONSECUTIVE
 unset SBE_UPDATE_INDEPENDENT
 unset SBE_UPDATE_SEQUENTIAL
-set SBE_UPDATE_SIMULTANEOUS
+unset SBE_UPDATE_SIMULTANEOUS
 unset NO_SBE_UPDATES
 
 unset PCIE_HOTPLUG_CONTROLLER
@@ -45,8 +48,8 @@
 
 # Compile in hostboot runtime PRD
 set HBRT_PRD
-unset HTMGT
-unset START_OCC_DURING_BOOT
+set HTMGT
+set START_OCC_DURING_BOOT
 
 #PNOR flags
 unset PNOR_TWO_SIDE_SUPPORT
@@ -57,9 +60,6 @@
 unset ENABLE_CHECKSTOP_ANALYSIS
 unset IPLTIME_CHECKSTOP_ANALYSIS
 
-# Hostboot will detect hardware changes
-unset HOST_HCDB_SUPPORT
-
 # set for trace debug to console
 set CONSOLE_OUTPUT_TRACE
 
diff --git a/openpower/configs/hostboot/witherspoon.config b/openpower/configs/hostboot/witherspoon.config
index a3380fb..106b303 100755
--- a/openpower/configs/hostboot/witherspoon.config
+++ b/openpower/configs/hostboot/witherspoon.config
@@ -14,7 +14,7 @@
 set MVPD_READ_FROM_PNOR
 set MVPD_WRITE_TO_PNOR
 set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
+unset DJVPD_WRITE_TO_HW
 set DJVPD_READ_FROM_PNOR
 set DJVPD_WRITE_TO_PNOR
 set MEMVPD_READ_FROM_HW
@@ -31,10 +31,11 @@
 set GPIODD
 unset PALMETTO_VDDR
 
-# Disable SBE updates
+# Enable Consecutive SBE Updates
+set   SBE_UPDATE_CONSECUTIVE
 unset SBE_UPDATE_INDEPENDENT
 unset SBE_UPDATE_SEQUENTIAL
-set SBE_UPDATE_SIMULTANEOUS
+unset SBE_UPDATE_SIMULTANEOUS
 unset NO_SBE_UPDATES
 
 unset PCIE_HOTPLUG_CONTROLLER
@@ -58,17 +59,15 @@
 
 set 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
+# Enable Checkstop Analysis for both
+#   Runtime and IPLtime scenarios
+set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # set for trace debug to console
 unset CONSOLE_OUTPUT_TRACE
 set CONSOLE_OUTPUT_FFDCDISPLAY
 
-unset CONFIG_SECUREBOOT
-unset CONFIG_TPMDD
-unset CONFIG_TPM_NUVOTON
+# Terminate Hostboot when errors occur in manufacturing mode
+#   (relies on BMC to not trigger reboot)
+unset HANG_ON_MFG_SRC_TERM
diff --git a/openpower/configs/hostboot/zaius.config b/openpower/configs/hostboot/zaius.config
index 7f76996..6e03400 100755
--- a/openpower/configs/hostboot/zaius.config
+++ b/openpower/configs/hostboot/zaius.config
@@ -14,7 +14,7 @@
 set MVPD_READ_FROM_PNOR
 set MVPD_WRITE_TO_PNOR
 set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
+unset DJVPD_WRITE_TO_HW
 set DJVPD_READ_FROM_PNOR
 set DJVPD_WRITE_TO_PNOR
 set MEMVPD_READ_FROM_HW
@@ -31,10 +31,11 @@
 set GPIODD
 unset PALMETTO_VDDR
 
-# Disable SBE updates
+# Enable Consecutive SBE Updates
+set   SBE_UPDATE_CONSECUTIVE
 unset SBE_UPDATE_INDEPENDENT
 unset SBE_UPDATE_SEQUENTIAL
-set SBE_UPDATE_SIMULTANEOUS
+unset SBE_UPDATE_SIMULTANEOUS
 unset NO_SBE_UPDATES
 
 unset PCIE_HOTPLUG_CONTROLLER
@@ -58,12 +59,9 @@
 
 set 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
+# Enable IPLtime + Runtime Checktop Analysis
+set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # set for trace debug to console
 unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/linux/pseries_skiroot_defconfig b/openpower/configs/linux/pseries_skiroot_defconfig
new file mode 100644
index 0000000..fba487a
--- /dev/null
+++ b/openpower/configs/linux/pseries_skiroot_defconfig
@@ -0,0 +1,245 @@
+CONFIG_PPC64=y
+CONFIG_ALTIVEC=y
+CONFIG_VSX=y
+CONFIG_NR_CPUS=2048
+CONFIG_CPU_LITTLE_ENDIAN=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_CROSS_MEMORY_ATTACH is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=20
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_RD_GZIP is not set
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_JUMP_LABEL=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_SIG=y
+CONFIG_MODULE_SIG_FORCE=y
+CONFIG_MODULE_SIG_SHA512=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_PPC_SPLPAR=y
+CONFIG_PPC_SMLPAR=y
+CONFIG_KVM_GUEST=y
+CONFIG_UDBG_RTAS_CONSOLE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_GEN_RTC=y
+CONFIG_HZ_100=y
+CONFIG_KEXEC=y
+CONFIG_IRQ_ALL_CPUS=y
+# CONFIG_COMPACTION is not set
+# CONFIG_MIGRATION is not set
+# CONFIG_BOUNCE is not set
+CONFIG_PPC_64K_PAGES=y
+CONFIG_SCHED_SMT=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=tty0 console=hvc0 quiet"
+# CONFIG_SECCOMP is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_NET_IPIP=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_IPV6 is not set
+CONFIG_DNS_RESOLVER=y
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_MTD=m
+CONFIG_MTD_POWERNV_FLASH=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_EEPROM_AT24=y
+# CONFIG_CXL is not set
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BE2ISCSI=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_IBMVSCSI=m
+CONFIG_SCSI_IBMVFC=m
+CONFIG_SCSI_SYM53C8XX_2=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_VIRTIO=m
+CONFIG_SCSI_DH=y
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_ATA=y
+CONFIG_SATA_AHCI=y
+# CONFIG_ATA_SFF is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_NETCONSOLE=m
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_VIRTIO_NET=m
+CONFIG_VORTEX=m
+CONFIG_ACENIC=m
+CONFIG_ACENIC_OMIT_TIGON_I=y
+CONFIG_PCNET32=m
+CONFIG_TIGON3=y
+CONFIG_BNX2X=m
+CONFIG_CHELSIO_T1=y
+CONFIG_BE2NET=m
+CONFIG_S2IO=m
+CONFIG_IBMVETH=m
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_MYRI10GE=m
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_SFC=m
+# CONFIG_WLAN is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_MISC=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_HVC_CONSOLE=y
+CONFIG_HVC_RTAS=y
+CONFIG_HVC_UDBG=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=y
+CONFIG_IPMI_DEVICE_INTERFACE=y
+CONFIG_IPMI_POWERNV=y
+CONFIG_HW_RANDOM=y
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=1024
+CONFIG_TCG_TIS_I2C_NUVOTON=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_DRM=y
+CONFIG_DRM_RADEON=y
+CONFIG_DRM_AST=m
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_OF=y
+CONFIG_FB_MATROX=y
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_LOGO=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB=y
+CONFIG_USB_MON=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_HCD_PPC_OF is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_PCI=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXT4_FS=m
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_AUTOFS4_FS=m
+CONFIG_ISO9660_FS=m
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_PROC_KCORE=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=m
+CONFIG_CIFS=m
+# CONFIG_CIFS_DEBUG is not set
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_UTF8=y
+CONFIG_CRC16=y
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
+CONFIG_PRINTK_TIME=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_SCHEDSTATS=y
+# CONFIG_FTRACE is not set
+CONFIG_XMON=y
+CONFIG_XMON_DEFAULT=y
+CONFIG_SECURITY=y
+CONFIG_IMA=y
+CONFIG_EVM=y
+# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_HW is not set
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index c0c6bad..3dcaa26 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -1,14 +1,12 @@
 CONFIG_PPC64=y
 CONFIG_ALTIVEC=y
 CONFIG_VSX=y
-CONFIG_SMP=y
 CONFIG_NR_CPUS=2048
 CONFIG_CPU_LITTLE_ENDIAN=y
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
 # CONFIG_CROSS_MEMORY_ATTACH is not set
-CONFIG_IRQ_DOMAIN_DEBUG=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_TASKSTATS=y
@@ -34,6 +32,7 @@
 CONFIG_MODULE_SIG=y
 CONFIG_MODULE_SIG_FORCE=y
 CONFIG_MODULE_SIG_SHA512=y
+CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_PPC_PSERIES is not set
@@ -72,13 +71,11 @@
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_ATA_OVER_ETH=m
 CONFIG_VIRTIO_BLK=m
 CONFIG_BLK_DEV_NVME=m
 CONFIG_EEPROM_AT24=y
 # CONFIG_CXL is not set
 CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
 CONFIG_BLK_DEV_SR=m
 CONFIG_BLK_DEV_SR_VENDOR=y
 CONFIG_CHR_DEV_SG=m
@@ -95,8 +92,6 @@
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_SAS=m
 CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
 CONFIG_SCSI_IPR=m
 # CONFIG_SCSI_IPR_TRACE is not set
 # CONFIG_SCSI_IPR_DUMP is not set
@@ -124,13 +119,8 @@
 CONFIG_DM_MIRROR=m
 CONFIG_DM_ZERO=m
 CONFIG_DM_MULTIPATH=m
-CONFIG_NETCONSOLE=m
-CONFIG_TUN=m
-CONFIG_VIRTIO_NET=m
-CONFIG_VORTEX=m
 CONFIG_ACENIC=m
 CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_PCNET32=m
 CONFIG_TIGON3=y
 CONFIG_BNX2X=m
 CONFIG_CHELSIO_T1=y
@@ -148,6 +138,7 @@
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
+# CONFIG_USB_NET_DRIVERS is not set
 # CONFIG_WLAN is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
@@ -198,7 +189,6 @@
 CONFIG_XFS_POSIX_ACL=y
 CONFIG_BTRFS_FS=m
 CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_AUTOFS4_FS=m
 CONFIG_ISO9660_FS=m
 CONFIG_UDF_FS=m
 CONFIG_MSDOS_FS=m
@@ -206,11 +196,7 @@
 CONFIG_PROC_KCORE=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=m
-CONFIG_CIFS=m
-# CONFIG_CIFS_DEBUG is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
@@ -223,7 +209,6 @@
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
-CONFIG_LOCKUP_DETECTOR=y
 CONFIG_SCHEDSTATS=y
 # CONFIG_FTRACE is not set
 CONFIG_XMON=y
diff --git a/openpower/configs/linux/skiroot_p9_defconfig b/openpower/configs/linux/skiroot_p9_defconfig
index 1c6a4c5..576907c 100644
--- a/openpower/configs/linux/skiroot_p9_defconfig
+++ b/openpower/configs/linux/skiroot_p9_defconfig
@@ -1,14 +1,12 @@
 CONFIG_PPC64=y
 CONFIG_ALTIVEC=y
 CONFIG_VSX=y
-CONFIG_SMP=y
 CONFIG_NR_CPUS=2048
 CONFIG_CPU_LITTLE_ENDIAN=y
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
 # CONFIG_CROSS_MEMORY_ATTACH is not set
-CONFIG_IRQ_DOMAIN_DEBUG=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_TASKSTATS=y
@@ -29,11 +27,13 @@
 CONFIG_PERF_EVENTS=y
 # CONFIG_COMPAT_BRK is not set
 CONFIG_JUMP_LABEL=y
+CONFIG_STRICT_KERNEL_RWX=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_SIG=y
 CONFIG_MODULE_SIG_FORCE=y
 CONFIG_MODULE_SIG_SHA512=y
+CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_PPC_PSERIES is not set
@@ -77,7 +77,6 @@
 CONFIG_EEPROM_AT24=y
 # CONFIG_CXL is not set
 CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
 CONFIG_BLK_DEV_SR=m
 CONFIG_BLK_DEV_SR_VENDOR=y
 CONFIG_CHR_DEV_SG=m
@@ -120,26 +119,28 @@
 CONFIG_DM_MIRROR=m
 CONFIG_DM_ZERO=m
 CONFIG_DM_MULTIPATH=m
-CONFIG_NETCONSOLE=m
-CONFIG_TUN=m
-CONFIG_VIRTIO_NET=m
 CONFIG_ACENIC=m
 CONFIG_ACENIC_OMIT_TIGON_I=y
 CONFIG_TIGON3=y
 CONFIG_BNX2X=m
 CONFIG_CHELSIO_T1=y
 CONFIG_BE2NET=m
+CONFIG_S2IO=m
 CONFIG_E100=m
 CONFIG_E1000=m
 CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
+CONFIG_I40E=m
 CONFIG_MLX4_EN=m
 CONFIG_MLX5_CORE=m
 CONFIG_MLX5_CORE_EN=y
+CONFIG_MYRI10GE=m
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
+# CONFIG_USB_NET_DRIVERS is not set
 # CONFIG_WLAN is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
@@ -169,6 +170,8 @@
 # CONFIG_BACKLIGHT_GENERIC is not set
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_USB_HIDDEV=y
 CONFIG_USB=y
 CONFIG_USB_MON=y
@@ -189,7 +192,6 @@
 CONFIG_XFS_POSIX_ACL=y
 CONFIG_BTRFS_FS=m
 CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_AUTOFS4_FS=m
 CONFIG_ISO9660_FS=m
 CONFIG_UDF_FS=m
 CONFIG_MSDOS_FS=m
@@ -198,6 +200,7 @@
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 # CONFIG_MISC_FILESYSTEMS is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
@@ -210,7 +213,11 @@
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_HARDLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_WQ_WATCHDOG=y
 CONFIG_SCHEDSTATS=y
 # CONFIG_FTRACE is not set
 CONFIG_XMON=y
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index cf7a6fd..34024c1 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
@@ -14,7 +11,7 @@
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -24,13 +21,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
index c00a5fd..3e10c2a 100644
--- a/openpower/configs/openpower_p9_mambo_defconfig
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TARGET_GENERIC_HOSTNAME="skiroot-p9"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
@@ -14,7 +11,7 @@
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -24,13 +21,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/p9dsu_defconfig b/openpower/configs/p9dsu_defconfig
index ca84442..09f359e 100644
--- a/openpower/configs/p9dsu_defconfig
+++ b/openpower/configs/p9dsu_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
@@ -27,13 +25,15 @@
 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_LINUX_FIRMWARE_QLOGIC_2XXX=y
 BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
@@ -42,7 +42,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="p9dsu.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="p9dsu-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="1c5c5b43ace53371671ca189f7fae16fdf8fe3ed"
+BR2_OPENPOWER_MACHINE_XML_VERSION="c6d2767a13f0e747bc58dd1d2d6936fc2679e276"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="p9dsu.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="P9DSU_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="P9DSU_hb.mrw.xml"
@@ -53,8 +53,6 @@
 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_WOFDATA_FILENAME="wof_output"
-BR2_WOFDATA_BINARY_FILENAME="wofdata.bin.ecc"
 BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
 BR2_OPENPOWER_TARGETING_BIN_FILENAME="P9DSU_HB.targeting.bin"
 BR2_OPENPOWER_TARGETING_ECC_FILENAME="P9DSU_HB.targeting.bin.ecc"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 41691b7..efb740e 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -1,10 +1,7 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
 BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OP_BUILD_PATH)/patches/palmetto-patches"
-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"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
@@ -16,7 +13,7 @@
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -26,13 +23,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
diff --git a/openpower/configs/pseries_defconfig b/openpower/configs/pseries_defconfig
new file mode 100644
index 0000000..5a07724
--- /dev/null
+++ b/openpower/configs/pseries_defconfig
@@ -0,0 +1,54 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+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_SYSTEM_ENABLE_NLS=y
+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.13.7"
+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_OP_BUILD_PATH)/configs/linux/pseries_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
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_IPMITOOL_USB=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_LRZSZ=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+# BR2_PACKAGE_HOSTBOOT is not set
+# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
+# BR2_PACKAGE_MACHINE_XML is not set
+# BR2_PACKAGE_OPENPOWER_PNOR is not set
+BR2_OPENPOWER_CONFIG_NAME="openpower-firenze"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+# BR2_PACKAGE_HOST_P8_PORE_BINUTILS is not set
+# BR2_PACKAGE_OCC is not set
+# BR2_PACKAGE_CAPP_UCODE is not set
+BR2_PACKAGE_LOADKEYS=y
+# BR2_PACKAGE_IMA_CATALOG is not set
diff --git a/openpower/configs/romulus_defconfig b/openpower/configs/romulus_defconfig
index 6f1540a..21f026f 100644
--- a/openpower/configs/romulus_defconfig
+++ b/openpower/configs/romulus_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
@@ -27,13 +25,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
@@ -42,7 +41,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="romulus.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="romulus-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="301279cbdb3595ad1bbdce4d9d2189db0470a62a"
+BR2_OPENPOWER_MACHINE_XML_VERSION="01469bcb75751ce0b02468fbef0c392006ea7ba1"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="romulus.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="ROMULUS_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="ROMULUS_hb.mrw.xml"
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index 309fc03..ced1173 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
@@ -27,13 +25,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
@@ -42,7 +41,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="witherspoon.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="witherspoon-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="d0f86cf46a99800c6f15a4e650701da141216940"
+BR2_OPENPOWER_MACHINE_XML_VERSION="785c625a2a06cf080cff4cafb4019173c4a17eb0"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="witherspoon.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="WITHERSPOON_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="WITHERSPOON_hb.mrw.xml"
@@ -53,14 +52,14 @@
 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_WOFDATA_FILENAME="wof_output"
-BR2_WOFDATA_BINARY_FILENAME="wofdata.bin.ecc"
 BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
 BR2_OPENPOWER_TARGETING_BIN_FILENAME="WITHERSPOON_HB.targeting.bin"
 BR2_OPENPOWER_TARGETING_ECC_FILENAME="WITHERSPOON_HB.targeting.bin.ecc"
 BR2_PACKAGE_PETITBOOT=y
 BR2_PACKAGE_PETITBOOT_MTD=y
 BR2_OCC_BIN_FILENAME="occ.bin"
+BR2_OCC_GPU_BIN_FILENAME="gpu_gpe1.bin"
+BR2_OCC_GPU_BIN_BUILD=y
 BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_PACKAGE_LOADKEYS=y
 BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
index 2657629..0cc79c9 100644
--- a/openpower/configs/zaius_defconfig
+++ b/openpower/configs/zaius_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
@@ -12,11 +9,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
@@ -27,13 +25,14 @@
 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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
@@ -42,7 +41,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="zaius.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="zaius-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="500647235aab6e2bb5a24dd00baab59083461833"
+BR2_OPENPOWER_MACHINE_XML_VERSION="22ce15f13c4ba78bdbbd4649c3467ace6a640be2"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="zaius.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="ZAIUS_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="ZAIUS_hb.mrw.xml"
@@ -53,8 +52,6 @@
 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_WOFDATA_FILENAME="wof_output"
-BR2_WOFDATA_BINARY_FILENAME="wofdata.bin.ecc"
 BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
 BR2_OPENPOWER_TARGETING_BIN_FILENAME="ZAIUS_HB.targeting.bin"
 BR2_OPENPOWER_TARGETING_ECC_FILENAME="ZAIUS_HB.targeting.bin.ecc"
diff --git a/openpower/configs/zz_defconfig b/openpower/configs/zz_defconfig
index afd6fc7..3ea92c9 100644
--- a/openpower/configs/zz_defconfig
+++ b/openpower/configs/zz_defconfig
@@ -1,9 +1,6 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=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"
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
@@ -11,11 +8,12 @@
 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_SYSTEM_ENABLE_NLS=y
 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.11.2"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7"
 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_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
@@ -26,13 +24,14 @@
 BR2_PACKAGE_LINUX_FIRMWARE_RADEON=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_IPMITOOL_USB=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_LRZSZ=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_TARGET_ROOTFS_CPIO=y
diff --git a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index ba1eeaf..72599e2 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
@@ -5,15 +5,16 @@
 
 Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
 Signed-off-by: Joel Stanley <joel@jms.id.au>
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
 ---
  drivers/usb/host/xhci-pci.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 7b86508ac8cf..c358d5e7ef79 100644
+index 76f392954733..1c8d7dcb3779 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -470,7 +470,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -488,7 +488,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
@@ -22,6 +23,3 @@
  #ifdef CONFIG_PM
  	.driver = {
  		.pm = &usb_hcd_pci_pm_ops
--- 
-2.11.0
-
diff --git a/openpower/linux/0002-powerpc-mce-Move-64-bit-machine-check-code-into-mce..patch b/openpower/linux/0002-powerpc-mce-Move-64-bit-machine-check-code-into-mce..patch
new file mode 100644
index 0000000..6a5783f
--- /dev/null
+++ b/openpower/linux/0002-powerpc-mce-Move-64-bit-machine-check-code-into-mce..patch
@@ -0,0 +1,114 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Michael Ellerman <mpe@ellerman.id.au>
+Date: Wed, 4 Oct 2017 13:42:51 +1100
+Subject: [PATCH 2/4] powerpc/mce: Move 64-bit machine check code into mce.c
+
+We already have mce.c which is built for 64bit and contains other parts
+of the machine check code, so move these bits in there too.
+
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit ccd3cd361341b71ae2afa596f6b470fcb32a916e)
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/kernel/mce.c   | 33 +++++++++++++++++++++++++++++++++
+ arch/powerpc/kernel/traps.c | 33 ---------------------------------
+ 2 files changed, 33 insertions(+), 33 deletions(-)
+
+diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c
+index e0e131e662ed..9b2ea7e71c06 100644
+--- a/arch/powerpc/kernel/mce.c
++++ b/arch/powerpc/kernel/mce.c
+@@ -22,11 +22,14 @@
+ #undef DEBUG
+ #define pr_fmt(fmt) "mce: " fmt
+ 
++#include <linux/hardirq.h>
+ #include <linux/types.h>
+ #include <linux/ptrace.h>
+ #include <linux/percpu.h>
+ #include <linux/export.h>
+ #include <linux/irq_work.h>
++
++#include <asm/machdep.h>
+ #include <asm/mce.h>
+ 
+ static DEFINE_PER_CPU(int, mce_nest_count);
+@@ -446,3 +449,33 @@ uint64_t get_mce_fault_addr(struct machine_check_event *evt)
+ 	return 0;
+ }
+ EXPORT_SYMBOL(get_mce_fault_addr);
++
++/*
++ * This function is called in real mode. Strictly no printk's please.
++ *
++ * regs->nip and regs->msr contains srr0 and ssr1.
++ */
++long machine_check_early(struct pt_regs *regs)
++{
++	long handled = 0;
++
++	__this_cpu_inc(irq_stat.mce_exceptions);
++
++	if (cur_cpu_spec && cur_cpu_spec->machine_check_early)
++		handled = cur_cpu_spec->machine_check_early(regs);
++	return handled;
++}
++
++long hmi_exception_realmode(struct pt_regs *regs)
++{
++	__this_cpu_inc(irq_stat.hmi_exceptions);
++
++	wait_for_subcore_guest_exit();
++
++	if (ppc_md.hmi_exception_early)
++		ppc_md.hmi_exception_early(regs);
++
++	wait_for_tb_resync();
++
++	return 0;
++}
+diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
+index bfcfd9ef09f2..559664e75fb5 100644
+--- a/arch/powerpc/kernel/traps.c
++++ b/arch/powerpc/kernel/traps.c
+@@ -312,39 +312,6 @@ void system_reset_exception(struct pt_regs *regs)
+ 	/* What should we do here? We could issue a shutdown or hard reset. */
+ }
+ 
+-#ifdef CONFIG_PPC64
+-/*
+- * This function is called in real mode. Strictly no printk's please.
+- *
+- * regs->nip and regs->msr contains srr0 and ssr1.
+- */
+-long machine_check_early(struct pt_regs *regs)
+-{
+-	long handled = 0;
+-
+-	__this_cpu_inc(irq_stat.mce_exceptions);
+-
+-	if (cur_cpu_spec && cur_cpu_spec->machine_check_early)
+-		handled = cur_cpu_spec->machine_check_early(regs);
+-	return handled;
+-}
+-
+-long hmi_exception_realmode(struct pt_regs *regs)
+-{
+-	__this_cpu_inc(irq_stat.hmi_exceptions);
+-
+-	wait_for_subcore_guest_exit();
+-
+-	if (ppc_md.hmi_exception_early)
+-		ppc_md.hmi_exception_early(regs);
+-
+-	wait_for_tb_resync();
+-
+-	return 0;
+-}
+-
+-#endif
+-
+ /*
+  * I/O accesses can cause machine checks on powermacs.
+  * Check if the NIP corresponds to the address of a sync
diff --git a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
deleted file mode 100644
index ad7d0a1..0000000
--- a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-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 2/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
-HCD, like a keyboard.
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/usb/host/xhci.c | 20 +++++++++++++++-----
- 1 file changed, 15 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 953fd8f62df0..d17a7039b154 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -689,6 +689,21 @@ void xhci_stop(struct usb_hcd *hcd)
- 
- 	mutex_lock(&xhci->mutex);
- 
-+	/*
-+	 * 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 HCD, like a keyboard.
-+	 */
-+	if (!usb_hcd_is_primary_hcd(hcd)) {
-+		/* The shared_hcd is going to be deallocated shortly (the USB
-+		 * core only calls this function when allocation fails in
-+		 * usb_add_hcd(), or usb_remove_hcd() is called).  So we need
-+		 * to unset xHCI's pointer.  */
-+		xhci->shared_hcd = NULL;
-+		mutex_unlock(&xhci->mutex);
-+		return;
-+	}
-+
- 	if (!(xhci->xhc_state & XHCI_STATE_HALTED)) {
- 		spin_lock_irq(&xhci->lock);
- 
-@@ -699,11 +714,6 @@ void xhci_stop(struct usb_hcd *hcd)
- 		spin_unlock_irq(&xhci->lock);
- 	}
- 
--	if (!usb_hcd_is_primary_hcd(hcd)) {
--		mutex_unlock(&xhci->mutex);
--		return;
--	}
--
- 	xhci_cleanup_msix(xhci);
- 
- 	/* Deleting Compliance Mode Recovery Timer */
--- 
-2.11.0
-
diff --git a/openpower/linux/0003-powerpc-64s-Add-workaround-for-P9-vector-CI-load-iss.patch b/openpower/linux/0003-powerpc-64s-Add-workaround-for-P9-vector-CI-load-iss.patch
new file mode 100644
index 0000000..d5c04ce
--- /dev/null
+++ b/openpower/linux/0003-powerpc-64s-Add-workaround-for-P9-vector-CI-load-iss.patch
@@ -0,0 +1,439 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Michael Neuling <mikey@neuling.org>
+Date: Wed, 4 Oct 2017 13:42:52 +1100
+Subject: [PATCH 3/4] powerpc/64s: Add workaround for P9 vector CI load issue
+
+POWER9 DD2.1 and earlier has an issue where some cache inhibited
+vector load will return bad data. The workaround is two part, one
+firmware/microcode part triggers HMI interrupts when hitting such
+loads, the other part is this patch which then emulates the
+instructions in Linux.
+
+The affected instructions are limited to lxvd2x, lxvw4x, lxvb16x and
+lxvh8x.
+
+When an instruction triggers the HMI, all threads in the core will be
+sent to the HMI handler, not just the one running the vector load.
+
+In general, these spurious HMIs are detected by the emulation code and
+we just return back to the running process. Unfortunately, if a
+spurious interrupt occurs on a vector load that's to normal memory we
+have no way to detect that it's spurious (unless we walk the page
+tables, which is very expensive). In this case we emulate the load but
+we need do so using a vector load itself to ensure 128bit atomicity is
+preserved.
+
+Some additional debugfs emulated instruction counters are added also.
+
+Signed-off-by: Michael Neuling <mikey@neuling.org>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+[mpe: Switch CONFIG_PPC_BOOK3S_64 to CONFIG_VSX to unbreak the build]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit 5080332c2c893118dbc18755f35c8b0131cf0fc4)
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/include/asm/emulated_ops.h |   4 +
+ arch/powerpc/include/asm/paca.h         |   1 +
+ arch/powerpc/include/asm/uaccess.h      |  17 +++
+ arch/powerpc/kernel/exceptions-64s.S    |  16 ++-
+ arch/powerpc/kernel/mce.c               |  30 ++++-
+ arch/powerpc/kernel/traps.c             | 201 ++++++++++++++++++++++++++++++++
+ arch/powerpc/platforms/powernv/smp.c    |   7 ++
+ 7 files changed, 271 insertions(+), 5 deletions(-)
+
+diff --git a/arch/powerpc/include/asm/emulated_ops.h b/arch/powerpc/include/asm/emulated_ops.h
+index f00e10e2a335..651e1354498e 100644
+--- a/arch/powerpc/include/asm/emulated_ops.h
++++ b/arch/powerpc/include/asm/emulated_ops.h
+@@ -55,6 +55,10 @@ extern struct ppc_emulated {
+ 	struct ppc_emulated_entry mfdscr;
+ 	struct ppc_emulated_entry mtdscr;
+ 	struct ppc_emulated_entry lq_stq;
++	struct ppc_emulated_entry lxvw4x;
++	struct ppc_emulated_entry lxvh8x;
++	struct ppc_emulated_entry lxvd2x;
++	struct ppc_emulated_entry lxvb16x;
+ #endif
+ } ppc_emulated;
+ 
+diff --git a/arch/powerpc/include/asm/paca.h b/arch/powerpc/include/asm/paca.h
+index dc88a31cc79a..21061773149b 100644
+--- a/arch/powerpc/include/asm/paca.h
++++ b/arch/powerpc/include/asm/paca.h
+@@ -203,6 +203,7 @@ struct paca_struct {
+ 	 */
+ 	u16 in_mce;
+ 	u8 hmi_event_available;		/* HMI event is available */
++	u8 hmi_p9_special_emu;		/* HMI P9 special emulation */
+ #endif
+ 
+ 	/* Stuff for accurate time accounting */
+diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
+index 9c0e60ca1666..e34f15e727d9 100644
+--- a/arch/powerpc/include/asm/uaccess.h
++++ b/arch/powerpc/include/asm/uaccess.h
+@@ -173,6 +173,23 @@ do {								\
+ 
+ extern long __get_user_bad(void);
+ 
++/*
++ * This does an atomic 128 byte aligned load from userspace.
++ * Upto caller to do enable_kernel_vmx() before calling!
++ */
++#define __get_user_atomic_128_aligned(kaddr, uaddr, err)		\
++	__asm__ __volatile__(				\
++		"1:	lvx  0,0,%1	# get user\n"	\
++		" 	stvx 0,0,%2	# put kernel\n"	\
++		"2:\n"					\
++		".section .fixup,\"ax\"\n"		\
++		"3:	li %0,%3\n"			\
++		"	b 2b\n"				\
++		".previous\n"				\
++		EX_TABLE(1b, 3b)			\
++		: "=r" (err)			\
++		: "b" (uaddr), "b" (kaddr), "i" (-EFAULT), "0" (err))
++
+ #define __get_user_asm(x, addr, err, op)		\
+ 	__asm__ __volatile__(				\
+ 		"1:	"op" %1,0(%2)	# get_user\n"	\
+diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
+index d9dfdf7ede45..0256286d7153 100644
+--- a/arch/powerpc/kernel/exceptions-64s.S
++++ b/arch/powerpc/kernel/exceptions-64s.S
+@@ -1032,6 +1032,8 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
+ 	EXCEPTION_PROLOG_COMMON_3(0xe60)
+ 	addi	r3,r1,STACK_FRAME_OVERHEAD
+ 	BRANCH_LINK_TO_FAR(hmi_exception_realmode) /* Function call ABI */
++	cmpdi	cr0,r3,0
++
+ 	/* Windup the stack. */
+ 	/* Move original HSRR0 and HSRR1 into the respective regs */
+ 	ld	r9,_MSR(r1)
+@@ -1048,10 +1050,15 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
+ 	REST_8GPRS(2, r1)
+ 	REST_GPR(10, r1)
+ 	ld	r11,_CCR(r1)
++	REST_2GPRS(12, r1)
++	bne	1f
+ 	mtcr	r11
+ 	REST_GPR(11, r1)
+-	REST_2GPRS(12, r1)
+-	/* restore original r1. */
++	ld	r1,GPR1(r1)
++	hrfid
++
++1:	mtcr	r11
++	REST_GPR(11, r1)
+ 	ld	r1,GPR1(r1)
+ 
+ 	/*
+@@ -1064,8 +1071,9 @@ hmi_exception_after_realmode:
+ 	EXCEPTION_PROLOG_0(PACA_EXGEN)
+ 	b	tramp_real_hmi_exception
+ 
+-EXC_COMMON_ASYNC(hmi_exception_common, 0xe60, handle_hmi_exception)
+-
++EXC_COMMON_BEGIN(hmi_exception_common)
++EXCEPTION_COMMON(PACA_EXGEN, 0xe60, hmi_exception_common, handle_hmi_exception,
++        ret_from_except, FINISH_NAP;ADD_NVGPRS;ADD_RECONCILE;RUNLATCH_ON)
+ 
+ EXC_REAL_OOL_MASKABLE_HV(h_doorbell, 0xe80, 0x20)
+ EXC_VIRT_OOL_MASKABLE_HV(h_doorbell, 0x4e80, 0x20, 0xe80)
+diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c
+index 9b2ea7e71c06..f588951b171d 100644
+--- a/arch/powerpc/kernel/mce.c
++++ b/arch/powerpc/kernel/mce.c
+@@ -470,6 +470,34 @@ long hmi_exception_realmode(struct pt_regs *regs)
+ {
+ 	__this_cpu_inc(irq_stat.hmi_exceptions);
+ 
++#ifdef CONFIG_PPC_BOOK3S_64
++	/* Workaround for P9 vector CI loads (see p9_hmi_special_emu) */
++	if (pvr_version_is(PVR_POWER9)) {
++		unsigned long hmer = mfspr(SPRN_HMER);
++
++		/* Do we have the debug bit set */
++		if (hmer & PPC_BIT(17)) {
++			hmer &= ~PPC_BIT(17);
++			mtspr(SPRN_HMER, hmer);
++
++			/*
++			 * Now to avoid problems with soft-disable we
++			 * only do the emulation if we are coming from
++			 * user space
++			 */
++			if (user_mode(regs))
++				local_paca->hmi_p9_special_emu = 1;
++
++			/*
++			 * Don't bother going to OPAL if that's the
++			 * only relevant bit.
++			 */
++			if (!(hmer & mfspr(SPRN_HMEER)))
++				return local_paca->hmi_p9_special_emu;
++		}
++	}
++#endif /* CONFIG_PPC_BOOK3S_64 */
++
+ 	wait_for_subcore_guest_exit();
+ 
+ 	if (ppc_md.hmi_exception_early)
+@@ -477,5 +505,5 @@ long hmi_exception_realmode(struct pt_regs *regs)
+ 
+ 	wait_for_tb_resync();
+ 
+-	return 0;
++	return 1;
+ }
+diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
+index 559664e75fb5..5fbe81d4e648 100644
+--- a/arch/powerpc/kernel/traps.c
++++ b/arch/powerpc/kernel/traps.c
+@@ -37,6 +37,7 @@
+ #include <linux/kdebug.h>
+ #include <linux/ratelimit.h>
+ #include <linux/context_tracking.h>
++#include <linux/smp.h>
+ 
+ #include <asm/emulated_ops.h>
+ #include <asm/pgtable.h>
+@@ -761,6 +762,187 @@ void SMIException(struct pt_regs *regs)
+ 	die("System Management Interrupt", regs, SIGABRT);
+ }
+ 
++#ifdef CONFIG_VSX
++static void p9_hmi_special_emu(struct pt_regs *regs)
++{
++	unsigned int ra, rb, t, i, sel, instr, rc;
++	const void __user *addr;
++	u8 vbuf[16], *vdst;
++	unsigned long ea, msr, msr_mask;
++	bool swap;
++
++	if (__get_user_inatomic(instr, (unsigned int __user *)regs->nip))
++		return;
++
++	/*
++	 * lxvb16x	opcode: 0x7c0006d8
++	 * lxvd2x	opcode: 0x7c000698
++	 * lxvh8x	opcode: 0x7c000658
++	 * lxvw4x	opcode: 0x7c000618
++	 */
++	if ((instr & 0xfc00073e) != 0x7c000618) {
++		pr_devel("HMI vec emu: not vector CI %i:%s[%d] nip=%016lx"
++			 " instr=%08x\n",
++			 smp_processor_id(), current->comm, current->pid,
++			 regs->nip, instr);
++		return;
++	}
++
++	/* Grab vector registers into the task struct */
++	msr = regs->msr; /* Grab msr before we flush the bits */
++	flush_vsx_to_thread(current);
++	enable_kernel_altivec();
++
++	/*
++	 * Is userspace running with a different endian (this is rare but
++	 * not impossible)
++	 */
++	swap = (msr & MSR_LE) != (MSR_KERNEL & MSR_LE);
++
++	/* Decode the instruction */
++	ra = (instr >> 16) & 0x1f;
++	rb = (instr >> 11) & 0x1f;
++	t = (instr >> 21) & 0x1f;
++	if (instr & 1)
++		vdst = (u8 *)&current->thread.vr_state.vr[t];
++	else
++		vdst = (u8 *)&current->thread.fp_state.fpr[t][0];
++
++	/* Grab the vector address */
++	ea = regs->gpr[rb] + (ra ? regs->gpr[ra] : 0);
++	if (is_32bit_task())
++		ea &= 0xfffffffful;
++	addr = (__force const void __user *)ea;
++
++	/* Check it */
++	if (!access_ok(VERIFY_READ, addr, 16)) {
++		pr_devel("HMI vec emu: bad access %i:%s[%d] nip=%016lx"
++			 " instr=%08x addr=%016lx\n",
++			 smp_processor_id(), current->comm, current->pid,
++			 regs->nip, instr, (unsigned long)addr);
++		return;
++	}
++
++	/* Read the vector */
++	rc = 0;
++	if ((unsigned long)addr & 0xfUL)
++		/* unaligned case */
++		rc = __copy_from_user_inatomic(vbuf, addr, 16);
++	else
++		__get_user_atomic_128_aligned(vbuf, addr, rc);
++	if (rc) {
++		pr_devel("HMI vec emu: page fault %i:%s[%d] nip=%016lx"
++			 " instr=%08x addr=%016lx\n",
++			 smp_processor_id(), current->comm, current->pid,
++			 regs->nip, instr, (unsigned long)addr);
++		return;
++	}
++
++	pr_devel("HMI vec emu: emulated vector CI %i:%s[%d] nip=%016lx"
++		 " instr=%08x addr=%016lx\n",
++		 smp_processor_id(), current->comm, current->pid, regs->nip,
++		 instr, (unsigned long) addr);
++
++	/* Grab instruction "selector" */
++	sel = (instr >> 6) & 3;
++
++	/*
++	 * Check to make sure the facility is actually enabled. This
++	 * could happen if we get a false positive hit.
++	 *
++	 * lxvd2x/lxvw4x always check MSR VSX sel = 0,2
++	 * lxvh8x/lxvb16x check MSR VSX or VEC depending on VSR used sel = 1,3
++	 */
++	msr_mask = MSR_VSX;
++	if ((sel & 1) && (instr & 1)) /* lxvh8x & lxvb16x + VSR >= 32 */
++		msr_mask = MSR_VEC;
++	if (!(msr & msr_mask)) {
++		pr_devel("HMI vec emu: MSR fac clear %i:%s[%d] nip=%016lx"
++			 " instr=%08x msr:%016lx\n",
++			 smp_processor_id(), current->comm, current->pid,
++			 regs->nip, instr, msr);
++		return;
++	}
++
++	/* Do logging here before we modify sel based on endian */
++	switch (sel) {
++	case 0:	/* lxvw4x */
++		PPC_WARN_EMULATED(lxvw4x, regs);
++		break;
++	case 1: /* lxvh8x */
++		PPC_WARN_EMULATED(lxvh8x, regs);
++		break;
++	case 2: /* lxvd2x */
++		PPC_WARN_EMULATED(lxvd2x, regs);
++		break;
++	case 3: /* lxvb16x */
++		PPC_WARN_EMULATED(lxvb16x, regs);
++		break;
++	}
++
++#ifdef __LITTLE_ENDIAN__
++	/*
++	 * An LE kernel stores the vector in the task struct as an LE
++	 * byte array (effectively swapping both the components and
++	 * the content of the components). Those instructions expect
++	 * the components to remain in ascending address order, so we
++	 * swap them back.
++	 *
++	 * If we are running a BE user space, the expectation is that
++	 * of a simple memcpy, so forcing the emulation to look like
++	 * a lxvb16x should do the trick.
++	 */
++	if (swap)
++		sel = 3;
++
++	switch (sel) {
++	case 0:	/* lxvw4x */
++		for (i = 0; i < 4; i++)
++			((u32 *)vdst)[i] = ((u32 *)vbuf)[3-i];
++		break;
++	case 1: /* lxvh8x */
++		for (i = 0; i < 8; i++)
++			((u16 *)vdst)[i] = ((u16 *)vbuf)[7-i];
++		break;
++	case 2: /* lxvd2x */
++		for (i = 0; i < 2; i++)
++			((u64 *)vdst)[i] = ((u64 *)vbuf)[1-i];
++		break;
++	case 3: /* lxvb16x */
++		for (i = 0; i < 16; i++)
++			vdst[i] = vbuf[15-i];
++		break;
++	}
++#else /* __LITTLE_ENDIAN__ */
++	/* On a big endian kernel, a BE userspace only needs a memcpy */
++	if (!swap)
++		sel = 3;
++
++	/* Otherwise, we need to swap the content of the components */
++	switch (sel) {
++	case 0:	/* lxvw4x */
++		for (i = 0; i < 4; i++)
++			((u32 *)vdst)[i] = cpu_to_le32(((u32 *)vbuf)[i]);
++		break;
++	case 1: /* lxvh8x */
++		for (i = 0; i < 8; i++)
++			((u16 *)vdst)[i] = cpu_to_le16(((u16 *)vbuf)[i]);
++		break;
++	case 2: /* lxvd2x */
++		for (i = 0; i < 2; i++)
++			((u64 *)vdst)[i] = cpu_to_le64(((u64 *)vbuf)[i]);
++		break;
++	case 3: /* lxvb16x */
++		memcpy(vdst, vbuf, 16);
++		break;
++	}
++#endif /* !__LITTLE_ENDIAN__ */
++
++	/* Go to next instruction */
++	regs->nip += 4;
++}
++#endif /* CONFIG_VSX */
++
+ void handle_hmi_exception(struct pt_regs *regs)
+ {
+ 	struct pt_regs *old_regs;
+@@ -768,6 +950,21 @@ void handle_hmi_exception(struct pt_regs *regs)
+ 	old_regs = set_irq_regs(regs);
+ 	irq_enter();
+ 
++#ifdef CONFIG_VSX
++	/* Real mode flagged P9 special emu is needed */
++	if (local_paca->hmi_p9_special_emu) {
++		local_paca->hmi_p9_special_emu = 0;
++
++		/*
++		 * We don't want to take page faults while doing the
++		 * emulation, we just replay the instruction if necessary.
++		 */
++		pagefault_disable();
++		p9_hmi_special_emu(regs);
++		pagefault_enable();
++	}
++#endif /* CONFIG_VSX */
++
+ 	if (ppc_md.handle_hmi_exception)
+ 		ppc_md.handle_hmi_exception(regs);
+ 
+@@ -2004,6 +2201,10 @@ struct ppc_emulated ppc_emulated = {
+ 	WARN_EMULATED_SETUP(mfdscr),
+ 	WARN_EMULATED_SETUP(mtdscr),
+ 	WARN_EMULATED_SETUP(lq_stq),
++	WARN_EMULATED_SETUP(lxvw4x),
++	WARN_EMULATED_SETUP(lxvh8x),
++	WARN_EMULATED_SETUP(lxvd2x),
++	WARN_EMULATED_SETUP(lxvb16x),
+ #endif
+ };
+ 
+diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
+index 40dae96f7e20..b9dd3cc1d217 100644
+--- a/arch/powerpc/platforms/powernv/smp.c
++++ b/arch/powerpc/platforms/powernv/smp.c
+@@ -49,6 +49,13 @@
+ 
+ static void pnv_smp_setup_cpu(int cpu)
+ {
++	/*
++	 * P9 workaround for CI vector load (see traps.c),
++	 * enable the corresponding HMI interrupt
++	 */
++	if (pvr_version_is(PVR_POWER9))
++		mtspr(SPRN_HMEER, mfspr(SPRN_HMEER) | PPC_BIT(17));
++
+ 	if (xive_enabled())
+ 		xive_smp_setup_cpu();
+ 	else if (cpu != boot_cpuid)
diff --git a/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
deleted file mode 100644
index d31ee40..0000000
--- a/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Matt Brown <matthew.brown.dev@gmail.com>
-Date: Thu, 30 Mar 2017 10:28:01 +1100
-Subject: [PATCH 3/4] powerpc/powernv: Add OPAL exports attributes to sysfs
-
-New versions of OPAL have a device node /ibm,opal/firmware/exports, each
-property of which describes a range of memory in OPAL that Linux might
-want to export to userspace for debugging.
-
-This patch adds a sysfs file under 'opal/exports' for each property
-found there, and makes it read-only by root.
-
-Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
-[mpe: Drop counting of props, rename to attr, free on sysfs error, c'log]
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-(cherry picked from commit 11fe909d236263f62808dc3c73caf798e026d7aa)
-Signed-off-by: Joel Stanley <joel@jms.id.au>
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/platforms/powernv/opal.c | 76 +++++++++++++++++++++++++++++++++++
- 1 file changed, 76 insertions(+)
-
-diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
-index e0f856bfbfe8..25ea8f6fe7f8 100644
---- a/arch/powerpc/platforms/powernv/opal.c
-+++ b/arch/powerpc/platforms/powernv/opal.c
-@@ -595,6 +595,79 @@ static void opal_export_symmap(void)
- 		pr_warn("Error %d creating OPAL symbols file\n", rc);
- }
- 
-+static ssize_t export_attr_read(struct file *fp, struct kobject *kobj,
-+				struct bin_attribute *bin_attr, char *buf,
-+				loff_t off, size_t count)
-+{
-+	return memory_read_from_buffer(buf, count, &off, bin_attr->private,
-+				       bin_attr->size);
-+}
-+
-+/*
-+ * opal_export_attrs: creates a sysfs node for each property listed in
-+ * the device-tree under /ibm,opal/firmware/exports/
-+ * All new sysfs nodes are created under /opal/exports/.
-+ * This allows for reserved memory regions (e.g. HDAT) to be read.
-+ * The new sysfs nodes are only readable by root.
-+ */
-+static void opal_export_attrs(void)
-+{
-+	struct bin_attribute *attr;
-+	struct device_node *np;
-+	struct property *prop;
-+	struct kobject *kobj;
-+	u64 vals[2];
-+	int rc;
-+
-+	np = of_find_node_by_path("/ibm,opal/firmware/exports");
-+	if (!np)
-+		return;
-+
-+	/* Create new 'exports' directory - /sys/firmware/opal/exports */
-+	kobj = kobject_create_and_add("exports", opal_kobj);
-+	if (!kobj) {
-+		pr_warn("kobject_create_and_add() of exports failed\n");
-+		return;
-+	}
-+
-+	for_each_property_of_node(np, prop) {
-+		if (!strcmp(prop->name, "name") || !strcmp(prop->name, "phandle"))
-+			continue;
-+
-+		if (of_property_read_u64_array(np, prop->name, &vals[0], 2))
-+			continue;
-+
-+		attr = kmalloc(sizeof(*attr), GFP_KERNEL);
-+
-+		if (attr == NULL) {
-+			pr_warn("Failed kmalloc for bin_attribute!");
-+			continue;
-+		}
-+
-+		attr->attr.name = kstrdup(prop->name, GFP_KERNEL);
-+		attr->attr.mode = 0400;
-+		attr->read = export_attr_read;
-+		attr->private = __va(vals[0]);
-+		attr->size = vals[1];
-+
-+		if (attr->attr.name == NULL) {
-+			pr_warn("Failed kstrdup for bin_attribute attr.name");
-+			kfree(attr);
-+			continue;
-+		}
-+
-+		rc = sysfs_create_bin_file(kobj, attr);
-+		if (rc) {
-+			pr_warn("Error %d creating OPAL sysfs exports/%s file\n",
-+				 rc, prop->name);
-+			kfree(attr->attr.name);
-+			kfree(attr);
-+		}
-+	}
-+
-+	of_node_put(np);
-+}
-+
- static void __init opal_dump_region_init(void)
- {
- 	void *addr;
-@@ -733,6 +806,9 @@ static int __init opal_init(void)
- 		opal_msglog_sysfs_init();
- 	}
- 
-+	/* Export all properties */
-+	opal_export_attrs();
-+
- 	/* Initialize platform devices: IPMI backend, PRD & flash interface */
- 	opal_pdev_init("ibm,opal-ipmi");
- 	opal_pdev_init("ibm,opal-flash");
--- 
-2.11.0
-
diff --git a/openpower/linux/0004-Release-OpenPower-kernel.patch b/openpower/linux/0004-Release-OpenPower-kernel.patch
index a5ef22e..3589ce5 100644
--- a/openpower/linux/0004-Release-OpenPower-kernel.patch
+++ b/openpower/linux/0004-Release-OpenPower-kernel.patch
@@ -1,26 +1,23 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Wed, 3 May 2017 13:25:26 +0930
+From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Date: Tue, 17 Oct 2017 13:32:56 +1100
 Subject: [PATCH 4/4] Release OpenPower kernel
 
-Signed-off-by: Joel Stanley <joel@jms.id.au>
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
 ---
  Makefile | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index d7b64830a7b7..e77804c0405d 100644
+index 0d4f1b19869d..ad0f7fd78596 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,7 +1,7 @@
  VERSION = 4
- PATCHLEVEL = 11
- SUBLEVEL = 2
+ PATCHLEVEL = 13
+ SUBLEVEL = 7
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = Fearless Coyote
  
  # *DOCUMENTATION*
--- 
-2.11.0
-
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index d380784..aed88b6 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -16,4 +16,6 @@
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-gcc/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ima-catalog/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/sbe/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/sb-signing-utils/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/sb-signing-framework/Config.in"
 
diff --git a/openpower/package/capp-ucode/capp-ucode.mk b/openpower/package/capp-ucode/capp-ucode.mk
index 7513fe0..ed41f02 100644
--- a/openpower/package/capp-ucode/capp-ucode.mk
+++ b/openpower/package/capp-ucode/capp-ucode.mk
@@ -3,7 +3,7 @@
 # capp-ucode.mk
 #
 ################################################################################
-CAPP_UCODE_VERSION ?= 9c73e9f51d240847fbd150815a3b9c548aae0cb8
+CAPP_UCODE_VERSION ?= p9-dd2-v2
 CAPP_UCODE_SITE ?= $(call github,open-power,capp-ucode,$(CAPP_UCODE_VERSION))
 CAPP_UCODE_LICENSE = Apache-2.0
 CAPP_UCODE_LICENSE_FILES = NOTICES
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index 7097ddd..1cc30d1 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,7 +4,8 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= 24995fcf90762d96fe701ff7f71b10009518582d
+
+HOSTBOOT_BINARIES_VERSION ?= 25ebcad0c402f3d1e3e2a6d25b5ffe9ed9dfa047
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
 
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
@@ -23,6 +24,7 @@
      $(INSTALL) -D $(@D)/$(BIN_FILENAME) $(STAGING_DIR)/hostboot_binaries/
      $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) $(STAGING_DIR)/hostboot_binaries/
      $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBE_FILENAME)  $(STAGING_DIR)/hostboot_binaries/
+     $(INSTALL) -D $(@D)/gpu_gpe1.bin  $(STAGING_DIR)/hostboot_binaries/gpu_gpe1.bin
 endef
 
 $(eval $(generic-package))
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index bbc07ef..a8688f3 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= 695bd891343faf1f0ef85fe53148590e58239efd
-HOSTBOOT_VERSION_BRANCH_MASTER ?= 44d178b6d050d9491e35360d5f3867e23c8ee895
+HOSTBOOT_VERSION_BRANCH_MASTER ?= 7a18fd613a1f85dd42a215607a2a05e5e5ce8a0e
 
 HOSTBOOT_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(HOSTBOOT_VERSION_BRANCH_MASTER),$(HOSTBOOT_VERSION_BRANCH_MASTER_P8))
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0011-Convert-cmpi-to-cmpwi-to-fix-build-for-modern-binuti.patch b/openpower/package/hostboot/p8Patches/hostboot-0011-Convert-cmpi-to-cmpwi-to-fix-build-for-modern-binuti.patch
new file mode 100644
index 0000000..651200d
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0011-Convert-cmpi-to-cmpwi-to-fix-build-for-modern-binuti.patch
@@ -0,0 +1,225 @@
+From 3e9a825d1a217ab02a24d14e80cad993a864079e Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Thu, 22 Jun 2017 13:43:47 +0930
+Subject: [PATCH] Convert cmpi to cmpwi to fix build for modern binutils
+
+From Linux 80f23935cadb ("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.
+
+This is change is a noop with the existing toolchain. We change from
+implicitly generating the cmpwi to explicitly stating in for
+compatibility with newer toolchains.
+
+With gcc 4.9.3, binutils 2.25.2:
+
+  $ cat asm-test.S
+  .text
+
+  .global test
+          cmpi 0, 8, 1
+  $ powerpc64-linux-gcc -c asm-test.S
+  $ objdump -d asm-test.o
+  0000000000000000 <.text>:
+     	2c 08 00 01 	cmpwi   r8,1
+
+Old compiler, updated instruction:
+
+  $ cat asm-test.S
+  .text
+
+  .global test
+          cmpwi 0, 8, 1
+  $ powerpc64-linux-gcc -c asm-test.S
+  $ objdump -d asm-test.o
+  0000000000000000 <.text>:
+     	2c 08 00 01 	cmpwi   r8,1
+
+And then the new toolchain (gcc 6.3.0, binutils 2.28) with the updated
+asm:
+
+  $ cat asm-test.S
+  .text
+
+  .global test
+          cmpwi 0, 8, 1
+  $ powerpc64-linux-gnu-gcc -c asm-test.S
+  $ objdump -d asm-test.o
+  0000000000000000 <.text>:
+     	2c 08 00 01 	cmpwi   r8,1
+
+Change-Id: I878ab3596f54c221879945944f2dfbf053427026
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
+---
+ src/kernel/start.S     | 34 +++++++++++++++++-----------------
+ src/runtime/rt_start.S |  2 +-
+ 2 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/src/kernel/start.S b/src/kernel/start.S
+index 6474a2ced794..5015b652e407 100644
+--- a/src/kernel/start.S
++++ b/src/kernel/start.S
+@@ -199,7 +199,7 @@ UNIMPL_INTERRUPT(hype_decrementer, 0x980)
+ ;//
+ .org _start + 0xC00
+ intvect_system_call_fast:
+-    cmpi cr0, r3, 0x0800
++    cmpwi cr0, r3, 0x0800
+     bge  cr0, system_call_fast_path
+ STD_INTERRUPT(system_call, 0xC08)
+ 
+@@ -292,7 +292,7 @@ _other_thread_spinlock:
+ 1:
+     ld r3, 0(r2)
+     ;// Loop until value is 1...
+-    cmpi cr0, r3, 1
++    cmpwi cr0, r3, 1
+     beq _other_thread_spinlock_complete
+     or 1,1,1 ;// Lower thread priority.
+     b 1b
+@@ -307,12 +307,12 @@ _other_thread_spinlock_complete:
+     extrwi r1, r1, 3, 19
+     sldi r1, r1, 3
+     ldx r2, r1, r2              ;// Dereference to get on-node CPUs array.
+-    cmpi cr0, r2, 0             ;// Check for NULL node array.
++    cmpwi cr0, r2, 0            ;// Check for NULL node array.
+     beq- 1f
+     mfspr r1, PIR               ;// Extract on-node CPU id.
+     clrlslwi r1, r1, 22, 3
+     ldx r3, r1, r2              ;// Load CPU object.
+-    cmpi cr0, r3, 0             ;// Check for NULL CPU object.
++    cmpwi cr0, r3, 0            ;// Check for NULL CPU object.
+     beq- 1f
+     ld r1, CPU_KERNEL_STACK(r3) ;// Load initial stack.
+ 
+@@ -388,7 +388,7 @@ kernel_save_task:
+     std r31, TASK_GPR_31(r1)    ;// Save GPR31
+ 
+     ld r2, TASK_FP_CONTEXT(r1)  ;// Load FP Context pointer.
+-    cmpi cr0, r2, 0
++    cmpwi cr0, r2, 0
+     bne- cr0, 1f                ;// Jump to FP-save if != NULL.
+ 2:
+ 
+@@ -470,7 +470,7 @@ kernel_dispatch_task:
+ 
+                         ;// Check if FP enabled, load context.
+     ld r2, TASK_FP_CONTEXT(r1)
+-    cmpi cr0, r2, 0
++    cmpwi cr0, r2, 0
+     bne- 1f
+ 2:
+                         ;// Restore GPRs from context.
+@@ -587,7 +587,7 @@ intvect_system_reset:
+     lis r2, kernel_other_thread_spinlock@h
+     ori r2, r2, kernel_other_thread_spinlock@l
+     ld r2, 0(r2)
+-    cmpi cr0, r2, 0
++    cmpwi cr0, r2, 0
+     beq- _start
+ 
+     ;// Get CPU object from thread ID, check for NULL which implies not
+@@ -598,12 +598,12 @@ intvect_system_reset:
+     extrwi r1, r1, 3, 19
+     sldi r1, r1, 3
+     ldx r2, r1, r2              ;// Dereference to get on-node CPUs array.
+-    cmpi cr0, r2, 0             ;// Check for NULL node array.
++    cmpwi cr0, r2, 0            ;// Check for NULL node array.
+     beq- _start
+     mfspr r1, PIR               ;// Extract on-node CPU id.
+     clrlslwi r1, r1, 22, 3
+     ldx r2, r1, r2              ;// Load CPU object.
+-    cmpi cr0, r2, 0             ;// Check for NULL CPU object.
++    cmpwi cr0, r2, 0            ;// Check for NULL CPU object.
+     beq- _start
+ 
+     ;// Check for inactive CPU.
+@@ -617,13 +617,13 @@ intvect_system_reset:
+     mfsrr1 r2
+     extrdi r2, r2, 3, 42
+     ;// Check for decrementer (bits = 011).
+-    cmpi cr0, r2, 0x3
++    cmpwi cr0, r2, 0x3
+     beq+ intvect_system_reset_decrementer
+     ;// Check for external interrupt (bits = 010).
+-    cmpi cr0, r2, 0x4
++    cmpwi cr0, r2, 0x4
+     beq+ intvect_system_reset_external
+     ;// Check for HMI (bits = 101).
+-    cmpi cr0, r2, 0x5
++    cmpwi cr0, r2, 0x5
+     beq+ 1f ;// Unable to handle HMI, jump to 'unknown reason'.
+ 
+ 1:  ;// Unknown reason, call as unhandled_exception.
+@@ -721,14 +721,14 @@ system_call_fast_path:
+     b 1f                        ;// Jump to exit point.
+         ;// Check if this is HMER write (0x801).
+ 2:
+-    cmpi cr0, r3, 0x801
++    cmpwi cr0, r3, 0x801
+     bne cr0, 3f
+     mtspr HMER, r4
+     li r3, 0
+     b 1f                        ;// Jump to exit point.
+         ;// Check if this is SCRATCH read (0x802).
+ 3:
+-    cmpi cr0, r3, 0x802
++    cmpwi cr0, r3, 0x802
+     bne cr0, 4f
+         ;// Check for being on master processor.
+     mfsprg3 r6          ;// Get task structure.
+@@ -755,7 +755,7 @@ system_call_fast_path:
+     b intvect_system_call
+         ;// Check if this is SCRATCH write (0x803).
+ 4:
+-    cmpi cr0, r3, 0x803
++    cmpwi cr0, r3, 0x803
+     bne cr0, 5f
+         ;// Check for master processor.
+     mfsprg3 r6          ;// Get task structure.
+@@ -770,7 +770,7 @@ system_call_fast_path:
+     b 1f                        ;// Jump to exit point.
+         ;// Check if this is PVR read (0x804).
+ 5:
+-    cmpi cr0, r3, 0x804
++    cmpwi cr0, r3, 0x804
+     bne cr0, 6f
+     mfspr r3, PVR
+     b 1f                        ;// Jump to exit point.
+@@ -800,7 +800,7 @@ system_call_fast_path:
+ .global userspace_task_entry
+ userspace_task_entry:
+         ;// Skip stack frame if GPR1 == NULL.
+-    cmpi cr0, r1, 0
++    cmpwi cr0, r1, 0
+     beq- 1f
+         ;// Create frame.
+         ;//     NULL back-chain + 48 bytes + quad-word alignment.  See ABI.
+diff --git a/src/runtime/rt_start.S b/src/runtime/rt_start.S
+index d69184aef29f..821e9f956b8e 100644
+--- a/src/runtime/rt_start.S
++++ b/src/runtime/rt_start.S
+@@ -47,7 +47,7 @@ _init:
+ 
+     ld r8, 0(r10)             # Get count of relocations.
+ 
+-    cmpi cr0, r8, 0           # Perform relocations (if any).
++    cmpwi cr0, r8, 0          # Perform relocations (if any).
+     beq 2f
+     mtctr r8
+ 1:
+-- 
+2.13.1
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0012-kernel-Update-assembly-for-modern-binutils.patch b/openpower/package/hostboot/p8Patches/hostboot-0012-kernel-Update-assembly-for-modern-binutils.patch
new file mode 100644
index 0000000..2c51fd3
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0012-kernel-Update-assembly-for-modern-binutils.patch
@@ -0,0 +1,72 @@
+From 63c3b788eebfa28f0b4032c209e90cc2df7b2c98 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel.stanley@au1.ibm.com>
+Date: Tue, 27 Jun 2017 18:00:09 +0930
+Subject: [PATCH] kernel: Update assembly for modern binutils
+
+From Linux 80f23935cadb ("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.
+
+The first two instances are dealing with SPRs, which are 32-bit, so cmpw is correct.
+
+It is not clear what to do in the third use of cmp, but given old toolchains
+have generated cmpw lets assume that we should maintain the behaviour.
+
+Change-Id: Iee5dd5903dcd7ac4028bab0176e08ce3db23b2d5
+Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
+---
+ src/kernel/shutdown.S | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/src/kernel/shutdown.S b/src/kernel/shutdown.S
+index 629645b26c81..cad5c66b8137 100644
+--- a/src/kernel/shutdown.S
++++ b/src/kernel/shutdown.S
+@@ -5,7 +5,9 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# COPYRIGHT International Business Machines Corp. 2012,2014
++# Contributors Listed Below - COPYRIGHT 2012,2017
++# [+] International Business Machines Corp.
++#
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+@@ -92,7 +94,7 @@ kernel_shutdown_ea0_1_mode:
+         ;// as it was the one that updated the cpu_count & lowest_pir
+         ;// barrier - 1 wait for all nodes to report
+     mfspr  r10, PIR
+-    cmp    cr0, r10, r7
++    cmpw    cr0, r10, r7
+     bne+ 2f       ;// inside KERNEL_BARRIER below
+ 
+         ;// Perform barrier - 1
+@@ -131,7 +133,7 @@ kernel_shutdown_ea0_1_mode:
+     addi r8, r8, 8
+             ;// Check for PIR == r7.
+     mfspr r10, PIR
+-    cmp cr0, r10, r7
++    cmpw cr0, r10, r7
+     beq 3f
+         ;// Increment thread count.
+ 1:
+@@ -164,7 +166,7 @@ kernel_shutdown_ea0_1_mode:
+ 1:
+     or 1,1,1
+     ld r11, 0(r8)
+-    cmp cr0, r3, r11
++    cmpw cr0, r3, r11
+     bne+ 1b
+     isync
+         ;// All other threads have left, so wait a little bit...
+-- 
+2.13.1
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0013-htmgt-Remove-unused-variable.patch b/openpower/package/hostboot/p8Patches/hostboot-0013-htmgt-Remove-unused-variable.patch
new file mode 100644
index 0000000..cc14cda
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0013-htmgt-Remove-unused-variable.patch
@@ -0,0 +1,35 @@
+From 64646f1205672650d9781c83a4aedaeb1664ce47 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel.stanley@au1.ibm.com>
+Date: Mon, 21 Aug 2017 16:20:41 +0930
+Subject: [PATCH] hwpf: Remove unused variable
+
+Change-Id: Ica691bea7541fbd02d76400e94f8fbaf9a3e6517
+Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
+---
+ src/usr/hwpf/hwp/utility_procedures/p8_cpu_special_wakeup.C | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/usr/hwpf/hwp/utility_procedures/p8_cpu_special_wakeup.C b/src/usr/hwpf/hwp/utility_procedures/p8_cpu_special_wakeup.C
+index ee59c8066ccb..c0d6e8a1f2c2 100644
+--- a/src/usr/hwpf/hwp/utility_procedures/p8_cpu_special_wakeup.C
++++ b/src/usr/hwpf/hwp/utility_procedures/p8_cpu_special_wakeup.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2014                             */
++/* Contributors Listed Below - COPYRIGHT 2014,2017                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -153,7 +153,6 @@ p8_cpu_special_wakeup(  const fapi::Target& i_ex_target,
+     uint32_t            count = 0;
+ 
+     std::vector<fapi::Target>      l_chiplets;
+-    std::vector<Target>::iterator  itr;
+ 
+     uint8_t             oha_spwkup_flag = 0;
+     uint8_t             ignore_xstop_flag = 0;
+-- 
+2.14.1
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0014-htmgt-Remove-unused-variable.patch b/openpower/package/hostboot/p8Patches/hostboot-0014-htmgt-Remove-unused-variable.patch
new file mode 100644
index 0000000..facaaee
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0014-htmgt-Remove-unused-variable.patch
@@ -0,0 +1,35 @@
+From 7a6194962c4c55ac8f225de3b64cac347b9901a0 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel.stanley@au1.ibm.com>
+Date: Mon, 21 Aug 2017 16:21:08 +0930
+Subject: [PATCH] htmgt: Remove unused variable
+
+Change-Id: I633f2faca41e40b47ed49a05bfe0724fa4b2114d
+Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
+---
+ src/usr/htmgt/htmgt_cfgdata.C | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/usr/htmgt/htmgt_cfgdata.C b/src/usr/htmgt/htmgt_cfgdata.C
+index 584793c69eb8..19e7b21bf23a 100644
+--- a/src/usr/htmgt/htmgt_cfgdata.C
++++ b/src/usr/htmgt/htmgt_cfgdata.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2014,2016                        */
++/* Contributors Listed Below - COPYRIGHT 2014,2017                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -654,7 +654,6 @@ void getSystemConfigMessageData(const TargetHandle_t i_occ, uint8_t* o_data,
+     //If a new processor with more cores comes along,
+     //this command will have to change.
+     TargetHandleList cores;
+-    TargetHandleList::iterator coreIt;
+     getChildChiplets(cores, proc, TYPE_CORE, false);
+ 
+     uint16_t tempSensor = 0;
+-- 
+2.14.1
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0015-hwpf-Remove-unused-variable.patch b/openpower/package/hostboot/p8Patches/hostboot-0015-hwpf-Remove-unused-variable.patch
new file mode 100644
index 0000000..9536d01
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0015-hwpf-Remove-unused-variable.patch
@@ -0,0 +1,35 @@
+From b08fb29b63f649bf5129c05fee8ac79779f9339c Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel.stanley@au1.ibm.com>
+Date: Mon, 21 Aug 2017 20:40:42 +0930
+Subject: [PATCH] hwpf: Remove unused variable
+
+Change-Id: I2708f34211d712af911e5ca6b8d212f22cc68133
+Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
+---
+ src/usr/hwpf/hwp/activate_powerbus/proc_build_smp/proc_build_smp_adu.C | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/usr/hwpf/hwp/activate_powerbus/proc_build_smp/proc_build_smp_adu.C b/src/usr/hwpf/hwp/activate_powerbus/proc_build_smp/proc_build_smp_adu.C
+index 1391cb1c8d25..b3a8cc8c7636 100644
+--- a/src/usr/hwpf/hwp/activate_powerbus/proc_build_smp/proc_build_smp_adu.C
++++ b/src/usr/hwpf/hwp/activate_powerbus/proc_build_smp/proc_build_smp_adu.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2012,2016                        */
++/* Contributors Listed Below - COPYRIGHT 2012,2017                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -677,7 +677,6 @@ fapi::ReturnCode proc_build_smp_quiesce_pb(
+     fapi::ReturnCode rc;
+     std::map<proc_fab_smp_node_id, proc_build_smp_node>::iterator n_iter;
+     std::map<proc_fab_smp_chip_id, proc_build_smp_chip>::iterator p_iter;
+-    std::vector<proc_build_smp_chip*>::iterator quiesce_iter;
+     // ADU status/control information
+     proc_adu_utils_fbc_op adu_ctl;
+     proc_adu_utils_fbc_op_hp_ctl adu_hp_ctl;
+-- 
+2.14.1
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0001-Increase-uart-delay.patch b/openpower/package/hostboot/p9Patches/hostboot-0001-Increase-uart-delay.patch
deleted file mode 120000
index 10137ed..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0001-Increase-uart-delay.patch
+++ /dev/null
@@ -1 +0,0 @@
-../p8Patches/hostboot-0001-Increase-uart-delay.patch
\ No newline at end of file
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0001-Remove-support-for-P9N-Nimbus-DD1.0.patch b/openpower/package/hostboot/p9Patches/hostboot-0001-Remove-support-for-P9N-Nimbus-DD1.0.patch
new file mode 100644
index 0000000..3ed2df7
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0001-Remove-support-for-P9N-Nimbus-DD1.0.patch
@@ -0,0 +1,100 @@
+From 3fc13542a298284b7a45ee6fbf2152aec659c733 Mon Sep 17 00:00:00 2001
+From: Dean Sanner <dsanner@us.ibm.com>
+Date: Mon, 18 Sep 2017 13:49:09 -0500
+Subject: [PATCH] Remove support for P9N (Nimbus) DD1.0
+
+  - Will error out during IPL
+  - Gracefully handle removal of DD1.0 inits,
+    tied to hw091517b.910 HCODE image
+
+Change-Id: I7b4c53b38863a8251a8c02d7df83a3ff713f52d7
+---
+ src/include/usr/isteps/istep_reasoncodes.H  |  2 ++
+ src/usr/isteps/istep06/host_set_ipl_parms.C | 44 ++++++++++++++++++++++++++++-
+ 2 files changed, 45 insertions(+), 1 deletion(-)
+
+diff --git a/src/include/usr/isteps/istep_reasoncodes.H b/src/include/usr/isteps/istep_reasoncodes.H
+index bdf4c93..d76eceb 100644
+--- a/src/include/usr/isteps/istep_reasoncodes.H
++++ b/src/include/usr/isteps/istep_reasoncodes.H
+@@ -62,6 +62,7 @@ namespace ISTEP
+         MOD_SBE_PERFORM_UPDATE_CHECK                      = 0x1A,
+         MOD_MSS_ATTR_UPDATE = 0x1B, /* @TODO-RTC:149250-Remove */
+         MOD_SBE_GET_FFDC_HANDLER                          = 0x1C,
++        MOD_SET_IPL_PARMS                                 = 0x1D,
+     };
+ 
+     /**
+@@ -122,6 +123,7 @@ namespace ISTEP
+         RC_SBE_UPDATE_IN_MPIPL                   = ISTEP_COMP_ID | 0x32,
+         RC_NO_FFDC_RETURNED                      = ISTEP_COMP_ID | 0x33,
+         RC_RETURNED_FFDC                         = ISTEP_COMP_ID | 0x34,
++        RC_P9N_DD1_NOT_SUPPORTED                 = ISTEP_COMP_ID | 0x35,
+     };
+ 
+ };
+diff --git a/src/usr/isteps/istep06/host_set_ipl_parms.C b/src/usr/isteps/istep06/host_set_ipl_parms.C
+index 8fe9f12..c42f909 100644
+--- a/src/usr/isteps/istep06/host_set_ipl_parms.C
++++ b/src/usr/isteps/istep06/host_set_ipl_parms.C
+@@ -31,7 +31,9 @@
+ #include <initservice/isteps_trace.H>
+ #include <util/utilsemipersist.H>
+ #include <hwas/common/deconfigGard.H>
+-
++#include <arch/pvrformat.H>
++#include <sys/mmio.h>
++#include <console/consoleif.H>
+ 
+ namespace ISTEP_06
+ {
+@@ -77,6 +79,46 @@ void* host_set_ipl_parms( void *io_pArgs )
+     Util::writeSemiPersistData(l_semiData);
+ 
+ 
++    // Add a check to indicate that Nimbus DD1.0 is NOT supported
++    // and prevent a boot
++    PVR_t l_pvr( mmio_pvr_read() & 0xFFFFFFFF );
++    if( l_pvr.isNimbusDD1() )
++    {
++#ifdef CONFIG_CONSOLE
++        CONSOLE::displayf(ISTEP_COMP_NAME,
++                          "P9N (Nimbus) DD1.0 is not supported in this driver");
++        CONSOLE::displayf(ISTEP_COMP_NAME,
++                          "Please update the system's processor modules");
++#endif
++
++
++        TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
++                   "DD1.0 is NOT SUPPORTED anymore. "
++                   "Please upgrade proc modules");
++        /*@
++         * @errortype
++         * @moduleid     ISTEP::MOD_SET_IPL_PARMS
++         * @reasoncode   ISTEP::RC_P9N_DD1_NOT_SUPPORTED
++         * @userdata1    PVR of master proc
++         * @devdesc      P9N (Nimbus) DD1.x is not supported
++         *               in this firmware driver.  Please update
++         *               your module or use a different driver
++         * @custdesc     A problem occurred during the IPL
++         *               of the system.
++         */
++        uint64_t l_dummy = 0x0;
++        l_err = new ERRORLOG::ErrlEntry(
++                                        ERRORLOG::ERRL_SEV_UNRECOVERABLE,
++                                        ISTEP::MOD_SET_IPL_PARMS,
++                                        ISTEP::RC_P9N_DD1_NOT_SUPPORTED,
++                                        l_pvr.word,
++                                        l_dummy);
++        // Create IStep error log and cross ref error that occurred
++        l_stepError.addErrorDetails( l_err );
++        errlCommit( l_err, ISTEP_COMP_ID );
++    }
++
++
+     TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "host_set_ipl_parms exit" );
+ 
+     return l_stepError.getErrorHandle();
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch b/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch
deleted file mode 100644
index d369874..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 88a9eed95a72e6cbc8956585308599bf07aec70a Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Mon, 20 Mar 2017 13:31:35 +1100
-Subject: [PATCH] Only build attributeOverride if compiler supports
- -std=gnu++11
-
-GCC prior to 4.8 doesn't support -std=gnu++11, which the attributeOverride
-tool requires to build.
-
-Since this is only a host side utility, we can not build it if we're
-building hostboot with ancient host compilers (e.g. on RHEL6.x)
-
-Change-Id: I53ad31b56dd90c2cd77f5ca1f91b46e519cdfe48
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/build/mkrules/cc.rules.mk           | 10 +++++++++-
- src/build/mkrules/dist.targets.mk       |  7 ++++++-
- src/usr/targeting/attroverride/makefile |  8 +++++++-
- 3 files changed, 22 insertions(+), 3 deletions(-)
-
-diff --git a/src/build/mkrules/cc.rules.mk b/src/build/mkrules/cc.rules.mk
-index cb00ea001072..c89995f825df 100644
---- a/src/build/mkrules/cc.rules.mk
-+++ b/src/build/mkrules/cc.rules.mk
-@@ -5,7 +5,9 @@
- #
- # OpenPOWER HostBoot Project
- #
--# COPYRIGHT International Business Machines Corp. 2013,2014
-+# Contributors Listed Below - COPYRIGHT 2013,2017
-+# [+] International Business Machines Corp.
-+#
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-@@ -74,3 +76,9 @@ $(IMGDIR)/lib$(MODULE).so : $(OBJECTS) $(ROOTPATH)/src/module.ld $(MODULE_INIT)
- 		   $(OBJECTS) $(MODULE_INIT) \
- 	           -T $(ROOTPATH)/src/module.ld -o $@
- endif
-+
-+try = $(shell set -e; if ($(1)) >/dev/null 2>&1; \
-+        then echo "$(2)"; \
-+        else echo "$(3)"; fi )
-+
-+try-cflag = $(call try,$(1) $(2) -x c -c /dev/null -o /dev/null,$(2))
-diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
-index 2f047bcda0b7..ba6114db9aae 100644
---- a/src/build/mkrules/dist.targets.mk
-+++ b/src/build/mkrules/dist.targets.mk
-@@ -71,7 +71,6 @@ COPY_FILES = \
-     obj/genfiles/targAttrInfo.csv:vpo \
-     obj/genfiles/target_types_merged.xml:openpower \
-     obj/genfiles/fapiattrs.xml:openpower \
--    obj/genfiles/attributeOverride:tools,openpower \
-     src/usr/targeting/attroverride/README.attr_override:tools,openpower \
-     src/build/hwpf/prcd_compile.tcl:tools \
-     src/build/buildpnor/buildSbePart.pl:openpower \
-@@ -94,6 +93,12 @@ COPY_FILES = \
-     src/usr/targeting/common/xmltohb/bios_metadata_petitboot.xslt:openpower \
-     $(foreach file, $(call ROOTPATH_WILDCARD,releaseNotes.html), $(file):fsp)\
- 
-+ifeq ($(call try-cflag,$(CCACHE) $(HOST_PREFIX)g++,-std=gnu++11),-std=gnu++11)
-+COPY_FILES += obj/genfiles/attributeOverride:tools,openpower
-+else
-+COPY_FILES += obj/genfiles/attributeOverride:tools
-+endif
-+
- include ${ROOTPATH}/config.mk
- COPY_FILES += $(if $(CONFIG_INCLUDE_XML_OPPOWERVM),src/usr/targeting/common/xmltohb/target_types_oppowervm.xml:openpower) \
-     $(if $(CONFIG_INCLUDE_XML_OPPOWERVM),src/usr/targeting/common/xmltohb/attribute_types_oppowervm.xml:openpower) \
-diff --git a/src/usr/targeting/attroverride/makefile b/src/usr/targeting/attroverride/makefile
-index 8ab26fd5009b..d9f0e85b324c 100644
---- a/src/usr/targeting/attroverride/makefile
-+++ b/src/usr/targeting/attroverride/makefile
-@@ -5,7 +5,7 @@
- #
- # OpenPOWER HostBoot Project
- #
--# Contributors Listed Below - COPYRIGHT 2014,2016
-+# Contributors Listed Below - COPYRIGHT 2014,2017
- # [+] International Business Machines Corp.
- #
- #
-@@ -49,8 +49,14 @@ include $(ROOTPATH)/config.mk
- vpath %.C $(GENDIR)
- vpath %.H $(GENDIR)
- 
-+ifeq ($(call try-cflag,$(CCACHE) $(HOST_PREFIX)g++,-std=gnu++11),-std=gnu++11)
- $(OUT_FILE): $(C_FILES) $(H_FILES)
- 	$(C2) "    CC         $(notdir $@)"
- 	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -std=gnu++11 -O3 -g -o $(OUT_FILE)\
- 			$(foreach dir,$(INC_DIRS), -I $(dir)) -iquote.\
- 			$(foreach file,$^,$(if $(findstring .H,$(file)),,$(file)))
-+else
-+$(OUT_FILE): $(C_FILES) $(H_FILES)
-+	$(C2) "    GEN-NULL   $(notdir $@)"
-+	@(echo '#!/bin/sh'; echo 'exit -1';) > $(OUT_FILE)
-+endif
--- 
-2.9.3
-
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch b/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch
deleted file mode 100644
index 7c097e7..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch
+++ /dev/null
@@ -1,359 +0,0 @@
-From 7a4142d229ddd0554684664df8d7fa9bd402abc7 Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Mon, 8 May 2017 13:03:51 -0500
-Subject: [PATCH] Revert "ProcessMRW changes for dynamic i2c devices"
-
-- Do this temporarily while the attribute dependencies are sorted out
-  (HDAT_I2C_DEVICE_TYPE + HDAT_I2C_DEVICE_PURPOSE)
-
-This reverts commit 651ed35f1c045ea0c52ac659f9c27d757a351877.
----
- src/usr/i2c/i2c.C                                  |  12 +-
- src/usr/targeting/common/Targets.pm                |  16 --
- src/usr/targeting/common/processMrw.pl             | 190 ---------------------
- .../common/xmltohb/attribute_types_openpower.xml   |   4 +-
- .../common/xmltohb/target_types_openpower.xml      |   6 +-
- 5 files changed, 12 insertions(+), 216 deletions(-)
-
-diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
-index 3892497..835d9ea 100755
---- a/src/usr/i2c/i2c.C
-+++ b/src/usr/i2c/i2c.C
-@@ -3854,6 +3854,9 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
-                 case EEPROM::VPD_BACKUP:
-                     l_currentDI.devicePurpose =
-                             TARGETING::HDAT_I2C_DEVICE_PURPOSE_MODULE_VPD;
-+                    //TODO RTC:165485 this isn't currently right. we'll need
-+                    //to add the changes in the enum and possibly the other
-+                    //struct/attribute.
-                     break;
-                 case EEPROM::SBE_PRIMARY:
-                 case EEPROM::SBE_BACKUP:
-@@ -3938,8 +3941,8 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
-         TARGETING::ATTR_HDAT_I2C_MASTER_PORT_type l_i2cMasterPort;
-         (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_MASTER_PORT>(
-                                                     l_i2cMasterPort);
--        TARGETING::ATTR_HDAT_I2C_DEVICE_TYPE_type l_i2cDevType;
--        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVICE_TYPE>(
-+        TARGETING::ATTR_HDAT_I2C_DEVTYPE_type l_i2cDevType;
-+        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVTYPE>(
-                                                     l_i2cDevType);
-         TARGETING::ATTR_HDAT_I2C_ADDR_type l_i2cAddr;
-         (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_ADDR>(l_i2cAddr);
-@@ -3949,8 +3952,8 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
-         TARGETING::ATTR_HDAT_I2C_BUS_FREQ_type l_i2cBusFreq;
-         (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_BUS_FREQ>(
-                                                     l_i2cBusFreq);
--        TARGETING::ATTR_HDAT_I2C_DEVICE_PURPOSE_type l_i2cDevPurpose;
--        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVICE_PURPOSE>(
-+        TARGETING::ATTR_HDAT_I2C_DEV_PURPOSE_type l_i2cDevPurpose;
-+        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEV_PURPOSE>(
-                                                     l_i2cDevPurpose);
- 
-         uint8_t l_arrayLength =
-@@ -3966,7 +3969,6 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
-                     l_idx++)
-         {
-             DeviceInfo_t l_currentDevice;
--            l_currentDevice.masterChip = (*childItr);
-             l_currentDevice.engine = l_i2cEngine[l_idx];
-             l_currentDevice.masterPort = l_i2cMasterPort[l_idx];
-             l_currentDevice.addr = l_i2cAddr[l_idx];
-diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
-index 44b24bb..9009b4d 100644
---- a/src/usr/targeting/common/Targets.pm
-+++ b/src/usr/targeting/common/Targets.pm
-@@ -1708,18 +1708,6 @@ sub getBusAttribute
-       ->{default};
- }
- 
--## returns a boolean for if a given bus attribute is defined
--sub isBusAttributeDefined
--{
--    my $self       = shift;
--    my $target     = shift;
--    my $busnum     = shift;
--    my $attr       = shift;
--    my $target_ptr = $self->getTarget($target);
--
--    return defined($target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}
--            ->{$attr}->{default});
--}
- 
- ## returns a pointer to an array of children target names
- sub getTargetChildren
-@@ -2059,10 +2047,6 @@ to value C<VALUE>.  This is for complex attributes.
- Gets the attribute C<ATTRIBUTE_NAME> from bus C<TARGET_STRING> bus number
- C<INDEX>.
- 
--=item isBusAttributeDefined(C<TARGET_STRING>,C<INDEX>.C<ATTRIBUTE_NAME>)
--
--Looks for a specific attribute and returns if it exists or not
--
- =item getTargetChildren(C<TARGET_STRING>)
- 
- Returns an array of target strings representing all the children of target
-diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
-index 97d9901..fd6fbad 100644
---- a/src/usr/targeting/common/processMrw.pl
-+++ b/src/usr/targeting/common/processMrw.pl
-@@ -477,15 +477,6 @@ sub processProcessor
-        $targetObj->setMasterProc($target);
-     }
- 
--    # I2C arrays
--    my @engine = ();
--    my @port = ();
--    my @slavePort = ();
--    my @addr = ();
--    my @speed = ();
--    my @type = ();
--    my @purpose = ();
--
-     $targetObj->log($target, "Processing PROC");
-     foreach my $child (@{ $targetObj->getTargetChildren($target) })
-     {
-@@ -537,58 +528,8 @@ sub processProcessor
-         {
-             processOcc($targetObj, $child, $target);
-         }
--        # Ideally this should be $child_type eq "I2C", but we need a change
--        # in serverwiz and the witherspoon.xml first
--        elsif (index($child,"i2c-master") != -1)
--        {
--            my ($i2cEngine, $i2cPort, $i2cSlavePort, $i2cAddr,
--                $i2cSpeed, $i2cType, $i2cPurpose) =
--                    processI2C($targetObj, $child, $target);
--
--            # Add this I2C device's information to the proc array
--            push(@engine,@$i2cEngine);
--            push(@port,@$i2cPort);
--            push(@slavePort,@$i2cSlavePort);
--            push(@addr,@$i2cAddr);
--            push(@speed,@$i2cSpeed);
--            push(@type,@$i2cType);
--            push(@purpose,@$i2cPurpose);
--
--        }
-     }
- 
--    # Add final I2C arrays to processor
--    my $size         = scalar @engine;
--    my $engine_attr  = $engine[0];
--    my $port_attr    = $port[0];
--    my $slave_attr   = $slavePort[0];
--    my $addr_attr    = $addr[0];
--    my $speed_attr   = $speed[0];
--    my $type_attr    = "0x".$type[0];
--    my $purpose_attr = "0x".$purpose[0];
--
--    # Parse out array to print as a string
--    foreach my $n (1..($size-1))
--    {
--        $engine_attr    .= ",".$engine[$n];
--        $port_attr      .= ",".$port[$n];
--        $slave_attr     .= ",".$slavePort[$n];
--        $addr_attr      .= ",".$addr[$n];
--        $speed_attr     .= ",".$speed[$n];
--        $type_attr      .= ",0x".$type[$n];
--        $purpose_attr   .= ",0x".$purpose[$n];
--    }
--
--    # Set the arrays to the corresponding attribute on the proc
--    $targetObj->setAttribute($target,"HDAT_I2C_ENGINE",$engine_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_MASTER_PORT",$port_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_SLAVE_PORT",$slave_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_ADDR",$addr_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_BUS_FREQ",$speed_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_DEVICE_TYPE",$type_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_DEVICE_PURPOSE",$purpose_attr);
--    $targetObj->setAttribute($target,"HDAT_I2C_ELEMENTS",$size);
--
-     ## update path for mvpd's and sbe's
-     my $path  = $targetObj->getAttribute($target, "PHYS_PATH");
-     my $model = $targetObj->getAttribute($target, "MODEL");
-@@ -1290,137 +1231,6 @@ sub getI2cMapField
-     return $hexfield;
- }
- 
--#------------------------------------------------------------------------------
--# I2C
--#
--sub processI2C
--{
--    my $targetObj    = shift; # Top Hierarchy of targeting structure
--    my $target       = shift; # I2C targetInstance
--    my $parentTarget = shift; # Processor target
--
--    # Initialize output arrays
--    my @i2cEngine = ();
--    my @i2cPort = ();
--    my @i2cSlave = ();
--    my @i2cAddr = ();
--    my @i2cSpeed = ();
--    my @i2cType = ();
--    my @i2cPurpose = ();
--
--    # Step 1: get I2C_ENGINE and PORT from <targetInstance>
--
--    my $engine = $targetObj->getAttribute($target, "I2C_ENGINE");
--    if($engine eq "") {$engine = "0xFF";}
--
--    my $port = $targetObj->getAttribute($target, "I2C_PORT");
--    if($port eq "") {$port = "0xFF";}
--
--    # Step 2: get I2C_ADDRESS and I2C_SPEED from <bus>
--    #         This is different for each connection.
--
--    my $i2cs = $targetObj->findConnections($parentTarget, "I2C","");
--    if ($i2cs ne "")
--    {
--        # This gives all i2c connections
--        foreach my $i2c (@{$i2cs->{CONN}})
--        {
--            # Here we are checking that the i2c source matches our target
--            my $source = $i2c->{SOURCE};
--            if ($source ne $target)
--            {
--                next;
--            }
--
--            # Most I2C devices will default the slave port, it is only valid
--            # for gpio expanders.
--            my $slavePort = "0xFF";
--
--            my @source_array = split(/-/,$source);
--            my $source_idx = scalar @source_array;
--
--            # If the last part of the source only includes numbers
--            if($source_array[$source_idx-1] =~ /^[0-9,.E]+$/)
--            {
--                $slavePort = $source_array[$source_idx-1];
--            }
--
--            my $addr;
--            my $speed;
--            my $type;
--            my $purpose;
--
--            # For all these attributes, we need to check if they're defined,
--            # and if not we set them to a default value.
--            if ($targetObj->isBusAttributeDefined(
--                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_ADDRESS"))
--            {
--                $addr = $targetObj->getBusAttribute(
--                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_ADDRESS");
--            }
--
--            if ($addr eq "") {$addr = "0xFF";}
--
--            if ($targetObj->isBusAttributeDefined(
--                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED"))
--            {
--                $speed = $targetObj->getBusAttribute(
--                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED");
--            }
--
--            if ($speed eq "") {$speed = "0";}
--
--            if ($targetObj->isBusAttributeDefined(
--                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_TYPE"))
--            {
--                $type = $targetObj->getBusAttribute(
--                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_TYPE");
--            }
--
--            if ($type eq "")
--            {
--                $type = "FF";
--            }
--            else
--            {
--                $type = $targetObj->getEnumValue("HDAT_I2C_DEVICE_TYPE",$type);
--            }
--
--            if ($targetObj->isBusAttributeDefined(
--                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE"))
--            {
--                $purpose = $targetObj->getBusAttribute(
--                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE");
--            }
--
--            if ($purpose eq "")
--            {
--                $purpose = "FF";
--            }
--            else
--            {
--                $purpose = $targetObj->getEnumValue("HDAT_I2C_DEVICE_PURPOSE",
--                                                    $purpose);
--            }
--
--            # Step 3: For each connection, create an instance in the array
--            #         for the DeviceInfo_t struct.
--            push @i2cEngine, $engine;
--            push @i2cPort, $port;
--            push @i2cSlave, $slavePort;
--            push @i2cAddr, $addr;
--            push @i2cSpeed, $speed;
--            push @i2cType, $type;
--            push @i2cPurpose, $purpose;
--
--        }
--    }
--
--    # Return this i2c device's information back to the processor
--    return (\@i2cEngine, \@i2cPort, \@i2cSlave, \@i2cAddr,
--            \@i2cSpeed, \@i2cType, \@i2cPurpose);
--}
--
- 
- sub setEepromAttributes
- {
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
-index e40f8eb..841d3d2 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
-@@ -191,7 +191,7 @@
- </attribute>
- 
- <attribute>
--    <id>HDAT_I2C_DEVICE_TYPE</id>
-+    <id>HDAT_I2C_DEVTYPE</id>
-     <description>
-         This attribute holds the values of the I2C device type from the i2c
-         device connections as defined in the MRW.  It is parsed into a
-@@ -255,7 +255,7 @@
- </attribute>
- 
- <attribute>
--    <id>HDAT_I2C_DEVICE_PURPOSE</id>
-+    <id>HDAT_I2C_DEV_PURPOSE</id>
-     <description>
-         This attribute holds the values of the I2C device purpose from the i2c
-         device connections as defined in the MRW.  It is parsed into a
-diff --git a/src/usr/targeting/common/xmltohb/target_types_openpower.xml b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
-index 6efbbd1..548c559 100644
---- a/src/usr/targeting/common/xmltohb/target_types_openpower.xml
-+++ b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
-@@ -32,14 +32,14 @@
-      =====================================================================
-  -->
- <targetTypeExtension>
--    <id>chip-processor</id>
-+    <id>base</id>
-     <attribute><id>HDAT_I2C_ENGINE</id></attribute>
-     <attribute><id>HDAT_I2C_MASTER_PORT</id></attribute>
--    <attribute><id>HDAT_I2C_DEVICE_TYPE</id></attribute>
-+    <attribute><id>HDAT_I2C_DEVTYPE</id></attribute>
-     <attribute><id>HDAT_I2C_ADDR</id></attribute>
-     <attribute><id>HDAT_I2C_SLAVE_PORT</id></attribute>
-     <attribute><id>HDAT_I2C_BUS_FREQ</id></attribute>
--    <attribute><id>HDAT_I2C_DEVICE_PURPOSE</id></attribute>
-+    <attribute><id>HDAT_I2C_DEV_PURPOSE</id></attribute>
-     <attribute><id>HDAT_I2C_ELEMENTS</id></attribute>
-     <attribute>
-         <id>IPMI_INSTANCE</id>
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0007-Disable-warnings-that-crop-up-a-lot-with-GCC6.patch b/openpower/package/hostboot/p9Patches/hostboot-0007-Disable-warnings-that-crop-up-a-lot-with-GCC6.patch
new file mode 100644
index 0000000..e8def56
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0007-Disable-warnings-that-crop-up-a-lot-with-GCC6.patch
@@ -0,0 +1,47 @@
+From 6f008e0bfdfbc9256f18ea0939dfc11d23348675 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 2 Mar 2017 16:15:25 +1100
+Subject: [PATCH] Disable warnings that crop up a lot with GCC6
+
+NOTE: THIS IS A TERRIBLE IDEA
+
+Instead, Hostboot developers should go and fix their code.
+
+Change-Id: I3e1da9f61ff442e49f143f51ccfc3c7c018beb1f
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/build/mkrules/cflags.env.mk | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk
+index 6bb900288388..428de9326400 100644
+--- a/src/build/mkrules/cflags.env.mk
++++ b/src/build/mkrules/cflags.env.mk
+@@ -5,7 +5,7 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# Contributors Listed Below - COPYRIGHT 2013,2016
++# Contributors Listed Below - COPYRIGHT 2013,2017
+ # [+] Google Inc.
+ # [+] International Business Machines Corp.
+ #
+@@ -40,11 +40,13 @@ endif
+ 
+ COMMONFLAGS += $(OPT_LEVEL) -nostdlib
+ CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
+-          -Wall -Werror -mtraceback=no -pipe -mabi=elfv1 \
++          -Wall -mtraceback=no -pipe -mabi=elfv1 \
++          -Wno-error=sizeof-array-argument \
++          -Wno-error=unused-function \
+ 	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian
+ ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian -ffreestanding -mabi=elfv1
+ CXXFLAGS += $(CFLAGS) -nostdinc++ -fno-rtti -fno-exceptions -Wall \
+-	    -fuse-cxa-atexit -std=gnu++14
++	    -fuse-cxa-atexit -std=gnu++14 -fpermissive
+ LDFLAGS += --nostdlib --sort-common -EB $(COMMONFLAGS)
+ 
+ INCFLAGS = $(addprefix -I, $(INCDIR) )
+-- 
+2.9.4
+
diff --git a/openpower/package/ima-catalog/ima-catalog.mk b/openpower/package/ima-catalog/ima-catalog.mk
index 20b62f2..e37021d 100644
--- a/openpower/package/ima-catalog/ima-catalog.mk
+++ b/openpower/package/ima-catalog/ima-catalog.mk
@@ -3,7 +3,7 @@
 # ima-catalog.mk
 #
 ################################################################################
-IMA_CATALOG_VERSION ?= 0e3bbcb56dfc60fd99b862406ecd3e117117d9af
+IMA_CATALOG_VERSION ?= 7c7a388ae0bb734cc9e4fe10593c45d8946a8fd7
 IMA_CATALOG_SITE ?= $(call github,open-power,ima-catalog,$(IMA_CATALOG_VERSION))
 IMA_CATALOG_LICENSE = Apache-2.0
 IMA_CATALOG_DEPENDENCIES = host-dtc host-xz
diff --git a/openpower/package/libflash/Config.in b/openpower/package/libflash/Config.in
index eb6f56d..3fb323f 100644
--- a/openpower/package/libflash/Config.in
+++ b/openpower/package/libflash/Config.in
@@ -2,3 +2,8 @@
 	bool "libflash"
 	help
 	  Build libflash shared library
+
+config BR2_PACKAGE_PFLASH
+	bool "pflash"
+	help
+	  Install pflash utility to target
diff --git a/openpower/package/libflash/libflash.mk b/openpower/package/libflash/libflash.mk
index a76aa4d..98ce0ed 100644
--- a/openpower/package/libflash/libflash.mk
+++ b/openpower/package/libflash/libflash.mk
@@ -4,9 +4,9 @@
 #
 ################################################################################
 
-LIBFLASH_VERSION = b2649b822ab57ab06f0028d8343320ae6e11cc50
-
+LIBFLASH_VERSION = v5.8-123-gc06ed583
 LIBFLASH_SITE = $(call github,open-power,skiboot,$(LIBFLASH_VERSION))
+
 LIBFLASH_INSTALL_STAGING = YES
 LIBFLASH_INSTALL_TARGET = YES
 
@@ -17,22 +17,39 @@
 		     OBJCOPY="$(TARGET_OBJCOPY)" OBJDUMP="$(TARGET_OBJDUMP)" \
 		     SIZE="$(TARGET_CROSS)size"
 
+LIBFLASH_MAKE_ENV = \
+	SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
+	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS)
+
+
 define LIBFLASH_BUILD_CMDS
-	PREFIX=$(STAGING_DIR)/usr SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
-	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS) \
-	       -C $(@D)/external/shared
+	PREFIX=$(STAGING_DIR)/usr $(LIBFLASH_MAKE_ENV) -C $(@D)/external/shared
+	$(if $(BR2_PACKAGE_PFLASH),
+		PREFIX=$(STAGING_DIR)/usr $(LIBFLASH_MAKE_ENV) \
+		       -C $(@D)/external/pflash)
+endef
+
+define HOST_LIBFLASH_BUILD_CMDS
+    $(HOST_MAKE_ENV) SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
+	    $(MAKE) -C $(@D)/external/pflash
 endef
 
 define LIBFLASH_INSTALL_STAGING_CMDS
-	PREFIX=$(STAGING_DIR)/usr SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
-	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS) \
-	       -C $(@D)/external/shared install
+	PREFIX=$(STAGING_DIR)/usr $(LIBFLASH_MAKE_ENV) -C $(@D)/external/shared \
+	       install
 endef
 
 define LIBFLASH_INSTALL_TARGET_CMDS
-	PREFIX=$(TARGET_DIR)/usr SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
-	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS) \
-	       -C $(@D)/external/shared install-lib
+	PREFIX=$(TARGET_DIR)/usr $(LIBFLASH_MAKE_ENV) -C $(@D)/external/shared \
+	       install-lib
+	$(if $(BR2_PACKAGE_PFLASH),
+		DESTDIR=$(TARGET_DIR) $(LIBFLASH_MAKE_ENV) \
+		       -C $(@D)/external/pflash install)
+endef
+
+define HOST_LIBFLASH_INSTALL_CMDS
+    $(INSTALL) $(@D)/external/pflash/pflash $(HOST_DIR)/usr/bin/pflash
 endef
 
 $(eval $(generic-package))
+$(eval $(host-generic-package))
diff --git a/openpower/package/machine-xml/machine-xml.mk b/openpower/package/machine-xml/machine-xml.mk
index d443802..e335e8b 100644
--- a/openpower/package/machine-xml/machine-xml.mk
+++ b/openpower/package/machine-xml/machine-xml.mk
@@ -81,7 +81,7 @@
         $(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 \
+            --src-output-dir=$(MRW_HB_TOOLS)/ \
             --img-output-dir=$(MRW_HB_TOOLS)/ \
             --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
             --bios-xml-file=$(OPENPOWER_BIOS_XML_CONFIG_FILE) \
@@ -98,17 +98,30 @@
         if [ -e $(MRW_HB_TOOLS)/wof-tables-img ]; then \
             chmod +x $(MRW_HB_TOOLS)/wof-tables-img; \
         fi
-        
-		if [ -d $(MRW_SCRATCH)/wofdata ]; then \
-			$(MRW_HB_TOOLS)/wof-tables-img --create $(MRW_SCRATCH)/wof_output $(MRW_SCRATCH)/wofdata; \
+
+        if [ -d $(MRW_SCRATCH)/wofdata ]; then \
+            $(MRW_HB_TOOLS)/wof-tables-img --create $(MRW_SCRATCH)/wof_output $(MRW_SCRATCH)/wofdata; \
         fi
 
+        # Create the MEMD binary
+        if [ -e $(MRW_HB_TOOLS)/memd_creation.pl ]; then \
+            chmod +x $(MRW_HB_TOOLS)/memd_creation.pl; \
+        fi
 
+        if [ -d $(MRW_SCRATCH)/memd_binaries ]; then \
+            $(MRW_HB_TOOLS)/memd_creation.pl -memd_dir $(MRW_SCRATCH)/memd_binaries -memd_output $(MRW_SCRATCH)/memd_output.dat; \
+        fi
 
 endef
 
 define MACHINE_XML_INSTALL_IMAGES_CMDS
         mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
+        if [ -e $(MRW_HB_TOOLS)/targeting.bin.protected ]; then \
+            mv -v $(MRW_HB_TOOLS)/targeting.bin.protected $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME).protected; \
+        fi
+        if [ -e $(MRW_HB_TOOLS)/targeting.bin.unprotected ]; then \
+            mv -v $(MRW_HB_TOOLS)/targeting.bin.unprotected $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME).unprotected; \
+        fi
 endef
 
 define MACHINE_XML_INSTALL_TARGET_CMDS
diff --git a/openpower/package/occ/Config.in b/openpower/package/occ/Config.in
index 29b5eb4..1d77dff 100644
--- a/openpower/package/occ/Config.in
+++ b/openpower/package/occ/Config.in
@@ -9,3 +9,15 @@
         string "Name of OCC image file"
         help
             String used to define name of the OCC binary image file
+
+config BR2_OCC_GPU_BIN_BUILD
+        bool "Enables Compilation of GPU Binary Image"
+        default n
+        help
+            Boolean used to flag whether to compile OCC GPU binary
+
+config BR2_OCC_GPU_GPE_BIN_FILENAME
+        string "Name of OCC GPU GPE Binary file"
+        help
+            String used to define name of the OCC GPUE GPE binary image file
+
diff --git a/openpower/package/occ/occ.mk b/openpower/package/occ/occ.mk
index fb62b71..5d069d1 100644
--- a/openpower/package/occ/occ.mk
+++ b/openpower/package/occ/occ.mk
@@ -5,7 +5,7 @@
 ################################################################################
 
 OCC_VERSION_BRANCH_MASTER_P8 ?= 28f2cec690b7f19548ce860a8820f519e6c39a6a
-OCC_VERSION_BRANCH_MASTER ?= 1dc97a688e32e63420533bfde8c6d7d2996619ea
+OCC_VERSION_BRANCH_MASTER ?= 6404302e1b1eae001edcec4a5c8e4c4ce5cdaaa3
 
 OCC_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_VERSION_BRANCH_MASTER),$(OCC_VERSION_BRANCH_MASTER_P8))
 OCC_SITE ?= $(call github,open-power,occ,$(OCC_VERSION))
@@ -23,7 +23,7 @@
 OCC_IMAGE_BIN_PATH = $(if $(BR2_OPENPOWER_POWER9),obj/image.bin,src/image.bin)
 
 OCC_DEPENDENCIES_P8 = host-binutils host-p8-pore-binutils
-OCC_DEPENDENCIES_P9 = host-binutils host-ppe42-gcc
+OCC_DEPENDENCIES_P9 = host-binutils host-ppe42-gcc hostboot-binaries
 OCC_DEPENDENCIES ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_DEPENDENCIES_P9),$(OCC_DEPENDENCIES_P8))
 
 define OCC_APPLY_PATCHES
@@ -50,8 +50,13 @@
         make combineImage
 endef
 define OCC_BUILD_CMDS_P9
-        cd $(@D)/src && \
-        make PPE_TOOL_PATH=$(PPE42_GCC_BIN) OCC_OP_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) LD_LIBRARY_PATH=$(HOST_DIR)/usr/lib all 
+	if [ "$(BR2_OCC_GPU_BIN_BUILD)" == "y"  ]; then \
+	    cd $(@D)/src && \
+            make PPE_TOOL_PATH=$(PPE42_GCC_BIN) OCC_OP_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) LD_LIBRARY_PATH=$(HOST_DIR)/usr/lib GPE1_BIN_IMAGE_PATH=$(STAGING_DIR)/hostboot_binaries/ OPOCC_GPU_SUPPORT=1 all; \
+	else \
+            cd $(@D)/src && \
+            make PPE_TOOL_PATH=$(PPE42_GCC_BIN) OCC_OP_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) LD_LIBRARY_PATH=$(HOST_DIR)/usr/lib all; \
+	fi;
 endef
 OCC_BUILD_CMDS ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_BUILD_CMDS_P9),$(OCC_BUILD_CMDS_P8))
 
diff --git a/openpower/package/occ/p9Patches/0001-Use-gnu89-as-C-std.patch b/openpower/package/occ/p9Patches/0001-Use-gnu89-as-C-std.patch
new file mode 100644
index 0000000..2f59d83
--- /dev/null
+++ b/openpower/package/occ/p9Patches/0001-Use-gnu89-as-C-std.patch
@@ -0,0 +1,41 @@
+From 52c55ef2370b22d0f9b78e5d975b3c8b2b915d34 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 2 Mar 2017 17:13:22 +1100
+Subject: [PATCH] Use gnu89 as C std
+
+Change-Id: I1953f9762f6e3c0f1b8005977de69802f0e11934
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/occBootLoader/img_defs.mk | 2 +-
+ src/occ_405/img_defs.mk       | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/occBootLoader/img_defs.mk b/src/occBootLoader/img_defs.mk
+index a53d9db115b3..907c3d5ad353 100644
+--- a/src/occBootLoader/img_defs.mk
++++ b/src/occBootLoader/img_defs.mk
+@@ -226,7 +226,7 @@ PIPE-CFLAGS = -pipe -Wa,-m405
+ GCC-CFLAGS += -g -Wall -fsigned-char -msoft-float  \
+ 	-m32 -mbig-endian -mcpu=405 -mmultiple -mstring \
+ 	-meabi -msdata=eabi -ffreestanding -fno-common \
+-	-fno-inline-functions-called-once
++	-fno-inline-functions-called-once -std=gnu89
+ 
+ CFLAGS      =  -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES)
+ 
+diff --git a/src/occ_405/img_defs.mk b/src/occ_405/img_defs.mk
+index abdef45963e0..9e0f1b91596a 100644
+--- a/src/occ_405/img_defs.mk
++++ b/src/occ_405/img_defs.mk
+@@ -252,7 +252,7 @@ PIPE-CFLAGS = -pipe -Wa,-m405
+ GCC-CFLAGS += -g -Wall -fsigned-char -msoft-float  \
+ 	-m32 -mbig-endian -mcpu=405 -mmultiple -mstring \
+ 	-meabi -msdata=eabi -ffreestanding -fno-common \
+-	-fno-inline-functions-called-once
++	-fno-inline-functions-called-once -std=gnu89
+ 
+ CFLAGS      =  -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES)
+ 
+-- 
+2.9.3
+
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index 2328a04..37c4470 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -8,10 +8,44 @@
         select BR2_PACKAGE_OCC
         select BR2_PACKAGE_CAPP_UCODE
         select BR2_PACKAGE_IMA_CATALOG
+        select BR2_PACKAGE_HOST_OPENPOWER_VPNOR
 	select BR2_PACKAGE_MACHINE_XML
         help
             Utilites for building a targeting binary image
 
+choice
+    prompt "Secure Boot key transition type"
+    default BR2_OPENPOWER_SECUREBOOT_NO_KEY_TRANSITION
+
+config BR2_OPENPOWER_SECUREBOOT_NO_KEY_TRANSITION
+    bool "None"
+    help
+      Builds a driver that does not transition Secure Boot keys
+
+config BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_DEV
+    bool "Transition existing keys to development keys"
+    help
+      Builds a driver that transitions Secure Boot keys to development keys and
+      powers off the system.  Only usable when system security has been
+      disabled.
+
+config BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_PROD
+    bool "Transition development keys to production keys"
+    help
+      Builds a driver that transitions Secure Boot development keys to
+      vendor supplied production keys and powers off the system.
+
+endchoice
+
+config BR2_OPENPOWER_SECUREBOOT_SIGN_MODE
+        string "Secureboot signing mode"
+        default "development"
+        help
+            Available options [development | production]
+            Indicates the signing mode when generating the PNOR image.  Only
+            applicable when hostboot is compiled with SECUREBOOT compile flag.
+            Default mode is development.
+
 config BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME
         string "Name of Openpower pnor xml layout file"
         help
@@ -77,6 +111,18 @@
         help
             String used to define name of wofdata binary ecc'd file
 
+config BR2_MEMDDATA_FILENAME
+        string "Name of memd original file"
+        default "memd_output.dat"
+        help
+            String used to define name of memd original file
+
+config BR2_MEMDDATA_BINARY_FILENAME
+        string "Name of memd binary file"
+        default "memd_extra_data.bin.ecc"
+        help
+            String used to define the name of the memd binary ecc'd file
+
 config BR2_IMA_CATALOG_FILENAME
         string "Name of IMA catalog binary"
         help
@@ -100,3 +146,7 @@
 config BR2_OPENPOWER_PNOR_XZ_ENABLED
         bool "Enable xz compression in PNOR payloads"
         default n
+
+config BR2_BUILD_PNOR_SQUASHFS
+        bool "Create a virtual PNOR image along with the standard image"
+        default y
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index 2f64253..2aa3bfd 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-OPENPOWER_PNOR_VERSION ?= 3ab2d5d3f0c030bd68a4b431ac128004d54f7511
+OPENPOWER_PNOR_VERSION ?= 21d66daff697f8c13fb067340ca621e9208ab1ea
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
@@ -27,6 +27,19 @@
 
 ifeq ($(BR2_OPENPOWER_PNOR_XZ_ENABLED),y)
 OPENPOWER_PNOR_DEPENDENCIES += host-xz
+XZ_ARG=-xz_compression
+endif
+
+OPENPOWER_PNOR_DEPENDENCIES += host-sb-signing-utils
+
+ifeq ($(BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_DEV),y)
+KEY_TRANSITION_ARG=-key_transition imprint
+else ifeq ($(BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_PROD),y)
+KEY_TRANSITION_ARG=-key_transition production
+endif
+
+ifneq ($(BR2_OPENPOWER_SECUREBOOT_SIGN_MODE),"")
+SIGN_MODE_ARG=-sign_mode $(BR2_OPENPOWER_SECUREBOOT_SIGN_MODE)
 endif
 
 ifeq ($(BR2_OPENPOWER_POWER9),y)
@@ -35,6 +48,9 @@
     OPENPOWER_RELEASE=p8
 endif
 
+ifeq ($(BR2_BUILD_PNOR_SQUASHFS),y)
+    OPENPOWER_PNOR_DEPENDENCIES += host-openpower-vpnor
+endif
 
 OPENPOWER_PNOR_INSTALL_IMAGES = YES
 OPENPOWER_PNOR_INSTALL_TARGET = NO
@@ -45,6 +61,18 @@
 OPENPOWER_PNOR_SCRATCH_DIR = $(STAGING_DIR)/openpower_pnor_scratch/
 OPENPOWER_VERSION_DIR = $(STAGING_DIR)/openpower_version
 OPENPOWER_MRW_SCRATCH_DIR = $(STAGING_DIR)/openpower_mrw_scratch
+OUTPUT_BUILD_DIR = $(STAGING_DIR)/../../../build/
+OUTPUT_IMAGES_DIR = $(STAGING_DIR)/../../../images/
+HOSTBOOT_BUILD_IMAGES_DIR = $(STAGING_DIR)/../../../staging/hostboot_build_images/
+
+FILES_TO_TAR = $(HOSTBOOT_BUILD_IMAGES_DIR)/* \
+               $(OUTPUT_BUILD_DIR)/skiboot-*/skiboot.elf \
+               $(OUTPUT_BUILD_DIR)/skiboot-*/skiboot.map \
+               $(OUTPUT_BUILD_DIR)/linux-*/.config \
+               $(OUTPUT_BUILD_DIR)/linux-*/vmlinux \
+               $(OUTPUT_BUILD_DIR)/linux-*/System.map \
+               $(OUTPUT_IMAGES_DIR)/zImage.epapr
+
 
 # Subpackages we want to include in the version info (do not include openpower-pnor)
 OPENPOWER_VERSIONED_SUBPACKAGES = skiboot hostboot linux petitboot machine-xml occ hostboot-binaries capp-ucode
@@ -75,8 +103,13 @@
             -ima_catalog_binary_filename $(BINARIES_DIR)/$(BR2_IMA_CATALOG_FILENAME) \
             -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE) \
             -wof_binary_filename $(OPENPOWER_MRW_SCRATCH_DIR)/$(BR2_WOFDATA_FILENAME) \
+            -memd_binary_filename $(OPENPOWER_MRW_SCRATCH_DIR)/$(BR2_MEMDDATA_FILENAME) \
             -payload $(BINARIES_DIR)/$(BR2_SKIBOOT_LID_NAME) \
-            $(if ($(BR2_OPENPOWER_PNOR_XZ_ENABLED),y),-xz_compression)
+            -payload_filename $(BR2_SKIBOOT_LID_XZ_NAME) \
+            -binary_dir $(BINARIES_DIR) \
+            -bootkernel_filename $(LINUX_IMAGE_NAME) \
+            -pnor_layout $(@D)/"$(OPENPOWER_RELEASE)"Layouts/$(BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME) \
+            $(XZ_ARG) $(KEY_TRANSITION_ARG) $(SIGN_MODE_ARG) \
 
         mkdir -p $(STAGING_DIR)/pnor/
         $(TARGET_MAKE_ENV) $(@D)/create_pnor_image.pl \
@@ -86,14 +119,15 @@
             -hb_image_dir $(HOSTBOOT_IMAGE_DIR) \
             -scratch_dir $(OPENPOWER_PNOR_SCRATCH_DIR) \
             -outdir $(STAGING_DIR)/pnor/ \
-            -payload $(BINARIES_DIR)/$(BR2_SKIBOOT_LID_XZ_NAME) \
-            -bootkernel $(BINARIES_DIR)/$(LINUX_IMAGE_NAME) \
+            -payload $(OPENPOWER_PNOR_SCRATCH_DIR)/$(BR2_SKIBOOT_LID_XZ_NAME) \
+            -bootkernel $(OPENPOWER_PNOR_SCRATCH_DIR)/$(LINUX_IMAGE_NAME) \
             -sbe_binary_filename $(BR2_HOSTBOOT_BINARY_SBE_FILENAME) \
             -sbec_binary_filename $(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) \
             -wink_binary_filename $(BR2_HOSTBOOT_BINARY_WINK_FILENAME) \
             -occ_binary_filename $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME) \
             -targeting_binary_filename $(BR2_OPENPOWER_TARGETING_ECC_FILENAME) \
             -wofdata_binary_filename $(OPENPOWER_PNOR_SCRATCH_DIR)/$(BR2_WOFDATA_BINARY_FILENAME) \
+            -memddata_binary_filename $(OPENPOWER_PNOR_SCRATCH_DIR)/$(BR2_MEMDDATA_BINARY_FILENAME) \
             -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE)
 
         $(INSTALL) $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME) $(BINARIES_DIR)
@@ -104,6 +138,16 @@
             dd if=$(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME) of=$(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_UPDATE_FILENAME) bs=32M count=1; \
             $(INSTALL) $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_UPDATE_FILENAME) $(BINARIES_DIR); \
         fi
+
+        # If this is a VPNOR system, run the generate-squashfs command and
+        # create a tarball
+        if [ "$(BR2_BUILD_PNOR_SQUASHFS)" == "y" ]; then \
+            PATH=$(HOST_DIR)/usr/bin:$(PATH) $(HOST_DIR)/usr/bin/generate-squashfs -f $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME).squashfs.tar $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME); \
+            $(INSTALL) $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME).squashfs.tar $(BINARIES_DIR); \
+        fi
+
+	    tar --transform 's/.*\///g' -zcvf $(OUTPUT_IMAGES_DIR)/host_fw_debug.tar $(FILES_TO_TAR)
+
 endef
 
 $(eval $(generic-package))
diff --git a/openpower/package/openpower-vpnor/openpower-vpnor.mk b/openpower/package/openpower-vpnor/openpower-vpnor.mk
new file mode 100644
index 0000000..e7ee67a
--- /dev/null
+++ b/openpower/package/openpower-vpnor/openpower-vpnor.mk
@@ -0,0 +1,15 @@
+################################################################################
+#
+# openpower_vpnor
+#
+################################################################################
+
+HOST_OPENPOWER_VPNOR_VERSION ?= 5c90711a8aaa6b1d760388a5116e36831ce5e7ab
+HOST_OPENPOWER_VPNOR_SITE ?= $(call github,openbmc,openpower-pnor-code-mgmt,$(HOST_OPENPOWER_VPNOR_VERSION))
+HOST_OPENPOWER_VPNOR_DEPENDENCIES = host-squashfs host-libflash
+
+define HOST_OPENPOWER_VPNOR_INSTALL_CMDS
+    $(INSTALL) -D $(@D)/generate-squashfs $(HOST_DIR)/usr/bin/generate-squashfs
+endef
+
+$(eval $(host-generic-package))
diff --git a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
index a94d8c6..880dc09 100644
--- a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
+++ b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
@@ -19,7 +19,7 @@
                     --exec-prefix=$(P8_PORE_BINUTILS_BIN) \
                     --target=pore-elf64 && \
         make configure-host && \
-        make LDFLAGS=-all-static
+        make CFLAGS=-Wno-error LDFLAGS=-all-static
 endef
 
 define HOST_P8_PORE_BINUTILS_INSTALL_CMDS
diff --git a/openpower/package/petitboot/Config.in b/openpower/package/petitboot/Config.in
index e5769de..ef002b4 100644
--- a/openpower/package/petitboot/Config.in
+++ b/openpower/package/petitboot/Config.in
@@ -27,6 +27,7 @@
 	bool "petitboot-mtd"
 	depends on BR2_PACKAGE_PETITBOOT
 	select BR2_PACKAGE_LIBFLASH
+	select BR2_PACKAGE_PFLASH
 	help
 	  Adds Petitboot support for MTD devices
 
diff --git a/openpower/package/petitboot/petitboot-console-ui.rules b/openpower/package/petitboot/petitboot-console-ui.rules
index 7464856..8e117e5 100644
--- a/openpower/package/petitboot/petitboot-console-ui.rules
+++ b/openpower/package/petitboot/petitboot-console-ui.rules
@@ -1,5 +1,5 @@
 
 # spawn a petitboot UI on common user-visible interface devices
-SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
-SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
-SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
+SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"
+SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"
+SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
index ba7276b..182dd1e 100644
--- a/openpower/package/petitboot/petitboot.mk
+++ b/openpower/package/petitboot/petitboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PETITBOOT_VERSION = v1.4.2
+PETITBOOT_VERSION = v1.6.1
 PETITBOOT_SITE ?= $(call github,open-power,petitboot,$(PETITBOOT_VERSION))
 PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex lvm2
 PETITBOOT_LICENSE = GPLv2
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index 9a37bbb..be50245 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -134,7 +134,7 @@
 
 UPPER_CASE_PKG = $(call UPPERCASE,$(1))
 $$(UPPER_CASE_PKG)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
-
+UPPER_CASE_SIGN_MODE = $(call UPPERCASE,$$(BR2_OPENPOWER_SECUREBOOT_SIGN_MODE))
 
 $$(eval $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), \
 		$$(call OPENPOWER_SUBPACKAGE_VERSION,$$(pkg),$$(call UPPERCASE,$$(pkg)))))
@@ -168,6 +168,11 @@
 	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 fi
 
+# Flag whether op-build is production signed
+if [ "$$(UPPER_CASE_SIGN_MODE)" == 'PRODUCTION' ]; then \
+	echo -n "-prod" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+fi
+
 # Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
 echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
 
diff --git a/openpower/package/ppe42-gcc/ppe42-gcc.mk b/openpower/package/ppe42-gcc/ppe42-gcc.mk
index bfaf608..3ab8a55 100644
--- a/openpower/package/ppe42-gcc/ppe42-gcc.mk
+++ b/openpower/package/ppe42-gcc/ppe42-gcc.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PPE42_GCC_VERSION ?= d8a1bac8634033a3edd4e9a22455f97318718f43
+PPE42_GCC_VERSION ?= c13849780c80d1ed466efbeaabcc663fe48cd87d
 PPE42_GCC_SITE ?= $(call github,open-power,ppe42-gcc,$(PPE42_GCC_VERSION))
 PPE42_GCC_LICENSE = GPLv3+
 
diff --git a/openpower/package/sb-signing-framework/Config.in b/openpower/package/sb-signing-framework/Config.in
new file mode 100644
index 0000000..7ac3848
--- /dev/null
+++ b/openpower/package/sb-signing-framework/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_HOST_SB_SIGNING_FRAMEWORK
+        bool "OpenPOWER secureboot signing server interface"
+        default y if BR2_OPENPOWER_PLATFORM && ((BR2_OPENPOWER_SECUREBOOT_SIGN_MODE = "production") || (BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_PROD) )
+        help
+            Client interface to signing server for signing OpenPOWER firmware images
diff --git a/openpower/package/sb-signing-framework/sb-signing-framework.mk b/openpower/package/sb-signing-framework/sb-signing-framework.mk
new file mode 100644
index 0000000..6338ae0
--- /dev/null
+++ b/openpower/package/sb-signing-framework/sb-signing-framework.mk
@@ -0,0 +1,27 @@
+################################################################################
+#
+#  sb-signing-framework
+#
+################################################################################
+
+SB_SIGNING_FRAMEWORK_SITE ?= $(call github,open-power,sb-signing-framework,$(SB_SIGNING_FRAMEWORK_VERSION))
+
+SB_SIGNING_FRAMEWORK_LICENSE = Apache-2.0
+SB_SIGNING_FRAMEWORK_LICENSE_FILES = LICENSE
+SB_SIGNING_FRAMEWORK_VERSION ?= 02ed29aa11136a6d9a6e1f075772532c43cb7289
+
+HOST_SB_SIGNING_FRAMEWORK_DEPENDENCIES = host-openssl
+
+define HOST_SB_SIGNING_FRAMEWORK_BUILD_CMDS
+	CFLAGS="-I $(HOST_DIR)/usr/include -Wl,-rpath -Wl,$(HOST_DIR)/usr/lib" \
+		$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/client/
+endef
+
+define HOST_SB_SIGNING_FRAMEWORK_COPY_FILES
+		$(INSTALL) -m 0755 $(@D)/src/client/sf_client $(HOST_DIR)/usr/bin/
+endef
+
+HOST_SB_SIGNING_FRAMEWORK_POST_INSTALL_HOOKS += HOST_SB_SIGNING_FRAMEWORK_COPY_FILES
+
+$(eval $(host-generic-package))
+
diff --git a/openpower/package/sb-signing-utils/Config.in b/openpower/package/sb-signing-utils/Config.in
new file mode 100644
index 0000000..b834f46
--- /dev/null
+++ b/openpower/package/sb-signing-utils/Config.in
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_HOST_SB_SIGNING_UTILS
+        bool "OpenPOWER secureboot signing utilities"
+        default y if (BR2_OPENPOWER_PLATFORM)
+        help
+            Secureboot utilities for signing OpenPOWER firmware images
diff --git a/openpower/package/sb-signing-utils/keys/README.md b/openpower/package/sb-signing-utils/keys/README.md
new file mode 100644
index 0000000..f70e6c2
--- /dev/null
+++ b/openpower/package/sb-signing-utils/keys/README.md
@@ -0,0 +1,147 @@
+# Important Information About Secure and Trusted Boot And Signing Keys
+
+## Background
+
+IBM P8 OpenPOWER systems support a limited set of Secure and Trusted Boot
+functionality.  Secure Boot implements a processor based chain of trust.  The
+chain starts with an implicitly trusted component with other components being
+authenticated and integrity checked before being executed on the host processor
+cores.  At the root of this trust chain is the Host Platform Core Root of Trust
+for Measurement (CRTM).  Immutable Read Only Memory (ROM - fixed in the POWER
+processor chip) verifies the initial firmware load.  That firmware verifies
+cryptographic signatures on all subsequent "to be trusted" firmware that is
+loaded for execution on the P8 cores.  Trusted Boot also makes use of this same
+CRTM by measuring and recording FW images via a Trusted Platform Module (TPM)
+before control is passed on to the next layer in the boot stack.  The CRTM
+design is based on a Public Key Infrastructure (PKI) process to validate the
+firmware images before they are executed.  This process makes use of a set of
+hardware and firmware asymmetric keys.  Multiple organizations will want to
+deliver POWER hardware, digitally signed firmware, signed boot code,
+hypervisors, and operating systems.  Each platform manufacturer wants to
+maintain control over its own code and sign it with its own keys.  A single key
+hash is stored in host processor module SEEPROM representing the anchoring root
+set of hardware keys.  The P8 Trusted Boot supports a key management flow that
+makes use of two kinds of hardware root keys, a wide open, well-known, openly
+published public/private key pair (imprint keys) and a set of production keys
+where the private key is protected by a hardware security module (HSM) internal
+to the manufacturing facility of the key owner.
+
+## Purpose Of Imprint Public/Private Keys
+
+It is critical to note that the imprint keys are not to be used for production.
+These are strictly for manufacturing and development level support given the
+open nature of the private part of the Hardware keys.  This allows developers
+and testers to sign images and create builds for Secure and Trusted Boot
+development lab testing.  Systems must be transitioned to production level
+keys for customer environments.
+
+## Manufacturer Key Management Role
+
+If a system is shipped from the System Manufacturer with imprint keys installed
+rather than production level hardware keys, the system must be viewed as running
+with a set of well-known default keys and vulnerable to exploitation.  The
+System Access Administrator must work with the System Manufacturer to insure
+that a key transition process is utilized once a hardware based chain of trust
+is to be enabled as part of Secure or Trusted Boot functionality.
+
+## Intentional Public Release Of Imprint Public/Private Keys
+
+All public and private keys in this directory are being intentionally released
+to enable the developer community to sign code images.  For true security, a
+different set of production signing keys should be used, and the private
+production signing key should be carefully guarded.  Currently, we do not yet
+support production key signing, only development signing.
+
+### Imprint Private Keys
+
+#### Hardware Private Keys
+
+The following files contain the Imprint private keys, in PEM format:
+
+hw_key_a.key
+hw_key_b.key
+hw_key_c.key
+
+#### Software Private Keys
+
+The project does not contain any Software keys.  The sample scripts reuse the
+Hardware keys where input is required for the Software keys.  To generate your
+own software keys use the openssl "ecparam" command.  The following commands
+will generate private software keys P, Q and R:
+
+$ openssl ecparam -genkey -outform pem -noout -name secp521r1 -out sw_key_p.key
+$ openssl ecparam -genkey -outform pem -noout -name secp521r1 -out sw_key_q.key
+$ openssl ecparam -genkey -outform pem -noout -name secp521r1 -out sw_key_r.key
+
+OpenPOWER secure boot supports three keys for Hardware (HW) key signing and (up
+to) three keys for Software (SW) key signing,  This permits a "separation of
+duties" in the firmware signing process, if such a separation is desired.  All
+three HW keys are required, but the SW keys allow for the use of one, two or
+three keys.  A signature is required (i.e. must be present in the container) by
+*all three* firmare keys, and by every (1-3) SW key in use, to create a
+container that will boot with secure mode on.  If a separation of duties is not
+required, the signer may use the same key for all three required HW keys, and
+for the (1-3) required SW keys.  The container will boot as long as all required
+signatures are present.
+
+#### Hardware and Software Public Keys
+
+The public keys can be easily extracted from the private keys.  Use the openssl
+"pkey" command, for example:
+
+$ openssl pkey -pubout -inform pem -outform pem -in sw_key_p.key -out sw_key_p.pub
+
+To build and sign a container locally, the public keys are not required.  The
+signing tool will automatically extract the public key from the private key (for
+inclusion in the container) and will use the private key to create the required
+signatures.
+
+The recommended process for production keys is to not have the private keys
+present on thy system used to build firmware.  In this mode you want to create
+the signatures independently from the op-build process.  Create your private HW
+and SW keys as described above.  Protect the private portion of the key (the
+private key).  Add the public portion of the key (the public key) to ./keys
+directory.  The signing tool will use the public key to populate the container.
+
+In this mode of operation you must sign the Prefix header and Software header
+with the HW and SW keys, respectively.  TODO: Instructions to follow.
+
+#### Hardware Keys Hash
+
+As mentioned above, a single key hash is stored in host processor module SEEPROM
+representing the anchoring root set of HW keys.  This is a 64 byte, SHA512 hash
+of the three HW keys.  On a running OpenPOWER machine this hash may be read from
+an entry in the device tree:
+
+# cat /proc/device-tree/ibm,secureboot/hw-key-hash | xxd -p
+40d487ff7380ed6ad54775d5795fea0de2f541fea9db06b8466a42a320e6
+5f75b48665460017d907515dc2a5f9fc50954d6ee0c9b67d219dfb708535
+1d01d6d1
+
+Note this file is readable both from the target OS and the petitboot shell
+environment.
+
+OpenPOWER secure boot protects the containerized firmware by comparing this hash
+to the hash of the HW public keys in the container (as well as verifying the
+signatures, of course).  If the hashes don't match, the machine won't boot.  For
+this reason you might want to check that the HW keys hash will be correct in
+container you are building.
+
+To check the hash of your HW keys, run the "create-container" tool from the
+sb-signing-utils project.  This command will create no container, but will
+display the SHA512 hash of the input keys:
+
+$ create-container -v -w0 -a /tmp/keys/hw_key_a.key \
+                          -b /tmp/keys/hw_key_b.key \
+                          -c /tmp/keys/hw_key_c.key \
+                          --payload /dev/zero --imagefile /dev/null \
+                          | grep "HW keys hash"
+
+HW keys hash = 40d487ff7380ed6a...
+
+Note this command will work with either public or private keys as input.  The
+tool will also display the hash during normal container creation, when the
+program is run in verbose mode.
+
+To check the hash of the HW keys in an existing container, run the
+"print-container" tool: TODO
diff --git a/openpower/package/sb-signing-utils/keys/hw_key_a.key b/openpower/package/sb-signing-utils/keys/hw_key_a.key
new file mode 100644
index 0000000..8cfd2f2
--- /dev/null
+++ b/openpower/package/sb-signing-utils/keys/hw_key_a.key
@@ -0,0 +1,25 @@
+!!! Important WARNING About This Private Key !!!
+
+DO NOT STRIP THIS WARNING FROM THIS PRIVATE KEY
+
+This private is being intentionally released by IBM to enable the developer
+community to sign code images.  For true security, a different set of production
+signing keys should be used, and the private production signing key should be
+carefully guarded.
+
+-----BEGIN EC PRIVATE KEY-----
+MIICnAIBAQRBVvu38Sbtau77TPvsvEmYHwAD8WY12vTjRE6SowkePCI0+3k5bawC
+J9rKnafuMLCxE2SzTh5JPonVKhBPZeUpaOugggHGMIIBwgIBATBNBgcqhkjOPQEB
+AkIB////////////////////////////////////////////////////////////
+//////////////////////////8wgZ4EQgH/////////////////////////////
+/////////////////////////////////////////////////////////ARBUZU+
+uWGOHJofkpohoLaFQO6i2nJbmbMV87i0iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz
+34g9LDTx70Uf1GtQPwADFQDQnogAKRy4U5bMZxc5MoSqoNpkugSBhQQAxoWOBrcE
+BOnNnj7LZiOVtEKcZIE5BT+1Ifgor2BrTT26oUted+/nWSj+HcEnov+o3jNIs8GF
+akKb+X5+McLlvWYBGDkpaniaO8AEXIpftCx9G9mY9URJV5tEaBevvRcnPmYsl+5y
+mV70JkDFULkBP60HYTU8cIaicsJAiL6Udp/RZlACQgH/////////////////////
+//////////////////////pRhoeDvy+Wa3/MAUj3CaXQO7XJuImcR667b7cekThk
+CQIBAaGBiQOBhgAEALseCHiWoJ4wcnQGjefKigKgnFVDj1D03ikeYzefc2y3wnoe
+8neyeB+X071kpXg83nEAVuxqm1Yn1IMJCP9Tz7NhALhglEF2RzciUSwF+GDx8CW7
+RlSBlxbtEPxpODD8/tImnjRig/OngZFce8fds7NPEUxPsoS7xCQ6V+dSAaYM+QYi
+-----END EC PRIVATE KEY-----
diff --git a/openpower/package/sb-signing-utils/keys/hw_key_b.key b/openpower/package/sb-signing-utils/keys/hw_key_b.key
new file mode 100644
index 0000000..60afd2d
--- /dev/null
+++ b/openpower/package/sb-signing-utils/keys/hw_key_b.key
@@ -0,0 +1,26 @@
+!!! Important WARNING About This Private Key !!!
+
+DO NOT STRIP THIS WARNING FROM THIS PRIVATE KEY
+
+This private is being intentionally released by IBM to enable the developer
+community to sign code images.  For true security, a different set of production
+signing keys should be used, and the private production signing key should be
+carefully guarded.
+
+-----BEGIN EC PRIVATE KEY-----
+MIICnQIBAQRCAQ0nt+2t5RDGWJF6S326TEWyHPdI/VHm+pKvFgCCrVujE7P5oUlv
+GP3HZ3qemUX0RgmRjD27RflVdyOL6IlekHSsoIIBxjCCAcICAQEwTQYHKoZIzj0B
+AQJCAf//////////////////////////////////////////////////////////
+////////////////////////////MIGeBEIB////////////////////////////
+//////////////////////////////////////////////////////////wEQVGV
+PrlhjhyaH5KaIaC2hUDuotpyW5mzFfO4tImRjvEJ4VYZOVHsfpN7FlLAvTuxvwc1
+c9+IPSw08e9FH9RrUD8AAxUA0J6IACkcuFOWzGcXOTKEqqDaZLoEgYUEAMaFjga3
+BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFLXnfv51ko/h3BJ6L/qN4zSLPB
+hWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZmPVESVebRGgXr70XJz5mLJfu
+cple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQAkIB////////////////////
+///////////////////////6UYaHg78vlmt/zAFI9wml0Du1ybiJnEeuu2+3HpE4
+ZAkCAQGhgYkDgYYABACTA8hhnkYIZKrc1O0tojIuF5Mhs9/XLMoSfPmDeqSXg2X9
+tjq598htT5uDWU/9WfrISQ9w81RR+blEvcY+GctkEQFJPYdOapsX2TVoNwvlJeVp
+gsQFwer4TOkmNV0FVbH7sJiHRw+ROHC5TOmy9YfQHCc2uAqInaZqPKTz13D8zQCG
+Cw==
+-----END EC PRIVATE KEY-----
diff --git a/openpower/package/sb-signing-utils/keys/hw_key_c.key b/openpower/package/sb-signing-utils/keys/hw_key_c.key
new file mode 100644
index 0000000..1bf4dfb
--- /dev/null
+++ b/openpower/package/sb-signing-utils/keys/hw_key_c.key
@@ -0,0 +1,26 @@
+!!! Important WARNING About This Private Key !!!
+
+DO NOT STRIP THIS WARNING FROM THIS PRIVATE KEY
+
+This private is being intentionally released by IBM to enable the developer
+community to sign code images.  For true security, a different set of production
+signing keys should be used, and the private production signing key should be
+carefully guarded.
+
+-----BEGIN EC PRIVATE KEY-----
+MIICnQIBAQRCASomU+ACnQy0UDtFX53VV2bwBrc3GPK3hbMrsU1E98YmU4eh/Dpj
+FYQOyCPV27GRK8V46a1xvWs57per+X4R9LVdoIIBxjCCAcICAQEwTQYHKoZIzj0B
+AQJCAf//////////////////////////////////////////////////////////
+////////////////////////////MIGeBEIB////////////////////////////
+//////////////////////////////////////////////////////////wEQVGV
+PrlhjhyaH5KaIaC2hUDuotpyW5mzFfO4tImRjvEJ4VYZOVHsfpN7FlLAvTuxvwc1
+c9+IPSw08e9FH9RrUD8AAxUA0J6IACkcuFOWzGcXOTKEqqDaZLoEgYUEAMaFjga3
+BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFLXnfv51ko/h3BJ6L/qN4zSLPB
+hWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZmPVESVebRGgXr70XJz5mLJfu
+cple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQAkIB////////////////////
+///////////////////////6UYaHg78vlmt/zAFI9wml0Du1ybiJnEeuu2+3HpE4
+ZAkCAQGhgYkDgYYABAFUBCtSjR9PiJqVhg/EIsNGp0phvJ8gE5XBFTnox8n8a+Ji
+4e7r8Uae9Qea6hnvWa6HzAup1KEJAl6vobyhyItaegDEHRy56UIij9nDVYhSIXia
+EEln8xLVz5cB//hToEtexHUvdax85Nacwco6FyGNxzptGddL+/ds/rkZ05Q1fFUr
+WQ==
+-----END EC PRIVATE KEY-----
diff --git a/openpower/package/sb-signing-utils/keys/sw_key_a.key b/openpower/package/sb-signing-utils/keys/sw_key_a.key
new file mode 100644
index 0000000..548e880
--- /dev/null
+++ b/openpower/package/sb-signing-utils/keys/sw_key_a.key
@@ -0,0 +1,16 @@
+!!! Important WARNING About This Private Key !!!
+
+DO NOT STRIP THIS WARNING FROM THIS PRIVATE KEY
+
+This private is being intentionally released by IBM to enable the developer
+community to sign code images.  For true security, a different set of production
+signing keys should be used, and the private production signing key should be
+carefully guarded.
+
+-----BEGIN EC PRIVATE KEY-----
+MIHcAgEBBEIA1vyq2cSPgwWxVtPIEOqGL3UVsy5juBQz8XekOq6aeYf/nqC9u8u+
+GqCiffgBCPnXfWOWLtkaokYEPuMe7TekzomgBwYFK4EEACOhgYkDgYYABAD8W6NM
+6nVfsYps75ko1gfNrJO9XqbWAuUuyFA/O8S5tPwVP+atGpc4PE+uTEI24t7mkYLa
+kZhnGlmQpjr4fjkFvgAZDwhcQ+hWmzXYEBobYIPgItJi+8GvxBHBZvQWqpVWRfU9
+nSOxLTjjZ3i3dvBnQpCnx4cpTtIJPzFuE+kXqxLDnQ==
+-----END EC PRIVATE KEY-----
diff --git a/openpower/package/sb-signing-utils/sb-signing-utils.mk b/openpower/package/sb-signing-utils/sb-signing-utils.mk
new file mode 100644
index 0000000..cfbdc8a
--- /dev/null
+++ b/openpower/package/sb-signing-utils/sb-signing-utils.mk
@@ -0,0 +1,40 @@
+################################################################################
+#
+#  sb-signing-utils
+#
+################################################################################
+
+SB_SIGNING_UTILS_SITE ?= $(call github,open-power,sb-signing-utils,$(SB_SIGNING_UTILS_VERSION))
+
+SB_SIGNING_UTILS_LICENSE = Apache-2.0
+SB_SIGNING_UTILS_LICENSE_FILES = LICENSE
+SB_SIGNING_UTILS_VERSION ?= 09bef4fbb1d7f178f3103bf9d7fb96d150a9b3a5
+
+HOST_SB_SIGNING_UTILS_DEPENDENCIES = host-openssl
+
+ifeq ($(BR2_OPENPOWER_SECUREBOOT_SIGN_MODE),production)
+HOST_SB_SIGNING_UTILS_DEPENDENCIES += host-sb-signing-framework
+else ifeq ($(BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_PROD),y)
+HOST_SB_SIGNING_UTILS_DEPENDENCIES += host-sb-signing-framework
+endif
+
+HOST_SB_SIGNING_UTILS_AUTORECONF = YES
+HOST_SB_SIGNING_UTILS_AUTORECONF_OPTS = -i
+
+define HOST_SB_SIGNING_UTILS_COPY_FILES
+	$(INSTALL) -m 0755 $(@D)/crtSignedContainer.sh $(HOST_DIR)/usr/bin/
+endef
+
+SB_SIGNING_UTILS_KEY_SRC_PATH=$(BR2_EXTERNAL)/package/sb-signing-utils/keys
+SB_SIGNING_UTILS_KEY_DST_PATH=$(HOST_DIR)/etc/keys
+
+define HOST_SB_SIGNING_UTILS_COPY_KEYS
+	$(INSTALL) -d -m 0755 $(SB_SIGNING_UTILS_KEY_DST_PATH)
+	$(INSTALL) -m 0755 $(SB_SIGNING_UTILS_KEY_SRC_PATH)/* \
+		$(SB_SIGNING_UTILS_KEY_DST_PATH)
+endef
+
+HOST_SB_SIGNING_UTILS_POST_INSTALL_HOOKS += HOST_SB_SIGNING_UTILS_COPY_FILES
+HOST_SB_SIGNING_UTILS_POST_INSTALL_HOOKS += HOST_SB_SIGNING_UTILS_COPY_KEYS
+
+$(eval $(host-autotools-package))
diff --git a/openpower/package/sbe/sbe.mk b/openpower/package/sbe/sbe.mk
index aa926f5..728699f 100644
--- a/openpower/package/sbe/sbe.mk
+++ b/openpower/package/sbe/sbe.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-SBE_VERSION ?= d770027426ba0c5d6c44fa985e9dfaf28fd6fcce
+SBE_VERSION ?= 374add4ab977460d1793ddcfa64548732c4cbe18
 SBE_SITE ?= $(call github,open-power,sbe,$(SBE_VERSION))
 
 SBE_LICENSE = Apache-2.0
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index fa8a8a3..70a800d 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.6.0-87-ge835c2fb7ce1" if BR2_SKIBOOT_LATEST_VERSION
+	default "v5.9-rc4" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/scripts/firmware-whitelist b/openpower/scripts/firmware-whitelist
index 2d0fc05..0dfbec8 100755
--- a/openpower/scripts/firmware-whitelist
+++ b/openpower/scripts/firmware-whitelist
@@ -10,6 +10,7 @@
                 'cxgb4/'
                 'cxgb3/'
                 'e100/'
+                'ql2500_fw.bin'
                 'radeon/CEDAR_rlc.bin'
                 'radeon/CEDAR_pfp.bin'
                 'radeon/CEDAR_smc.bin'
diff --git a/openpower/scripts/release-notes b/openpower/scripts/release-notes
index 4231aa0..33974d5 100755
--- a/openpower/scripts/release-notes
+++ b/openpower/scripts/release-notes
@@ -13,18 +13,18 @@
 
 my $repos =
 {
-    'op-build' => { REPO => "http://github.com/open-power/op-build" },
-    'hostboot' => { REPO => "http://github.com/open-power/hostboot" ,
+    'op-build' => { REPO => "https://github.com/open-power/op-build" },
+    'hostboot' => { REPO => "https://github.com/open-power/hostboot" ,
                     DIR => "openpower/package/hostboot" },
-    'sbe'      => { REPO => "http://github.com/open-power/sbe" ,
+    'sbe'      => { REPO => "https://github.com/open-power/sbe" ,
                     DIR => "openpower/package/sbe"},
-    'skiboot'  => { REPO => "http://github.com/open-power/skiboot" ,
+    'skiboot'  => { REPO => "https://github.com/open-power/skiboot" ,
                     DIR => "openpower/package/skiboot"},
-    'occ'      => { REPO => "http://github.com/open-power/occ" ,
+    'occ'      => { REPO => "https://github.com/open-power/occ" ,
                     DIR => "openpower/package/occ"},
-    'pnor'     => { REPO => "http://github.com/open-power/pnor" ,
+    'pnor'     => { REPO => "https://github.com/open-power/pnor" ,
                     DIR => "openpower/package/openpower-pnor"},
-    'petitboot'     => { REPO => "http://github.com/open-power/petitboot" ,
+    'petitboot'     => { REPO => "https://github.com/open-power/petitboot" ,
 			 DIR => "openpower/package/petitboot"},
 };
 
@@ -72,7 +72,31 @@
 s/_defconfig// foreach (@begin_platforms);
 s/_defconfig// foreach (@end_platforms);
 
-if ($platform) {
+my $witherspoon_insanity;
+
+# If both witherspoon and witherspoon-sequoia exist we've switched back
+# to a single witherspoon platform and the -sequoia platform is just to
+# keep Jenkins happy - ignore it.
+if ("witherspoon" ~~ @begin_platforms
+	&& "witherspoon-sequoia" ~~ @begin_platforms) {
+	my $index = 0;
+	$index++ until @begin_platforms[$index] eq "witherspoon-sequoia";
+	splice(@begin_platforms, $index, 1);
+}
+
+if ("witherspoon" ~~ @end_platforms
+	&& "witherspoon-sequoia" ~~ @end_platforms) {
+	my $index = 0;
+	$index++ until @end_platforms[$index] eq "witherspoon-sequoia";
+	splice(@end_platforms, $index, 1);
+}
+
+if (($platform && $platform eq 'witherspoon')
+    && -f "$end_worktree/openpower/configs/witherspoon-sequoia_defconfig") {
+    @begin_platforms = ('witherspoon');
+    @end_platforms = ('witherspoon-sequoia', 'witherspoon-redbud');
+    $witherspoon_insanity = 1;
+} elsif ($platform) {
     @begin_platforms = ($platform);
     @end_platforms = ($platform);
 }
@@ -86,45 +110,73 @@
 }
 
 {
-    my $q = "SELECT platform FROM platforms WHERE version is ? AND platform NOT IN (SELECT platform FROM platforms WHERE version is ?)";
+    my $q = "SELECT platform as p FROM platforms WHERE version is ? AND platform NOT IN (SELECT platform FROM platforms WHERE version is ? and platform=p)";
     my $sth = $dbh->prepare($q) or die $!;
     $sth->execute($begin_release, $end_release);
     my $r;
-    print OUTPUT "## Removed platforms\n\n- ".$r->{platform}."\n" if $r = $sth->fetchrow_hashref;
-    print OUTPUT "- ".$_->{platform}."\n" while ($r = $sth->fetchrow_hashref);
+    print OUTPUT "## Removed platforms\n\n- ".$r->{p}."\n" if $r = $sth->fetchrow_hashref;
+    print OUTPUT "- ".$r->{p}."\n" while ($r = $sth->fetchrow_hashref);
 
     $sth->execute($end_release, $begin_release);
-    print OUTPUT "## New platforms\n\n- ".$r->{platform}."\n" if $r = $sth->fetchrow_hashref;
-    print OUTPUT "- ".$_->{platform}."\n" while($r = $sth->fetchrow_hashref);
+    print OUTPUT "## New platforms\n\n- ".$r->{p}."\n" if $r = $sth->fetchrow_hashref;
+    print OUTPUT "- ".$r->{p}."\n" while($r = $sth->fetchrow_hashref);
 }
 
 my @common_platforms;
 {
-    my $q = "SELECT platform FROM platforms WHERE version is ? AND EXISTS (select platform from platforms where version is ?)";
+    my $q = "SELECT platform as p FROM platforms WHERE version is ? AND EXISTS (select platform from platforms where version is ? and platform=p)";
     my $sth = $dbh->prepare($q) or die $!;
     $sth->execute($begin_release, $end_release);
     my $r;
-    push @common_platforms, $r->{platform} while ($r = $sth->fetchrow_hashref);
+    push @common_platforms, $r->{p} while ($r = $sth->fetchrow_hashref);
 }
 
+use Data::Dumper;
+
+print "# COMMON PLATFORMS\n";
+print Dumper(\@common_platforms);
+
 foreach my $p (@common_platforms) {
     next if $p =~ /firenze/;
     next if $p =~ /^zz$/;
     next if $p =~ /mambo/;
-    $repos->{"$p-xml"} = { REPO => "http://github.com/open-power/$p-xml" ,
+    next if $p =~ /redbud/;
+    next if $p =~ /pseries/;
+    next if $p =~ /witherspoon-redbud/;
+    if ($p =~ /witherspoon-sequoia/) {
+	    $p = "witherspoon";
+	    $witherspoon_insanity = 1;
+    }
+    $repos->{"$p-xml"} = { REPO => "https://github.com/open-power/$p-xml" ,
 			   DIR => "openpower/package/$p-xml" };
 }
 
 foreach my $p (@begin_platforms) {
     system("bash -c '(cd $begin_worktree && . op-build-env && op-build ".$p."_defconfig && op-build legal-info)'");
+    # Work-around bug in op-build v1.17, fixed 2 commits later
+    system('sed -e \'s/,""\([^",]\)/,"\1/; s/\([^,]\)"",/\1",/; s/machine-xml-"\(.*\)".tar/machine-xml-\1.tar/\' -i '. $begin_worktree .'/output/legal-info/manifest.csv');
     # Forgive me for this....
-    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $begin_worktree/output/legal-info/manifest.csv begin_".$p."_manifest\"");
+    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $begin_worktree/output/legal-info/manifest.csv i\"");
+    $dbh->do("ALTER TABLE i RENAME to 'begin_".$p."_manifest'") or die $!;
 }
 
 foreach my $p (@end_platforms) {
+    print "# END PLATFORMS LEGAL-INFO $p\n";
     system("bash -c '(cd $end_worktree && . op-build-env && op-build ".$p."_defconfig && op-build legal-info)'");
     # Forgive me for this....
-    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $end_worktree/output/legal-info/manifest.csv end_".$p."_manifest\"");
+    print "# loading manifest\n";
+    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $end_worktree/output/legal-info/manifest.csv i\"");
+    $dbh->do("ALTER TABLE i RENAME to 'end_".$p."_manifest'") or die $!;
+}
+
+if ($witherspoon_insanity) {
+    $dbh->do("ALTER TABLE 'end_witherspoon-sequoia_manifest' RENAME to end_witherspoon_manifest");
+    $dbh->do("ALTER TABLE 'begin_witherspoon-sequoia_manifest' RENAME to begin_witherspoon_manifest");
+    @end_platforms = grep { $_ != 'witherspoon-sequoia' } @end_platforms;
+    @begin_platforms = grep { $_ != 'witherspoon-sequoia' } @begin_platforms;
+    push @end_platforms, 'witherspoon';
+    push @begin_platforms, 'witherspoon';
+    push @common_platforms, 'witherspoon';
 }
 
 $dbh->do(<<'SQL') or die "$!";
@@ -137,7 +189,7 @@
 SQL
 
 foreach my $p (@common_platforms) {
-    $dbh->do("INSERT INTO package_upgrades select b.package,b.version,e.version,'$p' from begin_".$p."_manifest as b LEFT JOIN end_".$p."_manifest AS e ON b.package=e.package WHERE b.version != e.version") or die $!;
+    $dbh->do("INSERT INTO package_upgrades select b.package,b.version,e.version,'$p' from 'begin_".$p."_manifest' as b LEFT JOIN 'end_".$p."_manifest' AS e ON b.package=e.package WHERE b.version != e.version") or die $!;
 }
 
 $dbh->do(<<'SQL') or die "$!";
@@ -149,7 +201,7 @@
 SQL
 
 foreach my $p (@common_platforms) {
-    $dbh->do("INSERT INTO new_package select b.package,b.version,'$p' from end_".$p."_manifest as b WHERE NOT EXISTS(SELECT package FROM begin_".$p."_manifest AS e WHERE b.package=e.package)") or die $!;
+    $dbh->do("INSERT INTO new_package select b.package,b.version,'$p' from 'end_".$p."_manifest' as b WHERE NOT EXISTS(SELECT package FROM 'begin_".$p."_manifest' AS e WHERE b.package=e.package)") or die $!;
 }
 
 $dbh->do(<<'SQL') or die "$!";
@@ -161,7 +213,7 @@
 SQL
 
 foreach my $p (@common_platforms) {
-    $dbh->do("INSERT INTO removed_package select b.package,b.version,'$p' from begin_".$p."_manifest as b WHERE NOT EXISTS(SELECT package FROM end_".$p."_manifest AS e WHERE b.package=e.package)") or die $!;
+    $dbh->do("INSERT INTO removed_package select b.package,b.version,'$p' from 'begin_".$p."_manifest' as b WHERE NOT EXISTS(SELECT package FROM 'end_".$p."_manifest' AS e WHERE b.package=e.package)") or die $!;
 }
 
 my $old_level = {};