diff --git a/README.md b/README.md
index 395f87c..8f5bc81 100644
--- a/README.md
+++ b/README.md
@@ -33,8 +33,7 @@
 ```
 
 There are also default configurations for other platforms in
-`openpower/configs/`. Current POWER8 platforms include Habanero,
-Firestone, and Garrison. Current POWER9 platforms include Witherspoon,
+`openpower/configs/`. Current POWER9 platforms include Witherspoon,
 Boston (p9dsu), Romulus, and Zaius.
 
 Buildroot/op-build supports both native and cross-compilation - it will
diff --git a/ci/build-all-defconfigs.sh b/ci/build-all-defconfigs.sh
index 955120c..7d93211 100755
--- a/ci/build-all-defconfigs.sh
+++ b/ci/build-all-defconfigs.sh
@@ -108,10 +108,8 @@
 	# Enable toolchains we'll need to be built as part of the SDK, and make sure we
 	# consider them to make the sdk unique
 	buildroot/utils/config --file $SDK_BUILD_DIR/.config --package \
-		--enable P8_PORE_TOOLCHAIN  --enable HOST_P8_PORE_BINUTILS \
 		--enable PPE42_TOOLCHAIN --enable HOST_PPE42_GCC --enable HOST_PPE42_BINUTILS
 
-	HASH_PROPERTIES="$HASH_PROPERTIES $(sha1sum_dir openpower/package/p8-pore-binutils/)"
 	HASH_PROPERTIES="$HASH_PROPERTIES $(sha1sum_dir openpower/package/ppe42-gcc/)"
 	HASH_PROPERTIES="$HASH_PROPERTIES $(sha1sum_dir openpower/package/ppe42-binutils/)"
 
@@ -265,14 +263,6 @@
 		buildroot/utils/config --file $O/.config --enable TOOLCHAIN_EXTERNAL_CXX
 	fi
 
-	# Our SDK will always have p8-pore-toolchain enabled, but
-	# only use it if we require it
-	P8_PORE_REQUIRED=$(buildroot/utils/config --file $O/.config --package --state P8_PORE_TOOLCHAIN)
-	if [ "$P8_PORE_REQUIRED" = "y" ]; then
-		buildroot/utils/config --file $O/.config --enable PACKAGE_P8_PORE_TOOLCHAIN_EXTERNAL \
-			--set-str P8_PORE_TOOLCHAIN_EXTERNAL_PATH $SDK_DIR/host
-	fi
-
 	# Our SDK will always have ppe42-toolchain enabled, but
 	# only use it if we require it
 	PPE42_REQUIRED=$(buildroot/utils/config --file $O/.config --package --state PPE42_TOOLCHAIN)
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
deleted file mode 100644
index d9adaf6..0000000
--- a/openpower/configs/barreleye_defconfig
+++ /dev/null
@@ -1,72 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="barreleye.config"
-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_PNOR_FILENAME="barreleye.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="barreleye_update.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="BARRELEYE_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="BARRELEYE_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
deleted file mode 100644
index 33e12db..0000000
--- a/openpower/configs/firenze_defconfig
+++ /dev/null
@@ -1,58 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_IPRUTILS=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-# BR2_PACKAGE_P8_PORE_TOOLCHAIN is not set
-# BR2_PACKAGE_HOSTBOOT_P8 is not set
-# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
-# BR2_PACKAGE_MACHINE_XML is not set
-# BR2_PACKAGE_OPENPOWER_PNOR is not set
-BR2_OPENPOWER_CONFIG_NAME="openpower-firenze"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-# BR2_PACKAGE_CAPP_UCODE is not set
-BR2_PACKAGE_LOADKEYS=y
-# BR2_PACKAGE_IMA_CATALOG is not set
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
deleted file mode 100644
index 2505040..0000000
--- a/openpower/configs/firestone_defconfig
+++ /dev/null
@@ -1,71 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="firestone.config"
-BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="firestone-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="9df12d2653f2fbcae043d0e8effadb9aa5b84694"
-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_PNOR_FILENAME="firestone.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="firestone_update.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="FIRESTONE_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="FIRESTONE_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
deleted file mode 100644
index 29e3591..0000000
--- a/openpower/configs/garrison_defconfig
+++ /dev/null
@@ -1,71 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="garrison.config"
-BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="garrison-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="c5c35cb575ed4cd77400ef17cf954addc9fc855d"
-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_PNOR_FILENAME="garrison.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="garrison_update.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="naples_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="n1.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="GARRISON_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="GARRISON_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
deleted file mode 100644
index 305f7c7..0000000
--- a/openpower/configs/habanero_defconfig
+++ /dev/null
@@ -1,72 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="habanero.config"
-BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML=y
-BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="habanero-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="c3998a513e1f71de4f8e250ebb50aeaf303eb73e"
-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_PNOR_FILENAME="habanero.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="habanero_update.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="HABANERO_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="HABANERO_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/hostboot/barreleye.config b/openpower/configs/hostboot/barreleye.config
deleted file mode 100755
index b5178f4..0000000
--- a/openpower/configs/hostboot/barreleye.config
+++ /dev/null
@@ -1,66 +0,0 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2400
-set   BMC_DOES_SFC_INIT
-unset SFC_IS_IBM_DPSS
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-set SBE_UPDATE_INDEPENDENT
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-# Enable Kingston dimm voltage workaround
-set KINGSTON_1_35_VOLT
-
-# PCA95X config
-set PCA95X_8BIT
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-set HTMGT
-set START_OCC_DURING_BOOT
-
-#PNOR flags
-set PNOR_TWO_SIDE_SUPPORT
-set BMC_BT_LPC_IPMI
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/firestone.config b/openpower/configs/hostboot/firestone.config
deleted file mode 100755
index 4dd3cde..0000000
--- a/openpower/configs/hostboot/firestone.config
+++ /dev/null
@@ -1,64 +0,0 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2400
-set   BMC_DOES_SFC_INIT
-unset SFC_IS_IBM_DPSS
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-set SBE_UPDATE_INDEPENDENT
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-# Enable Kingston dimm voltage workaround
-set KINGSTON_1_35_VOLT
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-set HTMGT
-set START_OCC_DURING_BOOT
-
-#PNOR flags
-set PNOR_TWO_SIDE_SUPPORT
-
-set BMC_BT_LPC_IPMI
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/garrison.config b/openpower/configs/hostboot/garrison.config
deleted file mode 100755
index 7fc9adf..0000000
--- a/openpower/configs/hostboot/garrison.config
+++ /dev/null
@@ -1,64 +0,0 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2400
-set   BMC_DOES_SFC_INIT
-unset SFC_IS_IBM_DPSS
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-unset DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-set SBE_UPDATE_INDEPENDENT
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-# Enable Kingston dimm voltage workaround
-set KINGSTON_1_35_VOLT
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-set HTMGT
-set START_OCC_DURING_BOOT
-
-#PNOR flags
-set PNOR_TWO_SIDE_SUPPORT
-
-set BMC_BT_LPC_IPMI
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/habanero.config b/openpower/configs/hostboot/habanero.config
deleted file mode 100755
index 138e988..0000000
--- a/openpower/configs/hostboot/habanero.config
+++ /dev/null
@@ -1,67 +0,0 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2400
-set   BMC_DOES_SFC_INIT
-unset SFC_IS_IBM_DPSS
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-set SBE_UPDATE_INDEPENDENT
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-# Enable Kingston dimm voltage workaround
-set KINGSTON_1_35_VOLT
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-
-# OCC Enablment flags
-unset SET_NOMINAL_PSTATE
-set HTMGT
-set START_OCC_DURING_BOOT
-
-#PNOR flags
-set PNOR_TWO_SIDE_SUPPORT
-
-set BMC_BT_LPC_IPMI
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/p8dtu.config b/openpower/configs/hostboot/p8dtu.config
deleted file mode 100644
index 7781d39..0000000
--- a/openpower/configs/hostboot/p8dtu.config
+++ /dev/null
@@ -1,70 +0,0 @@
-# The Serial Flash Controller is the AST2400 BMC.
-set   SFC_IS_AST2400
-set   PNORDD_IS_IPMI
-unset PNORDD_IS_SFC
-set   BMC_DOES_SFC_INIT
-unset SFC_IS_IBM_DPSS
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-unset DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-#set SBE_UPDATE_INDEPENDENT
-set SBE_UPDATE_SIMULTANEOUS
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-# Enable Kingston dimm voltage workaround
-unset KINGSTON_1_35_VOLT
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-set HTMGT
-set START_OCC_DURING_BOOT
-
-#PNOR flags
-unset PNOR_TWO_SIDE_SUPPORT
-set PNOR_IS_32MB
-
-set BMC_BT_LPC_IPMI
-
-unset SET_NOMINAL_PSTATE
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/palmetto.config b/openpower/configs/hostboot/palmetto.config
deleted file mode 100755
index 0d8ce18..0000000
--- a/openpower/configs/hostboot/palmetto.config
+++ /dev/null
@@ -1,68 +0,0 @@
-# Use IPMIDD for PNOR
-unset SFC_IS_AST2400
-set PNORDD_IS_IPMI
-unset PNORDD_IS_SFC
-unset BMC_DOES_SFC_INIT
-unset SFC_IS_IBM_DPSS
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-#PNOR flags
-unset PNOR_TWO_SIDE_SUPPORT
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-set SBE_UPDATE_INDEPENDENT
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-set PNOR_IS_32MB
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-
-# OCC Enablment flags
-unset SET_NOMINAL_PSTATE
-set HTMGT
-set START_OCC_DURING_BOOT
-
-set BMC_BT_LPC_IPMI
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/vesnin.config b/openpower/configs/hostboot/vesnin.config
deleted file mode 100644
index fc3e969..0000000
--- a/openpower/configs/hostboot/vesnin.config
+++ /dev/null
@@ -1,63 +0,0 @@
-# Use IPMIDD for PNOR
-unset SFC_IS_AST2400
-unset SFC_IS_IBM_DPSS
-unset BMC_DOES_SFC_INIT
-unset PNORDD_IS_SFC
-set   PNORDD_IS_IPMI
-set   ALLOW_MICRON_PNOR
-set   ALLOW_MACRONIX_PNOR
-
-# VPD options.
-set MVPD_READ_FROM_HW
-set MVPD_WRITE_TO_HW
-set MVPD_READ_FROM_PNOR
-set MVPD_WRITE_TO_PNOR
-set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
-set DJVPD_READ_FROM_PNOR
-set DJVPD_WRITE_TO_PNOR
-set CVPD_READ_FROM_HW
-set CVPD_WRITE_TO_HW
-set CVPD_READ_FROM_PNOR
-set CVPD_WRITE_TO_PNOR
-set PVPD_READ_FROM_HW
-set PVPD_WRITE_TO_HW
-set PVPD_READ_FROM_PNOR
-set PVPD_WRITE_TO_PNOR
-set SKIP_RESTRICT_EX_UNITS
-unset CDIMM_FORMAT_FOR_CVPD
-
-# gpio config
-set GPIODD
-set PALMETTO_VDDR
-
-# Enable SBE updates
-set SBE_UPDATE_INDEPENDENT
-
-unset PCIE_HOTPLUG_CONTROLLER
-
-# turn on console output
-set CONSOLE
-set BMC_AST2400
-
-unset DISABLE_HOSTBOOT_RUNTIME
-
-# Compile in hostboot runtime PRD
-set HBRT_PRD
-set HTMGT
-set START_OCC_DURING_BOOT
-
-#PNOR flags
-set PNOR_TWO_SIDE_SUPPORT
-
-set BMC_BT_LPC_IPMI
-
-# Enable Checktop Analysis
-set ENABLE_CHECKSTOP_ANALYSIS
-set IPLTIME_CHECKSTOP_ANALYSIS
-
-# Hostboot will detect hardware changes
-set HOST_HCDB_SUPPORT
-
-# set for trace debug to console
-unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/opal_defconfig b/openpower/configs/opal_defconfig
index 1319aa9..9a74eb4 100644
--- a/openpower/configs/opal_defconfig
+++ b/openpower/configs/opal_defconfig
@@ -42,10 +42,10 @@
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
 BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-# BR2_PACKAGE_P8_PORE_TOOLCHAIN is not set
+BR2_OPENPOWER_POWER9=y
+# BR2_PACKAGE_PPE42_TOOLCHAIN is not set
 # BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
-# BR2_PACKAGE_HOSTBOOT_P8 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
@@ -55,3 +55,4 @@
 # BR2_PACKAGE_CAPP_UCODE is not set
 BR2_SKIBOOT_DEVICETREE=y
 # BR2_PACKAGE_IMA_CATALOG is not set
+# BR2_PACKAGE_HOST_SB_SIGNING_UTILS is not set
diff --git a/openpower/configs/p8dtu_defconfig b/openpower/configs/p8dtu_defconfig
deleted file mode 100644
index 50f8065..0000000
--- a/openpower/configs/p8dtu_defconfig
+++ /dev/null
@@ -1,71 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OP_BUILD_PATH)/patches/p8dtu-patches"
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="p8dtu.config"
-BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="p8dtu-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="a44ee3e29ff143053c0d0ec65e5a255402654616"
-BR2_OPENPOWER_MACHINE_XML_FILENAME="p8dtu.xml"
-BR2_OPENPOWER_SYSTEM_XML_FILENAME="P8DTU_hb.system.xml"
-BR2_OPENPOWER_MRW_XML_FILENAME="P8DTU_hb.mrw.xml"
-BR2_OPENPOWER_BIOS_XML_FILENAME="P8DTU_bios.xml"
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutSingleSide.xml"
-BR2_OPENPOWER_CONFIG_NAME="p8dtu"
-BR2_OPENPOWER_PNOR_FILENAME="P8DTU.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="P8DTU_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="P8DTU_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
deleted file mode 100644
index d458249..0000000
--- a/openpower/configs/palmetto_defconfig
+++ /dev/null
@@ -1,68 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="palmetto.config"
-BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="palmetto-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="19aa4d3a0f0b39f891a7628bc41946d0dc83fb2a"
-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_PNOR_FILENAME="palmetto.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="PALMETTO_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="PALMETTO_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/pseries_defconfig b/openpower/configs/pseries_defconfig
deleted file mode 100644
index 74794d9..0000000
--- a/openpower/configs/pseries_defconfig
+++ /dev/null
@@ -1,60 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
-BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_SYSTEM_ENABLE_NLS=y
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
-BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/pseries_skiroot_defconfig"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_I2C_TOOLS=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_IPMITOOL_USB=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-# BR2_PACKAGE_P8_PORE_TOOLCHAIN is not set
-# BR2_PACKAGE_HOSTBOOT_P8 is not set
-# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
-# BR2_PACKAGE_MACHINE_XML is not set
-# BR2_PACKAGE_OPENPOWER_PNOR is not set
-BR2_OPENPOWER_CONFIG_NAME="openpower-firenze"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-# BR2_PACKAGE_CAPP_UCODE is not set
-BR2_PACKAGE_LOADKEYS=y
-# BR2_PACKAGE_IMA_CATALOG is not set
diff --git a/openpower/configs/vesnin_defconfig b/openpower/configs/vesnin_defconfig
deleted file mode 100644
index 7293fab..0000000
--- a/openpower/configs/vesnin_defconfig
+++ /dev/null
@@ -1,69 +0,0 @@
-BR2_powerpc64le=y
-BR2_powerpc_power8=y
-BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OP_BUILD_PATH)/patches/vesnin-patches"
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
-BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GCC_VERSION_6_X=y
-BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
-BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.48"
-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"
-BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
-BR2_LINUX_KERNEL_XZ=y
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X=y
-BR2_PACKAGE_CRYPTSETUP=y
-BR2_PACKAGE_I2C_TOOLS=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_MDADM=y
-BR2_PACKAGE_PCIUTILS=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_DROPBEAR=y
-# BR2_PACKAGE_DROPBEAR_SERVER is not set
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_NETCAT=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_UTIL_LINUX_AGETTY=y
-BR2_TARGET_ROOTFS_CPIO_XZ=y
-BR2_TARGET_ROOTFS_INITRAMFS=y
-BR2_OPENPOWER_PLATFORM=y
-BR2_OPENPOWER_POWER8=y
-BR2_HOSTBOOT_P8_CONFIG_FILE="vesnin.config"
-BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="vesnin-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="deed9ba0bc6d1d68b416ed3e14853b86838897d7"
-BR2_OPENPOWER_MACHINE_XML_FILENAME="vesnin.xml"
-BR2_OPENPOWER_SYSTEM_XML_FILENAME="VESNIN_hb.system.xml"
-BR2_OPENPOWER_MRW_XML_FILENAME="VESNIN_hb.mrw.xml"
-BR2_OPENPOWER_BIOS_XML_FILENAME="VESNIN_bios.xml"
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
-BR2_OPENPOWER_CONFIG_NAME="vesnin"
-BR2_OPENPOWER_PNOR_FILENAME="vesnin.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="vesnin_update.pnor"
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
-BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
-BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
-BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="VESNIN_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="VESNIN_HB.targeting.bin.ecc"
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-BR2_PACKAGE_LOADKEYS=y
-BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index 34468f5..be50a3e 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -1,15 +1,11 @@
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-ffs/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot-p8/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot-binaries/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-mrw/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/common-p8-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/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/hcode/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/occ/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/occ-p8/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/capp-ucode/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/skiboot/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/libflash/Config.in"
diff --git a/openpower/package/common-p8-xml/Config.in b/openpower/package/common-p8-xml/Config.in
deleted file mode 100644
index 560c1d6..0000000
--- a/openpower/package/common-p8-xml/Config.in
+++ /dev/null
@@ -1,4 +0,0 @@
-config BR2_PACKAGE_COMMON_P8_XML
-        bool "Common P8 XML files"
-        default y if BR2_PACKAGE_HOSTBOOT_P8
-        select BR2_PACKAGE_OPENPOWER_MRW
diff --git a/openpower/package/common-p8-xml/common-p8-xml.mk b/openpower/package/common-p8-xml/common-p8-xml.mk
deleted file mode 100644
index cd0afe4..0000000
--- a/openpower/package/common-p8-xml/common-p8-xml.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-################################################################################
-#
-# common-p8-xml
-#
-################################################################################
-
-COMMON_P8_XML_VERSION ?= e02b6f6ddd5f225ddb70c286a10685df5b9267db
-COMMON_P8_XML_SITE ?= $(call github,open-power,common-p8-xml,$(COMMON_P8_XML_VERSION))
-
-COMMON_P8_XML_LICENSE = Apache-2.0
-COMMON_P8_XML_LICENSE_FILES = LICENSE
-COMMON_P8_XML_DEPENDENCIES =
-
-COMMON_P8_XML_INSTALL_IMAGES = YES
-COMMON_P8_XML_INSTALL_TARGET = NO
-
-XML_INSTALL_DIRECTORY=$(STAGING_DIR)/openpower_mrw_scratch/
-
-define COMMON_P8_XML_INSTALL_IMAGES_CMDS
-        bash -c 'mkdir -p $(XML_INSTALL_DIRECTORY) && cp -r $(@D)/* $(XML_INSTALL_DIRECTORY)'
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/hcode/Config.in b/openpower/package/hcode/Config.in
index 89c243a..94d0b90 100644
--- a/openpower/package/hcode/Config.in
+++ b/openpower/package/hcode/Config.in
@@ -3,6 +3,7 @@
         default y if (BR2_OPENPOWER_PLATFORM && BR2_OPENPOWER_POWER9)
         depends on BR2_PACKAGE_HAS_PPE42_TOOLCHAIN
         select BR2_CPP
+        select BR2_PACKAGE_HOSTBOOT_BINARIES
         help
             Project to build the hcode firmware codebase
 
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index 658c281..a7649c8 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -14,25 +14,11 @@
 HOSTBOOT_BINARIES_INSTALL_IMAGES = YES
 HOSTBOOT_BINARIES_INSTALL_TARGET = NO
 
-# Creating Install Commands specific to P8 and P9
-# -- P8 does not need the nimbus and axone ring files
+# Creating Install Commands specific to P9
 # -- P9 does not need the SBE files ('sbe' package is used in P9)
 # -- P9 uses the 'hcode' package to build the BR2_HOSTBOOT_BINARY_WINK_FILENAME
 
 ###################################
-# P8:
-ifeq ($(BR2_OPENPOWER_POWER8),y)
-define HOSTBOOT_BINARIES_INSTALL_IMAGES_CMDS
-     $(INSTALL) -D $(@D)/cvpd.bin  $(STAGING_DIR)/hostboot_binaries/cvpd.bin
-     $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_WINK_FILENAME) $(STAGING_DIR)/hostboot_binaries/
-     $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_IONV_FILENAME)  $(STAGING_DIR)/hostboot_binaries/
-     $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) $(STAGING_DIR)/hostboot_binaries/
-     $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBE_FILENAME)  $(STAGING_DIR)/hostboot_binaries/
-     $(INSTALL) -D $(@D)/gpu_gpe1.bin  $(STAGING_DIR)/hostboot_binaries/gpu_gpe1.bin
-endef
-endif
-
-###################################
 # P9:
 ifeq ($(BR2_OPENPOWER_POWER9),y)
 
diff --git a/openpower/package/hostboot-p8/0001-Increase-uart-delay.patch b/openpower/package/hostboot-p8/0001-Increase-uart-delay.patch
deleted file mode 100644
index 5c916d2..0000000
--- a/openpower/package/hostboot-p8/0001-Increase-uart-delay.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 0c69e87e86e62253bc5a33cadf41e3d5f80971f0 Mon Sep 17 00:00:00 2001
-From: Brian Silver <bsilver@us.ibm.com>
-Date: Wed, 5 Nov 2014 14:16:36 -0600
-Subject: [PATCH] Changes for Habanero bringup, uart delay and centaur/vddr
-
-Change-Id: I381732be6facd25fb27bbd1f8ac0d75eb5b4980e
----
- src/usr/console/uart.C                         |  2 +-
- src/usr/hwpf/hwp/dram_training/palmetto_vddr.C | 18 +++++++++++++-----
- 2 files changed, 14 insertions(+), 6 deletions(-)
-
-diff --git a/src/usr/console/uart.C b/src/usr/console/uart.C
-index 385a05c..a269168 100644
---- a/src/usr/console/uart.C
-+++ b/src/usr/console/uart.C
-@@ -116,7 +116,7 @@ namespace CONSOLE
-             // Wait for transmit FIFO to have space.
-             {
-                 const uint64_t DELAY_NS = 100;
--                const uint64_t DELAY_LOOPS = 10000;
-+                const uint64_t DELAY_LOOPS = 100000000;
- 
-                 uint8_t data = 0;
-                 uint64_t loops = 0;
--- 
-1.9.1
-
diff --git a/openpower/package/hostboot-p8/0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch b/openpower/package/hostboot-p8/0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
deleted file mode 100644
index 66bc026..0000000
--- a/openpower/package/hostboot-p8/0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 005cac73915ee6f6b67e9b01ae840b798c1fc80e Mon Sep 17 00:00:00 2001
-From: Andrew Geissler <andrewg@us.ibm.com>
-Date: Mon, 16 Feb 2015 13:43:51 -0600
-Subject: [PATCH] GCC 4.9: Make compiler use ELFv1 ABI.
-
-GCC4.9 defaults to ELFv2 ABI support but we do not have all
-of the needed tools to suppor this.
-
-Change-Id: Iacf49c46b1fb25776ba60d6506ccadff7b46bf60
-RTC: 123430
----
- src/build/mkrules/cflags.env.mk |    9 ++++++---
- 1 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk
-index 8ca32b1..c729341 100644
---- a/src/build/mkrules/cflags.env.mk
-+++ b/src/build/mkrules/cflags.env.mk
-@@ -36,10 +37,12 @@ CFLAGS += -D__HOSTBOOT_MODULE=$(MODULE)
- endif
- 
- COMMONFLAGS += $(OPT_LEVEL) -nostdlib
-+# TODO RTC: 123994 - ELFv2 ABI support (-mabi=elfv1)
- CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
-           -Wall -Werror -mtraceback=no -pipe \
--	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian
--ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian
-+	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian \
-+      -mabi=elfv1
-+ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian -mabi=elfv1
- CXXFLAGS += $(CFLAGS) -nostdinc++ -fno-rtti -fno-exceptions -Wall \
- 	    -fuse-cxa-atexit
- LDFLAGS += --nostdlib --sort-common -EB $(COMMONFLAGS)
--- 
-1.7.4.1
-
diff --git a/openpower/package/hostboot-p8/0003-Default-to-std-gnu-03.patch b/openpower/package/hostboot-p8/0003-Default-to-std-gnu-03.patch
deleted file mode 100644
index f6c6710..0000000
--- a/openpower/package/hostboot-p8/0003-Default-to-std-gnu-03.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From bc7b8b21549752274b162c64dbce3c81d20f2cab Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 25 Aug 2016 20:22:30 +1000
-Subject: [PATCH 03/10] Default to std=gnu++03
-
-Seeing as no C++ dialect was previously selected, GCC < 6 defaulted
-to GNU++98 as the standard C++ mode. However... it seems that C++03
-is a better match for HostBoot code (confirmed by Patrick Williams
-in https://github.com/open-power/hostboot/pull/62#discussion_r76830612 )
-
-Change-Id: I6661b5b61319c85c2a90926beb6e2662e96dcf06
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/build/mkrules/cflags.env.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk
-index c805999..0bae0ec 100644
---- a/src/build/mkrules/cflags.env.mk
-+++ b/src/build/mkrules/cflags.env.mk
-@@ -41,7 +41,7 @@ CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
- 	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian
- ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian
- CXXFLAGS += $(CFLAGS) -nostdinc++ -fno-rtti -fno-exceptions -Wall \
--	    -fuse-cxa-atexit
-+	    -fuse-cxa-atexit -std=gnu++03
- LDFLAGS += --nostdlib --sort-common -EB $(COMMONFLAGS)
- 
- INCFLAGS = $(addprefix -I, $(INCDIR) )
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0004-fix-build-error-return-statement-with-a-value-in-fun.patch b/openpower/package/hostboot-p8/0004-fix-build-error-return-statement-with-a-value-in-fun.patch
deleted file mode 100644
index b1ecacd..0000000
--- a/openpower/package/hostboot-p8/0004-fix-build-error-return-statement-with-a-value-in-fun.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6ae906e70c7209e69b750f6566263fe4998dfb48 Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 25 Aug 2016 19:22:00 +1000
-Subject: [PATCH 04/10] fix build error: return-statement with a value, in
- function returning 'void'
-
-Change-Id: I9dc8b698fec95488e209cbc40b928769a26b6de6
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/include/usr/devicefw/driverif.H | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/include/usr/devicefw/driverif.H b/src/include/usr/devicefw/driverif.H
-index a148725..fb43073 100644
---- a/src/include/usr/devicefw/driverif.H
-+++ b/src/include/usr/devicefw/driverif.H
-@@ -266,7 +266,7 @@ namespace DeviceFW
-                              TargType i_targetType,
-                              deviceOp_t i_regRoute)
-     {
--        return InvalidParameterType(); // Cause a compile fail if not one of
-+        InvalidParameterType(); // Cause a compile fail if not one of
-                                        // the explicit template specializations.
-     }
- 
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0005-error-dereferencing-type-punned-pointer-will-break-s.patch b/openpower/package/hostboot-p8/0005-error-dereferencing-type-punned-pointer-will-break-s.patch
deleted file mode 100644
index fcfe570..0000000
--- a/openpower/package/hostboot-p8/0005-error-dereferencing-type-punned-pointer-will-break-s.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 550d36dca3cdec84d47f05711c2569990d3b4708 Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 25 Aug 2016 19:27:04 +1000
-Subject: [PATCH 05/10] error: dereferencing type-punned pointer will break
- strict-aliasing rules
-
-Change-Id: I63accd3e881c941736ece4b4498c2c9d06ff8761
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H             | 7 +++++++
- .../usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H        | 1 -
- src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C        | 6 +++---
- 3 files changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
-index e5af2c9..7edf2bf 100755
---- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
-+++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
-@@ -227,6 +227,13 @@ namespace getAttrData
-         uint8_t              iv_systemType;
-         uint8_t              iv_systemType_ext;
-         uint8_t              iv_dataVersion;
-+    public:
-+	MBvpdVMKeyword() : iv_version(0),iv_systemType(0),
-+			   iv_systemType_ext(0),iv_dataVersion(0) {};
-+	operator uint32_t() const {
-+		return iv_version << 24 | iv_systemType << 16 |
-+			iv_systemType_ext << 8 | iv_dataVersion;
-+	}
-     };
- //  Attribute definition
-     struct MBvpdAttrDef
-diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
-index f172508..85460b2 100644
---- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
-+++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
-@@ -33,7 +33,6 @@
- #define _HWP_GETMBVPDMEMDATAVERSION_
- 
- #include <fapi.H>
--#define VM_KEYWORD_DEFAULT_VALUE 0x00000000
- 
- // function pointer typedef definition for HWP call support
- typedef fapi::ReturnCode (*getMBvpdMemoryDataVersion_FP_t)
-diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
-index 2f83fa2..ef64515 100644
---- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
-+++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
-@@ -50,7 +50,7 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
-     fapi::ReturnCode l_fapirc;
-     DimmType l_dimmType = ISDIMM;
-     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX;
--    uint32_t l_vpdMemoryDataVersion = VM_KEYWORD_DEFAULT_VALUE;   
-+    MBvpdVMKeyword l_vpdMemoryDataVersion;
-     uint32_t l_bufSize = sizeof(l_vpdMemoryDataVersion);
- 
-     FAPI_DBG("getMBvpdMemoryDataVersion: entry ");
-@@ -140,8 +140,8 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
-         }
-                     
-         // Check if the format byte in the value returned is in between valid range
--        if (( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version >  VM_SUPPORTED_HIGH_VER )||
--            ( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version == VM_NOT_SUPPORTED ))
-+        if ((l_vpdMemoryDataVersion.iv_version >  VM_SUPPORTED_HIGH_VER )||
-+            (l_vpdMemoryDataVersion.iv_version == VM_NOT_SUPPORTED ))
-         {
-             FAPI_ERR("getMBvpdMemoryDataVersion:"
-                      " keyword data returned is invalid : %d ",
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch b/openpower/package/hostboot-p8/0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
deleted file mode 100644
index 666c747..0000000
--- a/openpower/package/hostboot-p8/0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 74d099aaffa37498859c0840771052f50253ce4d Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 25 Aug 2016 19:33:42 +1000
-Subject: [PATCH 06/10] Change cv_forcedMemPeriodic to uint8_t as bool is
- invalid
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-GCC6 throws the following error:
-operand type ‘bool*’ is incompatible with argument 1 of ‘__sync_fetch_and_and’
-
-GCC documents that bool is invalid for __sync builtins over at:
-https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#g_t_005f_005fsync-Builtins
-" GCC allows any scalar type that is 1, 2, 4 or 8 bytes in size other than the C type _Bool or the C++ type bool"
-
-Change-Id: Iab6415348cb19f590921d8ccc5349867fa57a42d
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/include/kernel/cpumgr.H | 2 +-
- src/kernel/cpumgr.C         | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/include/kernel/cpumgr.H b/src/include/kernel/cpumgr.H
-index 68f8972..6e9b697 100644
---- a/src/include/kernel/cpumgr.H
-+++ b/src/include/kernel/cpumgr.H
-@@ -215,7 +215,7 @@ class CpuManager
-              */
-         static uint64_t cv_cpuSeq;
- 
--        static bool cv_forcedMemPeriodic;       //!<  force free / coalesce.
-+        static uint8_t cv_forcedMemPeriodic;       //!<  force free / coalesce.
- 
-         // If a shutdown of all CPUs is requested
-         static bool cv_shutdown_requested;
-diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
-index 44f61a1..ce7516f 100644
---- a/src/kernel/cpumgr.C
-+++ b/src/kernel/cpumgr.C
-@@ -50,7 +50,7 @@ cpu_t** CpuManager::cv_cpus[KERNEL_MAX_SUPPORTED_NODES];
- bool CpuManager::cv_shutdown_requested = false;
- uint64_t CpuManager::cv_shutdown_status = 0;
- size_t CpuManager::cv_cpuSeq = 0;
--bool CpuManager::cv_forcedMemPeriodic = false;
-+uint8_t CpuManager::cv_forcedMemPeriodic = 0;
- InteractiveDebug CpuManager::cv_interactive_debug;
- 
- CpuManager::CpuManager() : iv_lastStartTimebase(0)
-@@ -361,7 +361,7 @@ void CpuManager::executePeriodics(cpu_t * i_cpu)
-         }
- 
-         bool forceMemoryPeriodic = __sync_fetch_and_and(&cv_forcedMemPeriodic,
--                                                        false);
-+                                                        0);
- 
-         ++(i_cpu->periodic_count);
-         if((0 == (i_cpu->periodic_count % CPU_PERIODIC_CHECK_MEMORY)) ||
-@@ -461,7 +461,7 @@ size_t CpuManager::getThreadCount()
- 
- void CpuManager::forceMemoryPeriodic()
- {
--    cv_forcedMemPeriodic = true;
-+    cv_forcedMemPeriodic = 1;
- }
- 
- 
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0007-error-the-compiler-can-assume-that-the-address-of-r-.patch b/openpower/package/hostboot-p8/0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
deleted file mode 100644
index 9c2c8f4..0000000
--- a/openpower/package/hostboot-p8/0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 8797f215a09a89c271dab484b892ceedd2486615 Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 25 Aug 2016 20:13:11 +1000
-Subject: [PATCH 07/10] =?UTF-8?q?error:=20the=20compiler=20can=20assume=20?=
- =?UTF-8?q?that=20the=20address=20of=20=E2=80=98r=E2=80=99=20will=20never?=
- =?UTF-8?q?=20be=20NULL?=
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-     PRDF_ASSERT( &r  != NULL );
-
-Change-Id: I2d60075f9e2232512efe45a5c6aa5563f3a565f5
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
-index 9ee1358..ef7279b 100755
---- a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
-+++ b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
-@@ -120,8 +120,6 @@ ErrorRegister::ErrorRegister( SCAN_COMM_REGISTER_CLASS & r, ResolutionMap & rm,
-     ErrorRegisterType(), scr(r), scr_rc(SUCCESS), rMap(rm),
-     xNoErrorOnZeroScr(false), xScrId(scrId)
- {
--    PRDF_ASSERT( &r  != NULL );
--    PRDF_ASSERT( &rm != NULL );
- }
- 
- /*---------------------------------------------------------------------*/
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch b/openpower/package/hostboot-p8/0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
deleted file mode 100644
index 73adecc..0000000
--- a/openpower/package/hostboot-p8/0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From b315c53f2803b84e35fe646aa82702b82e8ecd98 Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 25 Aug 2016 20:07:58 +1000
-Subject: [PATCH 08/10] Fix compiler can assume address will never be NULL
- error with GCC6
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-So, it turns out that relying on the address of something passed by
-reference being able to be NULL isn't exactly a good idea, or remotely
-obvious code. So, instead, do the sane thing and pass a pointer and
-check it.
-
-../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:
-In constructor ‘PRDF::AttnTypeRegister::AttnTypeRegister(PRDF::SCAN_COMM_REGISTE
-R_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF
-::SCAN_COMM_REGISTER_CLASS&)’:
-../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
-42:21: error: the compiler can assume that the address of ‘i_check’ will never b
-e NULL [-Werror=address]
-         iv_check(  NULL == &i_check   ? &cv_null : &i_check),
-                   ~~^~~~~~~~~~~
-../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
-43:21: error: the compiler can assume that the address of ‘i_recov’ will never b
-e NULL [-Werror=address]
-         iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
-                   ~~^~~~~~~~~~~
-../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
-44:22: error: the compiler can assume that the address of ‘i_special’ will never
- be NULL [-Werror=address]
-         iv_special(NULL == &i_special ? &cv_null : &i_special),
-                    ~~^~~~~~~~~~~~~
-../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
-45:22: error: the compiler can assume that the address of ‘i_proccs’ will never
-be NULL [-Werror=address]
-         iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
-                    ~~^~~~~~~~~~~~
-
-Change-Id: Iecd8636da67aac24f64f73fd82b1f7ccbfced900
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- .../common/framework/register/prdfOperatorRegister.H     | 16 ++++++++--------
- .../prdf/common/framework/register/prdfScanFacility.C    |  2 +-
- 2 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
-index b0513e4..a26a76e 100755
---- a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
-+++ b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
-@@ -434,15 +434,15 @@ class AttnTypeRegister : public SCAN_COMM_REGISTER_CLASS
-         iv_bs = &iv_iBS;
-     }
- 
--    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS & i_check,
--                      SCAN_COMM_REGISTER_CLASS & i_recov,
--                      SCAN_COMM_REGISTER_CLASS & i_special,
--                      SCAN_COMM_REGISTER_CLASS & i_proccs ) :
-+    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS *i_check,
-+                      SCAN_COMM_REGISTER_CLASS *i_recov,
-+                      SCAN_COMM_REGISTER_CLASS *i_special,
-+                      SCAN_COMM_REGISTER_CLASS *i_proccs ) :
-         SCAN_COMM_REGISTER_CLASS( ),
--        iv_check(  NULL == &i_check   ? &cv_null : &i_check),
--        iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
--        iv_special(NULL == &i_special ? &cv_null : &i_special),
--        iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
-+        iv_check(  NULL == i_check   ? &cv_null : i_check),
-+        iv_recov(  NULL == i_recov   ? &cv_null : i_recov),
-+        iv_special(NULL == i_special ? &cv_null : i_special),
-+        iv_proccs( NULL == i_proccs  ? &cv_null : i_proccs),
-         iv_iBS(0)         // will fully initialize this inside ctor.
-     {
-         uint32_t l_length = 1024;
-diff --git a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
-index 0d379cf..cad5ce8 100755
---- a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
-+++ b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
-@@ -166,7 +166,7 @@ SCAN_COMM_REGISTER_CLASS &  ScanFacility::GetAttnTypeRegister(
-                                            SCAN_COMM_REGISTER_CLASS * i_special,
-                                            SCAN_COMM_REGISTER_CLASS * i_proccs )
- {
--  AttnTypeRegister r(*i_check, *i_recov, *i_special, *i_proccs);
-+  AttnTypeRegister r(i_check, i_recov, i_special, i_proccs);
-   return iv_attnRegFw.get(r);
- }
- 
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch b/openpower/package/hostboot-p8/0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
deleted file mode 100644
index 7e17bf9..0000000
--- a/openpower/package/hostboot-p8/0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9279a2bf255392321594b9457a67b796195b0891 Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Wed, 31 Aug 2016 13:07:17 +1000
-Subject: [PATCH 09/10] =?UTF-8?q?error:=20in=20C++98=20=E2=80=98l=5FvmVers?=
- =?UTF-8?q?ionBuf=E2=80=99=20must=20be=20initialized=20by=20constructor?=
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-fix GCC6 thrown error
-
-Change-Id: I9aa508843f54c99ebb59822c39590811423ad0b1
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
-index 3739c75..a4685ad 100755
---- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
-+++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
-@@ -392,7 +392,7 @@ fapi::ReturnCode getVersion  (const fapi::Target    & i_mbaTarget,
-     fapi::Target l_mbTarget;
-     fapi::MBvpdKeyword l_keyword = fapi::MBVPD_KEYWORD_VM;  // try VM first
-     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX; // default to SPDX
--    MBvpdVMKeyword l_vmVersionBuf={};
-+    MBvpdVMKeyword l_vmVersionBuf;
-     uint32_t l_version = 0;
-     uint32_t l_vmBufSize = sizeof(MBvpdVMKeyword); // VM keyword is of 4 bytes.
-     uint16_t l_versionBuf = 0;
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0010-Use-std-gnu-03-for-host-g-invocations.patch b/openpower/package/hostboot-p8/0010-Use-std-gnu-03-for-host-g-invocations.patch
deleted file mode 100644
index a9cef3f..0000000
--- a/openpower/package/hostboot-p8/0010-Use-std-gnu-03-for-host-g-invocations.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 9852975319c864b47759cc8d7814bf6f9f0f1f4c Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.vnet.ibm.com>
-Date: Thu, 3 Nov 2016 14:36:19 +1100
-Subject: [PATCH 10/10] Use -std=gnu++03 for host g++ invocations
-
-Seeing as the ancient GCC on RHEL6 doesn't actually support -std=gnu++03
-we have to go through some hoops to detect it (we use the same magic
-Make as we use in skiboot to do the same)
-
-Change-Id: I338560ae2ebdac842c8055c07519d542564c3923
-Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
----
- src/usr/hwpf/makefile | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile
-index 8d0bb72..ee8cf13 100644
---- a/src/usr/hwpf/makefile
-+++ b/src/usr/hwpf/makefile
-@@ -5,7 +5,7 @@
- #
- # OpenPOWER HostBoot Project
- #
--# Contributors Listed Below - COPYRIGHT 2011,2015
-+# Contributors Listed Below - COPYRIGHT 2011,2016
- # [+] International Business Machines Corp.
- #
- #
-@@ -402,18 +402,26 @@ $(call GENTARGET, ${IF_CMP_FLEX_TARGET}) : \
- 	$(C2) "    FLEX       $(notdir $<)"
- 	$(C1)flex -o$@ $^
- 
-+try = $(shell set -e; if ($(1)) >/dev/null 2>&1; \
-+        then echo "$(2)"; \
-+        else echo "$(3)"; fi )
-+
-+try-cflag = $(call try,$(1) $(2) -x c -c /dev/null -o /dev/null,$(2))
-+HOSTCFLAGS:=-O3
-+HOSTCFLAGS+=$(call try-cflag,$(HOST_PREFIX)g++,-std=gnu++03)
-+
- $(GENDIR)/$(IF_CMP_SUBDIR)/%.host.o: \
- 	    ifcompiler/%.C $(IF_COMPILER_H_FILES) \
- 	    $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
- 	$(C2) "    CXX        $(notdir $<)"
--	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
-+	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
- 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
- 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
- 
- $(GENDIR)/$(IF_CMP_YACC_C_TARGET:.c=.host.o): \
-     $(GENDIR)/$(IF_CMP_YACC_C_TARGET) $(IF_COMPILER_H_FILES)
- 	$(C2) "    CXX        $(notdir $<)"
--	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
-+	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
- 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
- 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
- 
-@@ -421,7 +429,7 @@ $(GENDIR)/$(IF_CMP_FLEX_TARGET:.c=.host.o): \
-     $(GENDIR)/$(IF_CMP_FLEX_TARGET) $(IF_COMPILER_H_FILES) \
-     $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
- 	$(C2) "    CXX        $(notdir $<)"
--	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
-+	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
- 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
- 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
- 
--- 
-2.7.4
-
diff --git a/openpower/package/hostboot-p8/0012-kernel-Update-assembly-for-modern-binutils.patch b/openpower/package/hostboot-p8/0012-kernel-Update-assembly-for-modern-binutils.patch
deleted file mode 100644
index 2c51fd3..0000000
--- a/openpower/package/hostboot-p8/0012-kernel-Update-assembly-for-modern-binutils.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 63c3b788eebfa28f0b4032c209e90cc2df7b2c98 Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel.stanley@au1.ibm.com>
-Date: Tue, 27 Jun 2017 18:00:09 +0930
-Subject: [PATCH] kernel: Update assembly for modern binutils
-
-From Linux 80f23935cadb ("powerpc: Convert cmp to cmpd in idle enter sequence"):
-
-  PowerPC's "cmp" instruction has four operands. Normally people write
-  "cmpw" or "cmpd" for the second cmp operand 0 or 1. But, frequently
-  people forget, and write "cmp" with just three operands.
-
-  With older binutils this is silently accepted as if this was "cmpw",
-  while often "cmpd" is wanted. With newer binutils GAS will complain
-  about this for 64-bit code. For 32-bit code it still silently assumes
-  "cmpw" is what is meant.
-
-The first two instances are dealing with SPRs, which are 32-bit, so cmpw is correct.
-
-It is not clear what to do in the third use of cmp, but given old toolchains
-have generated cmpw lets assume that we should maintain the behaviour.
-
-Change-Id: Iee5dd5903dcd7ac4028bab0176e08ce3db23b2d5
-Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
----
- src/kernel/shutdown.S | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/src/kernel/shutdown.S b/src/kernel/shutdown.S
-index 629645b26c81..cad5c66b8137 100644
---- a/src/kernel/shutdown.S
-+++ b/src/kernel/shutdown.S
-@@ -5,7 +5,9 @@
- #
- # OpenPOWER HostBoot Project
- #
--# COPYRIGHT International Business Machines Corp. 2012,2014
-+# Contributors Listed Below - COPYRIGHT 2012,2017
-+# [+] International Business Machines Corp.
-+#
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-@@ -92,7 +94,7 @@ kernel_shutdown_ea0_1_mode:
-         ;// as it was the one that updated the cpu_count & lowest_pir
-         ;// barrier - 1 wait for all nodes to report
-     mfspr  r10, PIR
--    cmp    cr0, r10, r7
-+    cmpw    cr0, r10, r7
-     bne+ 2f       ;// inside KERNEL_BARRIER below
- 
-         ;// Perform barrier - 1
-@@ -131,7 +133,7 @@ kernel_shutdown_ea0_1_mode:
-     addi r8, r8, 8
-             ;// Check for PIR == r7.
-     mfspr r10, PIR
--    cmp cr0, r10, r7
-+    cmpw cr0, r10, r7
-     beq 3f
-         ;// Increment thread count.
- 1:
-@@ -164,7 +166,7 @@ kernel_shutdown_ea0_1_mode:
- 1:
-     or 1,1,1
-     ld r11, 0(r8)
--    cmp cr0, r3, r11
-+    cmpw cr0, r3, r11
-     bne+ 1b
-     isync
-         ;// All other threads have left, so wait a little bit...
--- 
-2.13.1
-
diff --git a/openpower/package/hostboot-p8/Config.in b/openpower/package/hostboot-p8/Config.in
deleted file mode 100644
index 4dacfab..0000000
--- a/openpower/package/hostboot-p8/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_PACKAGE_HOSTBOOT_P8
-        bool "hostboot-p8"
-        default y if (BR2_OPENPOWER_POWER8)
-        select BR2_CPP
-        help
-            Project to build the hostboot firmware codebase
-
-if BR2_PACKAGE_HOSTBOOT_P8
-
-config BR2_HOSTBOOT_P8_CONFIG_FILE
-        string "Hostboot configuration file for compilation"
-        default default
-        help
-            String used to define hw specific make config file
-
-endif
-
diff --git a/openpower/package/hostboot-p8/hostboot-p8.mk b/openpower/package/hostboot-p8/hostboot-p8.mk
deleted file mode 100644
index 238e7af..0000000
--- a/openpower/package/hostboot-p8/hostboot-p8.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-################################################################################
-#
-# hostboot for POWER8
-#
-################################################################################
-HOSTBOOT_P8_VERSION ?= 3267aff2bc1fe97fdf3dc5ab1d210b8d6a2e74eb
-
-HOSTBOOT_P8_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_P8_VERSION))
-
-HOSTBOOT_P8_LICENSE = Apache-2.0
-HOSTBOOT_P8_LICENSE_FILES = LICENSE
-HOSTBOOT_P8_DEPENDENCIES = host-binutils
-
-HOSTBOOT_P8_INSTALL_IMAGES = YES
-HOSTBOOT_P8_INSTALL_TARGET = NO
-
-HOSTBOOT_P8_ENV_VARS=$(TARGET_MAKE_ENV) \
-    CONFIG_FILE=$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/hostboot/$(BR2_HOSTBOOT_P8_CONFIG_FILE) \
-    OPENPOWER_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) HOST_PREFIX="" HOST_BINUTILS_DIR=$(HOST_BINUTILS_DIR) \
-    HOSTBOOT_P8_VERSION=`cat $(HOSTBOOT_P8_VERSION_FILE)` 
-
-HOSTBOOT_P8_POST_PATCH_HOOKS += HOSTBOOT_P8_APPLY_PATCHES
-
-define HOSTBOOT_P8_BUILD_CMDS
-        $(HOSTBOOT_P8_ENV_VARS) bash -c 'cd $(@D) && source ./env.bash && $(MAKE)'
-endef
-
-define HOSTBOOT_P8_INSTALL_IMAGES_CMDS
-        cd $(@D) && source ./env.bash && $(@D)/src/build/tools/hbDistribute --openpower $(STAGING_DIR)/hostboot_build_images/
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/machine-xml/Config.in b/openpower/package/machine-xml/Config.in
index c1064d7..8f4c61b 100755
--- a/openpower/package/machine-xml/Config.in
+++ b/openpower/package/machine-xml/Config.in
@@ -3,7 +3,6 @@
 config BR2_PACKAGE_MACHINE_XML
         bool "machine_xml"
         default y if (BR2_OPENPOWER_PLATFORM)
-        select BR2_PACKAGE_COMMON_P8_XML if (BR2_OPENPOWER_POWER8)
 
 choice
 	prompt "Machine XML location"
diff --git a/openpower/package/machine-xml/machine-xml.mk b/openpower/package/machine-xml/machine-xml.mk
index 4d31c4f..cca8630 100644
--- a/openpower/package/machine-xml/machine-xml.mk
+++ b/openpower/package/machine-xml/machine-xml.mk
@@ -18,9 +18,6 @@
 ifeq ($(BR2_OPENPOWER_POWER9),y)
 MACHINE_XML_DEPENDENCIES += hostboot
 endif
-ifeq ($(BR2_OPENPOWER_POWER8),y)
-MACHINE_XML_DEPENDENCIES += hostboot-p8 openpower-mrw common-p8-xml
-endif
 
 MACHINE_XML_INSTALL_IMAGES = YES
 MACHINE_XML_INSTALL_TARGET = YES
diff --git a/openpower/package/occ-p8/Config.in b/openpower/package/occ-p8/Config.in
deleted file mode 100644
index 3fb3b86..0000000
--- a/openpower/package/occ-p8/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_PACKAGE_OCC_P8
-        bool "OCC for P8"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_OPENPOWER_POWER8)
-        depends on BR2_PACKAGE_HAS_P8_PORE_TOOLCHAIN
-        select BR2_CPP
-        help
-            Project to build OCC
-
-if BR2_PACKAGE_OCC_P8
-
-config BR2_OCC_P8_BIN_FILENAME
-        string "Name of OCC P8 image file"
-	default "occ.bin"
-        help
-            String used to define name of the OCC binary image file
-
-endif
diff --git a/openpower/package/occ-p8/occ-p8.mk b/openpower/package/occ-p8/occ-p8.mk
deleted file mode 100644
index 7630497..0000000
--- a/openpower/package/occ-p8/occ-p8.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-################################################################################
-#
-# occ for power8
-#
-################################################################################
-
-OCC_P8_VERSION ?= 841e28add2a39f0b446a9513fa1fe59e4798177a
-OCC_P8_SITE ?= $(call github,open-power,occ,$(OCC_P8_VERSION))
-OCC_P8_LICENSE = Apache-2.0
-
-OCC_P8_LICENSE_FILES = src/LICENSE
-
-OCC_P8_INSTALL_IMAGES = YES
-OCC_P8_INSTALL_TARGET = NO
-
-OCC_P8_STAGING_DIR = $(STAGING_DIR)/occ
-
-OCC_P8_IMAGE_BIN_PATH = src/image.bin
-OCC_P8_DEPENDENCIES = host-binutils host-p8-pore-toolchain
-
-define OCC_P8_BUILD_CMDS
-        cd $(@D)/src && \
-        make POREPATH=$(P8_PORE_BINUTILS_BIN)/bin/ OCC_OP_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) all && \
-        make tracehash && \
-        make combineImage
-endef
-
-OCC_P8_BUILD_CMDS ?= $(OCC_P8_BUILD_CMDS_P8)
-
-define OCC_P8_INSTALL_IMAGES_CMDS
-       mkdir -p $(STAGING_DIR)/occ
-       cp $(@D)/$(OCC_P8_IMAGE_BIN_PATH) $(OCC_P8_STAGING_DIR)/$(BR2_OCC_P8_BIN_FILENAME)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/openpower-mrw/Config.in b/openpower/package/openpower-mrw/Config.in
deleted file mode 100644
index ea052b4..0000000
--- a/openpower/package/openpower-mrw/Config.in
+++ /dev/null
@@ -1,3 +0,0 @@
-config BR2_PACKAGE_OPENPOWER_MRW
-        bool "Machine Readable Workbook (MRW) infrastructure"
-        default y if BR2_PACKAGE_HOSTBOOT_P8
diff --git a/openpower/package/openpower-mrw/openpower-mrw.mk b/openpower/package/openpower-mrw/openpower-mrw.mk
deleted file mode 100644
index e70cbd6..0000000
--- a/openpower/package/openpower-mrw/openpower-mrw.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-################################################################################
-#
-# openpower-mrw
-#
-################################################################################
-
-OPENPOWER_MRW_VERSION = 0729a4a68c0e731a8d3720f1a5aee190d165400b
-OPENPOWER_MRW_SITE = $(call github,open-power,openpower-mrw,$(OPENPOWER_MRW_VERSION))
-
-OPENPOWER_MRW_LICENSE = Apache-2.0
-OPENPOWER_MRW_LICENSE_FILES = LICENSE
-OPENPOWER_MRW_DEPENDENCIES =
-
-OPENPOWER_MRW_INSTALL_IMAGES = YES
-OPENPOWER_MRW_INSTALL_TARGET = NO
-
-OPENPOWER_MRW_ENV_VARS=INSTALL_DIRECTORY=$(STAGING_DIR)/usr/bin/
-
-define OPENPOWER_MRW_BUILD_CMDS
-        $(OPENPOWER_MRW_ENV_VARS) bash -c 'cd $(@D) && $(MAKE)'
-endef
-
-define OPENPOWER_MRW_INSTALL_IMAGES_CMDS
-        $(OPENPOWER_MRW_ENV_VARS) bash -c 'cd $(@D) && $(MAKE) install'
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index 82280f5..6311b50 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -1,13 +1,11 @@
 config BR2_PACKAGE_OPENPOWER_PNOR
         bool "openpower_pnor"
         default y if (BR2_OPENPOWER_PLATFORM)
-        select BR2_PACKAGE_HOSTBOOT if !BR2_OPENPOWER_POWER8
-        select BR2_PACKAGE_HOSTBOOT_P8 if BR2_OPENPOWER_POWER8
+        select BR2_PACKAGE_HOSTBOOT
         select BR2_PACKAGE_HOSTBOOT_BINARIES
         select BR2_PACKAGE_SKIBOOT
         select BR2_PACKAGE_OPENPOWER_FFS
-        select BR2_PACKAGE_OCC if !BR2_OPENPOWER_POWER8
-        select BR2_PACKAGE_OCC_P8 if BR2_OPENPOWER_POWER8
+        select BR2_PACKAGE_OCC
         select BR2_PACKAGE_CAPP_UCODE
         select BR2_PACKAGE_IMA_CATALOG
         select BR2_PACKAGE_HOST_OPENPOWER_VPNOR
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index 098f02b..7efe895 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -48,8 +48,6 @@
 
 ifeq ($(BR2_OPENPOWER_POWER9),y)
     OPENPOWER_RELEASE=p9
-else
-    OPENPOWER_RELEASE=p8
 endif
 
 OPENPOWER_PNOR_INSTALL_IMAGES = YES
@@ -83,9 +81,7 @@
 
 # Subpackages we want to include in the version info (do not include openpower-pnor)
 OPENPOWER_VERSIONED_SUBPACKAGES = skiboot
-ifeq ($(BR2_PACKAGE_HOSTBOOT_P8),y)
-OPENPOWER_VERSIONED_SUBPACKAGES += hostboot-p8 occ-p8
-endif
+
 ifeq ($(BR2_PACKAGE_HOSTBOOT),y)
 OPENPOWER_VERSIONED_SUBPACKAGES += hostboot occ
 endif
@@ -100,9 +96,7 @@
     OPENPOWER_VERSIONED_SUBPACKAGES += sbe hcode
 endif
 
-ifeq ($(BR2_PACKAGE_OCC_P8),y)
-    OCC_BIN_FILENAME=$(BR2_OCC_P8_BIN_FILENAME)
-else
+ifeq ($(BR2_PACKAGE_OCC),y)
     OCC_BIN_FILENAME=$(BR2_OCC_BIN_FILENAME)
 endif
 
diff --git a/openpower/package/p8-pore-binutils/Config.in b/openpower/package/p8-pore-binutils/Config.in
deleted file mode 100644
index db06064..0000000
--- a/openpower/package/p8-pore-binutils/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_HOST_P8_PORE_BINUTILS
-        bool "p8-pore-binutils"
-        select BR2_PACKAGE_HAS_P8_PORE_TOOLCHAIN
-        select BR2_CPP
-        help
-            Project to build the P8 PORE binutils
-
-if BR2_PACKAGE_HOST_P8_PORE_BINUTILS
-config BR2_PACKAGE_PROVIDES_P8_PORE_TOOLCHAIN
-        default "p8-pore-binutils"
-endif
diff --git a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
deleted file mode 100644
index 00477a6..0000000
--- a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-################################################################################
-#
-# p8-pore-binutils
-#
-################################################################################
-
-P8_PORE_BINUTILS_VERSION ?= 91069b732e4c253055cd94fff6ad179116563df9
-P8_PORE_BINUTILS_SITE ?= $(call github,open-power,p8-pore-binutils,$(P8_PORE_BINUTILS_VERSION))
-P8_PORE_BINUTILS_LICENSE = GPLv3+
-P8_PORE_BINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB
-P8_PORE_BINUTILS_PROVIDES = p8-pore-toolchain
-HOST_P8_PORE_BINUTILS_DEPENDENCIES = host-binutils
-
-P8_PORE_BINUTILS_DIR = $(HOST_DIR)/$(P8_PORE_TOOLCHAIN_DIR)
-P8_PORE_BINUTILS_BIN = $(HOST_DIR)/$(P8_PORE_TOOLCHAIN_BIN)
-
-define HOST_P8_PORE_BINUTILS_BUILD_CMDS
-        cd $(@D) && \
-        ./configure --prefix=$(P8_PORE_BINUTILS_DIR) \
-                    --exec-prefix=$(P8_PORE_BINUTILS_BIN) \
-                    --target=pore-elf64 && \
-        make configure-host && \
-        make CFLAGS=-Wno-error LDFLAGS=-all-static
-endef
-
-define HOST_P8_PORE_BINUTILS_INSTALL_CMDS
-        bash -c 'cd $(@D) && make install'
-endef
-
-$(eval $(host-generic-package))
diff --git a/openpower/package/p8-pore-toolchain-external/Config.in b/openpower/package/p8-pore-toolchain-external/Config.in
deleted file mode 100644
index cad96c0..0000000
--- a/openpower/package/p8-pore-toolchain-external/Config.in
+++ /dev/null
@@ -1,19 +0,0 @@
-config BR2_PACKAGE_P8_PORE_TOOLCHAIN_EXTERNAL
-	bool "p8-pore-toolchain-external"
-	select BR2_PACKAGE_HAS_P8_PORE_TOOLCHAIN
-	help
-	  Use an external P8 PORE toolchain
-
-if BR2_PACKAGE_P8_PORE_TOOLCHAIN_EXTERNAL
-config BR2_PACKAGE_PROVIDES_P8_PORE_TOOLCHAIN
-	default "p8-pore-toolchain-external"
-
-config BR2_P8_PORE_TOOLCHAIN_EXTERNAL_PATH
-	string "External P8 PORE toolchain path"
-	help
-	  Pathname to where the external P8 PORE toolchain
-	  is installed. The binutils are expected to be
-	  fully contained within the
-	  "sysroot/p8-pore-toolchain" directory
-endif
-
diff --git a/openpower/package/p8-pore-toolchain-external/p8-pore-toolchain-external.mk b/openpower/package/p8-pore-toolchain-external/p8-pore-toolchain-external.mk
deleted file mode 100644
index c88864a..0000000
--- a/openpower/package/p8-pore-toolchain-external/p8-pore-toolchain-external.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-################################################################################
-#
-# p8-pore-toolchain-external
-#
-################################################################################
-P8_PORE_TOOLCHAIN_EXTERNAL_REDISTRIBUTE = NO
-P8_PORE_TOOLCHAIN_EXTERNAL_SITE =
-P8_PORE_TOOLCHAIN_EXTERNAL_SOURCE =
-P8_PORE_TOOLCHAIN_EXTERNAL_PROVIDES = p8-pore-toolchain
-P8_PORE_TOOLCHAIN_EXTERNAL_PATH = \
-	$(call qstrip,$(BR2_P8_PORE_TOOLCHAIN_EXTERNAL_PATH))/$(P8_PORE_TOOLCHAIN_DIR)
-
-define HOST_P8_PORE_TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
-	test -e $(P8_PORE_TOOLCHAIN_EXTERNAL_PATH)
-endef
-
-define HOST_P8_PORE_TOOLCHAIN_EXTERNAL_INSTALL_CMDS
-	ln -snf $(P8_PORE_TOOLCHAIN_EXTERNAL_PATH) $(HOST_DIR)/$(P8_PORE_TOOLCHAIN_DIR)
-
-endef
-
-$(eval $(host-generic-package))
diff --git a/openpower/package/sb-signing-utils/keys/README.md b/openpower/package/sb-signing-utils/keys/README.md
index f70e6c2..b4c4835 100644
--- a/openpower/package/sb-signing-utils/keys/README.md
+++ b/openpower/package/sb-signing-utils/keys/README.md
@@ -2,7 +2,7 @@
 
 ## Background
 
-IBM P8 OpenPOWER systems support a limited set of Secure and Trusted Boot
+IBM P9 OpenPOWER systems support a limited set of Secure and Trusted Boot
 functionality.  Secure Boot implements a processor based chain of trust.  The
 chain starts with an implicitly trusted component with other components being
 authenticated and integrity checked before being executed on the host processor
@@ -10,7 +10,7 @@
 for Measurement (CRTM).  Immutable Read Only Memory (ROM - fixed in the POWER
 processor chip) verifies the initial firmware load.  That firmware verifies
 cryptographic signatures on all subsequent "to be trusted" firmware that is
-loaded for execution on the P8 cores.  Trusted Boot also makes use of this same
+loaded for execution on the P9 cores.  Trusted Boot also makes use of this same
 CRTM by measuring and recording FW images via a Trusted Platform Module (TPM)
 before control is passed on to the next layer in the boot stack.  The CRTM
 design is based on a Public Key Infrastructure (PKI) process to validate the
@@ -20,7 +20,7 @@
 hypervisors, and operating systems.  Each platform manufacturer wants to
 maintain control over its own code and sign it with its own keys.  A single key
 hash is stored in host processor module SEEPROM representing the anchoring root
-set of hardware keys.  The P8 Trusted Boot supports a key management flow that
+set of hardware keys.  The P9 Trusted Boot supports a key management flow that
 makes use of two kinds of hardware root keys, a wide open, well-known, openly
 published public/private key pair (imprint keys) and a set of production keys
 where the private key is protected by a hardware security module (HSM) internal
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0001-Memory-Interleaving-Grouping-change-for-p8dtu.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0001-Memory-Interleaving-Grouping-change-for-p8dtu.patch
deleted file mode 100644
index acdb1c0..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0001-Memory-Interleaving-Grouping-change-for-p8dtu.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From e6db702ece6f5d13c7d0b288203a0715b4a2a35b Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 18 Oct 2016 16:08:13 -0700
-Subject: [PATCH 01/14] Memory Interleaving Grouping change for p8dtu. Allow
- not adjacent pair for p8dtu.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/targeting/common/xmltohb/attribute_types.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
-index 0fc5f4eac..d7fc183a4 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
-@@ -13812,7 +13812,7 @@ firmware notes: Platforms should initialize this attribute to AUTO (0)</descript
-     </description>
-     <simpleType>
-         <uint8_t>
--        <default>1</default>
-+        <default>0</default>
-         </uint8_t>
-     </simpleType>
-     <persistency>non-volatile</persistency>
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0002-Support-130W-Turismo-Parts.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0002-Support-130W-Turismo-Parts.patch
deleted file mode 100644
index 9b3c4b0..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0002-Support-130W-Turismo-Parts.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3040a458385e82d7d9edf7b926fcdba641d0a048 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 18 Oct 2016 16:12:21 -0700
-Subject: [PATCH 02/14] Support 130W Turismo Parts.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/targeting/common/xmltohb/attribute_types.xml | 2 +-
- src/usr/targeting/common/xmltohb/target_types.xml    | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
-index d7fc183a4..0f0e2f6a7 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
-@@ -15890,7 +15890,7 @@ firmware notes: Platforms should initialize this attribute to AUTO (0)</descript
-     <simpleType>
-         <enumeration>
-             <id>MRW_NEST_CAPABLE_FREQUENCIES_SYS</id>
--            <default>UNSUPPORTED_FREQ</default>
-+            <default>2000_MHZ_OR_2400_MHZ</default>
-         </enumeration>
-     </simpleType>
-     <persistency>non-volatile</persistency>
-diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
-index b28607ca2..a150ce64d 100644
---- a/src/usr/targeting/common/xmltohb/target_types.xml
-+++ b/src/usr/targeting/common/xmltohb/target_types.xml
-@@ -681,7 +681,7 @@
-     </attribute>
-     <attribute>
-         <id>DEFAULT_PROC_MODULE_NEST_FREQ_MHZ</id>
--        <default>2400</default>
-+        <default>2000</default>
-     </attribute>
- </targetType>
- 
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0003-Add-support-for-memory-voltage-control-for-p8dtu.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0003-Add-support-for-memory-voltage-control-for-p8dtu.patch
deleted file mode 100644
index 4f6b021..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0003-Add-support-for-memory-voltage-control-for-p8dtu.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 783332cc9afcf3c8581760112162b650a9e01c7e Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 4 Oct 2016 16:07:44 -0700
-Subject: [PATCH 03/14] Adds support for memory voltage control specific to the p8dtu platform.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/hwpf/hwp/dram_training/palmetto_vddr.C | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C b/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C
-index b0f6bed4c..95c3924b8 100644
---- a/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C
-+++ b/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C
-@@ -168,6 +168,7 @@ static errlHndl_t for_each_vddr_domain_with_functional_memory(
-     std::sort(l_membufTargetList.begin(), l_membufTargetList.end(),
-         compareTargetsGpioInfos);
- 
-+/*
-     // Prune out targets with non-unique GPIO info
-     std::vector<TARGETING::TargetHandle_t>::iterator
-         pInvalidEntries = std::unique(
-@@ -175,6 +176,7 @@ static errlHndl_t for_each_vddr_domain_with_functional_memory(
-             l_membufTargetList.end(),
-             areTargetsGpioInfoEqual);
-     l_membufTargetList.erase(pInvalidEntries,l_membufTargetList.end());
-+*/
- 
-     // Invoke callback for one Centaur per unique VDDR domain
-     for (TargetHandleList::iterator
-@@ -274,6 +276,7 @@ static errlHndl_t pca95xGpioWriteBit(TARGETING::Target * i_target,
-                            i_val);
- 
-     // Configure gpio bit as output (if necessary).
-+/*    
-     if(!err)
-     {
-         err = pca95xGpioSetBit(i_target,
-@@ -281,6 +284,7 @@ static errlHndl_t pca95xGpioWriteBit(TARGETING::Target * i_target,
-                                i_gpio_pin,
-                                PCA95X_GPIO_CONFIG_OUTPUT);
-     }
-+*/
- 
-     return err;
- }
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0004-change-esel-command-netfn-to-IBM-0x3a.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0004-change-esel-command-netfn-to-IBM-0x3a.patch
deleted file mode 100644
index 3215bc2..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0004-change-esel-command-netfn-to-IBM-0x3a.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From eee0dcae475618bef686198baf28c750de9a63a5 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 11 Oct 2016 10:00:15 -0700
-Subject: [PATCH 04/14] change esel command netfn to IBM 0x3a
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/include/usr/ipmi/ipmiif.H | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/include/usr/ipmi/ipmiif.H b/src/include/usr/ipmi/ipmiif.H
-index 5c2444f26..94fca5fb6 100644
---- a/src/include/usr/ipmi/ipmiif.H
-+++ b/src/include/usr/ipmi/ipmiif.H
-@@ -265,7 +265,7 @@ namespace IPMI
- 
-     //AMI-specific storage messages
-     inline const command_t partial_add_esel(void)
--    { return std::make_pair(NETFUN_AMI, 0xf0); }
-+	{ return std::make_pair(NETFUN_IBM, 0xf0); }
- 
-     // event messages
-     inline const command_t platform_event(void)
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0005-change-pnor-response-command-to-0x7.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0005-change-pnor-response-command-to-0x7.patch
deleted file mode 100644
index 943b471..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0005-change-pnor-response-command-to-0x7.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 50ae9cf95223a5f6492e7e515ccef9d4499ef823 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 11 Oct 2016 10:03:01 -0700
-Subject: [PATCH 05/14] change pnor response command to 0x7
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/include/usr/ipmi/ipmiif.H | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/include/usr/ipmi/ipmiif.H b/src/include/usr/ipmi/ipmiif.H
-index 94fca5fb6..4b41cb3bc 100644
---- a/src/include/usr/ipmi/ipmiif.H
-+++ b/src/include/usr/ipmi/ipmiif.H
-@@ -289,7 +289,7 @@ namespace IPMI
-     { return std::make_pair(NETFUN_IBM, 0x07); }
- 
-     inline const command_t pnor_response(void)
--    { return std::make_pair(NETFUN_IBM, 0x08); }
-+	{ return std::make_pair(NETFUN_IBM, 0x07); }
- 
-     inline const command_t hiomap_event(void)
-     { return std::make_pair(NETFUN_IBM, 0x0f); }
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0006-send-board-ID-to-ipmi.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0006-send-board-ID-to-ipmi.patch
deleted file mode 100644
index 58ddb2d..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0006-send-board-ID-to-ipmi.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 73ba34b74551c5f61a1f2c93f48a7f59cb576cd6 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 11 Oct 2016 10:26:14 -0700
-Subject: [PATCH 06/14] send board ID to ipmi
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/include/usr/ipmi/ipmiif.H                      |  6 ++++-
- src/include/usr/ipmi/ipmipowerstate.H              |  2 +-
- .../initservice/istepdispatcher/istepdispatcher.C  | 11 ++++++++
- src/usr/ipmiext/ipmipowerstate.C                   | 29 ++++++++++++++++++++++
- 4 files changed, 46 insertions(+), 2 deletions(-)
-
-diff --git a/src/include/usr/ipmi/ipmiif.H b/src/include/usr/ipmi/ipmiif.H
-index 4b41cb3bc..8039adbf7 100644
---- a/src/include/usr/ipmi/ipmiif.H
-+++ b/src/include/usr/ipmi/ipmiif.H
-@@ -299,7 +299,11 @@ namespace IPMI
-     // user defined power limit from the BMC.
-     inline const command_t get_power_limit(void)
-     { return std::make_pair(NETFUN_GRPEXT, 0x03); }
--
-+	
-+	//SMC	  
-+	inline const command_t set_board_id(void)
-+	{ return std::make_pair(NETFUN_NONE, 0x20); }
-+	
-     // Some helper messages
-     // Used to create an empty message for reception
-     inline const command_t no_command(void)
-diff --git a/src/include/usr/ipmi/ipmipowerstate.H b/src/include/usr/ipmi/ipmipowerstate.H
-index b65275075..e943e8b66 100644
---- a/src/include/usr/ipmi/ipmipowerstate.H
-+++ b/src/include/usr/ipmi/ipmipowerstate.H
-@@ -78,7 +78,7 @@ enum ACPI_DEVICE_POWER_STATE_TO_SET
-  */
- errlHndl_t setACPIPowerState();
- 
--
-+errlHndl_t SmcsetBoardId();
- } // namespace
- 
- #endif
-diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
-index 16f1c8a01..0f9731094 100644
---- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
-+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
-@@ -284,6 +284,17 @@ void IStepDispatcher::init(errlHndl_t &io_rtaskRetErrl)
-             err_ipmi->collectTrace("INITSVC", 1024);
-             errlCommit(err_ipmi, INITSVC_COMP_ID );
-         }
-+		//send board ID
-+		errlHndl_t err_ipmi1 = IPMI::SmcsetBoardId();
-+		
-+		if(err_ipmi1)
-+		{
-+		TRACFCOMP(g_trac_initsvc,
-+						   "init: ERROR: IPMI set Board Id Failed");
-+			 err_ipmi->collectTrace("INITSVC", 1024);
-+			 errlCommit(err_ipmi1, INITSVC_COMP_ID );
-+		 }
-+		
- #endif
- 
- 
-diff --git a/src/usr/ipmiext/ipmipowerstate.C b/src/usr/ipmiext/ipmipowerstate.C
-index 30c2a70ef..f8e61f82b 100644
---- a/src/usr/ipmiext/ipmipowerstate.C
-+++ b/src/usr/ipmiext/ipmipowerstate.C
-@@ -50,6 +50,35 @@ namespace IPMI
- /******************************************************************************/
- // Functions
- /******************************************************************************/
-+errlHndl_t SmcsetBoardId()
-+{
-+    errlHndl_t err_ipmi = NULL;
-+
-+    size_t len = 10; 
-+
-+    //create request data buffer
-+    uint8_t* data = new uint8_t[len];
-+
-+    IPMI::completion_code cc = IPMI::CC_UNKBAD;
-+    //P8DTU board ID 0933
-+    data[0] = 0x33;
-+    data[1] = 0x9;
-+    memset(&data[2], 0, 8);
-+    err_ipmi = IPMI::sendrecv(IPMI::set_board_id(), cc, len, data);
-+
-+    //cleanup buffer
-+    delete[] data;
-+
-+    if(cc != IPMI::CC_OK)
-+    {
-+        IPMI_TRAC("Set board id: BMC returned not ok CC[%x]",cc);
-+        // should we log error and then retry?
-+        // what happens if the communication is broken
-+        // reset will try and set it again.
-+    }
-+
-+    return err_ipmi;
-+}
- 
- errlHndl_t setACPIPowerState()
- {
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0007-read-riser-id-from-CPLD.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0007-read-riser-id-from-CPLD.patch
deleted file mode 100644
index af19f74..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0007-read-riser-id-from-CPLD.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 94de2f7f944a2cabbdf699adcbc6679a091ad324 Mon Sep 17 00:00:00 2001
-From: Leoluo <leoluo@supermicro.com>
-Date: Tue, 8 Mar 2016 17:01:26 -0800
-Subject: [PATCH 07/14] read riser id from CPLD
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/include/usr/ipmi/ipmiif.H                  |  3 ++
- src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C | 42 +++++++++++++++++++++++++-
- 2 files changed, 44 insertions(+), 1 deletion(-)
-
-diff --git a/src/include/usr/ipmi/ipmiif.H b/src/include/usr/ipmi/ipmiif.H
-index 8039adbf7..9dfd8ee63 100644
---- a/src/include/usr/ipmi/ipmiif.H
-+++ b/src/include/usr/ipmi/ipmiif.H
-@@ -238,6 +238,9 @@ namespace IPMI
-     inline const command_t get_capabilities(void)
-     { return std::make_pair(NETFUN_APP, 0x36); }
- 
-+    inline const command_t master_readwrite(void)
-+    { return std::make_pair(NETFUN_APP, 0x52); }
-+
- 
-     // Chassis messages
-     inline const command_t chassis_power_off(void)
-diff --git a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C
-index d122ae4de..73f1a0a3f 100644
---- a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C
-+++ b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C
-@@ -58,6 +58,8 @@
- //  MVPD
- #include <devicefw/userif.H>
- #include <vpd/mvpdenums.H>
-+#include <ipmi/ipmiif.H>
-+
- 
- #include <config.h>
- 
-@@ -1743,7 +1745,40 @@ errlHndl_t computeProcPcieConfigAttrs(
-             effectiveLaneSwap[iop] = laneSwap;
-         }
- #endif
--
-+   uint8_t riser_id = 0 ;
-+	errlHndl_t l_err = NULL;
-+	
-+	
-+	size_t len = 4;
-+	
-+	//create request data buffer
-+	uint8_t* data = new uint8_t[len];
-+	
-+	IPMI::completion_code cc = IPMI::CC_UNKBAD;
-+	
-+	data[0] = 0x3;  
-+	data[1] = 0x70;  
-+	data[2] = 0x1;  
-+	data[3] = 0x1;  
-+	l_err = IPMI::sendrecv(IPMI::master_readwrite(), cc, len, data);
-+	
-+	if( l_err == NULL )
-+	{
-+		if( cc == IPMI::CC_OK )
-+		{
-+		riser_id = data[0];
-+		}
-+		
-+		delete[] data;
-+	}
-+
-+
-+       if((i_pProcChipTarget->getAttr<TARGETING::ATTR_HUID>()) == 0x50001 && (riser_id == 0xE) ){	   	
-+		effectiveLaneMask[1][0] = 0xFFFF;
-+	    effectiveLaneMask[1][1] = 0x0000;      
-+          effectiveLaneSwap[1] = 0x0;
-+       	}
-+	   
-         i_pProcChipTarget->setAttr<
-             TARGETING::ATTR_PROC_PCIE_LANE_MASK>(effectiveLaneMask);
- 
-@@ -1797,6 +1832,11 @@ errlHndl_t computeProcPcieConfigAttrs(
-             iopConfig = laneConfigItr->laneConfig;
-             phbActiveMask = laneConfigItr->phbActive;
- 
-+			if((i_pProcChipTarget->getAttr<TARGETING::ATTR_HUID>()) == 0x50001 && (riser_id == 0xE) ){
-+	   	       iopConfig = 0 ;
-+	           phbActiveMask = PHB0_MASK|PHB1_MASK;
-+       	      }
-+
-             // Disable applicable PHBs
-             phbActiveMask &= (~disabledPhbs);
-             (void)_deconfigPhbsBasedOnPciState(
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0008-Fill-board-mfg-time-and-date-in-FRU3.-It-is-read-fro.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0008-Fill-board-mfg-time-and-date-in-FRU3.-It-is-read-fro.patch
deleted file mode 100644
index 41c24b3..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0008-Fill-board-mfg-time-and-date-in-FRU3.-It-is-read-fro.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From ed60d5736559c4e100e5db20de942a584b58b6f0 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Wed, 25 May 2016 15:24:40 -0700
-Subject: [PATCH 08/14] Fill board mfg time and date in FRU3. It is read from
- PVPD:VNDR:IN.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/ipmiext/ipmifruinv.C | 65 +++++++++++++++++++++++++++++++++-----------
- 1 file changed, 49 insertions(+), 16 deletions(-)
-
-diff --git a/src/usr/ipmiext/ipmifruinv.C b/src/usr/ipmiext/ipmifruinv.C
-index 23aaf9b97..11fbd7677 100644
---- a/src/usr/ipmiext/ipmifruinv.C
-+++ b/src/usr/ipmiext/ipmifruinv.C
-@@ -1279,31 +1279,64 @@ errlHndl_t backplaneIpmiFruInv::buildChassisInfoArea(
-     return l_errl;
- }
- 
-+// Quick hexdigit to binary converter.
-+// Hopefull someday to replaced by strtoul
-+uint8_t aschex2bin(char c)
-+{
-+    if(c >= 'a' && c <= 'f')
-+    {
-+        c = c + 10 - 'a';
-+    }
-+    else if (c >= 'A' && c <= 'F')
-+    {
-+        c = c + 10 - 'A';
-+    }
-+    else if (c >= '0' && c <= '9')
-+    {
-+       c -= '0';
-+    }
-+    else return 0;// else it's not a hex digit, return 0
-+
-+    return c;
-+}
-+
-+
- errlHndl_t backplaneIpmiFruInv::buildBoardInfoArea(
-                                               std::vector<uint8_t> &io_data)
- {
-     errlHndl_t l_errl = NULL;
-+	std::vector<uint8_t> oem_data; //jim052316
-+	uint8_t i, data1, data2, data3;//jim052316
- 
-     do {
-         //Set formatting data that goes at the beginning of the record
-         preFormatProcessing(io_data, true);
- 
--        // Set Mfg Build date
--        // Grab VPD data into seperate data vector
--        std::vector<uint8_t> mfgDateData;
--        l_errl = addVpdData(mfgDateData, PVPD::OPFR, PVPD::MB, false, false);
--        if (l_errl)
--        {
--            // The MB keyword was optional on older cards so just ignore
--            //  any errors
--            delete l_errl;
--            l_errl = NULL;
--        }
--        else
--        {
--            // Pass that to the function that sets the Build date
--            setMfgData(io_data, mfgDateData);
--        }
-+        l_errl = addVpdData(oem_data, PVPD::VNDR, PVPD::IN, true);
-+        if (l_errl) { break; }
-+
-+		for (i=0; i < oem_data.size(); i++)
-+		TRACFCOMP(g_trac_ipmi,"Jimdebug board VNDR:IN data is 0x%x", oem_data[i]);
-+
-+		data1 = (aschex2bin(oem_data[5]) << 4) | aschex2bin(oem_data[6]);//jim052416
-+		data2 = (aschex2bin(oem_data[3]) << 4) | aschex2bin(oem_data[4]);
-+		data3 = (aschex2bin(oem_data[1]) << 4) | aschex2bin(oem_data[2]);  
-+
-+		
-+		TRACFCOMP(g_trac_ipmi,"Jimdebug push data1 is 0x%x", data1);
-+		TRACFCOMP(g_trac_ipmi,"Jimdebug push data2 is 0x%x", data2);
-+		TRACFCOMP(g_trac_ipmi,"Jimdebug push data3 is 0x%x", data3);
-+
-+		
-+        io_data.push_back(data1); 
-+        io_data.push_back(data2);
-+        io_data.push_back(data3);
-+
-+
-+        //Set MFG Date/Time - Blank
-+        //io_data.push_back(0x5E); //jim52016
-+        //io_data.push_back(0x9A);
-+        //io_data.push_back(0xA3);
- 
-         //Set Vendor Name - ascii formatted data
-         l_errl = addVpdData(io_data, PVPD::OPFR, PVPD::VN, true);
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0009-Hardcode-DIMM-pairing-for-RAS.-Fix-the-issue-that-MB.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0009-Hardcode-DIMM-pairing-for-RAS.-Fix-the-issue-that-MB.patch
deleted file mode 100644
index c6f4a1c..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0009-Hardcode-DIMM-pairing-for-RAS.-Fix-the-issue-that-MB.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 9d8e17897f398f1f750c87c4dcf58fe9e64ffed9 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Thu, 7 Jul 2016 15:53:31 -0700
-Subject: [PATCH 09/14] Hardcode DIMM pairing for RAS. Fix the issue that MBA0
- Memory UE on Cenatur Chip4 brought all dimms under Proc2 offline.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/hwas/common/deconfigGard.C | 19 ++++++++++++++++++-
- 1 file changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
-index fa266c881..bd4e4fe4c 100644
---- a/src/usr/hwas/common/deconfigGard.C
-+++ b/src/usr/hwas/common/deconfigGard.C
-@@ -980,8 +980,25 @@ Target * findPartnerForMcs(const Target *i_startMcs)
-     // Declare partner MCS CHIP_UNIT
-     ATTR_CHIP_UNIT_type partnerMcsUnit = 0;
- 
-+	// Add temp code to handle different MCS pairing
-+	if (startMcsUnit == 0)
-+	{
-+		partnerMcsUnit = 4;
-+	}
-+	else if (startMcsUnit == 1)
-+	{
-+		partnerMcsUnit = 5;
-+	}
-+	else if (startMcsUnit == 4)
-+	{
-+		partnerMcsUnit = 0;
-+	}
-+	else if (startMcsUnit == 5)
-+	{
-+		partnerMcsUnit = 1;
-+	}
-     // If CHIP_UNIT is even, its partner will be the next MCS
--    if (!(startMcsUnit % 2))
-+    else if (!(startMcsUnit % 2))
-     {
-         partnerMcsUnit = startMcsUnit + 1;
-     }
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0010-Adjust-APSS-gain-and-offset-from-PWS-FRU-information.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0010-Adjust-APSS-gain-and-offset-from-PWS-FRU-information.patch
deleted file mode 100644
index 172d6ac..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0010-Adjust-APSS-gain-and-offset-from-PWS-FRU-information.patch
+++ /dev/null
@@ -1,308 +0,0 @@
-From bdd6ce1bbfe0ee77feefe84662e961fb253c6195 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Fri, 22 Jul 2016 17:50:57 -0700
-Subject: [PATCH 10/14] Adjust APSS gain and offset from PWS FRU information.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/include/usr/ipmi/ipmiif.H                      |   4 +-
- src/usr/htmgt/htmgt_cfgdata.C                      |   2 +
- src/usr/hwpf/hwp/start_payload/start_payload.C     | 212 +++++++++++++++++++++
- .../common/xmltohb/attribute_types_hb.xml          |   2 +
- 4 files changed, 218 insertions(+), 2 deletions(-)
-
-diff --git a/src/include/usr/ipmi/ipmiif.H b/src/include/usr/ipmi/ipmiif.H
-index 9dfd8ee63..5416ddca0 100644
---- a/src/include/usr/ipmi/ipmiif.H
-+++ b/src/include/usr/ipmi/ipmiif.H
-@@ -251,8 +251,8 @@ namespace IPMI
-     inline const command_t set_sel_time(void)
-     { return std::make_pair(NETFUN_STORAGE, 0x49); }
- 
--    inline const command_t read_fru_data(void)
--    { return std::make_pair(NETFUN_STORAGE, 0x11); }
-+	inline const command_t read_fru_data(void)
-+	{ return std::make_pair(NETFUN_STORAGE, 0x11); }	
- 
-     inline const command_t write_fru_data(void)
-     { return std::make_pair(NETFUN_STORAGE, 0x12); }
-diff --git a/src/usr/htmgt/htmgt_cfgdata.C b/src/usr/htmgt/htmgt_cfgdata.C
-index 19e7b21bf..7c42abdb6 100644
---- a/src/usr/htmgt/htmgt_cfgdata.C
-+++ b/src/usr/htmgt/htmgt_cfgdata.C
-@@ -1025,6 +1025,8 @@ void getApssMessageData(uint8_t* o_data,
-     ATTR_ADC_CHANNEL_OFFSETS_type offset;
-     sys->tryGetAttr<ATTR_ADC_CHANNEL_OFFSETS>(offset);
- 
-+    TMGT_INF("getApssMessageData: gain is %d, offset is %d", gain[15], offset[15]); //jim
-+
-     CPPASSERT(sizeof(function) == sizeof(ground));
-     CPPASSERT(sizeof(function) == sizeof(gain));
-     CPPASSERT(sizeof(function) == sizeof(offset));
-diff --git a/src/usr/hwpf/hwp/start_payload/start_payload.C b/src/usr/hwpf/hwp/start_payload/start_payload.C
-index 5d7865a12..ad155f19e 100644
---- a/src/usr/hwpf/hwp/start_payload/start_payload.C
-+++ b/src/usr/hwpf/hwp/start_payload/start_payload.C
-@@ -88,6 +88,7 @@
- #include    <algorithm>
- #include    <config.h>
- #include    <ipmi/ipmiwatchdog.H>
-+#include    <ipmi/ipmiif.H> //jim
- #include    <vpd/vpd_if.H>
- 
- #include    <hwpf/hwpf_reasoncodes.H>
-@@ -95,6 +96,7 @@
- //  Uncomment these files as they become available:
- // #include    "host_start_payload/host_start_payload.H"
- 
-+
- namespace   START_PAYLOAD
- {
- 
-@@ -277,6 +279,214 @@ errlHndl_t setMaxPstate ( void )
- }
- #endif
- 
-+//jim-start
-+enum
-+{
-+PWS_1600 = 0,
-+PWS_1000 = 1,
-+PWS_1200 = 2,
-+PWS_UNKNOWN = 0xFE,
-+};
-+
-+uint8_t getPSUFRUFromIPMICommands(void)
-+{
-+	errlHndl_t l_err = NULL;
-+	uint8_t* frudata = new uint8_t[120];
-+	size_t len = 4;
-+	uint8_t fru_header_version = 0;
-+	uint8_t j = 0, loop_break = 0, read_offset = 0;
-+	
-+	//create request data buffer
-+	uint8_t* data = new uint8_t[len];
-+	
-+	IPMI::completion_code cc = IPMI::CC_UNKBAD;
-+	
-+	data[0] = 60; //try to read from PWS1. 60-PWS1, 61-PWS2
-+	data[1] = 0x0;  
-+	data[2] = 0x0;  
-+	data[3] = 8;  
-+	l_err = IPMI::sendrecv(IPMI::read_fru_data(), cc, len, data);
-+	
-+	for (uint8_t i = 0; i <= 8; i++ )
-+	fru_header_version = data[1] & 0xF; //normal should be 0x01.
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "fru header version is %x", fru_header_version);
-+	delete[] data;	
-+	
-+	if((l_err == NULL) && (cc == IPMI::CC_OK) && (fru_header_version == 1))
-+	{		
-+		TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "could get FRU from PWS1");
-+
-+		while ((l_err == NULL) && (loop_break == 0) && (read_offset < 100))
-+		{			
-+		//create request data buffer
-+		len = 4; //must set len every time
-+		uint8_t* data = new uint8_t[len];
-+	
-+		IPMI::completion_code cc = IPMI::CC_UNKBAD;
-+	
-+		data[0] = 60;  //read from PWS1
-+		data[1] = read_offset;  
-+		data[2] = 0x0;  
-+		data[3] = 8;  
-+		l_err = IPMI::sendrecv(IPMI::read_fru_data(), cc, len, data);
-+		
-+		if (cc != IPMI::CC_OK) loop_break = 1;
-+		
-+		read_offset += 8;
-+		for (uint8_t i = 1; i <= 8; i++ )
-+			{
-+			frudata[j] = data[i];
-+			j++;
-+			}
-+		delete[] data;	
-+		}
-+		
-+
-+	}
-+	else	
-+	{
-+		TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "could get FRU from PWS2");
-+
-+		while ((l_err == NULL) && (loop_break == 0) && (read_offset < 100))
-+		{			
-+		//create request data buffer
-+		len = 4;//must set len every time
-+		uint8_t* data = new uint8_t[len];
-+	
-+		IPMI::completion_code cc = IPMI::CC_UNKBAD;
-+	
-+		data[0] = 61;  //read from PWS2
-+		data[1] = read_offset;  
-+		data[2] = 0x0;  
-+		data[3] = 8;  
-+		l_err = IPMI::sendrecv(IPMI::read_fru_data(), cc, len, data);
-+		
-+		if (cc != IPMI::CC_OK) loop_break = 1;
-+		
-+		read_offset += 8;
-+		for (uint8_t i = 1; i <= 8; i++ )
-+			{
-+			frudata[j] = data[i];
-+			j++;
-+			}	
-+		delete[] data;
-+		}
-+		
-+	}
-+
-+	uint8_t product_info_offset, manufacture_name_offset, manufacture_name_length, product_name_offset, product_name_length; 
-+	uint8_t product_partnumber_offset, product_partnumber_length;
-+	uint8_t fru_offset, powerSupplyFru = PWS_UNKNOWN;
-+	uint8_t pws1600[] = {'P','W','S','-','1','K','6','2','A','-','1','R'};
-+	uint8_t pws1000[] = {'P','W','S','-','1','K','0','2','A','-','1','R'};
-+	uint8_t pws1200[] = {'P','W','S','-','1','K','2','2','A','-','1','R'};
-+
-+	//code to calculate product part number size and offset. should use structure. refer to FRU spec.		
-+	product_info_offset = frudata[4] * 8;
-+	manufacture_name_offset = product_info_offset + 3;
-+	manufacture_name_length = frudata[manufacture_name_offset] & 0x3F;
-+	product_name_offset = manufacture_name_offset + manufacture_name_length + 1;
-+	product_name_length = frudata[product_name_offset] & 0x3F;
-+	product_partnumber_offset = product_name_offset + product_name_length + 1;
-+	product_partnumber_length = frudata[product_partnumber_offset] & 0x3F;
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "product_partnumber_length is %x", product_partnumber_length);
-+	fru_offset = product_partnumber_offset + 1;
-+	
-+	if (product_partnumber_length == 12)
-+	{
-+		for (uint8_t i = 0; pws1600[i] == frudata[fru_offset + i] ; i ++)
-+			if (i == 11)
-+			powerSupplyFru = PWS_1600;
-+		
-+		for (uint8_t i = 0; pws1000[i] == frudata[fru_offset + i] ; i ++)
-+			if (i == 11)
-+			powerSupplyFru = PWS_1000;
-+		
-+		for (uint8_t i = 0; pws1200[i] == frudata[fru_offset + i] ; i ++)
-+			if (i == 11)
-+			powerSupplyFru = PWS_1200;
-+	}
-+	else	
-+		powerSupplyFru = PWS_UNKNOWN;
-+
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "powerSupplyFru is %x", powerSupplyFru);
-+	
-+	return powerSupplyFru;
-+
-+}
-+//find apss channel number from XML.
-+enum
-+{
-+V12_SENSE = 0,
-+PROC0_POWER = 1,
-+PROC1_POWER = 2,
-+PCIE_PROC0_POWER = 5,
-+PCIE_PROC1_POWER = 6,	
-+TOTAL_SYSTEM_POWER = 15,	
-+};	
-+
-+void setAPSSGainOffsetFromPWSInfo(void)
-+{
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "before load OCC");
-+
-+	//Get Gain/Offset ATTR
-+	TARGETING::Target* sys = NULL;
-+	targetService().getTopLevelTarget(sys);
-+
-+	ATTR_ADC_CHANNEL_GAINS_type gain;
-+	sys->tryGetAttr<ATTR_ADC_CHANNEL_GAINS>(gain);
-+
-+	ATTR_ADC_CHANNEL_OFFSETS_type offset;
-+	sys->tryGetAttr<ATTR_ADC_CHANNEL_OFFSETS>(offset);
-+
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "gain is %d, offset is %d", gain[15], offset[15]);
-+
-+	//Note that the function/ APSS channel ids can be indirect. I've hardcoded here, you will need to look at the XML to find the channel/function number that matches
-+	//const uint8_t SYS_CHANNEL = 15; //APSS Channel 15 is sys power, ie the gain/offset we need to tweak
-+
-+	//Get power supply data from BMC
-+	uint8_t powerSupplyFru = getPSUFRUFromIPMICommands();
-+	
-+	switch(powerSupplyFru)
-+	{
-+	case PWS_1600: //PWS-1K62A-1R (1600W):
-+	gain[TOTAL_SYSTEM_POWER] = 67800;
-+	offset[TOTAL_SYSTEM_POWER] = 0;
-+	break;
-+
-+	case PWS_1000: //PWS-1K02A-1R (1000W):
-+	gain[TOTAL_SYSTEM_POWER] = 41500;
-+	offset[TOTAL_SYSTEM_POWER] = 0;
-+	break;
-+
-+	case PWS_1200: //PWS-1K22A-1R (1200W):
-+	gain[TOTAL_SYSTEM_POWER] = 50000; 
-+	offset[TOTAL_SYSTEM_POWER] = 0;
-+	break;
-+
-+	default:
-+	//Do nothing, leave defaults
-+	//Gen error for user attention?
-+	break;
-+	}
-+
-+	//Now write the attributes back so they get picked up by OCC code
-+	if (!sys->trySetAttr<ATTR_ADC_CHANNEL_GAINS>(gain))
-+	{
-+	//unlikely, crash
-+	//Emit failing trace/console data
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "set gain failed");
-+	assert(0);
-+	}
-+
-+	if (!sys->trySetAttr<ATTR_ADC_CHANNEL_OFFSETS>(offset))
-+	{
-+	//unlikely, crash
-+	//Emit failing trace/console data
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "set offset failed");
-+	assert(0);
-+	}
-+}
- //
- //  Wrapper function to call host_runtime_setup
- //
-@@ -318,6 +528,8 @@ void*    call_host_runtime_setup( void    *io_pArgs )
-             break;
-         }
- 
-+	setAPSSGainOffsetFromPWSInfo(); //jim add code before activate OCC. START_OCC_DURING_BOOT is defined in config.
-+
-         bool l_activateOCC = is_avp_load();
- 
- #ifdef CONFIG_START_OCC_DURING_BOOT
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-index c4eb6603d..64a0c9bae 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-@@ -747,6 +747,7 @@
-     </simpleType>
-     <persistency>non-volatile</persistency>
-     <readable/>
-+    <writeable/>
- </attribute>
- 
- <attribute>
-@@ -758,6 +759,7 @@
-     </simpleType>
-     <persistency>non-volatile</persistency>
-     <readable/>
-+    <writeable/>
- </attribute>
- 
- <attribute>
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch
deleted file mode 100644
index bc4f492..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 1e6bb450cf94fc3ade70f82703e6c57a30bbebaa Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Wed, 10 Aug 2016 10:41:32 -0700
-Subject: [PATCH 12/14] Set OPAL_MODEL to p8dtu1u or p8dtu2u for 1U and 2U
- system.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/hwpf/hwp/start_payload/start_payload.C     | 66 +++++++++++++++++++++-
- .../common/xmltohb/attribute_types_hb.xml          |  1 +
- 2 files changed, 66 insertions(+), 1 deletion(-)
-
-diff --git a/src/usr/hwpf/hwp/start_payload/start_payload.C b/src/usr/hwpf/hwp/start_payload/start_payload.C
-index ad155f19e..80e62a0b6 100644
---- a/src/usr/hwpf/hwp/start_payload/start_payload.C
-+++ b/src/usr/hwpf/hwp/start_payload/start_payload.C
-@@ -89,6 +89,8 @@
- #include    <config.h>
- #include    <ipmi/ipmiwatchdog.H>
- #include    <ipmi/ipmiif.H> //jim
-+#include	<string.h> //jim
-+
- #include    <vpd/vpd_if.H>
- 
- #include    <hwpf/hwpf_reasoncodes.H>
-@@ -487,6 +489,67 @@ void setAPSSGainOffsetFromPWSInfo(void)
- 	assert(0);
- 	}
- }
-+
-+
-+void setOpalMode (void)
-+{
-+
-+ uint8_t riser_id = 0 ;
-+ errlHndl_t l_err = NULL; 
-+ size_t len = 4;
-+ 
-+ //create request data buffer
-+ uint8_t* data = new uint8_t[len];
-+ 
-+ IPMI::completion_code cc = IPMI::CC_UNKBAD;
-+ 
-+ data[0] = 0x3;  
-+ data[1] = 0x70;  
-+ data[2] = 0x1;  
-+ data[3] = 0x2;  //offset 0x2 for UIO info
-+ l_err = IPMI::sendrecv(IPMI::master_readwrite(), cc, len, data);
-+ 
-+ if( l_err == NULL )
-+ {
-+	 if( cc == IPMI::CC_OK )
-+	 {
-+	 riser_id = data[0];
-+	 }
-+	 
-+	 delete[] data;
-+ }
-+
-+ATTR_OPAL_MODEL_type l_model = {0};
-+
-+TARGETING::Target* sys = NULL;
-+targetService().getTopLevelTarget(sys);
-+
-+sys->tryGetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model);
-+TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "OPAL Mode is %s", l_model);
-+TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "Riser ID is %d", riser_id);
-+
-+if (riser_id == 0x9)
-+	{
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "1U OPAL Mode");
-+	strcpy (l_model, "supermicro,p8dtu1u");
-+
-+	}
-+else  //(riser_id == 0x19)
-+	{
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "2U OPAL Mode");
-+	strcpy (l_model, "supermicro,p8dtu2u");
-+	}
-+
-+if (!sys->trySetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model))
-+	{
-+	TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "set OPAL Mode failed");
-+	assert(0);
-+	}
-+
-+sys->tryGetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model);
-+TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "after set, OPAL Mode is %s", l_model);
-+
-+}
- //
- //  Wrapper function to call host_runtime_setup
- //
-@@ -529,7 +592,8 @@ void*    call_host_runtime_setup( void    *io_pArgs )
-         }
- 
- 	setAPSSGainOffsetFromPWSInfo(); //jim add code before activate OCC. START_OCC_DURING_BOOT is defined in config.
--
-+	setOpalMode(); //jim
-+	
-         bool l_activateOCC = is_avp_load();
- 
- #ifdef CONFIG_START_OCC_DURING_BOOT
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-index 64a0c9bae..3cfdb9aa0 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-@@ -966,6 +966,7 @@
-     </simpleType>
-     <persistency>non-volatile</persistency>
-     <readable/>
-+    <writeable/>
- </attribute>
- 
- <attribute>
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0013-enable-TPM-required-sensor.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0013-enable-TPM-required-sensor.patch
deleted file mode 100644
index 64709c0..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0013-enable-TPM-required-sensor.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From db0d855457974d520d829259f56488e6c896be0e Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Thu, 27 Oct 2016 10:42:48 -0700
-Subject: [PATCH 13/14] enable TPM required sensor.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/targeting/common/xmltohb/attribute_types_hb.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-index 3cfdb9aa0..84536fbb4 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-@@ -1200,7 +1200,7 @@
-     </enumerator>
-     <enumerator>
-         <name>TPM_REQUIRED</name>
--        <value>0xFFFF</value>
-+        <value>0xCC03</value>
-     </enumerator>
- </enumerationType>
- 
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0014-add-gain-and-offset-for-1300w-48V-DC-power-supply.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0014-add-gain-and-offset-for-1300w-48V-DC-power-supply.patch
deleted file mode 100644
index fe5d816..0000000
--- a/openpower/patches/p8dtu-patches/hostboot-p8/0014-add-gain-and-offset-for-1300w-48V-DC-power-supply.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From a3283c6922dee8ebfb3ea9ac7d22047e6e7bca00 Mon Sep 17 00:00:00 2001
-From: Jim Yuan <jim.yuan@supermicro.com>
-Date: Tue, 9 May 2017 14:34:56 -0700
-Subject: [PATCH 14/14] add gain and offset for 1300w 48V DC power supply.
-
-Signed-off-by: Jim Yuan <jim.yuan@supermicro.com>
----
- src/usr/hwpf/hwp/start_payload/start_payload.C | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/src/usr/hwpf/hwp/start_payload/start_payload.C b/src/usr/hwpf/hwp/start_payload/start_payload.C
-index 80e62a0b6..309122785 100644
---- a/src/usr/hwpf/hwp/start_payload/start_payload.C
-+++ b/src/usr/hwpf/hwp/start_payload/start_payload.C
-@@ -287,6 +287,7 @@ enum
- PWS_1600 = 0,
- PWS_1000 = 1,
- PWS_1200 = 2,
-+PWS_1300 = 3,
- PWS_UNKNOWN = 0xFE,
- };
- 
-@@ -382,6 +383,7 @@ uint8_t getPSUFRUFromIPMICommands(void)
- 	uint8_t pws1600[] = {'P','W','S','-','1','K','6','2','A','-','1','R'};
- 	uint8_t pws1000[] = {'P','W','S','-','1','K','0','2','A','-','1','R'};
- 	uint8_t pws1200[] = {'P','W','S','-','1','K','2','2','A','-','1','R'};
-+	uint8_t pws1300[] = {'P','W','S','-','1','K','3','0','D','-','1','R'};
- 
- 	//code to calculate product part number size and offset. should use structure. refer to FRU spec.		
- 	product_info_offset = frudata[4] * 8;
-@@ -407,6 +409,10 @@ uint8_t getPSUFRUFromIPMICommands(void)
- 		for (uint8_t i = 0; pws1200[i] == frudata[fru_offset + i] ; i ++)
- 			if (i == 11)
- 			powerSupplyFru = PWS_1200;
-+
-+		for (uint8_t i = 0; pws1300[i] == frudata[fru_offset + i] ; i ++)
-+			if (i == 11)
-+			powerSupplyFru = PWS_1300;
- 	}
- 	else	
- 		powerSupplyFru = PWS_UNKNOWN;
-@@ -466,6 +472,11 @@ void setAPSSGainOffsetFromPWSInfo(void)
- 	offset[TOTAL_SYSTEM_POWER] = 0;
- 	break;
- 
-+	case PWS_1300: //PWS-1K30D-1R (1300W 48V AC):
-+	gain[TOTAL_SYSTEM_POWER] = 51900; 
-+	offset[TOTAL_SYSTEM_POWER] = 0;
-+	break;
-+
- 	default:
- 	//Do nothing, leave defaults
- 	//Gen error for user attention?
--- 
-2.16.2.windows.1
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0001-Increase-default-watchdog-timeout-to-300-seconds.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0001-Increase-default-watchdog-timeout-to-300-seconds.patch
deleted file mode 100644
index b1d816a..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0001-Increase-default-watchdog-timeout-to-300-seconds.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From a4259b9799ebb0f31223d52def871f4851217315 Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 14:50:56 +0300
-Subject: [PATCH] Increase default watchdog timeout to 300 seconds
-
-We need more than 2 minutes to go through some IPL, for instance
-step "13.10 mss_draminit_trainadv" tooks 215 seconds to initialize 8 TiB RAM.
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/include/usr/ipmi/ipmiwatchdog.H | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/include/usr/ipmi/ipmiwatchdog.H b/src/include/usr/ipmi/ipmiwatchdog.H
-index d730e6bc4..37f73624b 100644
---- a/src/include/usr/ipmi/ipmiwatchdog.H
-+++ b/src/include/usr/ipmi/ipmiwatchdog.H
-@@ -58,7 +58,7 @@ namespace IPMIWATCHDOG
- #ifdef CONFIG_BMC_IPMI_LONG_WATCHDOG
- const uint16_t  DEFAULT_WATCHDOG_COUNTDOWN = 2400;
- #else
--const uint16_t  DEFAULT_WATCHDOG_COUNTDOWN = 120;
-+const uint16_t  DEFAULT_WATCHDOG_COUNTDOWN = 300;
- #endif
- 
- /**
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0002-Fix-POS-and-SPD-VPD_REC_NUM.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0002-Fix-POS-and-SPD-VPD_REC_NUM.patch
deleted file mode 100644
index cb8a796..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0002-Fix-POS-and-SPD-VPD_REC_NUM.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 1dcf087af57a93ec7f24aa8be73e7ff0ffad22ca Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 15:03:41 +0300
-Subject: [PATCH] Fix POS and SPD-VPD_REC_NUM
-
-Hank Chang: When bringup this 4Socket 128DIMMs system, we hit the following
-VPD/SPD issue and suspected it might be related to the VPD_REC_NUM numbering
-algorithm issue then caused the SPD cache overlap for the 4 sockets case.
-So we simply tried to jump the $aff_pos offset from 16 to 64 for each Proc and
-the issue was fixed/gone.
-
-Originally created by MSI (S188)
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/usr/targeting/common/Targets.pm | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
-index 35f08428c..4eaba16e7 100644
---- a/src/usr/targeting/common/Targets.pm
-+++ b/src/usr/targeting/common/Targets.pm
-@@ -744,7 +744,7 @@ sub processMcs
-                         $self->setAttribute($dimm,"MBA_PORT",$port_num);
-                         $self->setAttribute($dimm,"MBA_DIMM",$dimm_num);
- 
--                        my $aff_pos=16*$proc+$mcs*$self->{MAX_MCS}+4*$mba+
-+                        my $aff_pos=64*$proc+$mcs*$self->{MAX_MCS}+4*$mba+
-                                     2*$port_num+$dimm_num;
-                         $self->setAttribute($dimm, "AFFINITY_PATH",
-                             $parent_affinity
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0003-Add-present-bits-info-based-on-pos.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0003-Add-present-bits-info-based-on-pos.patch
deleted file mode 100644
index 02f6c29..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0003-Add-present-bits-info-based-on-pos.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 4310ba2a3b6e6439b0938e10435e435cef1d5738 Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Thu, 29 Mar 2018 11:19:14 +0300
-Subject: [PATCH] Add present bits info based on pos
-
-Originally created by MSI (S188)
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/usr/hwas/hostbootIstep.C | 50 ++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 50 insertions(+)
-
-diff --git a/src/usr/hwas/hostbootIstep.C b/src/usr/hwas/hostbootIstep.C
-index af3770295..1330a7e65 100644
---- a/src/usr/hwas/hostbootIstep.C
-+++ b/src/usr/hwas/hostbootIstep.C
-@@ -188,6 +188,11 @@ void* host_discover_targets( void *io_pArgs )
- 
-     // Put out some helpful messages that show which targets we actually found
-     std::map<TARGETING::TYPE,uint64_t> l_presData;
-+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P0; //for dimms on CPU P0
-+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P1; //for dimms on CPU P1
-+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P2; //for dimms on CPU P2
-+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P3; //for dimms on CPU P3
-+
-     for (TargetIterator target = targetService().begin();
-          target != targetService().end();
-          ++target)
-@@ -198,11 +203,49 @@ void* host_discover_targets( void *io_pArgs )
-         }
-         TARGETING::TYPE l_type = target->getAttr<TARGETING::ATTR_TYPE>();
-         TARGETING::ATTR_POSITION_type l_pos = 0;
-+        TARGETING::ATTR_HUID_type l_huid = target->getAttr<TARGETING::ATTR_HUID>(); //for showing HUID
-+
-         if( target->tryGetAttr<TARGETING::ATTR_POSITION>(l_pos) )
-         {
-             l_presData[l_type] |= (0x8000000000000000 >> l_pos);
-+
-+            if (l_type == TARGETING::TYPE_DIMM)
-+            {
-+                if (l_pos < 64)
-+                {
-+                    //for dimms on CPU P0
-+                    Present_Dimm_P0[l_type] |= (0x8000000000000000 >> l_pos);
-+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P0[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P0[l_type] >> 32, Present_Dimm_P0[l_type] & 0xFFFFFFFF);
-+                }
-+                else if ((l_pos >= 64) && (l_pos < 128))
-+                {
-+                    //for dimms on CPU P1
-+                    Present_Dimm_P1[l_type] |= (0x8000000000000000 >> (l_pos - 64));
-+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P1[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P1[l_type] >> 32, Present_Dimm_P1[l_type] & 0xFFFFFFFF);
-+                }
-+                else if ((l_pos >= 128) && (l_pos < 192))
-+                {
-+                    //for dimms on CPU P2
-+                    Present_Dimm_P2[l_type] |= (0x8000000000000000 >> (l_pos - 128));
-+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P2[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P2[l_type] >> 32, Present_Dimm_P2[l_type] & 0xFFFFFFFF);
-+                }
-+                else if (l_pos >= 192)
-+                {
-+                    //for dimms on CPU P3
-+                    Present_Dimm_P3[l_type] |= (0x8000000000000000 >> (l_pos - 192));
-+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P3[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P3[l_type] >> 32, Present_Dimm_P3[l_type] & 0xFFFFFFFF);
-+                }
-+            }
-         }
-     }
-+
-+    CONSOLE::displayf("HWAS", "=========================================");
-+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P0=%.8X%.8X", Present_Dimm_P0[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P0[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
-+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P1=%.8X%.8X", Present_Dimm_P1[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P1[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
-+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P2=%.8X%.8X", Present_Dimm_P2[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P2[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
-+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P3=%.8X%.8X", Present_Dimm_P3[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P3[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
-+    CONSOLE::displayf("HWAS", "=========================================");
-+
-     TARGETING::EntityPath l_epath; //use EntityPath's translation functions
-     for( std::map<TARGETING::TYPE,uint64_t>::iterator itr = l_presData.begin();
-          itr != l_presData.end();
-@@ -210,6 +253,13 @@ void* host_discover_targets( void *io_pArgs )
-     {
-         uint8_t l_type = itr->first;
-         uint64_t l_val = itr->second;
-+
-+        if (l_type == TARGETING::TYPE_DIMM)
-+        {
-+            //to skip DIMM type
-+            continue;
-+        }
-+
-         TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"PRESENT> %s[%.2X]=%.8X%.8X",
-                 l_epath.pathElementTypeAsString(itr->first), l_type, l_val>>32, l_val&0xFFFFFFFF);
- #if (!defined(CONFIG_CONSOLE_OUTPUT_TRACE) && defined(CONFIG_CONSOLE))
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0004-Force-print-MCS-grouping-info-to-console.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0004-Force-print-MCS-grouping-info-to-console.patch
deleted file mode 100644
index 9744e1d..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0004-Force-print-MCS-grouping-info-to-console.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 9eea226dc3be928ae297ff2d7284a43f8e43efac Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 15:32:45 +0300
-Subject: [PATCH] Force print MCS grouping info to console
-
-Used to dump interleave mode state.
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- .../mc_config/mss_eff_config/mss_eff_grouping.C    | 25 +++++++++++++---------
- 1 file changed, 15 insertions(+), 10 deletions(-)
-
-diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C
-index 98f76cd0a..fa4c78f72 100644
---- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C
-+++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C
-@@ -85,6 +85,12 @@
- #include <mss_eff_grouping.H>
- #include <cen_scom_addresses.H>
- #include <mss_error_support.H>
-+#include <console/consoleif.H>
-+
-+#define GRP_TRACE(_fmt_, _args_...) { \
-+    CONSOLE::displayf(NULL, "GROUP-INFO| " _fmt_, ##_args_); \
-+    CONSOLE::flush(); \
-+}
- 
- extern "C"
- {
-@@ -900,10 +906,10 @@ void grouping_group4McsPerGroup(const EffGroupingMemInfo & i_memInfo,
-     {
-         if (config4_gp[i] && config4_gp[i + 1])
-         {
--            FAPI_INF("mss_eff_grouping: Grouped MCSs %u, %u, %u, %u",
-+            GRP_TRACE("mss_eff_grouping: Grouped MCSs %u, %u, %u, %u",
-                      CFG_4MCS[i][0], CFG_4MCS[i][1],
-                      CFG_4MCS[i][2], CFG_4MCS[i][3]);
--            FAPI_INF("mss_eff_grouping: Grouped MCSs %u, %u, %u, %u",
-+            GRP_TRACE("mss_eff_grouping: Grouped MCSs %u, %u, %u, %u",
-                      CFG_4MCS[i + 1][0], CFG_4MCS[i + 1][1],
-                      CFG_4MCS[i + 1][2], CFG_4MCS[1 + 1][3]);
-             gp1 = i;
-@@ -919,7 +925,7 @@ void grouping_group4McsPerGroup(const EffGroupingMemInfo & i_memInfo,
-         {
-             if (config4_gp[i])
-             {
--                FAPI_INF("mss_eff_grouping: Grouped MCSs %u, %u, %u, %u",
-+                GRP_TRACE("mss_eff_grouping: Grouped MCSs %u, %u, %u, %u",
-                          CFG_4MCS[i][0], CFG_4MCS[i][1],
-                          CFG_4MCS[i][2], CFG_4MCS[i][3]);
-                 gp1 = i;
-@@ -1024,7 +1030,7 @@ void grouping_group2McsPerGroup(const EffGroupingMemInfo & i_memInfo,
-         {
-             // These 2 MCSs are not already grouped and have the same amount of
-             // memory
--            FAPI_INF("mss_eff_grouping: Grouped MCSs %u and %u", pos, pos + 1);
-+            GRP_TRACE("mss_eff_grouping: Grouped MCSs %u and %u", pos, pos + 1);
-             o_groupData.iv_data[g][MCS_SIZE] = i_memInfo.iv_mcsSize[pos];
-             o_groupData.iv_data[g][MCS_IN_GROUP] = 2;
-             o_groupData.iv_data[g][GROUP_SIZE] = 2 * i_memInfo.iv_mcsSize[pos];
-@@ -1084,7 +1090,7 @@ void grouping_group2McsPerGroup_oddpair(const EffGroupingMemInfo & i_memInfo,
-         {
-             // These 2 MCSs are not already grouped and have the same amount of
-             // memory
--            FAPI_INF("mss_eff_grouping: Grouped MCSs %u and %u", pos, pos + 1);
-+            GRP_TRACE("mss_eff_grouping: Grouped MCSs %u and %u", pos, pos + 1);
-             o_groupData.iv_data[g][MCS_SIZE] = i_memInfo.iv_mcsSize[pos];
-             o_groupData.iv_data[g][MCS_IN_GROUP] = 2;
-             o_groupData.iv_data[g][GROUP_SIZE] = 2 * i_memInfo.iv_mcsSize[pos];
-@@ -1145,7 +1151,7 @@ void grouping_group2McsPerGroup_usecase(const EffGroupingMemInfo & i_memInfo,
-             {
-                 // These 2 MCSs are not already grouped and have the same amount of
-                 // memory
--                FAPI_INF("mss_eff_grouping: Grouped MCSs %u and %u", pos, var);
-+                GRP_TRACE("mss_eff_grouping: Grouped MCSs %u and %u", pos, var);
-                 o_groupData.iv_data[g][MCS_SIZE] = i_memInfo.iv_mcsSize[pos];
-                 o_groupData.iv_data[g][MCS_IN_GROUP] = 2;
-                 o_groupData.iv_data[g][GROUP_SIZE] = 2 * i_memInfo.iv_mcsSize[pos];
-@@ -1199,7 +1205,7 @@ void grouping_group1McsPerGroup(const EffGroupingMemInfo & i_memInfo,
-             (i_memInfo.iv_mcsSize[pos] != 0))
-         {
-             // This MCS is not already grouped and has memory
--            FAPI_INF("mss_eff_grouping: MCS %u grouped", pos);
-+            GRP_TRACE("mss_eff_grouping: MCS %u grouped", pos);
-             o_groupData.iv_data[g][MCS_SIZE] = i_memInfo.iv_mcsSize[pos];
-             o_groupData.iv_data[g][MCS_IN_GROUP] = 1;
-             o_groupData.iv_data[g][GROUP_SIZE] = i_memInfo.iv_mcsSize[pos];
-@@ -1564,12 +1570,11 @@ void grouping_traceData(const EffGroupingSysAttrs & i_sysAttrs,
- {
-     for (uint8_t i = 0; i < i_groupData.iv_numGroups; i++)
-     {
--        FAPI_INF("mss_eff_grouping: Group %u, MCS Size %u GB, "
-+        GRP_TRACE("mss_eff_grouping: Group %u, MCS Size %u GB, "
-                  "Num MCSs %u, GroupSize %u GB", i,
-                  i_groupData.iv_data[i][MCS_SIZE],
-                  i_groupData.iv_data[i][MCS_IN_GROUP],
-                  i_groupData.iv_data[i][GROUP_SIZE]);
--
-         FAPI_INF("mss_eff_grouping: Group %u, Base Add 0x%08x", i,
-                  i_groupData.iv_data[i][BASE_ADDR]);
- 
-@@ -2248,7 +2253,7 @@ fapi::ReturnCode mss_eff_grouping(const fapi::Target & i_target,
-     std::vector<fapi::Target> &i_associated_centaurs)
- {
-     fapi::ReturnCode rc;
--    FAPI_INF("mss_eff_grouping: Start, chip %s", i_target.toEcmdString());
-+    GRP_TRACE("mss_eff_grouping: Start, chip %s", i_target.toEcmdString());
- 
-     do
-     {
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch
deleted file mode 100644
index 5b4bcc7..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From f03937aa32b79e8bde0fa5ff09a0e11e4750bb6f Mon Sep 17 00:00:00 2001
-From: Corey Swenson <cswenson@us.ibm.com>
-Date: Mon, 14 Jan 2019 12:46:22 -0600
-Subject: [PATCH] Vesnin patch
-
-Change-Id: I1116c92f9176d53630a9316312656c03f2a16723
-
-Hank Chang: This patch achieves the following goals:
-a. Auto set all empty sensors with reserved ID - 0xFF instead of being 0x0 in
-   the mrw process (would cause some duplicate sensor@0 in skiboot)
-b. In this way, they could simply save 128 empty DIMM_Temp* IDs to become
-   all 0xFF, and OCC would still report all the non-zero ID's DIMM_Temp*
-   reading in the poll response.
-   And then, apply another "occ-0001-Add-DIMM-temperature-sensors.patch"
-   can customize/override these 0xFF temp_sid again based on the different
-   CPU/Cen/DIMM index which can be decoded by OpenBMC accordingly.
-c. Just simply prints the "N/A" (0xFF) string in the *.rpt file for reviewing
-   all the undefined/reserved sensor targets.
-
-Originally created by MSI (S188)
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/usr/ipmiext/ipmisensor.C           |  6 ++----
- src/usr/targeting/common/processMrw.pl | 25 ++++++++++++++++++++-----
- 2 files changed, 22 insertions(+), 9 deletions(-)
-
-diff --git a/src/usr/ipmiext/ipmisensor.C b/src/usr/ipmiext/ipmisensor.C
-index e3c6405..63a4196 100644
---- a/src/usr/ipmiext/ipmisensor.C
-+++ b/src/usr/ipmiext/ipmisensor.C
-@@ -6,6 +6,7 @@
- /* OpenPOWER HostBoot Project                                             */
- /*                                                                        */
- /* Contributors Listed Below - COPYRIGHT 2014,2019                        */
-+/* [+] International Business Machines Corp.                              */
- /*                                                                        */
- /*                                                                        */
- /* Licensed under the Apache License, Version 2.0 (the "License");        */
-@@ -214,14 +215,11 @@ namespace SENSOR
-         }
-         else
-         {
--            TRACFCOMP(g_trac_ipmi,"We were not able to find a sensor number in"
-+            TRACFCOMP(g_trac_ipmi,"Found a reserved sensor number (0xFF) in"
-                       " the IPMI_SENSORS attribute for sensor_name=0x%x"
-                       "for target with huid=0x%x, skipping call to "
-                       "sendSetSensorReading()",
-                     iv_name, TARGETING::get_huid( iv_target ));
--
--            assert(false);
--
-         }
- 
-         return l_err;
-diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
-index 8bfa7bd..66783c8 100644
---- a/src/usr/targeting/common/processMrw.pl
-+++ b/src/usr/targeting/common/processMrw.pl
-@@ -6,7 +6,7 @@
- #
- # OpenPOWER HostBoot Project
- #
--# Contributors Listed Below - COPYRIGHT 2015,2017
-+# Contributors Listed Below - COPYRIGHT 2015,2019
- # [+] International Business Machines Corp.
- #
- #
-@@ -239,14 +239,29 @@ sub processIpmiSensors {
-                 $sensor_name=$name."_".$name_suffix;
-             }
-             my $attribute_name="";
--            my $s=sprintf("0x%02X%02X,0x%02X",
--                  oct($sensor_type),oct($entity_id),oct($sensor_id));
--            push(@sensors,$s);
-+
-+            if ($sensor_id ne "")
-+            {
-+                my $s = sprintf("0x%02X%02X,0x%02X",
-+                        oct($sensor_type), oct($entity_id), oct($sensor_id));
-+                push(@sensors, $s);
-+            }
-+            else
-+            {
-+                my $s = sprintf("0x%02X%02X,0xFF",
-+                                oct($sensor_type), oct($entity_id));
-+                push(@sensors, $s);
-+            }
-+
-             my $sensor_id_str = "";
-             if ($sensor_id ne "")
-             {
-                 $sensor_id_str = sprintf("0x%02X",oct($sensor_id));
-             }
-+            else
-+            {
-+                $sensor_id_str = sprintf("N/A");
-+            }
-             my $str=sprintf(
-                 " %30s | %10s |  0x%02X  | 0x%02X |    0x%02x   |" .
-                 " %4s | %4d | %4d | %10s | %s\n",
-@@ -1428,7 +1443,7 @@ Options:
-     exit(1);
- }
- 
--# eliminate extra whitespace 
-+# eliminate extra whitespace
- #    Input: string to chop
- sub nowhitespace
- {
--- 
-1.8.2.2
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0006-Delay-for-Centaure-1.2V-ready-on-128-DIMM-system.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0006-Delay-for-Centaure-1.2V-ready-on-128-DIMM-system.patch
deleted file mode 100644
index 35ce1ea..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0006-Delay-for-Centaure-1.2V-ready-on-128-DIMM-system.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 45c23dab36e6dd76023670f4c0766b6104ff0011 Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 15:47:30 +0300
-Subject: [PATCH] Delay for Centaure 1.2V ready on 128 DIMM system
-
-Resolves issue with full equipped DIMM lost.
-Originally created by MSI (S188).
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/usr/hwpf/hwp/dram_training/dram_training.C | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/usr/hwpf/hwp/dram_training/dram_training.C b/src/usr/hwpf/hwp/dram_training/dram_training.C
-index bf20b7464..2d8a80e5f 100644
---- a/src/usr/hwpf/hwp/dram_training/dram_training.C
-+++ b/src/usr/hwpf/hwp/dram_training/dram_training.C
-@@ -329,6 +329,7 @@ void*    call_host_disable_vddr( void *io_pArgs )
- {
-     errlHndl_t l_err = NULL;
-     IStepError l_StepError;
-+    uint8_t i;
- 
-     TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
-               ENTER_MRK"call_host_disable_vddr");
-@@ -348,6 +349,12 @@ void*    call_host_disable_vddr( void *io_pArgs )
- 
-     }
- 
-+    //Delay 2 seconds for Centaure 1.2V ready on 128 DIMM system.
-+    for (i = 0; i < 1; ++i)
-+    {
-+        fapiDelay(1000 * 1000000, 10000); // 1,000,000 ns = 1ms, 1000*1ms
-+    }
-+
-     TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
-                EXIT_MRK"call_host_disable_vddr");
- 
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0007-Set-IBM-instead-of-AMI-for-eSEL.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0007-Set-IBM-instead-of-AMI-for-eSEL.patch
deleted file mode 100644
index a94ada2..0000000
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0007-Set-IBM-instead-of-AMI-for-eSEL.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 177df7658cbd8c78d5f3cf043e78d02880945b85 Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 15:50:51 +0300
-Subject: [PATCH] Set IBM instead of AMI for eSEL
-
-Originally created by MSI (S188).
-The root cause is that the latest openbmc replace the NETFUN_AMI with
-NETFUN_IBM, so bmc can't log the eSEL from PNOR.
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/include/usr/ipmi/ipmiif.H | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/include/usr/ipmi/ipmiif.H b/src/include/usr/ipmi/ipmiif.H
-index 44283cc0b..0f1309e31 100644
---- a/src/include/usr/ipmi/ipmiif.H
-+++ b/src/include/usr/ipmi/ipmiif.H
-@@ -258,7 +258,7 @@ namespace IPMI
- 
-     //AMI-specific storage messages
-     inline const command_t partial_add_esel(void)
--    { return std::make_pair(NETFUN_AMI, 0xf0); }
-+    { return std::make_pair(NETFUN_IBM, 0xf0); }
- 
-     // event messages
-     inline const command_t platform_event(void)
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/occ-p8/occ-0001-Add-DIMM-temperature-sensors.patch b/openpower/patches/vesnin-patches/occ-p8/occ-0001-Add-DIMM-temperature-sensors.patch
deleted file mode 100644
index 51f273f..0000000
--- a/openpower/patches/vesnin-patches/occ-p8/occ-0001-Add-DIMM-temperature-sensors.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 7d9fc8ec22199e7fc7eca6079cb42f25554851f7 Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 14:17:00 +0300
-Subject: [PATCH] Add DIMM temperature sensors
-
-Customize/override 0xFF temp_sid based on the different CPU/Cen/DIMM index
-which can be decoded by OpenBMC accordingly.
-See also: hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch.
-
-Originally created by MSI (S188)
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/occ/cmdh/cmdh_fsp_cmds.c | 54 ++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 52 insertions(+), 2 deletions(-)
-
-diff --git a/src/occ/cmdh/cmdh_fsp_cmds.c b/src/occ/cmdh/cmdh_fsp_cmds.c
-index 74e45da..fb2f72d 100755
---- a/src/occ/cmdh/cmdh_fsp_cmds.c
-+++ b/src/occ/cmdh/cmdh_fsp_cmds.c
-@@ -355,10 +355,40 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
-     l_sensorHeader.length = sizeof(cmdh_poll_temp_sensor_t);
-     l_sensorHeader.count  = 0;
- 
-+    uint16_t CpuIpmiId = 0;
-+
-+    //Check the current OCC
-+    if (l_poll_rsp->occ_pres_mask == 0x02)
-+    {
-+        CpuIpmiId = 0x0D;  //CPU1
-+    }
-+    else if (l_poll_rsp->occ_pres_mask == 0x04)
-+    {
-+        CpuIpmiId = 0x02;  //CPU2
-+    }
-+    else if (l_poll_rsp->occ_pres_mask == 0x08)
-+    {
-+        CpuIpmiId = 0x0A;  //CPU3
-+    }
-+    else
-+    {
-+        CpuIpmiId = 0x0B;  //CPU0
-+    }
-+
-     //Initialize to max number of possible temperature sensors.
--    cmdh_poll_temp_sensor_t l_tempSensorList[MAX_NUM_CORES + MAX_NUM_MEM_CONTROLLERS + (MAX_NUM_MEM_CONTROLLERS * NUM_DIMMS_PER_CENTAUR)];
-+    cmdh_poll_temp_sensor_t l_tempSensorList[MAX_NUM_CORES + MAX_NUM_MEM_CONTROLLERS + (MAX_NUM_MEM_CONTROLLERS * NUM_DIMMS_PER_CENTAUR) + 2]; //Add two items for peak/average core temperature.
-     memset(l_tempSensorList, 0x00, sizeof(l_tempSensorList));
- 
-+    //The average value of core temperature. Currently not used.
-+    l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP2MSP0]->ipmi_sid;
-+    l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0]->sample;
-+    l_sensorHeader.count++;
-+
-+    //The peak value of core temperature
-+    l_tempSensorList[l_sensorHeader.count].id = CpuIpmiId;
-+    l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0PEAK]->sample;
-+    l_sensorHeader.count++;
-+
-     for (k=0; k<MAX_NUM_CORES; k++)
-     {
-         if(CORE_PRESENT(k))
-@@ -370,6 +400,26 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
-     }
- 
-     uint8_t l_cent, l_dimm = 0;
-+    uint16_t CpuId = 0;
-+
-+    //Check the current OCC
-+    if(l_poll_rsp->occ_pres_mask == 0x02)
-+    {
-+        CpuId = 0x0200;  //CPU1
-+    }
-+    else if (l_poll_rsp->occ_pres_mask == 0x04)
-+    {
-+        CpuId = 0x0300;  //CPU2
-+    }
-+    else if (l_poll_rsp->occ_pres_mask == 0x08)
-+    {
-+        CpuId = 0x0400;  //CPU3
-+    }
-+    else
-+    {
-+        CpuId = 0x0100;  //CPU0
-+    }
-+
-     for (l_cent=0; l_cent < MAX_NUM_MEM_CONTROLLERS; l_cent++)
-     {
-         if (CENTAUR_PRESENT(l_cent))
-@@ -391,7 +441,7 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
-             {
-                 if (g_amec->proc[0].memctl[l_cent].centaur.dimm_temps[l_dimm].temp_sid != 0)
-                 {
--                    l_tempSensorList[l_sensorHeader.count].id = g_amec->proc[0].memctl[l_cent].centaur.dimm_temps[l_dimm].temp_sid;
-+                    l_tempSensorList[l_sensorHeader.count].id = CpuId + (l_cent * 8) + l_dimm;  //Add extra temperature IDs for all DIMMs.
-                     //If a dimm timed out long enough, we should return 0xFFFF for that sensor.
-                     if (G_dimm_temp_expired_bitmap.bytes[l_cent] & (DIMM_SENSOR0 >> l_dimm))
-                     {
--- 
-2.14.1
-
diff --git a/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch b/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch
deleted file mode 100644
index 7556b97..0000000
--- a/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0ec6ab11dcec304876802d1ed7bb01bd059ae311 Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 18 Dec 2018 14:16:56 +0300
-Subject: [PATCH] Add temperature sensor support for CPU cores
-
-IPMI protocol imposes limits on numbers of sensors identifiers (1 byte).
-This limitation doesn't allow us to use unique temperature sensor ID for
-each CPU core (4 CPU * 12 cores = 48 sensors).
-
-OCC uses temperature sensor ID as channel label, these labels are handled
-by phosphor-hwmon service to identify the core:
-
-     I2C               sysfs                   config.yaml
-OCC -----> BMC Kernel -------> Phosphor-hwmon -------------> DBus
-     ID                label                   label->core
-
-This patch makes OCC use own ID as channel label instead of using IPMI
-temperature sensor ID. The new identifier consists of constant prefix
-(0x0f) and core index:
-ID = 0x0f00 + INDEX(core)
-
-Signed-off-by: Artem Senichev <a.senichev@yadro.com>
----
- src/occ/cmdh/cmdh_fsp_cmds.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/occ/cmdh/cmdh_fsp_cmds.c b/src/occ/cmdh/cmdh_fsp_cmds.c
-index 6276992..69c646e 100755
---- a/src/occ/cmdh/cmdh_fsp_cmds.c
-+++ b/src/occ/cmdh/cmdh_fsp_cmds.c
-@@ -393,7 +393,8 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
-     {
-         if(CORE_PRESENT(k))
-         {
--            l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP2MSP0C0 + k]->ipmi_sid;
-+            // Set the core label as a constant prefix with index
-+            l_tempSensorList[l_sensorHeader.count].id = 0x0f00 + k;
-             l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0C0 + k]->sample;
-             l_sensorHeader.count++;
-         }
--- 
-2.19.2
-
diff --git a/openpower/platform/Config.in b/openpower/platform/Config.in
index 3232cd0..0cea229 100644
--- a/openpower/platform/Config.in
+++ b/openpower/platform/Config.in
@@ -1,12 +1,7 @@
 config BR2_OPENPOWER_PLATFORM
     bool "Enables only one openPower platform"
     default n
-    depends on ((BR2_OPENPOWER_POWER8 || BR2_OPENPOWER_POWER9) && !(BR2_OPENPOWER_POWER8 && BR2_OPENPOWER_POWER9))
-
-config BR2_OPENPOWER_POWER8
-    bool "Enables the OpenPower p8 platform"
-    default n
-    depends on BR2_powerpc64 || BR2_powerpc64le
+    depends on (BR2_OPENPOWER_POWER9)
 
 config BR2_OPENPOWER_POWER9
     bool "Enables the OpenPower p9 platform"
diff --git a/openpower/toolchain/Config.in b/openpower/toolchain/Config.in
index dc5b205..c2eeb2e 100644
--- a/openpower/toolchain/Config.in
+++ b/openpower/toolchain/Config.in
@@ -1,6 +1,5 @@
 menu "OpenPower Toolchain"
 
 source "$BR2_EXTERNAL_OP_BUILD_PATH/toolchain/ppe42-toolchain/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/toolchain/p8-pore-toolchain/Config.in"
 
 endmenu
diff --git a/openpower/toolchain/p8-pore-toolchain/Config.in b/openpower/toolchain/p8-pore-toolchain/Config.in
deleted file mode 100644
index c03422b..0000000
--- a/openpower/toolchain/p8-pore-toolchain/Config.in
+++ /dev/null
@@ -1,27 +0,0 @@
-menuconfig BR2_PACKAGE_P8_PORE_TOOLCHAIN
-	bool "p8-pore-toolchain"
-	default y if (BR2_OPENPOWER_POWER8)
-	help
-	  Build the PORE toolchain required to build the
-	  POWER8 OCC firmware
-
-if BR2_PACKAGE_P8_PORE_TOOLCHAIN
-choice
-	prompt "P8 PORE Toolchain Type"
-	help
-	  Select whether to build the P8 PORE toolchain or
-	  provide an external one
-
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/p8-pore-binutils/Config.in"
-source "$BR2_EXTERNAL_OP_BUILD_PATH/package/p8-pore-toolchain-external/Config.in"
-
-endchoice
-
-config BR2_PACKAGE_HAS_P8_PORE_TOOLCHAIN
-	bool
-
-config BR2_PACKAGE_PROVIDES_P8_PORE_TOOLCHAIN
-	depends on BR2_PACKAGE_HAS_P8_PORE_TOOLCHAIN
-	string
-
-endif
diff --git a/openpower/toolchain/p8-pore-toolchain/p8-pore-toolchain.mk b/openpower/toolchain/p8-pore-toolchain/p8-pore-toolchain.mk
deleted file mode 100644
index 7936be5..0000000
--- a/openpower/toolchain/p8-pore-toolchain/p8-pore-toolchain.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-#
-# p8-pore-toolchain
-#
-################################################################################
-P8_PORE_TOOLCHAIN_DIR = $(STAGING_SUBDIR)/p8-pore-toolchain
-P8_PORE_TOOLCHAIN_BIN = $(STAGING_SUBDIR)/p8-pore-toolchain/linux
-
-$(eval $(host-virtual-package))
