diff --git a/buildroot b/buildroot
index c28573e..23118ce 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit c28573e576611706ffe34819109d3beacb8ff6a8
+Subproject commit 23118cea706cc738c334b868606b19bfda016705
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index b25db86..d3e3943 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -40,12 +40,15 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER8=y
 BR2_HOSTBOOT_CONFIG_FILE="barreleye.config"
-BR2_BARRELEYE_SYSTEM_XML_FILENAME="BARRELEYE_hb.system.xml"
-BR2_BARRELEYE_MRW_XML_FILENAME="BARRELEYE_hb.mrw.xml"
-BR2_BARRELEYE_BIOS_XML_FILENAME="BARRELEYE_bios.xml"
+BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML=y
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="barreleye-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="253622f22fe142ea67a0025e9bcc3044db038898"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="barreleye.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="BARRELEYE_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="BARRELEYE_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="BARRELEYE_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
 BR2_OPENPOWER_CONFIG_NAME="barreleye"
-BR2_OPENPOWER_XML_PACKAGE="barreleye-xml"
 BR2_OPENPOWER_PNOR_FILENAME="barreleye.pnor"
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="barreleye_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 1fd42f9..13d4990 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -15,7 +15,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -41,6 +41,7 @@
 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
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 9715034..46f7956 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -40,12 +40,14 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER8=y
 BR2_HOSTBOOT_CONFIG_FILE="firestone.config"
-BR2_FIRESTONE_SYSTEM_XML_FILENAME="FIRESTONE_hb.system.xml"
-BR2_FIRESTONE_MRW_XML_FILENAME="FIRESTONE_hb.mrw.xml"
-BR2_FIRESTONE_BIOS_XML_FILENAME="FIRESTONE_bios.xml"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="firestone-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="2494a430656504d014780000adbc2c2e7cfc54ab"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="firestone.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="FIRESTONE_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="FIRESTONE_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="FIRESTONE_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
 BR2_OPENPOWER_CONFIG_NAME="firestone"
-BR2_OPENPOWER_XML_PACKAGE="firestone-xml"
 BR2_OPENPOWER_PNOR_FILENAME="firestone.pnor"
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="firestone_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index a73cb8d..172a8f7 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -40,12 +40,14 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER8=y
 BR2_HOSTBOOT_CONFIG_FILE="garrison.config"
-BR2_GARRISON_SYSTEM_XML_FILENAME="GARRISON_hb.system.xml"
-BR2_GARRISON_MRW_XML_FILENAME="GARRISON_hb.mrw.xml"
-BR2_GARRISON_BIOS_XML_FILENAME="GARRISON_bios.xml"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="garrison-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="19a516499e1090c20c5a3303db256529ef22c1c9"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="garrison.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="GARRISON_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="GARRISON_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="GARRISON_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
 BR2_OPENPOWER_CONFIG_NAME="garrison"
-BR2_OPENPOWER_XML_PACKAGE="garrison-xml"
 BR2_OPENPOWER_PNOR_FILENAME="garrison.pnor"
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="garrison_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="naples_sbe.img.ecc"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 2bed733..f4ebe50 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -1,5 +1,6 @@
 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"
@@ -16,7 +17,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -40,12 +41,15 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER8=y
 BR2_HOSTBOOT_CONFIG_FILE="habanero.config"
-BR2_HABANERO_SYSTEM_XML_FILENAME="HABANERO_hb.system.xml"
-BR2_HABANERO_MRW_XML_FILENAME="HABANERO_hb.mrw.xml"
-BR2_HABANERO_BIOS_XML_FILENAME="HABANERO_bios.xml"
+BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML=y
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="habanero-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="6a78496c286e284719a8201148a5088030b897de"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="habanero.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="HABANERO_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="HABANERO_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="HABANERO_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
 BR2_OPENPOWER_CONFIG_NAME="habanero"
-BR2_OPENPOWER_XML_PACKAGE="habanero-xml"
 BR2_OPENPOWER_PNOR_FILENAME="habanero.pnor"
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="habanero_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
diff --git a/openpower/configs/hostboot/witherspoon.config b/openpower/configs/hostboot/witherspoon.config
index 8777ea9..a3380fb 100755
--- a/openpower/configs/hostboot/witherspoon.config
+++ b/openpower/configs/hostboot/witherspoon.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 @@
 set DJVPD_WRITE_TO_HW
 set DJVPD_READ_FROM_PNOR
 set DJVPD_WRITE_TO_PNOR
-unset MEMVPD_READ_FROM_HW
-unset MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_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
@@ -41,12 +43,15 @@
 set CONSOLE
 set BMC_AST2500
 
-set DISABLE_HOSTBOOT_RUNTIME
+unset DISABLE_HOSTBOOT_RUNTIME
 
 # 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
diff --git a/openpower/configs/hostboot/zaius.config b/openpower/configs/hostboot/zaius.config
index 099e62c..cd0390e 100755
--- a/openpower/configs/hostboot/zaius.config
+++ b/openpower/configs/hostboot/zaius.config
@@ -1,6 +1,8 @@
-# The Serial Flash Controller is the AST2500 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
@@ -41,7 +43,7 @@
 set CONSOLE
 set BMC_AST2500
 
-set DISABLE_HOSTBOOT_RUNTIME
+unset DISABLE_HOSTBOOT_RUNTIME
 
 # Compile in hostboot runtime PRD
 set HBRT_PRD
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index d8b8b1b..7e86f24 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -39,7 +39,6 @@
 # CONFIG_PPC_PSERIES is not set
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_CPU_IDLE=y
-CONFIG_GEN_RTC=y
 CONFIG_HZ_100=y
 CONFIG_KEXEC=y
 CONFIG_IRQ_ALL_CPUS=y
@@ -52,7 +51,6 @@
 CONFIG_CMDLINE_BOOL=y
 CONFIG_CMDLINE="console=tty0 console=hvc0 quiet"
 # CONFIG_SECCOMP is not set
-CONFIG_PCI_MSI=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -151,7 +149,6 @@
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
 # CONFIG_WLAN is not set
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
 # CONFIG_SERIO_SERPORT is not set
@@ -189,6 +186,8 @@
 # CONFIG_USB_EHCI_HCD_PPC_OF is not set
 CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GENERIC=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO_PCI=y
 # CONFIG_IOMMU_SUPPORT is not set
@@ -221,7 +220,6 @@
 CONFIG_CRC_ITU_T=y
 CONFIG_LIBCRC32C=y
 CONFIG_PRINTK_TIME=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
diff --git a/openpower/configs/linux/skiroot_p9_defconfig b/openpower/configs/linux/skiroot_p9_defconfig
index a6f9452..9884909 100644
--- a/openpower/configs/linux/skiroot_p9_defconfig
+++ b/openpower/configs/linux/skiroot_p9_defconfig
@@ -39,7 +39,6 @@
 # CONFIG_PPC_PSERIES is not set
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_CPU_IDLE=y
-CONFIG_GEN_RTC=y
 CONFIG_HZ_100=y
 CONFIG_KEXEC=y
 CONFIG_IRQ_ALL_CPUS=y
@@ -52,7 +51,6 @@
 CONFIG_CMDLINE_BOOL=y
 CONFIG_CMDLINE="console=tty0 console=hvc0 powersave=off"
 # CONFIG_SECCOMP is not set
-CONFIG_PCI_MSI=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -143,7 +141,6 @@
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
 # CONFIG_WLAN is not set
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
 # CONFIG_SERIO_SERPORT is not set
@@ -180,6 +177,8 @@
 # CONFIG_USB_EHCI_HCD_PPC_OF is not set
 CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GENERIC=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO_PCI=y
 # CONFIG_IOMMU_SUPPORT is not set
@@ -208,7 +207,6 @@
 CONFIG_CRC_ITU_T=y
 CONFIG_LIBCRC32C=y
 CONFIG_PRINTK_TIME=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index f3a61ce..cf7a6fd 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -14,7 +14,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -37,10 +37,14 @@
 BR2_TARGET_ROOTFS_INITRAMFS=y
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER8=y
+# BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
 # 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-mambo"
 BR2_PACKAGE_PETITBOOT=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_IMA_CATALOG is not set
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
index 5b782cf..c00a5fd 100644
--- a/openpower/configs/openpower_p9_mambo_defconfig
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -14,7 +14,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -37,10 +37,17 @@
 BR2_TARGET_ROOTFS_INITRAMFS=y
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER9=y
+# BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
 # 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-mambo-p9"
 BR2_PACKAGE_PETITBOOT=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_HOST_PPE42_BINUTILS is not set
+# BR2_PACKAGE_HOST_PPE42_GCC is not set
 # BR2_PACKAGE_IMA_CATALOG is not set
+# BR2_PACKAGE_SBE is not set
diff --git a/openpower/configs/p9dsu_defconfig b/openpower/configs/p9dsu_defconfig
index f51c74a..4bf65f5 100644
--- a/openpower/configs/p9dsu_defconfig
+++ b/openpower/configs/p9dsu_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -41,9 +41,14 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="p9dsu.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="p9dsu-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="d429ddccae90d79769e4a0b5c8e07e37aa3edef5"
+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"
+BR2_OPENPOWER_BIOS_XML_FILENAME="P9DSU_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
 BR2_OPENPOWER_CONFIG_NAME="p9dsu"
-BR2_OPENPOWER_XML_PACKAGE="p9dsu-xml"
 BR2_OPENPOWER_PNOR_FILENAME="p9dsu.pnor"
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="p9dsu_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
@@ -57,9 +62,6 @@
 BR2_OCC_BIN_FILENAME="occ.bin"
 BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.5.0-rc2"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.6.0-16-g9abb449b9c57"
 BR2_PACKAGE_LOADKEYS=y
-BR2_P9DSU_SYSTEM_XML_FILENAME="P9DSU_hb.system.xml"
-BR2_P9DSU_MRW_XML_FILENAME="P9DSU_hb.mrw.xml"
-BR2_P9DSU_BIOS_XML_FILENAME="P9DSU_bios.xml"
-BR2_IMA_CATALOG_DTS="POWER9"
\ No newline at end of file
+BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index d7c89a1..41691b7 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -1,5 +1,6 @@
 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"
@@ -15,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -39,12 +40,14 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER8=y
 BR2_HOSTBOOT_CONFIG_FILE="palmetto.config"
-BR2_PALMETTO_SYSTEM_XML_FILENAME="PALMETTO_hb.system.xml"
-BR2_PALMETTO_MRW_XML_FILENAME="PALMETTO_hb.mrw.xml"
-BR2_PALMETTO_BIOS_XML_FILENAME="PALMETTO_bios.xml"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="palmetto-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="c6f563966e9fadc4fb60194c064b2310c9b916b1"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="palmetto.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="PALMETTO_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="PALMETTO_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="PALMETTO_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutSingleSide.xml"
 BR2_OPENPOWER_CONFIG_NAME="palmetto"
-BR2_OPENPOWER_XML_PACKAGE="palmetto-xml"
 BR2_OPENPOWER_PNOR_FILENAME="palmetto.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
diff --git a/openpower/configs/romulus_defconfig b/openpower/configs/romulus_defconfig
index 395959a..534add2 100644
--- a/openpower/configs/romulus_defconfig
+++ b/openpower/configs/romulus_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -41,17 +41,19 @@
 BR2_OPENPOWER_PLATFORM=y
 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_FILENAME="romulus.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="ROMULUS_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="ROMULUS_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="ROMULUS_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
 BR2_OPENPOWER_CONFIG_NAME="romulus"
-BR2_OPENPOWER_XML_PACKAGE="romulus-xml"
 BR2_OPENPOWER_PNOR_FILENAME="romulus.pnor"
-#BR2_OPENPOWER_PNOR_UPDATE_FILENAME="romulus_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
 BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9n.ref_image.hdr.bin.ecc"
 BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_IMA_CATALOG_DTS="POWER9"
-#BR2_IMA_CATALOG_ECC_FILENAME="ima_catalog.bin.ecc"
 BR2_OPENPOWER_TARGETING_BIN_FILENAME="ROMULUS_HB.targeting.bin"
 BR2_OPENPOWER_TARGETING_ECC_FILENAME="ROMULUS_HB.targeting.bin.ecc"
 BR2_PACKAGE_PETITBOOT=y
@@ -59,8 +61,6 @@
 BR2_OCC_BIN_FILENAME="occ.bin"
 BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.5.0-rc2"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.6.0-16-g9abb449b9c57"
 BR2_PACKAGE_LOADKEYS=y
-BR2_ROMULUS_SYSTEM_XML_FILENAME="ROMULUS_hb.system.xml"
-BR2_ROMULUS_MRW_XML_FILENAME="ROMULUS_hb.mrw.xml"
-BR2_ROMULUS_BIOS_XML_FILENAME="ROMULUS_bios.xml"
+BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index 419737e..5c886ec 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -41,9 +41,14 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="witherspoon.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="witherspoon-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="96746e9052376274ee9e8b4a99dd4e840cbccfab"
+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"
+BR2_OPENPOWER_BIOS_XML_FILENAME="WITHERSPOON_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
 BR2_OPENPOWER_CONFIG_NAME="witherspoon"
-BR2_OPENPOWER_XML_PACKAGE="witherspoon-xml"
 BR2_OPENPOWER_PNOR_FILENAME="witherspoon.pnor"
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="witherspoon_update.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
@@ -57,9 +62,6 @@
 BR2_OCC_BIN_FILENAME="occ.bin"
 BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.5.0-rc2"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.6.0-16-g9abb449b9c57"
 BR2_PACKAGE_LOADKEYS=y
-BR2_WITHERSPOON_SYSTEM_XML_FILENAME="WITHERSPOON_hb.system.xml"
-BR2_WITHERSPOON_MRW_XML_FILENAME="WITHERSPOON_hb.mrw.xml"
-BR2_WITHERSPOON_BIOS_XML_FILENAME="WITHERSPOON_bios.xml"
 BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
index 3bdf058..fcb1a0d 100644
--- a/openpower/configs/zaius_defconfig
+++ b/openpower/configs/zaius_defconfig
@@ -16,7 +16,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -41,9 +41,14 @@
 BR2_OPENPOWER_PLATFORM=y
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="zaius.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="zaius-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="bc19a36a49f9b11e86d3703032f20418e6a23244"
+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"
+BR2_OPENPOWER_BIOS_XML_FILENAME="ZAIUS_bios.xml"
 BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
 BR2_OPENPOWER_CONFIG_NAME="zaius"
-BR2_OPENPOWER_XML_PACKAGE="zaius-xml"
 BR2_OPENPOWER_PNOR_FILENAME="zaius.pnor"
 BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
@@ -56,9 +61,6 @@
 BR2_OCC_BIN_FILENAME="occ.bin"
 BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.5.0-rc2"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.6.0-16-g9abb449b9c57"
 BR2_PACKAGE_LOADKEYS=y
-BR2_ZAIUS_SYSTEM_XML_FILENAME="ZAIUS_hb.system.xml"
-BR2_ZAIUS_MRW_XML_FILENAME="ZAIUS_hb.mrw.xml"
-BR2_ZAIUS_BIOS_XML_FILENAME="ZAIUS_bios.xml"
 BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/zz_defconfig b/openpower/configs/zz_defconfig
index d0aab79..dca6bd6 100644
--- a/openpower/configs/zz_defconfig
+++ b/openpower/configs/zz_defconfig
@@ -15,7 +15,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.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
 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"
@@ -42,6 +42,7 @@
 # BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
 # 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_TARGET_SKIBOOT_XZ is not set
@@ -51,7 +52,7 @@
 # BR2_PACKAGE_OCC is not set
 # BR2_PACKAGE_CAPP_UCODE is not set
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.5.0-rc2"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.6.0-16-g9abb449b9c57"
 BR2_PACKAGE_LOADKEYS=y
 # BR2_PACKAGE_HOST_PPE42_BINUTILS is not set
 # BR2_PACKAGE_HOST_PPE42_GCC is not set
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 b6226cf..ba1eeaf 100644
--- a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
+++ b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Thadeu Lima De Souza Cascardo <thadeul@br.ibm.com>
 Date: Tue, 25 Mar 2014 10:45:16 -0400
-Subject: [PATCH 01/12] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 1/4] xhci: Use xhci_pci_remove for xhci device shutdown
 
 Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
 Signed-off-by: Joel Stanley <joel@jms.id.au>
@@ -10,10 +10,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 954abfd5014d..dc8c490f6dd4 100644
+index 7b86508ac8cf..c358d5e7ef79 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -471,7 +471,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -470,7 +470,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
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
index 92c5a95..ad7d0a1 100644
--- a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
+++ b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
 Date: Tue, 19 Jul 2016 22:43:26 +0930
-Subject: [PATCH 02/12] xhci: do not halt the secondary HCD
+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
@@ -13,7 +13,7 @@
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 9a0ec116654a..315020dac049 100644
+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)
diff --git a/openpower/linux/0003-drm-ast-const-ify-mode-setting-tables.patch b/openpower/linux/0003-drm-ast-const-ify-mode-setting-tables.patch
deleted file mode 100644
index c9670e5..0000000
--- a/openpower/linux/0003-drm-ast-const-ify-mode-setting-tables.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:45:24 +1100
-Subject: [PATCH 03/12] drm/ast: const'ify mode setting tables
-
-And fix some comment alignment & space/tabs while at it
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_drv.h    |   4 +-
- drivers/gpu/drm/ast/ast_mode.c   |   8 +--
- drivers/gpu/drm/ast/ast_tables.h | 106 +++++++++++++++++++--------------------
- 3 files changed, 59 insertions(+), 59 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
-index 3bedcf7ddd2a..3fd9d6e96bce 100644
---- a/drivers/gpu/drm/ast/ast_drv.h
-+++ b/drivers/gpu/drm/ast/ast_drv.h
-@@ -304,8 +304,8 @@ struct ast_vbios_dclk_info {
- };
- 
- struct ast_vbios_mode_info {
--	struct ast_vbios_stdtable *std_table;
--	struct ast_vbios_enhtable *enh_table;
-+	const struct ast_vbios_stdtable *std_table;
-+	const struct ast_vbios_enhtable *enh_table;
- };
- 
- extern int ast_mode_init(struct drm_device *dev);
-diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
-index e26c98f51eb4..1ff596e90225 100644
---- a/drivers/gpu/drm/ast/ast_mode.c
-+++ b/drivers/gpu/drm/ast/ast_mode.c
-@@ -80,9 +80,9 @@ static bool ast_get_vbios_mode_info(struct drm_crtc *crtc, struct drm_display_mo
- {
- 	struct ast_private *ast = crtc->dev->dev_private;
- 	u32 refresh_rate_index = 0, mode_id, color_index, refresh_rate;
-+	const struct ast_vbios_enhtable *best = NULL;
- 	u32 hborder, vborder;
- 	bool check_sync;
--	struct ast_vbios_enhtable *best = NULL;
- 
- 	switch (crtc->primary->fb->bits_per_pixel) {
- 	case 8:
-@@ -146,7 +146,7 @@ static bool ast_get_vbios_mode_info(struct drm_crtc *crtc, struct drm_display_mo
- 	refresh_rate = drm_mode_vrefresh(mode);
- 	check_sync = vbios_mode->enh_table->flags & WideScreenMode;
- 	do {
--		struct ast_vbios_enhtable *loop = vbios_mode->enh_table;
-+		const struct ast_vbios_enhtable *loop = vbios_mode->enh_table;
- 
- 		while (loop->refresh_rate != 0xff) {
- 			if ((check_sync) &&
-@@ -225,7 +225,7 @@ static void ast_set_std_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
- 			    struct ast_vbios_mode_info *vbios_mode)
- {
- 	struct ast_private *ast = crtc->dev->dev_private;
--	struct ast_vbios_stdtable *stdtable;
-+	const struct ast_vbios_stdtable *stdtable;
- 	u32 i;
- 	u8 jreg;
- 
-@@ -381,7 +381,7 @@ static void ast_set_dclk_reg(struct drm_device *dev, struct drm_display_mode *mo
- 			     struct ast_vbios_mode_info *vbios_mode)
- {
- 	struct ast_private *ast = dev->dev_private;
--	struct ast_vbios_dclk_info *clk_info;
-+	const struct ast_vbios_dclk_info *clk_info;
- 
- 	clk_info = &dclk_table[vbios_mode->enh_table->dclk_index];
- 
-diff --git a/drivers/gpu/drm/ast/ast_tables.h b/drivers/gpu/drm/ast/ast_tables.h
-index 3608d5aa7451..a4ddf901a54f 100644
---- a/drivers/gpu/drm/ast/ast_tables.h
-+++ b/drivers/gpu/drm/ast/ast_tables.h
-@@ -78,37 +78,37 @@
- #define VCLK97_75     		0x19
- #define VCLK118_25			0x1A
- 
--static struct ast_vbios_dclk_info dclk_table[] = {
--	{0x2C, 0xE7, 0x03},					/* 00: VCLK25_175	*/
--	{0x95, 0x62, 0x03},				        /* 01: VCLK28_322	*/
--	{0x67, 0x63, 0x01},				        /* 02: VCLK31_5         */
--	{0x76, 0x63, 0x01},				        /* 03: VCLK36         	*/
--	{0xEE, 0x67, 0x01},				        /* 04: VCLK40          	*/
--	{0x82, 0x62, 0x01}, 			        /* 05: VCLK49_5        	*/
--	{0xC6, 0x64, 0x01},                        	        /* 06: VCLK50          	*/
--	{0x94, 0x62, 0x01},                        	        /* 07: VCLK56_25       	*/
--	{0x80, 0x64, 0x00},                        	        /* 08: VCLK65		*/
--	{0x7B, 0x63, 0x00},                        	        /* 09: VCLK75	        */
--	{0x67, 0x62, 0x00},				        /* 0A: VCLK78_75       	*/
--	{0x7C, 0x62, 0x00},                        	        /* 0B: VCLK94_5        	*/
--	{0x8E, 0x62, 0x00},                        	        /* 0C: VCLK108         	*/
--	{0x85, 0x24, 0x00},                        	        /* 0D: VCLK135         	*/
--	{0x67, 0x22, 0x00},                        	        /* 0E: VCLK157_5       	*/
--	{0x6A, 0x22, 0x00},				        /* 0F: VCLK162         	*/
--	{0x4d, 0x4c, 0x80},				        /* 10: VCLK154      	*/
--	{0xa7, 0x78, 0x80},					/* 11: VCLK83.5         */
--	{0x28, 0x49, 0x80},					/* 12: VCLK106.5        */
--	{0x37, 0x49, 0x80},					/* 13: VCLK146.25       */
--	{0x1f, 0x45, 0x80},					/* 14: VCLK148.5        */
--	{0x47, 0x6c, 0x80},					/* 15: VCLK71       */
--	{0x25, 0x65, 0x80},					/* 16: VCLK88.75    */
--	{0x77, 0x58, 0x80},					/* 17: VCLK119      */
--	{0x32, 0x67, 0x80},				    /* 18: VCLK85_5     */
--	{0x6a, 0x6d, 0x80},					/* 19: VCLK97_75	*/
--	{0x3b, 0x2c, 0x81},					/* 1A: VCLK118_25	*/
-+static const struct ast_vbios_dclk_info dclk_table[] = {
-+	{0x2C, 0xE7, 0x03},			/* 00: VCLK25_175	*/
-+	{0x95, 0x62, 0x03},			/* 01: VCLK28_322	*/
-+	{0x67, 0x63, 0x01},			/* 02: VCLK31_5		*/
-+	{0x76, 0x63, 0x01},			/* 03: VCLK36		*/
-+	{0xEE, 0x67, 0x01},			/* 04: VCLK40		*/
-+	{0x82, 0x62, 0x01},			/* 05: VCLK49_5		*/
-+	{0xC6, 0x64, 0x01},			/* 06: VCLK50		*/
-+	{0x94, 0x62, 0x01},			/* 07: VCLK56_25	*/
-+	{0x80, 0x64, 0x00},			/* 08: VCLK65		*/
-+	{0x7B, 0x63, 0x00},			/* 09: VCLK75		*/
-+	{0x67, 0x62, 0x00},			/* 0A: VCLK78_75	*/
-+	{0x7C, 0x62, 0x00},			/* 0B: VCLK94_5		*/
-+	{0x8E, 0x62, 0x00},			/* 0C: VCLK108		*/
-+	{0x85, 0x24, 0x00},			/* 0D: VCLK135		*/
-+	{0x67, 0x22, 0x00},			/* 0E: VCLK157_5	*/
-+	{0x6A, 0x22, 0x00},			/* 0F: VCLK162		*/
-+	{0x4d, 0x4c, 0x80},			/* 10: VCLK154		*/
-+	{0xa7, 0x78, 0x80},			/* 11: VCLK83.5		*/
-+	{0x28, 0x49, 0x80},			/* 12: VCLK106.5	*/
-+	{0x37, 0x49, 0x80},			/* 13: VCLK146.25	*/
-+	{0x1f, 0x45, 0x80},			/* 14: VCLK148.5	*/
-+	{0x47, 0x6c, 0x80},			/* 15: VCLK71		*/
-+	{0x25, 0x65, 0x80},			/* 16: VCLK88.75	*/
-+	{0x77, 0x58, 0x80},			/* 17: VCLK119		*/
-+	{0x32, 0x67, 0x80},			/* 18: VCLK85_5		*/
-+	{0x6a, 0x6d, 0x80},			/* 19: VCLK97_75	*/
-+	{0x3b, 0x2c, 0x81},			/* 1A: VCLK118_25	*/
- };
- 
--static struct ast_vbios_stdtable vbios_stdtable[] = {
-+static const struct ast_vbios_stdtable vbios_stdtable[] = {
- 	/* MD_2_3_400 */
- 	{
- 		0x67,
-@@ -181,21 +181,21 @@ static struct ast_vbios_stdtable vbios_stdtable[] = {
- 	},
- };
- 
--static struct ast_vbios_enhtable res_640x480[] = {
-+static const struct ast_vbios_enhtable res_640x480[] = {
- 	{ 800, 640, 8, 96, 525, 480, 2, 2, VCLK25_175,	/* 60Hz */
- 	  (SyncNN | HBorder | VBorder | Charx8Dot), 60, 1, 0x2E },
- 	{ 832, 640, 16, 40, 520, 480, 1, 3, VCLK31_5,	/* 72Hz */
- 	  (SyncNN | HBorder | VBorder | Charx8Dot), 72, 2, 0x2E  },
- 	{ 840, 640, 16, 64, 500, 480, 1, 3, VCLK31_5,	/* 75Hz */
- 	  (SyncNN | Charx8Dot) , 75, 3, 0x2E },
--	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,		/* 85Hz */
-+	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,	/* 85Hz */
- 	  (SyncNN | Charx8Dot) , 85, 4, 0x2E },
--	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,		/* end */
-+	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,	/* end */
- 	  (SyncNN | Charx8Dot) , 0xFF, 4, 0x2E },
- };
- 
--static struct ast_vbios_enhtable res_800x600[] = {
--	{1024, 800, 24, 72, 625, 600, 1, 2, VCLK36,		/* 56Hz */
-+static const struct ast_vbios_enhtable res_800x600[] = {
-+	{1024, 800, 24, 72, 625, 600, 1, 2, VCLK36,	/* 56Hz */
- 	 (SyncPP | Charx8Dot), 56, 1, 0x30 },
- 	{1056, 800, 40, 128, 628, 600, 1, 4, VCLK40,	/* 60Hz */
- 	 (SyncPP | Charx8Dot), 60, 2, 0x30 },
-@@ -210,7 +210,7 @@ static struct ast_vbios_enhtable res_800x600[] = {
- };
- 
- 
--static struct ast_vbios_enhtable res_1024x768[] = {
-+static const struct ast_vbios_enhtable res_1024x768[] = {
- 	{1344, 1024, 24, 136, 806, 768, 3, 6, VCLK65,	/* 60Hz */
- 	 (SyncNN | Charx8Dot), 60, 1, 0x31 },
- 	{1328, 1024, 24, 136, 806, 768, 3, 6, VCLK75,	/* 70Hz */
-@@ -223,7 +223,7 @@ static struct ast_vbios_enhtable res_1024x768[] = {
- 	 (SyncPP | Charx8Dot), 0xFF, 4, 0x31 },
- };
- 
--static struct ast_vbios_enhtable res_1280x1024[] = {
-+static const struct ast_vbios_enhtable res_1280x1024[] = {
- 	{1688, 1280, 48, 112, 1066, 1024, 1, 3, VCLK108,	/* 60Hz */
- 	 (SyncPP | Charx8Dot), 60, 1, 0x32 },
- 	{1688, 1280, 16, 144, 1066, 1024, 1, 3, VCLK135,	/* 75Hz */
-@@ -234,7 +234,7 @@ static struct ast_vbios_enhtable res_1280x1024[] = {
- 	 (SyncPP | Charx8Dot), 0xFF, 3, 0x32 },
- };
- 
--static struct ast_vbios_enhtable res_1600x1200[] = {
-+static const struct ast_vbios_enhtable res_1600x1200[] = {
- 	{2160, 1600, 64, 192, 1250, 1200, 1, 3, VCLK162,	/* 60Hz */
- 	 (SyncPP | Charx8Dot), 60, 1, 0x33 },
- 	{2160, 1600, 64, 192, 1250, 1200, 1, 3, VCLK162,	/* end */
-@@ -242,23 +242,23 @@ static struct ast_vbios_enhtable res_1600x1200[] = {
- };
- 
- /* 16:9 */
--static struct ast_vbios_enhtable res_1360x768[] = {
--	{1792, 1360, 64,112, 795,  768, 3, 6, VCLK85_5,	         /* 60Hz */
-+static const struct ast_vbios_enhtable res_1360x768[] = {
-+	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,		/* 60Hz */
- 	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x39 },
--	{1792, 1360, 64,112, 795,  768, 3, 6, VCLK85_5,	         /* end */
-+	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,	         /* end */
- 	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x39 },
- };
- 
--static struct ast_vbios_enhtable res_1600x900[] = {
--	{1760, 1600, 48, 32, 926,  900, 3, 5, VCLK97_75,	/* 60Hz CVT RB */
-+static const struct ast_vbios_enhtable res_1600x900[] = {
-+	{1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75,		/* 60Hz CVT RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x3A },
--	{2112, 1600, 88,168, 934,  900, 3, 5, VCLK118_25,	/* 60Hz CVT */
-+	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x3A },
--	{2112, 1600, 88,168, 934,  900, 3, 5, VCLK118_25,	/* 60Hz CVT */
-+	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x3A },
- };
- 
--static struct ast_vbios_enhtable res_1920x1080[] = {
-+static const struct ast_vbios_enhtable res_1920x1080[] = {
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x38 },
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
-@@ -267,8 +267,8 @@ static struct ast_vbios_enhtable res_1920x1080[] = {
- 
- 
- /* 16:10 */
--static struct ast_vbios_enhtable res_1280x800[] = {
--	{1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,	/* 60Hz RB */
-+static const struct ast_vbios_enhtable res_1280x800[] = {
-+	{1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,		/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x35 },
- 	{1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x35 },
-@@ -277,7 +277,7 @@ static struct ast_vbios_enhtable res_1280x800[] = {
- 
- };
- 
--static struct ast_vbios_enhtable res_1440x900[] = {
-+static const struct ast_vbios_enhtable res_1440x900[] = {
- 	{1600, 1440, 48, 32,  926,  900, 3, 6, VCLK88_75,	/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x36 },
- 	{1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,	/* 60Hz */
-@@ -286,8 +286,8 @@ static struct ast_vbios_enhtable res_1440x900[] = {
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x36 },
- };
- 
--static struct ast_vbios_enhtable res_1680x1050[] = {
--	{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,	/* 60Hz RB */
-+static const struct ast_vbios_enhtable res_1680x1050[] = {
-+	{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,		/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x37 },
- 	{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x37 },
-@@ -295,10 +295,10 @@ static struct ast_vbios_enhtable res_1680x1050[] = {
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x37 },
- };
- 
--static struct ast_vbios_enhtable res_1920x1200[] = {
--	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,	/* 60Hz RB*/
-+static const struct ast_vbios_enhtable res_1920x1200[] = {
-+	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB*/
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x34 },
--	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,	/* 60Hz RB */
-+	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x34 },
- };
- 
--- 
-2.11.0
-
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
new file mode 100644
index 0000000..d31ee40
--- /dev/null
+++ b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
@@ -0,0 +1,120 @@
+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/0012-Release-OpenPower-kernel.patch b/openpower/linux/0004-Release-OpenPower-kernel.patch
similarity index 72%
rename from openpower/linux/0012-Release-OpenPower-kernel.patch
rename to openpower/linux/0004-Release-OpenPower-kernel.patch
index 861001b..a5ef22e 100644
--- a/openpower/linux/0012-Release-OpenPower-kernel.patch
+++ b/openpower/linux/0004-Release-OpenPower-kernel.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
-Date: Tue, 28 Feb 2017 12:15:10 +1030
-Subject: [PATCH 12/12] Release OpenPower kernel
+Date: Wed, 3 May 2017 13:25:26 +0930
+Subject: [PATCH 4/4] Release OpenPower kernel
 
 Signed-off-by: Joel Stanley <joel@jms.id.au>
 ---
@@ -9,13 +9,13 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index 976e8d1a468a..507f49235ac9 100644
+index d7b64830a7b7..e77804c0405d 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,7 +1,7 @@
  VERSION = 4
- PATCHLEVEL = 10
- SUBLEVEL = 7
+ PATCHLEVEL = 11
+ SUBLEVEL = 2
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = Fearless Coyote
diff --git a/openpower/linux/0004-drm-ast-Remove-spurrious-include.patch b/openpower/linux/0004-drm-ast-Remove-spurrious-include.patch
deleted file mode 100644
index ffa2606..0000000
--- a/openpower/linux/0004-drm-ast-Remove-spurrious-include.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:55:58 +1100
-Subject: [PATCH 04/12] drm/ast: Remove spurrious include
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_main.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index fb9976254224..f01a937165b7 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -32,8 +32,6 @@
- #include <drm/drm_fb_helper.h>
- #include <drm/drm_crtc_helper.h>
- 
--#include "ast_dram_tables.h"
--
- void ast_set_index_reg_mask(struct ast_private *ast,
- 			    uint32_t base, uint8_t index,
- 			    uint8_t mask, uint8_t val)
--- 
-2.11.0
-
diff --git a/openpower/linux/0005-drm-ast-Fix-calculation-of-MCLK.patch b/openpower/linux/0005-drm-ast-Fix-calculation-of-MCLK.patch
deleted file mode 100644
index e72a789..0000000
--- a/openpower/linux/0005-drm-ast-Fix-calculation-of-MCLK.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:57:30 +1100
-Subject: [PATCH 05/12] drm/ast: Fix calculation of MCLK
-
-Some braces were missing causing an incorrect calculation.
-
-Y.C. Chen from Aspeed provided me with the right formula
-which I tested on AST2400 and 2500.
-
-The MCLK isn't currently used by the driver (it will eventually
-to filter modes) so the issue isn't catastrophic.
-
-Also make the printed value a bit more meaningful
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_main.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index f01a937165b7..8d87d3ca439b 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -354,7 +354,7 @@ static int ast_get_dram_info(struct drm_device *dev)
- 		div = 0x1;
- 		break;
- 	}
--	ast->mclk = ref_pll * (num + 2) / (denum + 2) * (div * 1000);
-+	ast->mclk = ref_pll * (num + 2) / ((denum + 2) * (div * 1000));
- 	return 0;
- }
- 
-@@ -498,7 +498,9 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 		if (ret)
- 			goto out_free;
- 		ast->vram_size = ast_get_vram_info(dev);
--		DRM_INFO("dram %d %d %d %08x\n", ast->mclk, ast->dram_type, ast->dram_bus_width, ast->vram_size);
-+		DRM_INFO("dram MCLK=%u Mhz type=%d bus_width=%d size=%08x\n",
-+			 ast->mclk, ast->dram_type,
-+			 ast->dram_bus_width, ast->vram_size);
- 	}
- 
- 	if (need_post)
--- 
-2.11.0
-
diff --git a/openpower/linux/0006-drm-ast-Base-support-for-AST2500.patch b/openpower/linux/0006-drm-ast-Base-support-for-AST2500.patch
deleted file mode 100644
index 34fb54a..0000000
--- a/openpower/linux/0006-drm-ast-Base-support-for-AST2500.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Y.C. Chen" <yc_chen@aspeedtech.com>
-Date: Fri, 17 Feb 2017 14:36:46 +1100
-Subject: [PATCH 06/12] drm/ast: Base support for AST2500
-
-Add detection and mode setting updates for AST2500 generation chip,
-code originally from Aspeed and slightly reworked for coding style
-mostly by Ben. This doesn't contain the BMC DRAM POST code which
-is in a separate patch.
-
-Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
----
-
-v2. Add 800Mhz default mclk for AST2500
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_drv.h    |  2 ++
- drivers/gpu/drm/ast/ast_main.c   | 32 +++++++++++++++++++---
- drivers/gpu/drm/ast/ast_mode.c   | 30 ++++++++++++++++-----
- drivers/gpu/drm/ast/ast_tables.h | 58 +++++++++++++++++++++++++++++++++-------
- 4 files changed, 103 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
-index 3fd9d6e96bce..d1c1d530abaa 100644
---- a/drivers/gpu/drm/ast/ast_drv.h
-+++ b/drivers/gpu/drm/ast/ast_drv.h
-@@ -64,6 +64,7 @@ enum ast_chip {
- 	AST2150,
- 	AST2300,
- 	AST2400,
-+	AST2500,
- 	AST1180,
- };
- 
-@@ -80,6 +81,7 @@ enum ast_tx_chip {
- #define AST_DRAM_1Gx32   3
- #define AST_DRAM_2Gx16   6
- #define AST_DRAM_4Gx16   7
-+#define AST_DRAM_8Gx16   8
- 
- struct ast_fbdev;
- 
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index 8d87d3ca439b..5a83d3793000 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -142,7 +142,10 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
- 		ast->chip = AST1100;
- 		DRM_INFO("AST 1180 detected\n");
- 	} else {
--		if (dev->pdev->revision >= 0x30) {
-+		if (dev->pdev->revision >= 0x40) {
-+			ast->chip = AST2500;
-+			DRM_INFO("AST 2500 detected\n");
-+		} else if (dev->pdev->revision >= 0x30) {
- 			ast->chip = AST2400;
- 			DRM_INFO("AST 2400 detected\n");
- 		} else if (dev->pdev->revision >= 0x20) {
-@@ -196,6 +199,9 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
- 			if (ast->chip == AST2400 &&
- 			    (scu_rev & 0x300) == 0x100) /* ast1400 */
- 				ast->support_wide_screen = true;
-+			if (ast->chip == AST2500 &&
-+			    scu_rev == 0x100)           /* ast2510 */
-+				ast->support_wide_screen = true;
- 		}
- 		break;
- 	}
-@@ -291,7 +297,10 @@ static int ast_get_dram_info(struct drm_device *dev)
- 	default:
- 		ast->dram_bus_width = 16;
- 		ast->dram_type = AST_DRAM_1Gx16;
--		ast->mclk = 396;
-+		if (ast->chip == AST2500)
-+			ast->mclk = 800;
-+		else
-+			ast->mclk = 396;
- 		return 0;
- 	}
- 
-@@ -300,7 +309,23 @@ static int ast_get_dram_info(struct drm_device *dev)
- 	else
- 		ast->dram_bus_width = 32;
- 
--	if (ast->chip == AST2300 || ast->chip == AST2400) {
-+	if (ast->chip == AST2500) {
-+		switch (mcr_cfg & 0x03) {
-+		case 0:
-+			ast->dram_type = AST_DRAM_1Gx16;
-+			break;
-+		default:
-+		case 1:
-+			ast->dram_type = AST_DRAM_2Gx16;
-+			break;
-+		case 2:
-+			ast->dram_type = AST_DRAM_4Gx16;
-+			break;
-+		case 3:
-+			ast->dram_type = AST_DRAM_8Gx16;
-+			break;
-+		}
-+	} else if (ast->chip == AST2300 || ast->chip == AST2400) {
- 		switch (mcr_cfg & 0x03) {
- 		case 0:
- 			ast->dram_type = AST_DRAM_512Mx16;
-@@ -523,6 +548,7 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 	    ast->chip == AST2200 ||
- 	    ast->chip == AST2300 ||
- 	    ast->chip == AST2400 ||
-+	    ast->chip == AST2500 ||
- 	    ast->chip == AST1180) {
- 		dev->mode_config.max_width = 1920;
- 		dev->mode_config.max_height = 2048;
-diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
-index 1ff596e90225..e4db1c72940c 100644
---- a/drivers/gpu/drm/ast/ast_mode.c
-+++ b/drivers/gpu/drm/ast/ast_mode.c
-@@ -271,7 +271,11 @@ static void ast_set_crtc_reg(struct drm_crtc *crtc, struct drm_display_mode *mod
- {
- 	struct ast_private *ast = crtc->dev->dev_private;
- 	u8 jreg05 = 0, jreg07 = 0, jreg09 = 0, jregAC = 0, jregAD = 0, jregAE = 0;
--	u16 temp;
-+	u16 temp, precache = 0;
-+
-+	if ((ast->chip == AST2500) &&
-+	    (vbios_mode->enh_table->flags & AST2500PreCatchCRT))
-+		precache = 40;
- 
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x00);
- 
-@@ -297,12 +301,12 @@ static void ast_set_crtc_reg(struct drm_crtc *crtc, struct drm_display_mode *mod
- 		jregAD |= 0x01;  /* HBE D[5] */
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x03, 0xE0, (temp & 0x1f));
- 
--	temp = (mode->crtc_hsync_start >> 3) - 1;
-+	temp = ((mode->crtc_hsync_start-precache) >> 3) - 1;
- 	if (temp & 0x100)
- 		jregAC |= 0x40; /* HRS D[5] */
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x04, 0x00, temp);
- 
--	temp = ((mode->crtc_hsync_end >> 3) - 1) & 0x3f;
-+	temp = (((mode->crtc_hsync_end-precache) >> 3) - 1) & 0x3f;
- 	if (temp & 0x20)
- 		jregAD |= 0x04; /* HRE D[5] */
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x05, 0x60, (u8)((temp & 0x1f) | jreg05));
-@@ -363,6 +367,11 @@ static void ast_set_crtc_reg(struct drm_crtc *crtc, struct drm_display_mode *mod
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x09, 0xdf, jreg09);
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xAE, 0x00, (jregAE | 0x80));
- 
-+	if (precache)
-+		ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0x3f, 0x80);
-+	else
-+		ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0x3f, 0x00);
-+
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x80);
- }
- 
-@@ -383,12 +392,16 @@ static void ast_set_dclk_reg(struct drm_device *dev, struct drm_display_mode *mo
- 	struct ast_private *ast = dev->dev_private;
- 	const struct ast_vbios_dclk_info *clk_info;
- 
--	clk_info = &dclk_table[vbios_mode->enh_table->dclk_index];
-+	if (ast->chip == AST2500)
-+		clk_info = &dclk_table_ast2500[vbios_mode->enh_table->dclk_index];
-+	else
-+		clk_info = &dclk_table[vbios_mode->enh_table->dclk_index];
- 
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xc0, 0x00, clk_info->param1);
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xc1, 0x00, clk_info->param2);
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xbb, 0x0f,
--			       (clk_info->param3 & 0x80) | ((clk_info->param3 & 0x3) << 4));
-+			       (clk_info->param3 & 0xc0) |
-+			       ((clk_info->param3 & 0x3) << 4));
- }
- 
- static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode,
-@@ -421,7 +434,8 @@ static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa8, 0xfd, jregA8);
- 
- 	/* Set Threshold */
--	if (ast->chip == AST2300 || ast->chip == AST2400) {
-+	if (ast->chip == AST2300 || ast->chip == AST2400 ||
-+	    ast->chip == AST2500) {
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0x78);
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0x60);
- 	} else if (ast->chip == AST2100 ||
-@@ -794,7 +808,9 @@ static int ast_mode_valid(struct drm_connector *connector,
- 		if ((mode->hdisplay == 1600) && (mode->vdisplay == 900))
- 			return MODE_OK;
- 
--		if ((ast->chip == AST2100) || (ast->chip == AST2200) || (ast->chip == AST2300) || (ast->chip == AST2400) || (ast->chip == AST1180)) {
-+		if ((ast->chip == AST2100) || (ast->chip == AST2200) ||
-+		    (ast->chip == AST2300) || (ast->chip == AST2400) ||
-+		    (ast->chip == AST2500) || (ast->chip == AST1180)) {
- 			if ((mode->hdisplay == 1920) && (mode->vdisplay == 1080))
- 				return MODE_OK;
- 
-diff --git a/drivers/gpu/drm/ast/ast_tables.h b/drivers/gpu/drm/ast/ast_tables.h
-index a4ddf901a54f..5f4c2e833a65 100644
---- a/drivers/gpu/drm/ast/ast_tables.h
-+++ b/drivers/gpu/drm/ast/ast_tables.h
-@@ -47,6 +47,7 @@
- #define SyncPN			(PVSync | NHSync)
- #define SyncNP			(NVSync | PHSync)
- #define SyncNN			(NVSync | NHSync)
-+#define AST2500PreCatchCRT		0x00004000
- 
- /* DCLK Index */
- #define VCLK25_175     		0x00
-@@ -108,6 +109,36 @@ static const struct ast_vbios_dclk_info dclk_table[] = {
- 	{0x3b, 0x2c, 0x81},			/* 1A: VCLK118_25	*/
- };
- 
-+static const struct ast_vbios_dclk_info dclk_table_ast2500[] = {
-+	{0x2C, 0xE7, 0x03},			/* 00: VCLK25_175	*/
-+	{0x95, 0x62, 0x03},			/* 01: VCLK28_322	*/
-+	{0x67, 0x63, 0x01},			/* 02: VCLK31_5		*/
-+	{0x76, 0x63, 0x01},			/* 03: VCLK36		*/
-+	{0xEE, 0x67, 0x01},			/* 04: VCLK40		*/
-+	{0x82, 0x62, 0x01},			/* 05: VCLK49_5		*/
-+	{0xC6, 0x64, 0x01},			/* 06: VCLK50		*/
-+	{0x94, 0x62, 0x01},			/* 07: VCLK56_25	*/
-+	{0x80, 0x64, 0x00},			/* 08: VCLK65		*/
-+	{0x7B, 0x63, 0x00},			/* 09: VCLK75		*/
-+	{0x67, 0x62, 0x00},			/* 0A: VCLK78_75	*/
-+	{0x7C, 0x62, 0x00},			/* 0B: VCLK94_5		*/
-+	{0x8E, 0x62, 0x00},			/* 0C: VCLK108		*/
-+	{0x85, 0x24, 0x00},			/* 0D: VCLK135		*/
-+	{0x67, 0x22, 0x00},			/* 0E: VCLK157_5	*/
-+	{0x6A, 0x22, 0x00},			/* 0F: VCLK162		*/
-+	{0x4d, 0x4c, 0x80},			/* 10: VCLK154		*/
-+	{0xa7, 0x78, 0x80},			/* 11: VCLK83.5		*/
-+	{0x28, 0x49, 0x80},			/* 12: VCLK106.5	*/
-+	{0x37, 0x49, 0x80},			/* 13: VCLK146.25	*/
-+	{0x1f, 0x45, 0x80},			/* 14: VCLK148.5	*/
-+	{0x47, 0x6c, 0x80},			/* 15: VCLK71		*/
-+	{0x25, 0x65, 0x80},			/* 16: VCLK88.75	*/
-+	{0x58, 0x01, 0x42},			/* 17: VCLK119		*/
-+	{0x32, 0x67, 0x80},			/* 18: VCLK85_5		*/
-+	{0x6a, 0x6d, 0x80},			/* 19: VCLK97_75	*/
-+	{0x44, 0x20, 0x43},			/* 1A: VCLK118_25	*/
-+};
-+
- static const struct ast_vbios_stdtable vbios_stdtable[] = {
- 	/* MD_2_3_400 */
- 	{
-@@ -246,12 +277,14 @@ static const struct ast_vbios_enhtable res_1360x768[] = {
- 	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,		/* 60Hz */
- 	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x39 },
- 	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,	         /* end */
--	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x39 },
-+	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 0xFF, 1, 0x39 },
- };
- 
- static const struct ast_vbios_enhtable res_1600x900[] = {
- 	{1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75,		/* 60Hz CVT RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x3A },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x3A },
- 	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x3A },
- 	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
-@@ -260,16 +293,19 @@ static const struct ast_vbios_enhtable res_1600x900[] = {
- 
- static const struct ast_vbios_enhtable res_1920x1080[] = {
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x38 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x38 },
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x38 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 0xFF, 1, 0x38 },
- };
- 
- 
- /* 16:10 */
- static const struct ast_vbios_enhtable res_1280x800[] = {
- 	{1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,		/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x35 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x35 },
- 	{1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x35 },
- 	{1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,	/* 60Hz */
-@@ -279,7 +315,8 @@ static const struct ast_vbios_enhtable res_1280x800[] = {
- 
- static const struct ast_vbios_enhtable res_1440x900[] = {
- 	{1600, 1440, 48, 32,  926,  900, 3, 6, VCLK88_75,	/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x36 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x36 },
- 	{1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x36 },
- 	{1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,	/* 60Hz */
-@@ -288,7 +325,8 @@ static const struct ast_vbios_enhtable res_1440x900[] = {
- 
- static const struct ast_vbios_enhtable res_1680x1050[] = {
- 	{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,		/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x37 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x37 },
- 	{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x37 },
- 	{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,	/* 60Hz */
-@@ -297,9 +335,11 @@ static const struct ast_vbios_enhtable res_1680x1050[] = {
- 
- static const struct ast_vbios_enhtable res_1920x1200[] = {
- 	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB*/
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x34 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x34 },
- 	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x34 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 0xFF, 1, 0x34 },
- };
- 
- #endif
--- 
-2.11.0
-
diff --git a/openpower/linux/0007-drm-ast-Fixed-vram-size-incorrect-issue-on-POWER.patch b/openpower/linux/0007-drm-ast-Fixed-vram-size-incorrect-issue-on-POWER.patch
deleted file mode 100644
index da79871..0000000
--- a/openpower/linux/0007-drm-ast-Fixed-vram-size-incorrect-issue-on-POWER.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Y.C. Chen" <yc_chen@aspeedtech.com>
-Date: Fri, 17 Feb 2017 10:56:47 +0800
-Subject: [PATCH 07/12] drm/ast: Fixed vram size incorrect issue on POWER
-
-The default value of VGA scratch may incorrect.
-Should initial h/w before get vram info.
-
-Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_main.c | 6 +++---
- drivers/gpu/drm/ast/ast_post.c | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index 5a83d3793000..eefc5124eeb3 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -518,6 +518,9 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 
- 	ast_detect_chip(dev, &need_post);
- 
-+	if (need_post)
-+		ast_post_gpu(dev);
-+
- 	if (ast->chip != AST1180) {
- 		ret = ast_get_dram_info(dev);
- 		if (ret)
-@@ -528,9 +531,6 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 			 ast->dram_bus_width, ast->vram_size);
- 	}
- 
--	if (need_post)
--		ast_post_gpu(dev);
--
- 	ret = ast_mm_init(ast);
- 	if (ret)
- 		goto out_free;
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index c7c58becb25d..5b7db846a2c1 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -75,7 +75,7 @@ ast_set_def_ext_reg(struct drm_device *dev)
- 	const u8 *ext_reg_info;
- 
- 	/* reset scratch */
--	for (i = 0x81; i <= 0x8f; i++)
-+	for (i = 0x81; i <= 0x9f; i++)
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, 0x00);
- 
- 	if (ast->chip == AST2300 || ast->chip == AST2400) {
--- 
-2.11.0
-
diff --git a/openpower/linux/0008-drm-ast-Factor-mmc_test-code-in-POST-code.patch b/openpower/linux/0008-drm-ast-Factor-mmc_test-code-in-POST-code.patch
deleted file mode 100644
index f85a1ce..0000000
--- a/openpower/linux/0008-drm-ast-Factor-mmc_test-code-in-POST-code.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Sat, 18 Feb 2017 14:19:10 +1100
-Subject: [PATCH 08/12] drm/ast: Factor mmc_test code in POST code
-
-There's a some duplication for what's essentially copies of
-two loops, so factor it. The upcoming AST2500 POST code adds
-more of them. Also cleanup return types for the test functions,
-most of them return a boolean, some return a u32.
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
-
-v2. - Keep the split between the "test" and "test2" functions
-      as they have a different exit condition in the loop and
-      a different return type.
-    - Fix the return types accross the call chain
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_post.c | 82 ++++++++++++++++--------------------------
- 1 file changed, 31 insertions(+), 51 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 5b7db846a2c1..89b09d60b2be 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -441,85 +441,65 @@ static const u32 pattern[8] = {
- 	0x7C61D253
- };
- 
--static int mmc_test_burst(struct ast_private *ast, u32 datagen)
-+static bool mmc_test(struct ast_private *ast, u32 datagen, u8 test_ctl)
- {
- 	u32 data, timeout;
- 
- 	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x000000c1 | (datagen << 3));
-+	ast_moutdwm(ast, 0x1e6e0070, (datagen << 3) | test_ctl);
- 	timeout = 0;
- 	do {
- 		data = ast_mindwm(ast, 0x1e6e0070) & 0x3000;
--		if (data & 0x2000) {
--			return 0;
--		}
-+		if (data & 0x2000)
-+			return false;
- 		if (++timeout > TIMEOUT) {
- 			ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--			return 0;
-+			return false;
- 		}
- 	} while (!data);
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	return 1;
-+	ast_moutdwm(ast, 0x1e6e0070, 0x0);
-+	return true;
- }
- 
--static int mmc_test_burst2(struct ast_private *ast, u32 datagen)
-+static u32 mmc_test2(struct ast_private *ast, u32 datagen, u8 test_ctl)
- {
- 	u32 data, timeout;
- 
- 	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000041 | (datagen << 3));
-+	ast_moutdwm(ast, 0x1e6e0070, (datagen << 3) | test_ctl);
- 	timeout = 0;
- 	do {
- 		data = ast_mindwm(ast, 0x1e6e0070) & 0x1000;
- 		if (++timeout > TIMEOUT) {
- 			ast_moutdwm(ast, 0x1e6e0070, 0x0);
--			return -1;
-+			return 0xffffffff;
- 		}
- 	} while (!data);
- 	data = ast_mindwm(ast, 0x1e6e0078);
- 	data = (data | (data >> 16)) & 0xffff;
--	ast_moutdwm(ast, 0x1e6e0070, 0x0);
-+	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
- 	return data;
- }
- 
--static int mmc_test_single(struct ast_private *ast, u32 datagen)
-+
-+static bool mmc_test_burst(struct ast_private *ast, u32 datagen)
- {
--	u32 data, timeout;
-+	return mmc_test(ast, datagen, 0xc1);
-+}
- 
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x000000c5 | (datagen << 3));
--	timeout = 0;
--	do {
--		data = ast_mindwm(ast, 0x1e6e0070) & 0x3000;
--		if (data & 0x2000)
--			return 0;
--		if (++timeout > TIMEOUT) {
--			ast_moutdwm(ast, 0x1e6e0070, 0x0);
--			return 0;
--		}
--	} while (!data);
--	ast_moutdwm(ast, 0x1e6e0070, 0x0);
--	return 1;
-+static u32 mmc_test_burst2(struct ast_private *ast, u32 datagen)
-+{
-+	return mmc_test2(ast, datagen, 0x41);
- }
- 
--static int mmc_test_single2(struct ast_private *ast, u32 datagen)
-+static bool mmc_test_single(struct ast_private *ast, u32 datagen)
- {
--	u32 data, timeout;
-+	return mmc_test(ast, datagen, 0xc5);
-+}
- 
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000005 | (datagen << 3));
--	timeout = 0;
--	do {
--		data = ast_mindwm(ast, 0x1e6e0070) & 0x1000;
--		if (++timeout > TIMEOUT) {
--			ast_moutdwm(ast, 0x1e6e0070, 0x0);
--			return -1;
--		}
--	} while (!data);
--	data = ast_mindwm(ast, 0x1e6e0078);
--	data = (data | (data >> 16)) & 0xffff;
--	ast_moutdwm(ast, 0x1e6e0070, 0x0);
--	return data;
-+static u32 mmc_test_single2(struct ast_private *ast, u32 datagen)
-+{
-+	return mmc_test2(ast, datagen, 0x05);
- }
- 
- static int cbr_test(struct ast_private *ast)
-@@ -597,16 +577,16 @@ static u32 cbr_scan2(struct ast_private *ast)
- 	return data2;
- }
- 
--static u32 cbr_test3(struct ast_private *ast)
-+static bool cbr_test3(struct ast_private *ast)
- {
- 	if (!mmc_test_burst(ast, 0))
--		return 0;
-+		return false;
- 	if (!mmc_test_single(ast, 0))
--		return 0;
--	return 1;
-+		return false;
-+	return true;
- }
- 
--static u32 cbr_scan3(struct ast_private *ast)
-+static bool cbr_scan3(struct ast_private *ast)
- {
- 	u32 patcnt, loop;
- 
-@@ -617,9 +597,9 @@ static u32 cbr_scan3(struct ast_private *ast)
- 				break;
- 		}
- 		if (loop == 2)
--			return 0;
-+			return false;
- 	}
--	return 1;
-+	return true;
- }
- 
- static bool finetuneDQI_L(struct ast_private *ast, struct ast2300_dram_param *param)
--- 
-2.11.0
-
diff --git a/openpower/linux/0009-drm-ast-Rename-ast_init_dram_2300-to-ast_post_chip_2.patch b/openpower/linux/0009-drm-ast-Rename-ast_init_dram_2300-to-ast_post_chip_2.patch
deleted file mode 100644
index d0dc48f..0000000
--- a/openpower/linux/0009-drm-ast-Rename-ast_init_dram_2300-to-ast_post_chip_2.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:51:34 +1100
-Subject: [PATCH 09/12] drm/ast: Rename ast_init_dram_2300 to
- ast_post_chip_2300
-
-The function does more than initializing the DRAM and in turns
-calls other functions to do the actual init. This will keeping
-things more consistent with the upcoming AST2500 POST code.
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_post.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 89b09d60b2be..3716795d27c8 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -31,7 +31,7 @@
- 
- #include "ast_dram_tables.h"
- 
--static void ast_init_dram_2300(struct drm_device *dev);
-+static void ast_post_chip_2300(struct drm_device *dev);
- 
- void ast_enable_vga(struct drm_device *dev)
- {
-@@ -377,7 +377,7 @@ void ast_post_gpu(struct drm_device *dev)
- 
- 	if (ast->config_mode == ast_use_p2a) {
- 		if (ast->chip == AST2300 || ast->chip == AST2400)
--			ast_init_dram_2300(dev);
-+			ast_post_chip_2300(dev);
- 		else
- 			ast_init_dram_reg(dev);
- 
-@@ -1585,7 +1585,7 @@ static void ddr2_init(struct ast_private *ast, struct ast2300_dram_param *param)
- 
- }
- 
--static void ast_init_dram_2300(struct drm_device *dev)
-+static void ast_post_chip_2300(struct drm_device *dev)
- {
- 	struct ast_private *ast = dev->dev_private;
- 	struct ast2300_dram_param param;
--- 
-2.11.0
-
diff --git a/openpower/linux/0010-drm-ast-POST-code-for-the-new-AST2500.patch b/openpower/linux/0010-drm-ast-POST-code-for-the-new-AST2500.patch
deleted file mode 100644
index 6e42f86..0000000
--- a/openpower/linux/0010-drm-ast-POST-code-for-the-new-AST2500.patch
+++ /dev/null
@@ -1,559 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Y.C. Chen" <yc_chen@aspeedtech.com>
-Date: Fri, 17 Feb 2017 14:45:07 +1100
-Subject: [PATCH 10/12] drm/ast: POST code for the new AST2500
-
-This is used when the BMC isn't running any code and thus has
-to be initialized by the host.
-
-The code originates from Aspeed (Y.C. Chen) and has been cleaned
-up for coding style purposes by BenH.
-
-Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
-
-v2. - Fix bug in ddr_test_2500 reported by Emil Velikov
-    - Rebase on updated mmc_test factoring patch
-    - Fix missing else statement in 2500 POST code
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_dram_tables.h |  62 +++++
- drivers/gpu/drm/ast/ast_post.c        | 417 +++++++++++++++++++++++++++++++++-
- 2 files changed, 476 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_dram_tables.h b/drivers/gpu/drm/ast/ast_dram_tables.h
-index cc04539c0ff3..1d9c4e75d303 100644
---- a/drivers/gpu/drm/ast/ast_dram_tables.h
-+++ b/drivers/gpu/drm/ast/ast_dram_tables.h
-@@ -141,4 +141,66 @@ static const struct ast_dramstruct ast2100_dram_table_data[] = {
- 	{ 0xffff, 0xffffffff },
- };
- 
-+/*
-+ * AST2500 DRAM settings modules
-+ */
-+#define REGTBL_NUM           17
-+#define REGIDX_010           0
-+#define REGIDX_014           1
-+#define REGIDX_018           2
-+#define REGIDX_020           3
-+#define REGIDX_024           4
-+#define REGIDX_02C           5
-+#define REGIDX_030           6
-+#define REGIDX_214           7
-+#define REGIDX_2E0           8
-+#define REGIDX_2E4           9
-+#define REGIDX_2E8           10
-+#define REGIDX_2EC           11
-+#define REGIDX_2F0           12
-+#define REGIDX_2F4           13
-+#define REGIDX_2F8           14
-+#define REGIDX_RFC           15
-+#define REGIDX_PLL           16
-+
-+static const u32 ast2500_ddr3_1600_timing_table[REGTBL_NUM] = {
-+	0x64604D38,		     /* 0x010 */
-+	0x29690599,		     /* 0x014 */
-+	0x00000300,		     /* 0x018 */
-+	0x00000000,		     /* 0x020 */
-+	0x00000000,		     /* 0x024 */
-+	0x02181E70,		     /* 0x02C */
-+	0x00000040,		     /* 0x030 */
-+	0x00000024,		     /* 0x214 */
-+	0x02001300,		     /* 0x2E0 */
-+	0x0E0000A0,		     /* 0x2E4 */
-+	0x000E001B,		     /* 0x2E8 */
-+	0x35B8C105,		     /* 0x2EC */
-+	0x08090408,		     /* 0x2F0 */
-+	0x9B000800,		     /* 0x2F4 */
-+	0x0E400A00,		     /* 0x2F8 */
-+	0x9971452F,		     /* tRFC  */
-+	0x000071C1		     /* PLL   */
-+};
-+
-+static const u32 ast2500_ddr4_1600_timing_table[REGTBL_NUM] = {
-+	0x63604E37,		     /* 0x010 */
-+	0xE97AFA99,		     /* 0x014 */
-+	0x00019000,		     /* 0x018 */
-+	0x08000000,		     /* 0x020 */
-+	0x00000400,		     /* 0x024 */
-+	0x00000410,		     /* 0x02C */
-+	0x00000101,		     /* 0x030 */
-+	0x00000024,		     /* 0x214 */
-+	0x03002900,		     /* 0x2E0 */
-+	0x0E0000A0,		     /* 0x2E4 */
-+	0x000E001C,		     /* 0x2E8 */
-+	0x35B8C106,		     /* 0x2EC */
-+	0x08080607,		     /* 0x2F0 */
-+	0x9B000900,		     /* 0x2F4 */
-+	0x0E400A00,		     /* 0x2F8 */
-+	0x99714545,		     /* tRFC  */
-+	0x000071C1		     /* PLL   */
-+};
-+
- #endif
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 3716795d27c8..f7d421359d56 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -32,6 +32,7 @@
- #include "ast_dram_tables.h"
- 
- static void ast_post_chip_2300(struct drm_device *dev);
-+static void ast_post_chip_2500(struct drm_device *dev);
- 
- void ast_enable_vga(struct drm_device *dev)
- {
-@@ -78,7 +79,8 @@ ast_set_def_ext_reg(struct drm_device *dev)
- 	for (i = 0x81; i <= 0x9f; i++)
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, 0x00);
- 
--	if (ast->chip == AST2300 || ast->chip == AST2400) {
-+	if (ast->chip == AST2300 || ast->chip == AST2400 ||
-+	    ast->chip == AST2500) {
- 		if (dev->pdev->revision >= 0x20)
- 			ext_reg_info = extreginfo_ast2300;
- 		else
-@@ -102,7 +104,8 @@ ast_set_def_ext_reg(struct drm_device *dev)
- 
- 	/* Enable RAMDAC for A1 */
- 	reg = 0x04;
--	if (ast->chip == AST2300 || ast->chip == AST2400)
-+	if (ast->chip == AST2300 || ast->chip == AST2400 ||
-+	    ast->chip == AST2500)
- 		reg |= 0x20;
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0xff, reg);
- }
-@@ -376,7 +379,9 @@ void ast_post_gpu(struct drm_device *dev)
- 	ast_set_def_ext_reg(dev);
- 
- 	if (ast->config_mode == ast_use_p2a) {
--		if (ast->chip == AST2300 || ast->chip == AST2400)
-+		if (ast->chip == AST2500)
-+			ast_post_chip_2500(dev);
-+		else if (ast->chip == AST2300 || ast->chip == AST2400)
- 			ast_post_chip_2300(dev);
- 		else
- 			ast_init_dram_reg(dev);
-@@ -502,6 +507,11 @@ static u32 mmc_test_single2(struct ast_private *ast, u32 datagen)
- 	return mmc_test2(ast, datagen, 0x05);
- }
- 
-+static bool mmc_test_single_2500(struct ast_private *ast, u32 datagen)
-+{
-+	return mmc_test(ast, datagen, 0x85);
-+}
-+
- static int cbr_test(struct ast_private *ast)
- {
- 	u32 data;
-@@ -1668,3 +1678,404 @@ static void ast_post_chip_2300(struct drm_device *dev)
- 	} while ((reg & 0x40) == 0);
- }
- 
-+static bool cbr_test_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E6E0074, 0x0000FFFF);
-+	ast_moutdwm(ast, 0x1E6E007C, 0xFF00FF00);
-+	if (!mmc_test_burst(ast, 0))
-+		return false;
-+	if (!mmc_test_single_2500(ast, 0))
-+		return false;
-+	return true;
-+}
-+
-+static bool ddr_test_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E6E0074, 0x0000FFFF);
-+	ast_moutdwm(ast, 0x1E6E007C, 0xFF00FF00);
-+	if (!mmc_test_burst(ast, 0))
-+		return false;
-+	if (!mmc_test_burst(ast, 1))
-+		return false;
-+	if (!mmc_test_burst(ast, 2))
-+		return false;
-+	if (!mmc_test_burst(ast, 3))
-+		return false;
-+	if (!mmc_test_single_2500(ast, 0))
-+		return false;
-+	return true;
-+}
-+
-+static void ddr_init_common_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020080);
-+	ast_moutdwm(ast, 0x1E6E0008, 0x2003000F);
-+	ast_moutdwm(ast, 0x1E6E0038, 0x00000FFF);
-+	ast_moutdwm(ast, 0x1E6E0040, 0x88448844);
-+	ast_moutdwm(ast, 0x1E6E0044, 0x24422288);
-+	ast_moutdwm(ast, 0x1E6E0048, 0x22222222);
-+	ast_moutdwm(ast, 0x1E6E004C, 0x22222222);
-+	ast_moutdwm(ast, 0x1E6E0050, 0x80000000);
-+	ast_moutdwm(ast, 0x1E6E0208, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0218, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0220, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0228, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0230, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E02A8, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E02B0, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0240, 0x86000000);
-+	ast_moutdwm(ast, 0x1E6E0244, 0x00008600);
-+	ast_moutdwm(ast, 0x1E6E0248, 0x80000000);
-+	ast_moutdwm(ast, 0x1E6E024C, 0x80808080);
-+}
-+
-+static void ddr_phy_init_2500(struct ast_private *ast)
-+{
-+	u32 data, pass, timecnt;
-+
-+	pass = 0;
-+	ast_moutdwm(ast, 0x1E6E0060, 0x00000005);
-+	while (!pass) {
-+		for (timecnt = 0; timecnt < TIMEOUT; timecnt++) {
-+			data = ast_mindwm(ast, 0x1E6E0060) & 0x1;
-+			if (!data)
-+				break;
-+		}
-+		if (timecnt != TIMEOUT) {
-+			data = ast_mindwm(ast, 0x1E6E0300) & 0x000A0000;
-+			if (!data)
-+				pass = 1;
-+		}
-+		if (!pass) {
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+			udelay(10); /* delay 10 us */
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000005);
-+		}
-+	}
-+
-+	ast_moutdwm(ast, 0x1E6E0060, 0x00000006);
-+}
-+
-+/*
-+ * Check DRAM Size
-+ * 1Gb : 0x80000000 ~ 0x87FFFFFF
-+ * 2Gb : 0x80000000 ~ 0x8FFFFFFF
-+ * 4Gb : 0x80000000 ~ 0x9FFFFFFF
-+ * 8Gb : 0x80000000 ~ 0xBFFFFFFF
-+ */
-+static void check_dram_size_2500(struct ast_private *ast, u32 tRFC)
-+{
-+	u32 reg_04, reg_14;
-+
-+	reg_04 = ast_mindwm(ast, 0x1E6E0004) & 0xfffffffc;
-+	reg_14 = ast_mindwm(ast, 0x1E6E0014) & 0xffffff00;
-+
-+	ast_moutdwm(ast, 0xA0100000, 0x41424344);
-+	ast_moutdwm(ast, 0x90100000, 0x35363738);
-+	ast_moutdwm(ast, 0x88100000, 0x292A2B2C);
-+	ast_moutdwm(ast, 0x80100000, 0x1D1E1F10);
-+
-+	/* Check 8Gbit */
-+	if (ast_mindwm(ast, 0xA0100000) == 0x41424344) {
-+		reg_04 |= 0x03;
-+		reg_14 |= (tRFC >> 24) & 0xFF;
-+		/* Check 4Gbit */
-+	} else if (ast_mindwm(ast, 0x90100000) == 0x35363738) {
-+		reg_04 |= 0x02;
-+		reg_14 |= (tRFC >> 16) & 0xFF;
-+		/* Check 2Gbit */
-+	} else if (ast_mindwm(ast, 0x88100000) == 0x292A2B2C) {
-+		reg_04 |= 0x01;
-+		reg_14 |= (tRFC >> 8) & 0xFF;
-+	} else {
-+		reg_14 |= tRFC & 0xFF;
-+	}
-+	ast_moutdwm(ast, 0x1E6E0004, reg_04);
-+	ast_moutdwm(ast, 0x1E6E0014, reg_14);
-+}
-+
-+static void enable_cache_2500(struct ast_private *ast)
-+{
-+	u32 reg_04, data;
-+
-+	reg_04 = ast_mindwm(ast, 0x1E6E0004);
-+	ast_moutdwm(ast, 0x1E6E0004, reg_04 | 0x1000);
-+
-+	do
-+		data = ast_mindwm(ast, 0x1E6E0004);
-+	while (!(data & 0x80000));
-+	ast_moutdwm(ast, 0x1E6E0004, reg_04 | 0x400);
-+}
-+
-+static void set_mpll_2500(struct ast_private *ast)
-+{
-+	u32 addr, data, param;
-+
-+	/* Reset MMC */
-+	ast_moutdwm(ast, 0x1E6E0000, 0xFC600309);
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020080);
-+	for (addr = 0x1e6e0004; addr < 0x1e6e0090;) {
-+		ast_moutdwm(ast, addr, 0x0);
-+		addr += 4;
-+	}
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020000);
-+
-+	ast_moutdwm(ast, 0x1E6E2000, 0x1688A8A8);
-+	data = ast_mindwm(ast, 0x1E6E2070) & 0x00800000;
-+	if (data) {
-+		/* CLKIN = 25MHz */
-+		param = 0x930023E0;
-+		ast_moutdwm(ast, 0x1E6E2160, 0x00011320);
-+	} else {
-+		/* CLKIN = 24MHz */
-+		param = 0x93002400;
-+	}
-+	ast_moutdwm(ast, 0x1E6E2020, param);
-+	udelay(100);
-+}
-+
-+static void reset_mmc_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E78505C, 0x00000004);
-+	ast_moutdwm(ast, 0x1E785044, 0x00000001);
-+	ast_moutdwm(ast, 0x1E785048, 0x00004755);
-+	ast_moutdwm(ast, 0x1E78504C, 0x00000013);
-+	mdelay(100);
-+	ast_moutdwm(ast, 0x1E785054, 0x00000077);
-+	ast_moutdwm(ast, 0x1E6E0000, 0xFC600309);
-+}
-+
-+static void ddr3_init_2500(struct ast_private *ast, const u32 *ddr_table)
-+{
-+
-+	ast_moutdwm(ast, 0x1E6E0004, 0x00000303);
-+	ast_moutdwm(ast, 0x1E6E0010, ddr_table[REGIDX_010]);
-+	ast_moutdwm(ast, 0x1E6E0014, ddr_table[REGIDX_014]);
-+	ast_moutdwm(ast, 0x1E6E0018, ddr_table[REGIDX_018]);
-+	ast_moutdwm(ast, 0x1E6E0020, ddr_table[REGIDX_020]);	     /* MODEREG4/6 */
-+	ast_moutdwm(ast, 0x1E6E0024, ddr_table[REGIDX_024]);	     /* MODEREG5 */
-+	ast_moutdwm(ast, 0x1E6E002C, ddr_table[REGIDX_02C] | 0x100); /* MODEREG0/2 */
-+	ast_moutdwm(ast, 0x1E6E0030, ddr_table[REGIDX_030]);	     /* MODEREG1/3 */
-+
-+	/* DDR PHY Setting */
-+	ast_moutdwm(ast, 0x1E6E0200, 0x02492AAE);
-+	ast_moutdwm(ast, 0x1E6E0204, 0x00001001);
-+	ast_moutdwm(ast, 0x1E6E020C, 0x55E00B0B);
-+	ast_moutdwm(ast, 0x1E6E0210, 0x20000000);
-+	ast_moutdwm(ast, 0x1E6E0214, ddr_table[REGIDX_214]);
-+	ast_moutdwm(ast, 0x1E6E02E0, ddr_table[REGIDX_2E0]);
-+	ast_moutdwm(ast, 0x1E6E02E4, ddr_table[REGIDX_2E4]);
-+	ast_moutdwm(ast, 0x1E6E02E8, ddr_table[REGIDX_2E8]);
-+	ast_moutdwm(ast, 0x1E6E02EC, ddr_table[REGIDX_2EC]);
-+	ast_moutdwm(ast, 0x1E6E02F0, ddr_table[REGIDX_2F0]);
-+	ast_moutdwm(ast, 0x1E6E02F4, ddr_table[REGIDX_2F4]);
-+	ast_moutdwm(ast, 0x1E6E02F8, ddr_table[REGIDX_2F8]);
-+	ast_moutdwm(ast, 0x1E6E0290, 0x00100008);
-+	ast_moutdwm(ast, 0x1E6E02C0, 0x00000006);
-+
-+	/* Controller Setting */
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020091);
-+
-+	/* Wait DDR PHY init done */
-+	ddr_phy_init_2500(ast);
-+
-+	ast_moutdwm(ast, 0x1E6E0120, ddr_table[REGIDX_PLL]);
-+	ast_moutdwm(ast, 0x1E6E000C, 0x42AA5C81);
-+	ast_moutdwm(ast, 0x1E6E0034, 0x0001AF93);
-+
-+	check_dram_size_2500(ast, ddr_table[REGIDX_RFC]);
-+	enable_cache_2500(ast);
-+	ast_moutdwm(ast, 0x1E6E001C, 0x00000008);
-+	ast_moutdwm(ast, 0x1E6E0038, 0xFFFFFF00);
-+}
-+
-+static void ddr4_init_2500(struct ast_private *ast, const u32 *ddr_table)
-+{
-+	u32 data, data2, pass, retrycnt;
-+	u32 ddr_vref, phy_vref;
-+	u32 min_ddr_vref = 0, min_phy_vref = 0;
-+	u32 max_ddr_vref = 0, max_phy_vref = 0;
-+
-+	ast_moutdwm(ast, 0x1E6E0004, 0x00000313);
-+	ast_moutdwm(ast, 0x1E6E0010, ddr_table[REGIDX_010]);
-+	ast_moutdwm(ast, 0x1E6E0014, ddr_table[REGIDX_014]);
-+	ast_moutdwm(ast, 0x1E6E0018, ddr_table[REGIDX_018]);
-+	ast_moutdwm(ast, 0x1E6E0020, ddr_table[REGIDX_020]);	     /* MODEREG4/6 */
-+	ast_moutdwm(ast, 0x1E6E0024, ddr_table[REGIDX_024]);	     /* MODEREG5 */
-+	ast_moutdwm(ast, 0x1E6E002C, ddr_table[REGIDX_02C] | 0x100); /* MODEREG0/2 */
-+	ast_moutdwm(ast, 0x1E6E0030, ddr_table[REGIDX_030]);	     /* MODEREG1/3 */
-+
-+	/* DDR PHY Setting */
-+	ast_moutdwm(ast, 0x1E6E0200, 0x42492AAE);
-+	ast_moutdwm(ast, 0x1E6E0204, 0x09002000);
-+	ast_moutdwm(ast, 0x1E6E020C, 0x55E00B0B);
-+	ast_moutdwm(ast, 0x1E6E0210, 0x20000000);
-+	ast_moutdwm(ast, 0x1E6E0214, ddr_table[REGIDX_214]);
-+	ast_moutdwm(ast, 0x1E6E02E0, ddr_table[REGIDX_2E0]);
-+	ast_moutdwm(ast, 0x1E6E02E4, ddr_table[REGIDX_2E4]);
-+	ast_moutdwm(ast, 0x1E6E02E8, ddr_table[REGIDX_2E8]);
-+	ast_moutdwm(ast, 0x1E6E02EC, ddr_table[REGIDX_2EC]);
-+	ast_moutdwm(ast, 0x1E6E02F0, ddr_table[REGIDX_2F0]);
-+	ast_moutdwm(ast, 0x1E6E02F4, ddr_table[REGIDX_2F4]);
-+	ast_moutdwm(ast, 0x1E6E02F8, ddr_table[REGIDX_2F8]);
-+	ast_moutdwm(ast, 0x1E6E0290, 0x00100008);
-+	ast_moutdwm(ast, 0x1E6E02C4, 0x3C183C3C);
-+	ast_moutdwm(ast, 0x1E6E02C8, 0x00631E0E);
-+
-+	/* Controller Setting */
-+	ast_moutdwm(ast, 0x1E6E0034, 0x0001A991);
-+
-+	/* Train PHY Vref first */
-+	pass = 0;
-+
-+	for (retrycnt = 0; retrycnt < 4 && pass == 0; retrycnt++) {
-+		max_phy_vref = 0x0;
-+		pass = 0;
-+		ast_moutdwm(ast, 0x1E6E02C0, 0x00001C06);
-+		for (phy_vref = 0x40; phy_vref < 0x80; phy_vref++) {
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E02CC, phy_vref | (phy_vref << 8));
-+			/* Fire DFI Init */
-+			ddr_phy_init_2500(ast);
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00005C01);
-+			if (cbr_test_2500(ast)) {
-+				pass++;
-+				data = ast_mindwm(ast, 0x1E6E03D0);
-+				data2 = data >> 8;
-+				data  = data & 0xff;
-+				if (data > data2)
-+					data = data2;
-+				if (max_phy_vref < data) {
-+					max_phy_vref = data;
-+					min_phy_vref = phy_vref;
-+				}
-+			} else if (pass > 0)
-+				break;
-+		}
-+	}
-+	ast_moutdwm(ast, 0x1E6E02CC, min_phy_vref | (min_phy_vref << 8));
-+
-+	/* Train DDR Vref next */
-+	pass = 0;
-+
-+	for (retrycnt = 0; retrycnt < 4 && pass == 0; retrycnt++) {
-+		min_ddr_vref = 0xFF;
-+		max_ddr_vref = 0x0;
-+		pass = 0;
-+		for (ddr_vref = 0x00; ddr_vref < 0x40; ddr_vref++) {
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E02C0, 0x00000006 | (ddr_vref << 8));
-+			/* Fire DFI Init */
-+			ddr_phy_init_2500(ast);
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00005C01);
-+			if (cbr_test_2500(ast)) {
-+				pass++;
-+				if (min_ddr_vref > ddr_vref)
-+					min_ddr_vref = ddr_vref;
-+				if (max_ddr_vref < ddr_vref)
-+					max_ddr_vref = ddr_vref;
-+			} else if (pass != 0)
-+				break;
-+		}
-+	}
-+
-+	ast_moutdwm(ast, 0x1E6E000C, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+	ddr_vref = (min_ddr_vref + max_ddr_vref + 1) >> 1;
-+	ast_moutdwm(ast, 0x1E6E02C0, 0x00000006 | (ddr_vref << 8));
-+
-+	/* Wait DDR PHY init done */
-+	ddr_phy_init_2500(ast);
-+
-+	ast_moutdwm(ast, 0x1E6E0120, ddr_table[REGIDX_PLL]);
-+	ast_moutdwm(ast, 0x1E6E000C, 0x42AA5C81);
-+	ast_moutdwm(ast, 0x1E6E0034, 0x0001AF93);
-+
-+	check_dram_size_2500(ast, ddr_table[REGIDX_RFC]);
-+	enable_cache_2500(ast);
-+	ast_moutdwm(ast, 0x1E6E001C, 0x00000008);
-+	ast_moutdwm(ast, 0x1E6E0038, 0xFFFFFF00);
-+}
-+
-+static bool ast_dram_init_2500(struct ast_private *ast)
-+{
-+	u32 data;
-+	u32 max_tries = 5;
-+
-+	do {
-+		if (max_tries-- == 0)
-+			return false;
-+		set_mpll_2500(ast);
-+		reset_mmc_2500(ast);
-+		ddr_init_common_2500(ast);
-+
-+		data = ast_mindwm(ast, 0x1E6E2070);
-+		if (data & 0x01000000)
-+			ddr4_init_2500(ast, ast2500_ddr4_1600_timing_table);
-+		else
-+			ddr3_init_2500(ast, ast2500_ddr3_1600_timing_table);
-+	} while (!ddr_test_2500(ast));
-+
-+	ast_moutdwm(ast, 0x1E6E2040, ast_mindwm(ast, 0x1E6E2040) | 0x41);
-+
-+	/* Patch code */
-+	data = ast_mindwm(ast, 0x1E6E200C) & 0xF9FFFFFF;
-+	ast_moutdwm(ast, 0x1E6E200C, data | 0x10000000);
-+
-+	return true;
-+}
-+
-+void ast_post_chip_2500(struct drm_device *dev)
-+{
-+	struct ast_private *ast = dev->dev_private;
-+	u32 temp;
-+	u8 reg;
-+
-+	reg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff);
-+	if ((reg & 0x80) == 0) {/* vga only */
-+		/* Clear bus lock condition */
-+		ast_moutdwm(ast, 0x1e600000, 0xAEED1A03);
-+		ast_moutdwm(ast, 0x1e600084, 0x00010000);
-+		ast_moutdwm(ast, 0x1e600088, 0x00000000);
-+		ast_moutdwm(ast, 0x1e6e2000, 0x1688A8A8);
-+		ast_write32(ast, 0xf004, 0x1e6e0000);
-+		ast_write32(ast, 0xf000, 0x1);
-+		ast_write32(ast, 0x12000, 0x1688a8a8);
-+		while (ast_read32(ast, 0x12000) != 0x1)
-+			;
-+
-+		ast_write32(ast, 0x10000, 0xfc600309);
-+		while (ast_read32(ast, 0x10000) != 0x1)
-+			;
-+
-+		/* Slow down CPU/AHB CLK in VGA only mode */
-+		temp = ast_read32(ast, 0x12008);
-+		temp |= 0x73;
-+		ast_write32(ast, 0x12008, temp);
-+
-+		/* Reset USB port to patch USB unknown device issue */
-+		ast_moutdwm(ast, 0x1e6e2090, 0x20000000);
-+		temp  = ast_mindwm(ast, 0x1e6e2094);
-+		temp |= 0x00004000;
-+		ast_moutdwm(ast, 0x1e6e2094, temp);
-+		temp  = ast_mindwm(ast, 0x1e6e2070);
-+		if (temp & 0x00800000) {
-+			ast_moutdwm(ast, 0x1e6e207c, 0x00800000);
-+			mdelay(100);
-+			ast_moutdwm(ast, 0x1e6e2070, 0x00800000);
-+		}
-+
-+		if (!ast_dram_init_2500(ast))
-+			DRM_ERROR("DRAM init failed !\n");
-+
-+		temp = ast_mindwm(ast, 0x1e6e2040);
-+		ast_moutdwm(ast, 0x1e6e2040, temp | 0x40);
-+	}
-+
-+	/* wait ready */
-+	do {
-+		reg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff);
-+	} while ((reg & 0x40) == 0);
-+}
--- 
-2.11.0
-
diff --git a/openpower/linux/0011-powerpc-powernv-cpuidle-Pass-correct-drv-cpumask-for.patch b/openpower/linux/0011-powerpc-powernv-cpuidle-Pass-correct-drv-cpumask-for.patch
deleted file mode 100644
index 25937aa..0000000
--- a/openpower/linux/0011-powerpc-powernv-cpuidle-Pass-correct-drv-cpumask-for.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
-Date: Thu, 23 Mar 2017 20:52:46 +0530
-Subject: [PATCH 11/12] powerpc/powernv/cpuidle: Pass correct drv->cpumask for
- registration
-
-drv->cpumask defaults to cpu_possible_mask in __cpuidle_driver_init().
-On PowerNV platform cpu_present could be less than cpu_possible in cases
-where firmware detects the cpu, but it is not available to the OS.  When
-CONFIG_HOTPLUG_CPU=n, such cpus are not hotplugable at runtime and hence
-we skip creating cpu_device.
-
-This breaks cpuidle on powernv where register_cpu() is not called for
-cpus in cpu_possible_mask that cannot be hot-added at runtime.
-
-Trying cpuidle_register_device() on cpu without cpu_device will cause
-crash like this:
-
-cpu 0xf: Vector: 380 (Data SLB Access) at [c000000ff1503490]
-    pc: c00000000022c8bc: string+0x34/0x60
-    lr: c00000000022ed78: vsnprintf+0x284/0x42c
-    sp: c000000ff1503710
-   msr: 9000000000009033
-   dar: 6000000060000000
-  current = 0xc000000ff1480000
-  paca    = 0xc00000000fe82d00   softe: 0        irq_happened: 0x01
-    pid   = 1, comm = swapper/8
-Linux version 4.11.0-rc2 (sv@sagarika) (gcc version 4.9.4
-(Buildroot 2017.02-00004-gc28573e) ) #15 SMP Fri Mar 17 19:32:02 IST 2017
-enter ? for help
-[link register   ] c00000000022ed78 vsnprintf+0x284/0x42c
-[c000000ff1503710] c00000000022ebb8 vsnprintf+0xc4/0x42c (unreliable)
-[c000000ff1503800] c00000000022ef40 vscnprintf+0x20/0x44
-[c000000ff1503830] c0000000000ab61c vprintk_emit+0x94/0x2cc
-[c000000ff15038a0] c0000000000acc9c vprintk_func+0x60/0x74
-[c000000ff15038c0] c000000000619694 printk+0x38/0x4c
-[c000000ff15038e0] c000000000224950 kobject_get+0x40/0x60
-[c000000ff1503950] c00000000022507c kobject_add_internal+0x60/0x2c4
-[c000000ff15039e0] c000000000225350 kobject_init_and_add+0x70/0x78
-[c000000ff1503a60] c00000000053c288 cpuidle_add_sysfs+0x9c/0xe0
-[c000000ff1503ae0] c00000000053aeac cpuidle_register_device+0xd4/0x12c
-[c000000ff1503b30] c00000000053b108 cpuidle_register+0x98/0xcc
-[c000000ff1503bc0] c00000000085eaf0 powernv_processor_idle_init+0x140/0x1e0
-[c000000ff1503c60] c00000000000cd60 do_one_initcall+0xc0/0x15c
-[c000000ff1503d20] c000000000833e84 kernel_init_freeable+0x1a0/0x25c
-[c000000ff1503dc0] c00000000000d478 kernel_init+0x24/0x12c
-[c000000ff1503e30] c00000000000b564 ret_from_kernel_thread+0x5c/0x78
-
-This patch fixes the bug by passing correct cpumask from
-powernv-cpuidle driver.
-
-Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
-Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
-[From http://patchwork.ozlabs.org/patch/742706/]
-Signed-off-by: Joel Stanley <joel@jms.id.au>
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/cpuidle/cpuidle-powernv.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
-index 0835a37a5f3a..5e06d7b6b508 100644
---- a/drivers/cpuidle/cpuidle-powernv.c
-+++ b/drivers/cpuidle/cpuidle-powernv.c
-@@ -164,6 +164,24 @@ static int powernv_cpuidle_driver_init(void)
- 		drv->state_count += 1;
- 	}
- 
-+	/*
-+	 * On PowerNV platform cpu_present may be less that cpu_possible in
-+	 * cases where firmware detects the cpu, but it is not available to the
-+	 * OS.  If CONFIG_HOTPLUG_CPU=n then such CPUs are not hotplugable at
-+	 * runtime and hence cpu_devices are not created for those cpus by
-+	 * generic topology_init().
-+	 *
-+	 * drv->cpumask defaults to cpu_possible_mask in
-+	 * __cpuidle_driver_init().  This breaks cpuidle on powernv where
-+	 * cpu_devices are not created for cpus in cpu_possible_mask that
-+	 * cannot be hot-added later at runtime.
-+	 *
-+	 * Trying cpuidle_register_device() on a cpu without cpu_devices is
-+	 * incorrect. Hence pass correct cpu mask to generic cpuidle driver.
-+	 */
-+
-+	drv->cpumask = (struct cpumask *)cpu_present_mask;
-+
- 	return 0;
- }
- 
--- 
-2.11.0
-
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index a28de54..d380784 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -3,11 +3,7 @@
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot-binaries/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-mrw/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/common-p8-xml/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/palmetto-xml/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/habanero-xml/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/firestone-xml/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/garrison-xml/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/barreleye-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/machine-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-pnor/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/petitboot/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/p8-pore-binutils/Config.in"
@@ -16,10 +12,8 @@
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/skiboot/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/libflash/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/loadkeys/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/witherspoon-xml/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/romulus-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-binutils/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-gcc/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/zaius-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ima-catalog/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/p9dsu-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/sbe/Config.in"
+
diff --git a/openpower/package/barreleye-xml/Config.in b/openpower/package/barreleye-xml/Config.in
deleted file mode 100755
index 5a8ba74..0000000
--- a/openpower/package/barreleye-xml/Config.in
+++ /dev/null
@@ -1,24 +0,0 @@
-config BR2_PACKAGE_BARRELEYE_XML
-        bool "barreleye_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "barreleye")
-        select BR2_PACKAGE_COMMON_P8_XML
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_BARRELEYE_SYSTEM_XML_FILENAME
-        string "Barreleye targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_BARRELEYE_MRW_XML_FILENAME
-        string "Barreleye targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_BARRELEYE_BIOS_XML_FILENAME
-        string "Barreleye BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/barreleye-xml/barreleye-xml.mk b/openpower/package/barreleye-xml/barreleye-xml.mk
deleted file mode 100755
index 1621a56..0000000
--- a/openpower/package/barreleye-xml/barreleye-xml.mk
+++ /dev/null
@@ -1,77 +0,0 @@
-################################################################################
-#
-# barreleye_xml
-#
-################################################################################
-
-BARRELEYE_XML_VERSION ?= 253622f22fe142ea67a0025e9bcc3044db038898
-BARRELEYE_XML_SITE = $(call github,open-power,barreleye-xml,$(BARRELEYE_XML_VERSION))
-
-BARRELEYE_XML_LICENSE = Apache-2.0
-BARRELEYE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
-
-BARRELEYE_XML_INSTALL_IMAGES = YES
-BARRELEYE_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-BARRELEYE_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_BARRELEYE_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define BARRELEYE_XML_BUILD_CMDS
-        # copy the barreleye xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/barreleye.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_BARRELEYE_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            $(MRW_SCRATCH)/$(BR2_BARRELEYE_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(BARRELEYE_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define BARRELEYE_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define BARRELEYE_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/capp-ucode/capp-ucode.mk b/openpower/package/capp-ucode/capp-ucode.mk
index c846638..7513fe0 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 ?= 1bb7503078ed39b74a7b9c46925da75e547ceea6
+CAPP_UCODE_VERSION ?= 9c73e9f51d240847fbd150815a3b9c548aae0cb8
 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/firestone-xml/Config.in b/openpower/package/firestone-xml/Config.in
deleted file mode 100755
index 3990b29..0000000
--- a/openpower/package/firestone-xml/Config.in
+++ /dev/null
@@ -1,24 +0,0 @@
-config BR2_PACKAGE_FIRESTONE_XML
-        bool "firestone_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "firestone")
-        select BR2_PACKAGE_COMMON_P8_XML
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_FIRESTONE_SYSTEM_XML_FILENAME
-        string "Firestone targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_FIRESTONE_MRW_XML_FILENAME
-        string "Firestone targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_FIRESTONE_BIOS_XML_FILENAME
-        string "Firestone BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/firestone-xml/firestone.mk b/openpower/package/firestone-xml/firestone.mk
deleted file mode 100644
index 4a2a55e..0000000
--- a/openpower/package/firestone-xml/firestone.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# firestone_xml
-#
-################################################################################
-
-FIRESTONE_XML_VERSION ?= 2494a430656504d014780000adbc2c2e7cfc54ab
-FIRESTONE_XML_SITE ?= $(call github,open-power,firestone-xml,$(FIRESTONE_XML_VERSION))
-
-FIRESTONE_XML_LICENSE = Apache-2.0
-FIRESTONE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
-
-FIRESTONE_XML_INSTALL_IMAGES = YES
-FIRESTONE_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-FIRESTONE_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_FIRESTONE_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define FIRESTONE_XML_BUILD_CMDS
-        # copy the firestone xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/firestone.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_FIRESTONE_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_FIRESTONE_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(FIRESTONE_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define FIRESTONE_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define FIRESTONE_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/garrison-xml/Config.in b/openpower/package/garrison-xml/Config.in
deleted file mode 100755
index a71a2c8..0000000
--- a/openpower/package/garrison-xml/Config.in
+++ /dev/null
@@ -1,24 +0,0 @@
-config BR2_PACKAGE_GARRISON_XML
-        bool "garrison_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "garrison")
-        select BR2_PACKAGE_COMMON_P8_XML
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_GARRISON_SYSTEM_XML_FILENAME
-        string "Garrison targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_GARRISON_MRW_XML_FILENAME
-        string "Garrison targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_GARRISON_BIOS_XML_FILENAME
-        string "Garrison BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/garrison-xml/garrison.mk b/openpower/package/garrison-xml/garrison.mk
deleted file mode 100644
index 1e152ce..0000000
--- a/openpower/package/garrison-xml/garrison.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# garrison_xml
-#
-################################################################################
-
-GARRISON_XML_VERSION ?= 19a516499e1090c20c5a3303db256529ef22c1c9
-GARRISON_XML_SITE ?= $(call github,open-power,garrison-xml,$(GARRISON_XML_VERSION))
-
-GARRISON_XML_LICENSE = Apache-2.0
-GARRISON_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
-
-GARRISON_XML_INSTALL_IMAGES = YES
-GARRISON_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-GARRISON_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_GARRISON_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define GARRISON_XML_BUILD_CMDS
-        # copy the garrison xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/garrison.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_GARRISON_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_GARRISON_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(GARRISON_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define GARRISON_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define GARRISON_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/habanero-xml/Config.in b/openpower/package/habanero-xml/Config.in
deleted file mode 100755
index 02420ce..0000000
--- a/openpower/package/habanero-xml/Config.in
+++ /dev/null
@@ -1,24 +0,0 @@
-config BR2_PACKAGE_HABANERO_XML
-        bool "habanero_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "habanero")
-        select BR2_PACKAGE_COMMON_P8_XML
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_HABANERO_SYSTEM_XML_FILENAME
-        string "Habanero targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_HABANERO_MRW_XML_FILENAME
-        string "Habanero targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-            
-config BR2_HABANERO_BIOS_XML_FILENAME
-        string "Habanero BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
deleted file mode 100644
index 66f2791..0000000
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ /dev/null
@@ -1,78 +0,0 @@
-################################################################################
-#
-# habanero_xml
-#
-################################################################################
-
-HABANERO_XML_VERSION ?= 6a78496c286e284719a8201148a5088030b897de
-HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
-
-HABANERO_XML_LICENSE = Apache-2.0
-HABANERO_XML_LICENSE_FILES = LICENSE
-HABANERO_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
-
-HABANERO_XML_INSTALL_IMAGES = YES
-HABANERO_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-HABANERO_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_HABANERO_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define HABANERO_XML_BUILD_CMDS
-        # copy the habanero xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/habanero.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_HABANERO_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            $(MRW_SCRATCH)/$(BR2_HABANERO_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(HABANERO_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define HABANERO_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define HABANERO_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index c10f2c2..ef28e87 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= 46670e3214d1ec1fbffe06d286b307b25505d149
+HOSTBOOT_BINARIES_VERSION ?= 762912103d3d74be185b1b886063515232070375
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
 
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index a0b5c64..94fb7ef 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 ?= 3a3d65e1bec528f3ba6b526bdeb843ad379c68fc
+HOSTBOOT_VERSION_BRANCH_MASTER ?= d96098eaf93f873dc859dacb1b91eb95f1c8877a
 
 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/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
new file mode 100644
index 0000000..d369874
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch
@@ -0,0 +1,101 @@
+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-0002-remove-attr-override-compile.patch b/openpower/package/hostboot/p9Patches/hostboot-0002-remove-attr-override-compile.patch
deleted file mode 100644
index 6ae8248..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0002-remove-attr-override-compile.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 53bd51536cccbef8d080a92bf4a2b16ca549af3c Mon Sep 17 00:00:00 2001
-From: Matt Ploetz <maploetz@us.ibm.com>
-Date: Tue, 6 Sep 2016 14:08:08 -0500
-Subject: [PATCH] Remove the building and distributuion of attribute override
- tool
-
-Change-Id: Ifbe7eef4152d5c5521aa6f1e2659d30aa46fd525
-RTC:160270
----
- src/build/mkrules/dist.targets.mk | 2 +-
- src/usr/targeting/makefile        | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
-index d201570..df08258 100644
---- a/src/build/mkrules/dist.targets.mk
-+++ b/src/build/mkrules/dist.targets.mk
-@@ -70,7 +70,7 @@ COPY_FILES = \
-     obj/genfiles/targAttrInfo.csv:vpo \
-     obj/genfiles/target_types_merged.xml:openpower \
-     obj/genfiles/fapiattrs.xml:openpower \
--    obj/genfiles/attributeOverride:tools,openpower \
-+    obj/genfiles/attributeOverride:tools \
-     src/usr/targeting/attroverride/README.attr_override:tools,openpower \
-     src/build/hwpf/prcd_compile.tcl:tools \
-     src/build/buildpnor/buildSbePart.pl:openpower \
-diff --git a/src/usr/targeting/makefile b/src/usr/targeting/makefile
-index 61dfb0a..c0c31ea 100644
---- a/src/usr/targeting/makefile
-+++ b/src/usr/targeting/makefile
-@@ -65,7 +65,7 @@ OBJS += ${HOSTBOOT_SPECIFIC_OBJS}
- SUBDIRS += test.d
- SUBDIRS += xmltohb.d
- SUBDIRS += runtime.d
--SUBDIRS += attroverride.d
-+#SUBDIRS += attroverride.d
- 
- include ${ROOTPATH}/config.mk
- 
--- 
-1.8.2.2
-
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
new file mode 100644
index 0000000..7c097e7
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch
@@ -0,0 +1,359 @@
+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-0010-Updates-to-HBRT-runtime-interfaces.patch b/openpower/package/hostboot/p9Patches/hostboot-0010-Updates-to-HBRT-runtime-interfaces.patch
new file mode 100644
index 0000000..e2d052f
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0010-Updates-to-HBRT-runtime-interfaces.patch
@@ -0,0 +1,419 @@
+From 826657215c64a6fba1f8141769af5a93994b4a5d Mon Sep 17 00:00:00 2001
+From: Dan Crowell <dcrowell@us.ibm.com>
+Date: Fri, 12 May 2017 15:40:46 -0500
+Subject: [PATCH] Updates to HBRT runtime interfaces
+
+Reconciling P9 function table with P8 table to make opal-prd
+work.
+
+Added new entries for:
+- firmware_request
+- get_ipoll_events
+- firmware_notify
+
+Added in entries for P8 functions:
+- get_interface_capabilities
+
+Added deprecated placeholders for P8 functions:
+- occ_load
+- occ_start
+- occ_stop
+
+Moved entries for:
+- load_pm_complex
+- start_pm_complex
+- reset_pm_complex
+
+Change-Id: I1892b4465a6e5901aa9eaa6a49e139a4bc4c5b56
+---
+ src/include/runtime/interface.h | 230 +++++++++++++++++++++++++++-------------
+ src/runtime/rt_main.C           |  26 ++++-
+ 2 files changed, 182 insertions(+), 74 deletions(-)
+
+diff --git a/src/include/runtime/interface.h b/src/include/runtime/interface.h
+index aafbbf9..363e50c 100644
+--- a/src/include/runtime/interface.h
++++ b/src/include/runtime/interface.h
+@@ -37,9 +37,9 @@
+  */
+ 
+ /** Current interface version.
+- *  0x9001:  9=P9, 001=Version 1
++ *  0x9001:  9=P9, 002=Version 2
+  */
+-#define HOSTBOOT_RUNTIME_INTERFACE_VERSION 0x9001
++#define HOSTBOOT_RUNTIME_INTERFACE_VERSION 0x9002
+ 
+ #ifndef __HOSTBOOT_RUNTIME_INTERFACE_VERSION_ONLY
+ 
+@@ -53,7 +53,7 @@ enum MemoryError_t
+      *  continues to report errors on subsequent reads. A second CE on that
+      *  cache line will result in memory UE. Therefore, it is advised to
+      *  migrate off of the address range as soon as possible. */
+-    MEMORY_ERROR_CE,
++    MEMORY_ERROR_CE = 0,
+ 
+     /** Hardware has reported an uncorrectable error in memory (memory UE,
+      *  channel failure, etc). The hypervisor should migrate any partitions
+@@ -63,13 +63,13 @@ enum MemoryError_t
+      *  partition failures to handle the hardware attentions so that the
+      *  hypervisor will know all areas of memory that are impacted by the
+      *  failure. */
+-    MEMORY_ERROR_UE,
++    MEMORY_ERROR_UE = 1,
+ 
+     /** Firmware has predictively requested service on a part in the memory
+      *  subsystem. The partitions may not have been affected, but it is
+      *  advised to migrate off of the address range as soon as possible to
+      *  avoid potential partition outages. */
+-    MEMORY_ERROR_PREDICTIVE,
++    MEMORY_ERROR_PREDICTIVE = 2,
+ };
+ 
+ /**
+@@ -130,6 +130,21 @@ enum MemoryError_t
+ #define HBRT_RSVD_MEM__SBE_FFDC           "ibm,sbe-ffdc"
+ 
+ 
++/**
++ * Specifiers for get_interface_capabilities
++ */
++
++/* Common Features */
++#define HBRT_CAPS_SET0_COMMON  0
++
++/* OPAL fixes */
++#define HBRT_CAPS_SET1_OPAL    1
++#define HBRT_CAPS_OPAL_HAS_XSCOM_RC     (1ul << 0)
++
++/* PHYP fixes */
++#define HBRT_CAPS_SET2_PHYP    2
++
++
+ /** @typedef hostInterfaces_t
+  *  @brief Interfaces provided by the underlying environment (ex. Sapphire).
+  *
+@@ -412,6 +427,40 @@ typedef struct hostInterfaces
+                          enum MemoryError_t i_errorType );
+ 
+     /**
++     * @brief Query the HBRT host for a list of fixes/features
++     *
++     * There are times when workarounds need to be put into place to handle
++     * issues with the hosting layer (e.g. opal-prd) while fixes are not yet
++     * released.  This is especially true because of the disconnected release
++     * streams for the firmware and the hosting environment.
++     *
++     * @param  i_set Indicates which set of fixes/features we're checking
++     *               see HBRT_CAPS_SET...
++     *
++     * @return a bitmask containing the relevant flags for the current
++     *         implementation, see HBRT_CAPS_FLAGS_...
++     */
++    uint64_t (*get_interface_capabilities)( uint64_t i_set );
++
++    /**
++     *  @brief Map a physical address space into usable memory
++     *  @note Repeated calls to map the same memory should not return an error
++     *  @param[in]  i_physMem  Physical address
++     *  @param[in]  i_bytes    Number of bytes to map in
++     *  @return NULL on error, else pointer to usable memory
++     *  @platform FSP, OpenPOWER
++     */
++    void* (*map_phys_mem)(uint64_t i_physMem, size_t i_bytes);
++
++    /**
++     *  @brief Unmap a physical address space from usable memory
++     *  @param[in]  i_ptr  Previously mapped pointer
++     *  @return 0 on success, else RC
++     *  @platform FSP, OpenPOWER
++     */
++    int (*unmap_phys_mem)(void* i_ptr);
++
++    /**
+      *  @brief Modify the SCOM restore section of the HCODE image with the
+      *         given register data
+      *
+@@ -441,22 +490,27 @@ typedef struct hostInterfaces
+                               uint64_t i_scomData );
+ 
+     /**
+-     *  @brief Map a physical address space into usable memory
+-     *  @note Repeated calls to map the same memory should not return an error
+-     *  @param[in]  i_physMem  Physical address
+-     *  @param[in]  i_bytes    Number of bytes to map in
+-     *  @return NULL on error, else pointer to usable memory
+-     *  @platform FSP, OpenPOWER
+-     */
+-    void* (*map_phys_mem)(uint64_t i_physMem, size_t i_bytes);
+-
+-    /**
+-     *  @brief Unmap a physical address space from usable memory
+-     *  @param[in]  i_ptr  Previously mapped pointer
+-     *  @return 0 on success, else RC
+-     *  @platform FSP, OpenPOWER
++     * @brief Send a request to firmware, and receive a response
++     * @details
++     *   req_len bytes are sent to runtime firmware, and resp_len
++     *   bytes received in response.
++     *
++     *   Both req and resp are allocated by the caller. If resp_len
++     *   is not large enough to contain the full response, an error
++     *   is returned.
++     *
++     * @param[in]  i_reqLen       length of request data
++     * @param[in]  i_req          request data
++     * @param[inout] o_respLen    in: size of request data buffer
++     *                            out: length of request data
++     * @param[in]  o_resp         response data
++     * @return 0 on success, else RC
++     * @platform FSP, OpenPOWER
+      */
+-    int (*unmap_phys_mem)(void* i_ptr);
++    int (*firmware_request)( uint64_t i_reqLen,
++                             void *i_req,
++                             uint64_t* o_respLen,
++                             void *o_resp );
+ 
+     // Reserve some space for future growth.
+     // do NOT ever change this number, even if you add functions.
+@@ -475,7 +529,7 @@ typedef struct hostInterfaces
+     // allocated with sufficient space and populated with NULL function
+     // pointers.  32 is big enough that we should not likely add that many
+     // functions from either direction in between any two levels of support.
+-    void (*reserved[32])(void);
++    void (*reserved[27])(void);
+ 
+ } hostInterfaces_t;
+ 
+@@ -502,44 +556,11 @@ typedef struct runtimeInterfaces
+     const uint32_t * (*get_lid_list)(size_t * o_num);
+ 
+     /**
+-     *  @brief Load OCC/HCODE images into mainstore
+-     *
+-     *  @param[in] i_chip            the HW chip id (XSCOM chip ID)
+-     *  @param[in] i_homer_addr      the physical mainstore address of the
+-     *                               start of the HOMER image,
+-     *  @param[in] i_occ_common_addr the physical mainstore address of the
+-     *                               OCC common area, 8MB, used for
+-     *                               OCC-OCC communication (1 per node)
+-     *  @param[in] i_mode            selects initial load vs concurrent reloads
+-     *                               HBRT_PM_LOAD:
+-     *                                  load all lids/sections from scratch,
+-     *                                  preserve nothing
+-     *                               HBRT_PM_RELOAD:
+-     *                                  reload all lids/sections,
+-     *                                  but preserve runtime updates
+-     *  @return 0 on success else return code
+-     *  @platform FSP, OpenPOWER
+-     */
+-    int (*load_pm_complex)( uint64_t i_chip,
+-                            uint64_t i_homer_addr,
+-                            uint64_t i_occ_common_addr,
+-                            uint32_t i_mode );
+-
+-    /**
+-     *  @brief Start OCC/HCODE on the specified chip
+-     *  @param[in] i_chip the HW chip id
+-     *  @return 0 on success else return code
+-     *  @platform FSP, OpenPOWER
+-     */
+-    int (*start_pm_complex)( uint64_t i_chip );
+-
+-    /**
+-     *  @brief Reset OCC/HCODE on the specified chip
+-     *  @param[in] i_chip the HW chip id
+-     *  @return 0 on success else return code
+-     *  @platform FSP, OpenPOWER
++     * Space allocated for deprecated P8 interfaces
+      */
+-    int (*reset_pm_complex)( uint64_t i_chip );
++    const uint32_t * (*occ_load__deprecated)(size_t * o_num);
++    const uint32_t * (*occ_start__deprecated)(size_t * o_num);
++    const uint32_t * (*occ_stop__deprecated)(size_t * o_num);
+ 
+     /**
+      *  @brief Notify HTMGT that an OCC has an error to report
+@@ -629,20 +650,20 @@ typedef struct runtimeInterfaces
+     /**
+      *  @brief Send a pass-through command to HTMGT
+      *
+-     *  @details  This is a blocking call that will send a command
+-     *            to HTMGT.
+-     *  @note     If o_rspLength is returned with a non-zero value,
+-     *            the data at the o_rspData should be dumped to
+-     *            stdout in a hex dump format.
+-     *  @note     The maximum response data returned will be 4096 bytes
++     *  @details This is a blocking call that will send a command
++     *           to HTMGT.
++     *  @note   If o_rspLength is returned with a non-zero value,
++     *          the data at the o_rspData should be dumped to
++     *          stdout in a hex dump format.
++     *  @note   The maximum response data returned will be 4096 bytes
+      *
+      *  @param[in]      i_cmdLength  number of bytes in pass-thru command data
+-     *  @param[in]     *i_cmdData    pointer to pass-thru command data
++     *  @param[in]   *i_cmdData   pointer to pass-thru command data
+      *  @param[out]    *o_rspLength  pointer to number of bytes returned
+      *                               in o_rspData
+-     *  @param[out]    *o_rspData    pointer to a 4096 byte buffer that will
++     *  @param[out]    *o_rspData   pointer to a 4096 byte buffer that will
+      *                               contain the response data from the command
+-     *  @returns  0 on success, or return code if the command failed
++     *  @returns 0 on success, or return code if the command failed
+      *  @platform OpenPOWER
+      */
+     int (*mfg_htmgt_pass_thru)( uint16_t   i_cmdLength,
+@@ -691,20 +712,83 @@ typedef struct runtimeInterfaces
+               size_t i_hwKeyHashSize);
+ 
+     /**
+-     *  @brief SBE message passing
++     *  @brief SBE message passing notification
+      *
+-     *  @details  This is a blocking call that will pass an SBE message
+-     *            with a pass-through command through HBRT to code that
+-     *            will process the command and provide a response.
++     *  @details
++     *      This is a blocking call that is used to notify HBRT there is
++     *      a SBE message available.  This should be called when the Host
++     *      detects the appropriate PSU interrupt from the SBE.
+      *
+      *  @param[in] i_procChipId Chip ID of the processor whose SBE is passing
+      *                          the message and sent the interrupt
+      *
+-     *  @returns  0 on success, or return code if the command failed
++     *  @return 0 on success, or return code if the command failed
+      *  @platform FSP, OpenPOWER
+      */
+     int (*sbe_message_passing)(uint32_t i_procChipId);
+ 
++    /**
++     *  @brief Load OCC/HCODE images into mainstore
++     *
++     *  @param[in] i_chip            the HW chip id (XSCOM chip ID)
++     *  @param[in] i_homer_addr      the physical mainstore address of the
++     *                               start of the HOMER image,
++     *  @param[in] i_occ_common_addr the physical mainstore address of the
++     *                               OCC common area, 8MB, used for
++     *                               OCC-OCC communication (1 per node)
++     *  @param[in] i_mode            selects initial load vs concurrent reloads
++     *                               HBRT_PM_LOAD:
++     *                                  load all lids/sections from scratch,
++     *                                  preserve nothing
++     *                               HBRT_PM_RELOAD:
++     *                                  reload all lids/sections,
++     *                                  but preserve runtime updates
++     *  @return 0 on success else return code
++     *  @platform FSP, OpenPOWER
++     */
++    int (*load_pm_complex)( uint64_t i_chip,
++                            uint64_t i_homer_addr,
++                            uint64_t i_occ_common_addr,
++                            uint32_t i_mode );
++
++    /**
++     *  @brief Start OCC/HCODE on the specified chip
++     *  @param[in] i_chip the HW chip id
++     *  @return 0 on success else return code
++     *  @platform FSP, OpenPOWER
++     */
++    int (*start_pm_complex)( uint64_t i_chip );
++
++    /**
++     *  @brief Reset OCC/HCODE on the specified chip
++     *  @param[in] i_chip the HW chip id
++     *  @return 0 on success else return code
++     *  @platform FSP, OpenPOWER
++     */
++    int (*reset_pm_complex)( uint64_t i_chip );
++
++    /**
++     * @brief Query the IPOLL event mask supported by HBRT
++     *
++     * @details  This call allows the wrapper application to query
++     * the ipoll event mask to set when the HBRT instance is running. Bits
++     * that are *set* in this bitmask represent events that will be
++     * forwarded to the handle_attn() callback.
++     *
++     * @return        The IPOLL event bits to enable during HBRT execution
++     * @platform FSP, OpenPOWER
++     */
++    uint64_t (*get_ipoll_events)( void );
++
++    /**
++     * @brief Receive an async notification from firmware
++     * @param[in] i_len   length of notification data
++     * @param[in] i_data  notification data
++     * @platform FSP, OpenPOWER
++     */
++    void (*firmware_notify)( uint64_t len,
++                             void *data );
++
+     // Reserve some space for future growth.
+     // do NOT ever change this number, even if you add functions.
+     //
+@@ -722,7 +806,7 @@ typedef struct runtimeInterfaces
+     // allocated with sufficient space and populated with NULL function
+     // pointers.  32 is big enough that we should not likely add that many
+     // functions from either direction in between any two levels of support.
+-    void (*reserved[32])(void);
++    void (*reserved[22])(void);
+ 
+ } runtimeInterfaces_t;
+ 
+diff --git a/src/runtime/rt_main.C b/src/runtime/rt_main.C
+index d9a21c9..d539018 100644
+--- a/src/runtime/rt_main.C
++++ b/src/runtime/rt_main.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2013,2016                        */
++/* Contributors Listed Below - COPYRIGHT 2013,2017                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -70,6 +70,27 @@ extern "C"
+  */
+ runtimeInterfaces_t* rt_start(hostInterfaces_t*) NEVER_INLINE;
+ 
++
++/** @fn rt_version_fixup
++ *
++ *  @brief Make any adjustments needed to handle old versions
++ */
++void rt_version_fixup( void )
++{
++    uint64_t hostver = g_hostInterfaces->interfaceVersion;
++    if( HOSTBOOT_RUNTIME_INTERFACE_VERSION == hostver )
++    {
++        return; //nothing to do, we match
++    }
++
++    char verstring[100];
++    sprintf( verstring,
++             "HRBT Ver=%X, HostVer=%X\n",
++             HOSTBOOT_RUNTIME_INTERFACE_VERSION,
++             hostver );
++    (g_hostInterfaces->puts)(verstring);
++}
++
+ /** Call C++ constructors present in this image. */
+ void rt_cppBootstrap();
+ 
+@@ -111,6 +132,9 @@ runtimeInterfaces_t* rt_start(hostInterfaces_t* intf)
+     postInitCalls_t* rtPost = getPostInitCalls();
+     rtPost->callApplyTempOverrides();
+ 
++    // do any version mismatch fixups
++    rt_version_fixup();
++
+     // Return our interface pointer structure.
+     return rtInterfaces;
+ }
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0011-Revert-Handling-of-functional-NX-chiplet.patch b/openpower/package/hostboot/p9Patches/hostboot-0011-Revert-Handling-of-functional-NX-chiplet.patch
new file mode 100644
index 0000000..8d64244
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0011-Revert-Handling-of-functional-NX-chiplet.patch
@@ -0,0 +1,240 @@
+From 569a650085d4ea7cf87c88ec5542ff31477e8c6d Mon Sep 17 00:00:00 2001
+From: Bill Hoffa <wghoffa@us.ibm.com>
+Date: Fri, 2 Jun 2017 10:32:27 -0500
+Subject: [PATCH] Revert "Handling of functional NX chiplet"
+
+This reverts commit 392272c0247878a832473157e7d2e6023496ca99.
+---
+ src/include/usr/hwas/common/hwas_reasoncodes.H |  1 -
+ src/usr/hwas/common/hwas.C                     | 51 ------------------------
+ src/usr/isteps/istep10/call_host_rng_bist.C    | 53 ++++++-------------------
+ src/usr/isteps/istep16/call_host_secure_rng.C  | 55 +++++++-------------------
+ 4 files changed, 28 insertions(+), 132 deletions(-)
+
+diff --git a/src/include/usr/hwas/common/hwas_reasoncodes.H b/src/include/usr/hwas/common/hwas_reasoncodes.H
+index 1c3a789..667ac6c 100644
+--- a/src/include/usr/hwas/common/hwas_reasoncodes.H
++++ b/src/include/usr/hwas/common/hwas_reasoncodes.H
+@@ -55,7 +55,6 @@ namespace HWAS
+         RC_SYSAVAIL_MISSING_CRITICAL_RESOURCE   = HWAS_COMP_ID | 0x0B,
+         RC_SYSAVAIL_NO_MCAS_FUNC                = HWAS_COMP_ID | 0x0C,
+         RC_SYSAVAIL_NO_MEMORY_FUNC_MASTER       = HWAS_COMP_ID | 0x0D,
+-        RC_SYSAVAIL_NO_NX_FUNC                  = HWAS_COMP_ID | 0x0E,
+     };
+ };
+ 
+diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
+index 9908ef8..79d541b 100644
+--- a/src/usr/hwas/common/hwas.C
++++ b/src/usr/hwas/common/hwas.C
+@@ -1881,57 +1881,6 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_nodeOrSys
+                 // errl is now NULL
+             }
+         }
+-
+-        // check for functional NX chiplets
+-        TargetHandleList l_functionalNXChiplets;
+-        getChildChiplets(l_functionalNXChiplets, pTop, TYPE_NX, true);
+-        HWAS_DBG( "checkMinimumHardware: %d NX chiplets",
+-                  l_functionalNXChiplets.size());
+-
+-        if (l_functionalNXChiplets.empty())
+-        {
+-            HWAS_ERR( "Insufficient hardware to continue IPL (NX chiplets)");
+-
+-            if(o_bootable)
+-            {
+-                *o_bootable = false;
+-                break;
+-            }
+-            TargetHandleList l_presentNXChiplets;
+-            getChildChiplets(l_presentNXChiplets, pTop, TYPE_NX, false);
+-            uint32_t nx_present = l_presentNXChiplets.size();
+-
+-            /*@
+-             * @errortype
+-             * @severity           ERRL_SEV_UNRECOVERABLE
+-             * @moduleid           MOD_CHECK_MIN_HW
+-             * @reasoncode         RC_SYSAVAIL_NO_NX_FUNC
+-             * @devdesc            checkMinimumHardware found no
+-             *                     functional NX chiplets
+-             * @custdesc           Insufficient hardware to continue IPL
+-             * @userdata1[00:31]   HUID of node
+-             * @userdata2[00:31]   number of present nonfunctional NX chiplets
+-             */
+-            const uint64_t userdata1 =
+-                (static_cast<uint64_t>(get_huid(pTop)) << 32);
+-            const uint64_t userdata2 =
+-                (static_cast<uint64_t>(nx_present) << 32);
+-            l_errl = hwasError(ERRL_SEV_UNRECOVERABLE,
+-                         MOD_CHECK_MIN_HW,
+-                         RC_SYSAVAIL_NO_NX_FUNC,
+-                         userdata1, userdata2);
+-
+-            //  call out the procedure to find the deconfigured part.
+-            hwasErrorAddProcedureCallout( l_errl,
+-                         EPUB_PRC_FIND_DECONFIGURED_PART,
+-                         SRCI_PRIORITY_HIGH );
+-
+-            //  if we already have an error, link this one to the earlier;
+-            //  if not, set the common plid
+-            hwasErrorUpdatePlid( l_errl, l_commonPlid );
+-            errlCommit(l_errl, HWAS_COMP_ID);
+-        }
+-
+         //  ------------------------------------------------------------
+         //  Check for Mirrored memory -
+         //  If the user requests mirrored memory and we do not have it,
+diff --git a/src/usr/isteps/istep10/call_host_rng_bist.C b/src/usr/isteps/istep10/call_host_rng_bist.C
+index 68d2435..b1ccc51 100644
+--- a/src/usr/isteps/istep10/call_host_rng_bist.C
++++ b/src/usr/isteps/istep10/call_host_rng_bist.C
+@@ -42,7 +42,6 @@
+ 
+ #include    <isteps/hwpisteperror.H>
+ #include    <errl/errludtarget.H>
+-#include    <errl/errlreasoncodes.H>
+ 
+ #include    <initservice/isteps_trace.H>
+ #include    <initservice/initserviceif.H>
+@@ -87,49 +86,23 @@ void* call_host_rng_bist( void *io_pArgs )
+     // Loop through all processors including master
+     for (const auto & l_cpu_target: l_cpuTargetList)
+     {
+-        const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>l_fapi2_proc_target(
++      const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>l_fapi2_proc_target(
+                 l_cpu_target);
+-        // Check for functional NX
+-        TARGETING::TargetHandleList l_nxTargetList;
+-        getChildChiplets(l_nxTargetList, l_cpu_target, TYPE_NX, true);
+-        if (l_nxTargetList.empty())
+-        {
+-            TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+-              "p9_rng_init_phase1: no functional NX found for proc %.8X",
+-              TARGETING::get_huid(l_cpu_target));
+-            continue;
+-        }
+-        TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
++
++      TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+           "Running p9_rng_init_phase1 HWP on processor target %.8X",
+           TARGETING::get_huid(l_cpu_target) );
+ 
+-        FAPI_INVOKE_HWP(l_err, p9_rng_init_phase1, l_fapi2_proc_target);
+-        if(l_err)
+-        {
+-            TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+-                "ERROR: call p9_rng_init_phase1, PLID=0x%x, rc=0x%.4X",
+-                l_err->plid(), l_err->reasonCode());
+-
+-            for (const auto l_callout : l_err->getUDSections(
+-                    HWPF_COMP_ID,
+-                    ERRORLOG::ERRL_UDT_CALLOUT))
+-            {
+-                if(reinterpret_cast<HWAS::callout_ud_t*>
+-                    (l_callout)->type == HWAS::HW_CALLOUT)
+-                {
+-                    for (const auto & l_nxTarget: l_nxTargetList)
+-                    {
+-                        l_err->addHwCallout( l_nxTarget,
+-                            HWAS::SRCI_PRIORITY_HIGH,
+-                            HWAS::DECONFIG,
+-                            HWAS::GARD_NULL );
+-                    }
+-                 }
+-            }
+-
+-            l_StepError.addErrorDetails(l_err);
+-            errlCommit(l_err, HWPF_COMP_ID);
+-        }
++      FAPI_INVOKE_HWP(l_err, p9_rng_init_phase1, l_fapi2_proc_target);
++      if(l_err)
++      {
++          TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
++                    "ERROR: call p9_rng_init_phase1, PLID=0x%x",
++                    l_err->plid());
++          l_StepError.addErrorDetails(l_err);
++          errlCommit(l_err, HWPF_COMP_ID);
++      }
++
+     } // end of going through all processors
+ 
+     TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+diff --git a/src/usr/isteps/istep16/call_host_secure_rng.C b/src/usr/isteps/istep16/call_host_secure_rng.C
+index 9ca7e0f..5a51504 100644
+--- a/src/usr/isteps/istep16/call_host_secure_rng.C
++++ b/src/usr/isteps/istep16/call_host_secure_rng.C
+@@ -45,7 +45,6 @@
+ 
+ #include    <isteps/hwpisteperror.H>
+ #include    <errl/errludtarget.H>
+-#include    <errl/errlreasoncodes.H>
+ 
+ #include    <initservice/isteps_trace.H>
+ #include    <initservice/initserviceif.H>
+@@ -90,47 +89,23 @@ void* call_host_secure_rng( void *io_pArgs )
+     // Loop through all processors including master
+     for (const auto & l_cpu_target: l_cpuTargetList)
+     {
+-        const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>l_fapi2_proc_target(
++      const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>l_fapi2_proc_target(
+                 l_cpu_target);
+ 
+-        // Check for functional NX
+-        TARGETING::TargetHandleList l_nxTargetList;
+-        getChildChiplets(l_nxTargetList, l_cpu_target, TYPE_NX, true);
+-        if (l_nxTargetList.empty())
+-        {
+-            TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+-              "Running host_secure_rng; no functional NX found for proc %.8X",
+-              TARGETING::get_huid(l_cpu_target));
+-            continue;
+-        }
+-
+-        FAPI_INVOKE_HWP(l_err, p9_rng_init_phase2, l_fapi2_proc_target);
+-        if(l_err)
+-        {
+-            TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+-                "ERROR: call p9_rng_init_phase2, PLID=0x%x, rc=0x%.4X",
+-                l_err->plid(), l_err->reasonCode());
+-
+-            for (const auto l_callout : l_err->getUDSections(
+-                    HWPF_COMP_ID,
+-                    ERRORLOG::ERRL_UDT_CALLOUT))
+-            {
+-                if(reinterpret_cast<HWAS::callout_ud_t*>
+-                    (l_callout)->type == HWAS::HW_CALLOUT)
+-                {
+-                    for (const auto & l_nxTarget: l_nxTargetList)
+-                    {
+-                        l_err->addHwCallout( l_nxTarget,
+-                            HWAS::SRCI_PRIORITY_HIGH,
+-                            HWAS::DECONFIG,
+-                            HWAS::GARD_NULL );
+-                    }
+-                 }
+-            }
+-
+-            l_StepError.addErrorDetails(l_err);
+-            errlCommit(l_err, HWPF_COMP_ID);
+-        }
++      TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
++          "Running host_secure_rng HWP on processor target %.8X",
++          TARGETING::get_huid(l_cpu_target) );
++
++      FAPI_INVOKE_HWP(l_err, p9_rng_init_phase2, l_fapi2_proc_target);
++      if(l_err)
++      {
++          TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
++                    "ERROR: call p9_rng_init_phase2, PLID=0x%x",
++                    l_err->plid());
++          l_StepError.addErrorDetails(l_err);
++          errlCommit(l_err, HWPF_COMP_ID);
++      }
++
+     } // end of going through all processors
+ 
+     TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+-- 
+1.8.2.2
+
diff --git a/openpower/package/ima-catalog/ima-catalog.mk b/openpower/package/ima-catalog/ima-catalog.mk
index 4cdb25f..20b62f2 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 ?= 0894c8e392ea5b8ad63860136deff777343685c7
+IMA_CATALOG_VERSION ?= 0e3bbcb56dfc60fd99b862406ecd3e117117d9af
 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/machine-xml/Config.in b/openpower/package/machine-xml/Config.in
new file mode 100755
index 0000000..3f2163f
--- /dev/null
+++ b/openpower/package/machine-xml/Config.in
@@ -0,0 +1,63 @@
+config BR2_PACKAGE_MACHINE_XML
+        bool "machine_xml"
+        default y if (BR2_OPENPOWER_PLATFORM)
+        select BR2_PACKAGE_COMMON_P8_XML
+        help
+
+choice
+	prompt "Machine XML location"
+
+config BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT
+       bool "OpenPOWER Github project name"
+
+config BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT
+       bool "Custom URL of machine xml repository"
+
+endchoice
+
+config BR2_OPENPOWER_MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES
+       bool "Filter Unwanted Attributes"
+       default y if (BR2_OPENPOWER_POWER9)
+       default n
+
+config BR2_OPENPOWER_MACHINE_XML_OPPOWERVM_ATTRIBUTES
+       bool "OPPOWERVM Attributes/Target"
+       default y if (BR2_OPENPOWER_POWER9)
+       default n
+
+config BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML
+       bool "Include target_types_openpower.xml"
+       default y if (BR2_OPENPOWER_POWER9)
+       default n
+
+config BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT_VALUE
+	string "URL of machine xml repository"
+	depends on BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT
+
+config BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE
+       string "The Github project name (e.g. palmetto-xml)"
+       depends on BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT
+
+config BR2_OPENPOWER_MACHINE_XML_VERSION
+       string "Version of Machine XML"
+
+config BR2_OPENPOWER_MACHINE_XML_FILENAME
+       string "Machine XML filename (e.g. habanero.xml)"
+
+config BR2_OPENPOWER_SYSTEM_XML_FILENAME
+        string "Targeting system xml filename"
+        default ""
+        help
+            Defines the name of the system XML filename to be used when creating targeting binary image
+
+config BR2_OPENPOWER_MRW_XML_FILENAME
+        string "Targeting mrw xml filename"
+        default ""
+        help
+            Defines the name of the mrw XML filename to be used when creating targeting binary image
+
+config BR2_OPENPOWER_BIOS_XML_FILENAME
+        string "BIOS metadata XML filename"
+        default ""
+        help
+            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/machine-xml/machine-xml.mk b/openpower/package/machine-xml/machine-xml.mk
new file mode 100644
index 0000000..d8009dd
--- /dev/null
+++ b/openpower/package/machine-xml/machine-xml.mk
@@ -0,0 +1,107 @@
+################################################################################
+# machine_xml
+#
+################################################################################
+
+MACHINE_XML_VERSION ?= $(call qstrip,$(BR2_OPENPOWER_MACHINE_XML_VERSION))
+ifeq ($(BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT),y)
+MACHINE_XML_SITE = $(call github,open-power,$(BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE),$(MACHINE_XML_VERSION))
+else ifeq ($(BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT),y)
+MACHINE_XML_SITE_METHOD = git
+MACHINE_XML_SITE = $(BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT_VALUE)
+endif
+
+MACHINE_XML_LICENSE = Apache-2.0
+MACHINE_XML_LICENSE_FILES = LICENSE
+MACHINE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
+
+MACHINE_XML_INSTALL_IMAGES = YES
+MACHINE_XML_INSTALL_TARGET = YES
+
+MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
+MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
+
+# Defines for BIOS metadata creation
+BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
+OPENPOWER_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_OPENPOWER_BIOS_XML_FILENAME)
+BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
+PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
+PETITBOOT_BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
+PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
+    $(TARGET_DIR)/usr/share/bios_metadata.xml
+
+ifeq ($(BR2_OPENPOWER_MACHINE_XML_OPPOWERVM_ATTRIBUTES),y)
+MACHINE_XML_OPPOWERVM_ATTR_XML = $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml
+MACHINE_XML_OPPOWERVM_TARGET_XML = $(MRW_HB_TOOLS)/target_types_oppowervm.xml
+endif
+ifeq ($(BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML),y)
+MACHINE_XML_TARGET_TYPES_OPENPOWER_XML = $(MRW_HB_TOOLS)/target_types_openpower.xml
+endif
+
+define MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES
+       chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
+
+       $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_openpower.xml \
+            --mrw-xml $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME)
+
+       cp  $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME).updated  $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME)
+endef
+
+define MACHINE_XML_BUILD_CMDS
+        # copy the machine xml where the common lives
+        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
+
+        # generate the system mrw xml
+        perl -I $(MRW_HB_TOOLS) \
+        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/$(BR2_OPENPOWER_MACHINE_XML_FILENAME)
+
+	$(if $(BR2_OPENPOWER_MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES), $(call MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES))
+
+        # merge in any system specific attributes, hostboot attributes
+        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_OPENPOWER_SYSTEM_XML_FILENAME) \
+            $(MRW_HB_TOOLS)/attribute_types.xml \
+            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
+            $(MACHINE_XML_OPPOWERVM_ATTR_XML) \
+            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
+            $(MRW_HB_TOOLS)/target_types_merged.xml \
+            $(MRW_HB_TOOLS)/target_types_hb.xml \
+            $(MACHINE_XML_OPPOWERVM_TARGET_XML) \
+            $(MACHINE_XML_TARGET_TYPES_OPENPOWER_XML) \
+            $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
+
+        # creating the targeting binary
+        $(MRW_HB_TOOLS)/xmltohb.pl  \
+            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
+            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
+            --src-output-dir=none \
+            --img-output-dir=$(MRW_HB_TOOLS)/ \
+            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
+            --bios-xml-file=$(OPENPOWER_BIOS_XML_CONFIG_FILE) \
+            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
+            --bios-output-file=$(BIOS_XML_METADATA_FILE)
+
+        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
+        xsltproc -o \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_XSLT_FILE) \
+            $(BIOS_XML_METADATA_FILE)
+endef
+
+define MACHINE_XML_INSTALL_IMAGES_CMDS
+        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
+endef
+
+define MACHINE_XML_INSTALL_TARGET_CMDS
+        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
+        $(INSTALL) -D -m 0644 \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/occ/occ.mk b/openpower/package/occ/occ.mk
index 19600b9..14a4d12 100644
--- a/openpower/package/occ/occ.mk
+++ b/openpower/package/occ/occ.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-OCC_VERSION_BRANCH_MASTER_P8 ?= 301b535a933e0c9c41b0f014677004cc8da2c445
-OCC_VERSION_BRANCH_MASTER ?= e1889e5dfcb4707ac66ab5ee0427ce97156bf4c0
+OCC_VERSION_BRANCH_MASTER_P8 ?= 28f2cec690b7f19548ce860a8820f519e6c39a6a
+OCC_VERSION_BRANCH_MASTER ?= bc34ad5806549a7a20079745b2b1f8ef439ade0c
 
 OCC_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_VERSION_BRANCH_MASTER),$(OCC_VERSION_BRANCH_MASTER_P8))
 OCC_SITE ?= $(call github,open-power,occ,$(OCC_VERSION))
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index f0b7f31..a94f72c 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -8,14 +8,7 @@
         select BR2_PACKAGE_OCC
         select BR2_PACKAGE_CAPP_UCODE
         select BR2_PACKAGE_IMA_CATALOG
-        select BR2_PACKAGE_ZAIUS_XML if (BR2_OPENPOWER_XML_PACKAGE = "zaius-xml")
-        select BR2_PACKAGE_WITHERSPOON_XML if (BR2_OPENPOWER_XML_PACKAGE = "witherspoon-xml")
-        select BR2_PACKAGE_ROMULUS_XML if (BR2_OPENPOWER_XML_PACKAGE = "romulus-xml")
-        select BR2_PACKAGE_BARRELEYE_XML if (BR2_OPENPOWER_XML_PACKAGE = "barreleye-xml")
-        select BR2_PACKAGE_FIRESTONE_XML if (BR2_OPENPOWER_XML_PACKAGE = "firestone-xml")
-        select BR2_PACKAGE_GARRISON_XML if (BR2_OPENPOWER_XML_PACKAGE = "garrison-xml")
-        select BR2_PACKAGE_HABANERO_XML if (BR2_OPENPOWER_XML_PACKAGE = "habanero-xml")
-        select BR2_PACKAGE_PALMETTO_XML if (BR2_OPENPOWER_XML_PACKAGE = "palmetto-xml")
+	select BR2_PACKAGE_MACHINE_XML
         help
             Utilites for building a targeting binary image
 
@@ -29,11 +22,6 @@
         help
             String used to define configuration name
 
-config BR2_OPENPOWER_XML_PACKAGE
-        string "Name of xml/targeting package"
-        help
-            String defines the xml/targeting package used
-
 config BR2_OPENPOWER_PNOR_FILENAME
         string "Name of pnor file to be created"
         help
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index 72fcc64..c178223 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -4,16 +4,12 @@
 #
 ################################################################################
 
-# remove the quotes from the XML/Targeting package as
-# make doesn't care for quotes in the dependencies.
-XML_PACKAGE=$(subst $\",,$(BR2_OPENPOWER_XML_PACKAGE))
-
-OPENPOWER_PNOR_VERSION ?= 52b1b91ea5ea7651688802f72d168139c29c4780
+OPENPOWER_PNOR_VERSION ?= 3ab2d5d3f0c030bd68a4b431ac128004d54f7511
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
 OPENPOWER_PNOR_LICENSE_FILES = LICENSE
-OPENPOWER_PNOR_DEPENDENCIES = hostboot hostboot-binaries $(XML_PACKAGE) skiboot host-openpower-ffs occ capp-ucode
+OPENPOWER_PNOR_DEPENDENCIES = hostboot hostboot-binaries machine-xml skiboot host-openpower-ffs occ capp-ucode
 
 ifeq ($(BR2_PACKAGE_IMA_CATALOG),y)
 OPENPOWER_PNOR_DEPENDENCIES += ima-catalog
@@ -45,13 +41,19 @@
 
 HOSTBOOT_IMAGE_DIR=$(STAGING_DIR)/hostboot_build_images/
 HOSTBOOT_BINARY_DIR = $(STAGING_DIR)/hostboot_binaries/
+SBE_BINARY_DIR = $(STAGING_DIR)/sbe_binaries/
 OPENPOWER_PNOR_SCRATCH_DIR = $(STAGING_DIR)/openpower_pnor_scratch/
 OPENPOWER_VERSION_DIR = $(STAGING_DIR)/openpower_version
 
 # Subpackages we want to include in the version info (do not include openpower-pnor)
-OPENPOWER_VERSIONED_SUBPACKAGES = skiboot hostboot linux petitboot $(XML_PACKAGE) occ hostboot-binaries capp-ucode
+OPENPOWER_VERSIONED_SUBPACKAGES = skiboot hostboot linux petitboot machine-xml occ hostboot-binaries capp-ucode
 OPENPOWER_PNOR = openpower-pnor
 
+ifeq ($(BR2_OPENPOWER_POWER9),y)
+    OPENPOWER_PNOR_DEPENDENCIES += sbe
+    OPENPOWER_VERSIONED_SUBPACKAGES += sbe
+endif
+
 define OPENPOWER_PNOR_INSTALL_IMAGES_CMDS
         mkdir -p $(OPENPOWER_PNOR_SCRATCH_DIR)
 
@@ -64,6 +66,7 @@
             -targeting_binary_filename $(BR2_OPENPOWER_TARGETING_ECC_FILENAME) \
             -targeting_binary_source $(BR2_OPENPOWER_TARGETING_BIN_FILENAME) \
             -sbe_binary_filename $(BR2_HOSTBOOT_BINARY_SBE_FILENAME) \
+            -sbe_binary_dir $(SBE_BINARY_DIR) \
             -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) \
diff --git a/openpower/package/palmetto-xml/Config.in b/openpower/package/palmetto-xml/Config.in
deleted file mode 100755
index 05a094f..0000000
--- a/openpower/package/palmetto-xml/Config.in
+++ /dev/null
@@ -1,24 +0,0 @@
-config BR2_PACKAGE_PALMETTO_XML
-        bool "palmetto_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "palmetto")
-        select BR2_PACKAGE_COMMON_P8_XML
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_PALMETTO_SYSTEM_XML_FILENAME
-        string "Palmetto targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_PALMETTO_MRW_XML_FILENAME
-        string "Palmetto targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_PALMETTO_BIOS_XML_FILENAME
-        string "Palmetto BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/palmetto-xml/palmetto-xml.mk b/openpower/package/palmetto-xml/palmetto-xml.mk
deleted file mode 100644
index 7cc554d..0000000
--- a/openpower/package/palmetto-xml/palmetto-xml.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# palmetto_xml
-#
-################################################################################
-
-PALMETTO_XML_VERSION ?= c6f563966e9fadc4fb60194c064b2310c9b916b1
-PALMETTO_XML_SITE = $(call github,open-power,palmetto-xml,$(PALMETTO_XML_VERSION))
-
-PALMETTO_XML_LICENSE = Apache-2.0
-PALMETTO_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
-
-PALMETTO_XML_INSTALL_IMAGES = YES
-PALMETTO_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-PALMETTO_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_PALMETTO_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define PALMETTO_XML_BUILD_CMDS
-        # copy the palmetto xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/palmetto.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_PALMETTO_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_PALMETTO_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(PALMETTO_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define PALMETTO_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define PALMETTO_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/petitboot/66-add-sg-module.rules b/openpower/package/petitboot/66-add-sg-module.rules
new file mode 100644
index 0000000..ae18d28
--- /dev/null
+++ b/openpower/package/petitboot/66-add-sg-module.rules
@@ -0,0 +1,2 @@
+# load modules to scsi disks, if they aren't in kernel
+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg"
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
index 5d28fc7..ba7276b 100644
--- a/openpower/package/petitboot/petitboot.mk
+++ b/openpower/package/petitboot/petitboot.mk
@@ -44,8 +44,6 @@
 	$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/petitboot/boot.d
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
-	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \
-		$(TARGET_DIR)/etc/petitboot/boot.d/
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
 
@@ -63,6 +61,8 @@
 		$(TARGET_DIR)/etc/udev/rules.d/
 	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/65-md-incremental.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/66-add-sg-module.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
 
 	ln -sf /usr/sbin/pb-udhcpc \
 		$(TARGET_DIR)/usr/share/udhcpc/default.script.d/
@@ -72,6 +72,15 @@
 	$(MAKE) -C $(@D)/po DESTDIR=$(TARGET_DIR) install
 endef
 
+define PETITBOOT_POST_INSTALL_DTB
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+endef
+
 PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL
 
+ifeq ($(BR2_PACKAGE_DTC),y)
+	PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_DTB
+endif
+
 $(eval $(autotools-package))
diff --git a/openpower/package/ppe42-gcc/ppe42-gcc.mk b/openpower/package/ppe42-gcc/ppe42-gcc.mk
index ec10e4f..bfaf608 100644
--- a/openpower/package/ppe42-gcc/ppe42-gcc.mk
+++ b/openpower/package/ppe42-gcc/ppe42-gcc.mk
@@ -8,8 +8,8 @@
 PPE42_GCC_SITE ?= $(call github,open-power,ppe42-gcc,$(PPE42_GCC_VERSION))
 PPE42_GCC_LICENSE = GPLv3+
 
-PPE42_GCC_DEPENDENCIES = ppe42-binutils
-HOST_PPE42_GCC_DEPENDENCIES = host-ppe42-binutils
+PPE42_GCC_DEPENDENCIES = ppe42-binutils gmp mpfr mpc
+HOST_PPE42_GCC_DEPENDENCIES = host-ppe42-binutils host-gmp host-mpfr host-mpc
 
 PPE42_GCC_DIR = $(STAGING_DIR)/ppe42-binutils
 PPE42_GCC_BIN = $(STAGING_DIR)/ppe42-binutils/linux
diff --git a/openpower/package/romulus-xml/Config.in b/openpower/package/romulus-xml/Config.in
deleted file mode 100755
index 6cec332..0000000
--- a/openpower/package/romulus-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_ROMULUS_XML
-        bool "romulus_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "romulus")
-        help
-            Utilities for building xml and the targeting binary image
-
-config BR2_ROMULUS_SYSTEM_XML_FILENAME
-        string "Romulus targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_ROMULUS_MRW_XML_FILENAME
-        string "Romulus targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_ROMULUS_BIOS_XML_FILENAME
-        string "Romulus BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/romulus-xml/romulus.mk b/openpower/package/romulus-xml/romulus.mk
deleted file mode 100644
index f611b02..0000000
--- a/openpower/package/romulus-xml/romulus.mk
+++ /dev/null
@@ -1,90 +0,0 @@
-################################################################################
-#
-# romulus_xml
-#
-################################################################################
-
-ROMULUS_XML_VERSION ?= cee21733cf05784b401d04ac13d9ac43e9449147
-ROMULUS_XML_SITE ?= $(call github,open-power,romulus-xml,$(ROMULUS_XML_VERSION))
-
-ROMULUS_XML_LICENSE = Apache-2.0
-ROMULUS_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-ROMULUS_XML_INSTALL_IMAGES = YES
-ROMULUS_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-ROMULUS_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_ROMULUS_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define ROMULUS_XML_BUILD_CMDS
-        # copy the romulus xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/romulus.xml
-
-        chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
-
-       $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            --mrw-xml $(MRW_SCRATCH)/ROMULUS_hb.mrw.xml
-
-       cp  $(MRW_SCRATCH)/ROMULUS_hb.mrw.xml.updated  $(MRW_SCRATCH)/ROMULUS_hb.mrw.xml
-
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_ROMULUS_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml \
-            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
-            $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            $(MRW_SCRATCH)/$(BR2_ROMULUS_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(ROMULUS_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define ROMULUS_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define ROMULUS_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/sbe/Config.in b/openpower/package/sbe/Config.in
new file mode 100644
index 0000000..cd9e84f
--- /dev/null
+++ b/openpower/package/sbe/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_SBE
+        bool "sbe"
+        default y if (BR2_OPENPOWER_PLATFORM && BR2_OPENPOWER_POWER9)
+        select BR2_CPP
+        help
+            Project to build the sbe firmware codebase
diff --git a/openpower/package/sbe/sbe.mk b/openpower/package/sbe/sbe.mk
new file mode 100644
index 0000000..aa926f5
--- /dev/null
+++ b/openpower/package/sbe/sbe.mk
@@ -0,0 +1,29 @@
+################################################################################
+#
+# SBE
+#
+################################################################################
+
+SBE_VERSION ?= d770027426ba0c5d6c44fa985e9dfaf28fd6fcce
+SBE_SITE ?= $(call github,open-power,sbe,$(SBE_VERSION))
+
+SBE_LICENSE = Apache-2.0
+SBE_DEPENDENCIES = host-ppe42-gcc
+
+SBE_INSTALL_IMAGES = YES
+SBE_INSTALL_TARGET = NO
+
+define SBE_BUILD_CMDS
+	SBE_COMMIT_ID=$(SBE_VERSION) $(MAKE1) -C $(@D) \
+		LD_LIBRARY_PATH=$(HOST_DIR)/usr/lib \
+		CROSS_COMPILER_PATH=$(PPE42_GCC_BIN) \
+		all
+endef
+
+define SBE_INSTALL_IMAGES_CMDS
+	$(INSTALL) -D $(@D)/images/p9_ipl_build  $(HOST_DIR)/usr/bin/
+	python $(@D)/src/build/sbeOpDistribute.py --sbe_binary_dir=$(STAGING_DIR)/sbe_binaries --img_dir=$(@D)/images
+	cp $(@D)/src/build/sbeOpDistribute.py $(STAGING_DIR)/sbe_binaries/
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index 070fa50..0506983 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.5.0-rc2" if BR2_SKIBOOT_LATEST_VERSION
+	default "skiboot-5.6.0" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/package/witherspoon-xml/Config.in b/openpower/package/witherspoon-xml/Config.in
deleted file mode 100755
index 3e4333c..0000000
--- a/openpower/package/witherspoon-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_WITHERSPOON_XML
-        bool "witherspoon_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "witherspoon")
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_WITHERSPOON_SYSTEM_XML_FILENAME
-        string "Witherspoon targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_WITHERSPOON_MRW_XML_FILENAME
-        string "Witherspoon targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_WITHERSPOON_BIOS_XML_FILENAME
-        string "Witherspoon BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/witherspoon-xml/witherspoon.mk b/openpower/package/witherspoon-xml/witherspoon.mk
deleted file mode 100644
index c34eee7..0000000
--- a/openpower/package/witherspoon-xml/witherspoon.mk
+++ /dev/null
@@ -1,90 +0,0 @@
-################################################################################
-#
-# witherspoon_xml
-#
-################################################################################
-
-WITHERSPOON_XML_VERSION ?= 07ef29dcfbfe88943a0fde35bebeec79d0fee62d
-WITHERSPOON_XML_SITE ?= $(call github,open-power,witherspoon-xml,$(WITHERSPOON_XML_VERSION))
-
-WITHERSPOON_XML_LICENSE = Apache-2.0
-WITHERSPOON_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-WITHERSPOON_XML_INSTALL_IMAGES = YES
-WITHERSPOON_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-WITHERSPOON_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_WITHERSPOON_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define WITHERSPOON_XML_BUILD_CMDS
-        # copy the witherspoon xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/witherspoon.xml
-
-        chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
-
-       $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            --mrw-xml $(MRW_SCRATCH)/WITHERSPOON_hb.mrw.xml
-
-       cp  $(MRW_SCRATCH)/WITHERSPOON_hb.mrw.xml.updated  $(MRW_SCRATCH)/WITHERSPOON_hb.mrw.xml
-
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_WITHERSPOON_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml \
-            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
-            $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            $(MRW_SCRATCH)/$(BR2_WITHERSPOON_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(WITHERSPOON_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define WITHERSPOON_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define WITHERSPOON_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/zaius-xml/Config.in b/openpower/package/zaius-xml/Config.in
deleted file mode 100755
index b335ff3..0000000
--- a/openpower/package/zaius-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_ZAIUS_XML
-        bool "zaius_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "zaius")
-        help
-            Utilities for building xml and the targeting binary image
-
-config BR2_ZAIUS_SYSTEM_XML_FILENAME
-        string "Zaius targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_ZAIUS_MRW_XML_FILENAME
-        string "Zaius targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_ZAIUS_BIOS_XML_FILENAME
-        string "Zaius BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/zaius-xml/zaius.mk b/openpower/package/zaius-xml/zaius.mk
deleted file mode 100644
index 3d3380a..0000000
--- a/openpower/package/zaius-xml/zaius.mk
+++ /dev/null
@@ -1,92 +0,0 @@
-################################################################################
-#
-# zaius_xml
-#
-################################################################################
-
-ZAIUS_XML_VERSION ?= b907705f75e5d462b9f23b894ea781ae5ab5c2bf
-ZAIUS_XML_SITE ?= $(call github,open-power,zaius-xml,$(ZAIUS_XML_VERSION))
-
-ZAIUS_XML_LICENSE = Apache-2.0
-ZAIUS_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-ZAIUS_XML_INSTALL_IMAGES = YES
-ZAIUS_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-ZAIUS_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_ZAIUS_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define ZAIUS_XML_BUILD_CMDS
-        # copy the zaius xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/zaius.xml
-
-        # filter out unwanted attributes
-        chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
-
-        $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
-            --tgt-xml $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            --mrw-xml $(MRW_SCRATCH)/$(BR2_ZAIUS_MRW_XML_FILENAME)
-
-        cp $(MRW_SCRATCH)/$(BR2_ZAIUS_MRW_XML_FILENAME).updated \
-            $(MRW_SCRATCH)/$(BR2_ZAIUS_MRW_XML_FILENAME)
-
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_ZAIUS_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml \
-            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
-            $(MRW_HB_TOOLS)/target_types_openpower.xml \
-            $(MRW_SCRATCH)/$(BR2_ZAIUS_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(ZAIUS_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define ZAIUS_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define ZAIUS_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/habanero-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch b/openpower/patches/habanero-patches/machine-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch
similarity index 100%
rename from openpower/package/habanero-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch
rename to openpower/patches/habanero-patches/machine-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch
diff --git a/openpower/package/palmetto-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch b/openpower/patches/palmetto-patches/machine-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch
similarity index 100%
rename from openpower/package/palmetto-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch
rename to openpower/patches/palmetto-patches/machine-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch
diff --git a/openpower/scripts/release-notes b/openpower/scripts/release-notes
index 2bf1b90..4231aa0 100755
--- a/openpower/scripts/release-notes
+++ b/openpower/scripts/release-notes
@@ -1,49 +1,242 @@
 #!/bin/env perl
+
 use strict;
 
+use Getopt::Long;
+use DBI;
+
+# We use an in-memory SQLite database as SQL is good for doing queries
+# of differences between data sets, and doing that in perl is annoying.
+my $db = "dbi:SQLite:dbname=release-notes.sqlite";
+#my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:","","");
+my $dbh = DBI->connect($db,undef,undef, {AutoCommit => 1, RaiseError=>1});
+
 my $repos =
 {
     'op-build' => { REPO => "http://github.com/open-power/op-build" },
     'hostboot' => { REPO => "http://github.com/open-power/hostboot" ,
-                    DIR => "openpower/package/hostboot",
-                    PACKAGE => "HOSTBOOT" },
+                    DIR => "openpower/package/hostboot" },
+    'sbe'      => { REPO => "http://github.com/open-power/sbe" ,
+                    DIR => "openpower/package/sbe"},
     'skiboot'  => { REPO => "http://github.com/open-power/skiboot" ,
-                    DIR => "openpower/package/skiboot",
-                    PACKAGE => "SKIBOOT" },
+                    DIR => "openpower/package/skiboot"},
     'occ'      => { REPO => "http://github.com/open-power/occ" ,
-                    DIR => "openpower/package/occ",
-                    PACKAGE => "OCC" },
+                    DIR => "openpower/package/occ"},
     'pnor'     => { REPO => "http://github.com/open-power/pnor" ,
-                    DIR => "openpower/package/openpower-pnor",
-                    PACKAGE => "OPENPOWER_PNOR" },
-    'palmetto-xml' => { REPO => "http://github.com/open-power/palmetto-xml" ,
-                    DIR => "openpower/package/palmetto-xml",
-                    PACKAGE => "PALMETTO_XML" },
-    'habanero-xml' => { REPO => "http://github.com/open-power/habanero-xml" ,
-                    DIR => "openpower/package/habanero-xml",
-                    PACKAGE => "HABANERO_XML" },
-    'firestone-xml' => { REPO => "http://github.com/open-power/firestone-xml" ,
-                    DIR => "openpower/package/firestone-xml",
-                    PACKAGE => "FIRESTONE_XML" },
-    'garrison-xml'  => { REPO => "http://github.com/open-power/garrison-xml" ,
-                    DIR => "openpower/package/garrison-xml",
-                    PACKAGE => "GARRISON_XML" },
-    'barreleye-xml'  => { REPO => "http://github.com/open-power/barreleye-xml" ,
-                    DIR => "openpower/package/barreleye-xml",
-                    PACKAGE => "BARRELEYE_XML" },
-    'witherspoon-xml'  => { REPO => "http://github.com/open-power/witherspoon-xml" ,
-                    DIR => "openpower/package/witherspoon-xml",
-                    PACKAGE => "WITHERSPOON_XML" },
-    'zaius-xml'  => { REPO => "http://github.com/open-power/zaius-xml" ,
-                    DIR => "openpower/package/zaius-xml",
-                    PACKAGE => "ZAIUS_XML" },
+                    DIR => "openpower/package/openpower-pnor"},
     'petitboot'     => { REPO => "http://github.com/open-power/petitboot" ,
-                    DIR => "openpower/package/petitboot",
-                    PACKAGE => "PETITBOOT" },
+			 DIR => "openpower/package/petitboot"},
 };
 
-my $begin_release = shift;
-my $end_release = shift;
+my $begin_release;
+my $end_release;
+my $begin_worktree;
+my $end_worktree;
+my $platform;
+
+GetOptions("begin-release=s" => \$begin_release,
+	   "end-release=s" => \$end_release,
+	   "begin-worktree=s" => \$begin_worktree,
+	   "platform=s" => \$platform,
+	   "end-worktree=s" => \$end_worktree)
+    or die("Error in command line arguments");
+
+die "Required argument missing" unless ($begin_release and $end_release and $begin_worktree and $end_worktree);
+
+open(OUTPUT, "> RELEASE.md") || die "Failed to open RELEASE.md";
+
+print OUTPUT "# Release Notes for OpenPower Firmware $end_release\n";
+
+if (-e $begin_worktree) {
+    system("cd $begin_worktree && git checkout $begin_release && git submodule update --reference ../buildroot && git submodule update") and die "Could not update $begin_worktree";
+} else {
+    system("git worktree add $begin_worktree $begin_release && cd $begin_worktree&& git submodule update --reference ../buildroot && git submodule update && rm -rf dl && ln -s ../dl dl") and die "Couldn't init $begin_worktree";
+}
+
+if (-e $end_worktree) {
+    system("cd $end_worktree && git checkout $end_release  && git submodule update --reference ../buildroot && git submodule update") and die "Could not update $end_worktree";
+} else {
+    system("git worktree add $end_worktree $end_release && cd $end_worktree && git submodule update --reference ../buildroot && git submodule update && rm -rf dl && ln -s ../dl dl") and die "Couldn't init $end_worktree";
+}
+
+opendir (my $dh, "$begin_worktree/openpower/configs")
+    or die "can't scan $begin_worktree defconfigs";
+my @begin_platforms = grep { /.*_defconfig/ } readdir($dh);
+closedir $dh;
+
+opendir (my $dh, "$end_worktree/openpower/configs")
+    or die "can't scan $end_worktree defconfigs";
+my @end_platforms = grep { /.*_defconfig/ } readdir($dh);
+closedir $dh;
+
+s/_defconfig// foreach (@begin_platforms);
+s/_defconfig// foreach (@end_platforms);
+
+if ($platform) {
+    @begin_platforms = ($platform);
+    @end_platforms = ($platform);
+}
+
+$dbh->do("CREATE TABLE platforms (platform TEXT, version TEXT);") or die "$!";
+{
+    my $q = "INSERT INTO platforms (platform,version) VALUES (?,?)";
+    my $sth = $dbh->prepare($q) or die "$!";
+    $sth->execute($_, $begin_release) foreach (@begin_platforms);
+    $sth->execute($_, $end_release) foreach (@end_platforms);
+}
+
+{
+    my $q = "SELECT platform FROM platforms WHERE version is ? AND platform NOT IN (SELECT platform FROM platforms WHERE version is ?)";
+    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);
+
+    $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);
+}
+
+my @common_platforms;
+{
+    my $q = "SELECT platform FROM platforms WHERE version is ? AND EXISTS (select platform from platforms where version is ?)";
+    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);
+}
+
+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" ,
+			   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)'");
+    # Forgive me for this....
+    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $begin_worktree/output/legal-info/manifest.csv begin_".$p."_manifest\"");
+}
+
+foreach my $p (@end_platforms) {
+    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\"");
+}
+
+$dbh->do(<<'SQL') or die "$!";
+CREATE TABLE package_upgrades (
+  PACKAGE TEXT,
+  OLDVERSION TEXT,
+  NEWVERSION TEXT,
+  PLATFORM TEXT
+)
+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(<<'SQL') or die "$!";
+CREATE TABLE new_package (
+  PACKAGE TEXT,
+  VERSION TEXT,
+  PLATFORM TEXT
+)
+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(<<'SQL') or die "$!";
+CREATE TABLE removed_package (
+  PACKAGE TEXT,
+  VERSION TEXT,
+  PLATFORM TEXT
+)
+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 $!;
+}
+
+my $old_level = {};
+my $new_level = {};
+
+{
+    my $q = <<'SQL';
+select package as pk ,oldversion as o ,newversion as n, 
+	GROUP_CONCAT(platform) as ps
+FROM package_upgrades 
+	GROUP BY package,oldversion,newversion
+ORDER BY package,platform
+SQL
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute();
+
+    print OUTPUT "## Updated Packages\n\n";
+    print OUTPUT "Package | Old Version | New Version | Platforms\n";
+    print OUTPUT "--- | --- | --- | ---\n";
+    while (my $r = $sth->fetchrow_hashref) {
+	print OUTPUT join(' | ',($r->{pk}, $r->{o}, $r->{n}, $r->{ps}))."\n" ;
+	if ($r->{pk} eq 'machine-xml') {
+	    $old_level->{$r->{ps}."-xml"} = $r->{o};
+	    $new_level->{$r->{ps}."-xml"} = $r->{n};
+	} else {
+	    $old_level->{$r->{pk}} = $r->{o};
+	    $new_level->{$r->{pk}} = $r->{n};
+	}
+    }
+}
+
+{
+    my $q = <<'SQL';
+select package as pk ,version as v,
+	GROUP_CONCAT(platform) as ps
+FROM new_package
+	GROUP BY package,version
+ORDER BY package,platform
+SQL
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute();
+
+    print OUTPUT "\n\n## New Packages\n\n";
+    print OUTPUT "Package | Version | Platforms\n";
+    print OUTPUT "--- | --- | ---\n";
+    while (my $r = $sth->fetchrow_hashref) {
+	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."\n" ;
+	if ($r->{pk} eq 'machine-xml') {
+	    $new_level->{$r->{ps}."-xml"} = $r->{v};
+	}
+    }
+}
+
+{
+    my $q = <<'SQL';
+select package as pk ,version as v,
+	GROUP_CONCAT(platform) as ps
+FROM removed_package
+	GROUP BY package,version
+ORDER BY package,platform
+SQL
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute();
+
+    print OUTPUT "\n\n## Removed Packages\n\n";
+    print OUTPUT "Package | Version | Platforms\n";
+    print OUTPUT "--- | --- | ---\n";
+    while (my $r = $sth->fetchrow_hashref) {
+	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."\n" ;
+	if ($r->{pk} eq $r->{ps}."-xml") {
+	    $old_level->{$r->{ps}."-xml"} = $r->{v};
+	}
+    }
+    print OUTPUT "\n\n";
+}
 
 foreach my $repo (keys %{$repos})
 {
@@ -61,67 +254,11 @@
 system("cd op-build; git checkout $end_release --force; git reset HEAD --hard");
 
 
-open(OP_SUMMARY, "cd op-build; ".
-        "git diff $begin_release...$end_release --name-only |".
-        "grep -e \"\.mk\" -e \"Config.in\" |".
-        "xargs git diff $begin_release...$end_release -- |".
-        "grep -e '^[+-][^[:space:]]*_VERSION' ".
-        "-e'^[+-][[:space:]]*default.*if.*LATEST_VERSION' |") || die;
-
-my $old_level = {};
-my $new_level = {};
-
-while(my $line = <OP_SUMMARY>)
-{
-    chomp $line;
-    if ($line =~ m/\$/) # Sanity check there are not variables here.
-    {
-        next;
-    }
-    if ($line =~ m/-([^[:space:]]*)_VERSION([[:space:]]*\?*=[[:space:]]*)(.*)/)
-    {
-        print "Old $1:$3\n";
-        $old_level->{$1} = $3;
-    }
-    if ($line =~ m/-([^[:space:]]*)_VERSION_BRANCH_MASTER([[:space:]]*\?*=[[:space:]]*)(.*)/)
-    {
-        print "Old $1:$3\n";
-        $old_level->{$1} = $3;
-    }
-    if ($line =~ m/\+([^[:space:]]*)_VERSION([[:space:]]*\?*=[[:space:]]*)(.*)/)
-    {
-        print "New $1:$3\n";
-        $new_level->{$1} = $3;
-    }
-    if ($line =~ m/\+([^[:space:]]*)_VERSION_BRANCH_MASTER([[:space:]]*\?*=[[:space:]]*)(.*)/)
-    {
-        print "New $1:$3\n";
-        $new_level->{$1} = $3;
-    }
-
-    if ($line =~ m/-[[:space:]]*default[[:space:]]*"([^[:space:]]*)"[[:space:]]*if[[:space:]]BR2_([^[:space:]]*)_LATEST_VERSION/)
-    {
-        print "Old $2:$1\n";
-        $old_level->{$2} = $1;
-    }
-    if ($line =~ m/\+[[:space:]]*default[[:space:]]*"([^[:space:]]*)"[[:space:]]*if[[:space:]]BR2_([^[:space:]]*)_LATEST_VERSION/)
-    {
-        print "New $2:$1\n";
-        $new_level->{$2} = $1;
-    }
-}
-
-open(OUTPUT, "> RELEASE.md") || die "Failed to open RELEASE.md";
-
-print OUTPUT "# Release Notes for OpenPower Firmware $end_release\n";
-
 my $op_url = $repos->{'op-build'}->{REPO};
 
 foreach my $repo (sort keys %{$repos})
 {
-    next if (not exists $repos->{$repo}->{PACKAGE});
-
-    my $package = $repos->{$repo}->{PACKAGE};
+    my $package = $repo;
     my $url = $repos->{$repo}->{REPO};
     my $dir = $repos->{$repo}->{DIR};
 
@@ -129,8 +266,6 @@
     print OUTPUT "[Repository]($url)\n";
     print OUTPUT "\n";
 
-    my $package = $repos->{$repo}->{PACKAGE};
-
     # Display patches.
     if (open(LSLOG, "ls op-build/$dir/*.patch | ".
                     "xargs -n1 --no-run-if-empty basename |"))
@@ -165,7 +300,6 @@
         (exists $new_level->{$package}))
     {
         print "Changes in $repo...\n";
-
         open(GITLOG, "cd $repo; git shortlog $old_level->{$package}...".
                      "$new_level->{$package} --no-merges --format=".
                      "\"* [%h]($url/commit/%h) %s\" |");
