Merge pull request #1 from open-power/master

Update from mainline fork
diff --git a/.gitmodules b/.gitmodules
index 20509fa..324fa00 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
 [submodule "buildroot"]
 	path = buildroot
-	branch = 2015.11.1-op-build
+	branch = 2017.02-op-build
 	url = https://github.com/open-power/buildroot
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..c13fa4b
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,116 @@
+Contributing to op-build
+========================
+
+op-build is the open source build system for OpenPOWER firmware. It assembles
+many individual components (only a few of which are OpenPOWER specific) into
+a single firmware image. op-build is implemented as a buildroot overlay.
+
+If you haven't already, join us on IRC (#openpower on Freenode) and on
+the mailing list ( openpower-firmware@lists.ozlabs.org - subscribe by
+going to https://lists.ozlabs.org/listinfo/openpower-firmware )
+
+We use GitHub Issues and Pull Requests for tracking contributions. We
+expect participants to adhere to the GitHub Community Guidelines (found
+at https://help.github.com/articles/github-community-guidelines/ ).
+
+If you are unable or unwilling to use GitHub, we can accept contributions
+via the mailing list.
+
+All contributions should have a Developer Certificate of Origin (see below).
+
+Development Philosophy
+----------------------
+
+Our development philosophy is:
+
+1. Don't re-invent the wheel
+2. Upstream first
+
+As such, we don't like to carry patches in op-build, we prefer to interact
+with upstream projects and get patches accepted there. Where we do need
+to patch things locally, we prefer to carry backports from upstream, which
+can be removed when we move to more recent upstream.
+
+Development Environment
+-----------------------
+
+For working on op-build you will need a reasonably recent Linux distribution.
+We aim to have all current major distros be suitable development platforms
+(focused on Ubuntu and Fedora, as that's what most developers currently use).
+
+A host GCC of at least 4.9 is recommended (all modern Linux distributions
+provide this).
+
+You can build on x86-64, ppc64 or ppc64le, op-build will build appropriate
+cross-compilers for you (thanks to the magic of buildroot).
+
+You will need 8-15GB of disk space to do a full build of any one configuration.
+
+Development Process
+-------------------
+
+The main source repository is on GitHub. We use GitHub issues and pull requests
+as well as a mailing list (https://lists.ozlabs.org/listinfo/openpower-firmware).
+
+We tag a new op-build release roughly every 6 weeks.
+
+We use GitHub milestones: https://github.com/open-power/op-build/milestones
+
+Starting with the v1.15 release, active development occurs against the master
+branch. When we're nearing a release, we move the content of the master branch
+over to a 'release' branch, ensuring development can continue while the release
+is prepared.
+
+We accept pull requests on GitHub: https://github.com/open-power/op-build/pulls
+
+Developer Certificate of Origin
+-------------------------------
+
+Contributions to this project should conform to the `Developer Certificate
+of Origin` as defined at http://elinux.org/Developer_Certificate_Of_Origin.
+Commits to this project need to contain the following line to indicate
+the submitter accepts the DCO:
+```
+Signed-off-by: Your Name <your_email@domain.com>
+```
+By contributing in this way, you agree to the terms as follows:
+```
+Developer Certificate of Origin
+Version 1.1
+
+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
+660 York Street, Suite 102,
+San Francisco, CA 94110 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+
+Developer's Certificate of Origin 1.1
+
+By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+    have the right to submit it under the open source license
+    indicated in the file; or
+
+(b) The contribution is based upon previous work that, to the best
+    of my knowledge, is covered under an appropriate open source
+    license and I have the right under that license to submit that
+    work with modifications, whether created in whole or in part
+    by me, under the same open source license (unless I am
+    permitted to submit under a different license), as indicated
+    in the file; or
+
+(c) The contribution was provided directly to me by some other
+    person who certified (a), (b) or (c) and I have not modified
+    it.
+
+(d) I understand and agree that this project and the contribution
+    are public and that a record of the contribution (including all
+    personal information I submit with it, including my sign-off) is
+    maintained indefinitely and may be redistributed consistent with
+    this project or the open source license(s) involved.
+```
+
+
diff --git a/README.md b/README.md
index 9eeabd0..f92d572 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,22 @@
-# OpenPower Firmware Build Environment
+# OpenPOWER Firmware Build Environment
 
-The OpenPower firmware build process uses Buildroot to create a toolchain and
+The OpenPOWER firmware build process uses Buildroot to create a toolchain and
 build the various components of the PNOR firmware, including Hostboot, Skiboot,
 OCC, Petitboot etc.
 
 ## Development
 
-Issues, Milestones, pull requests and code hosting is on github:
+Issues, Milestones, pull requests and code hosting is on GitHub:
 https://github.com/open-power/op-build
 
 Mailing list: openpower-firmware@lists.ozlabs.org  
 Info/Subscribe: https://lists.ozlabs.org/listinfo/openpower-firmware  
-Archives: https://lists.ozlabs.org/pipermail/openpower-firmware/  
+Archives: https://lists.ozlabs.org/pipermail/openpower-firmware/
 
 ## Building an image
 
+To build an image for a Palmetto system:
+
 ```
 git clone --recursive git@github.com:open-power/op-build.git
 cd op-build
@@ -22,14 +24,18 @@
 op-build palmetto_defconfig && op-build
 ```
 
-This will build an image for a Palmetto system. There exists default
-configurations for other platforms in openpower/configs/ such as
-Habanero and Firestone.
+There are also default configurations for other platforms in
+`openpower/configs/` such as Habanero and Firestone.
 
-### Dependancies for *64-bit* Ubuntu/Debian systems
+Buildroot/op-build supports both native and cross-compilation - it will
+automatically download and build an appropriate toolchain as part of the build
+process, so you don't need to worry about setting up a
+cross-compiler. Cross-compiling from a x86-64 host is officially supported.
+
+### Dependencies for *64-bit* Ubuntu/Debian systems
 
 1. Install Ubuntu (>= 14.04) or Debian (>= 7.5) 64-bit.
-2. Enable Universe:
+2. Enable Universe (Ubuntu only):
 
         sudo apt-get install software-properties-common
         sudo add-apt-repository universe
@@ -38,12 +44,12 @@
         sudo apt-get install cscope ctags libz-dev libexpat-dev \
           python language-pack-en texinfo \
           build-essential g++ git bison flex unzip \
-          libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
+          libssl-dev libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
           wget bc
 
-### Dependancies for *64-bit* Fedora systems
+### Dependencies for *64-bit* Fedora systems
 
-1. Install Fedora 23 64-bit.
+1. Install Fedora 25 64-bit (older Fedora should also work).
 2. Install the packages necessary for the build:
 
         sudo dnf install gcc-c++ flex bison git ctags cscope expat-devel patch \
diff --git a/buildroot b/buildroot
index bc248fa..23118ce 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit bc248fac945aa9c81052386d1f02e837e53fdaff
+Subproject commit 23118cea706cc738c334b868606b19bfda016705
diff --git a/ci/Dockerfile/fedora23 b/ci/Dockerfile/fedora23
deleted file mode 100644
index 5c425a3..0000000
--- a/ci/Dockerfile/fedora23
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM fedora:23
-RUN dnf -y install gcc-c++ flex bison git ctags cscope expat-devel patch zlib-devel zlib-static texinfo perl-bignum "perl(XML::Simple)" "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)" libxml2-devel
-RUN dnf -y install which wget unzip tar cpio python bzip2 bc
-RUN dnf -y install findutils
-RUN dnf -y install ncurses-devel
diff --git a/ci/Dockerfile/fedora23.x86_64 b/ci/Dockerfile/fedora23.x86_64
deleted file mode 120000
index 5322ce7..0000000
--- a/ci/Dockerfile/fedora23.x86_64
+++ /dev/null
@@ -1 +0,0 @@
-fedora23
\ No newline at end of file
diff --git a/ci/Dockerfile/fedora25 b/ci/Dockerfile/fedora25
new file mode 100644
index 0000000..433f948
--- /dev/null
+++ b/ci/Dockerfile/fedora25
@@ -0,0 +1,6 @@
+FROM fedora:25
+RUN dnf -y remove vim-minimal
+RUN dnf -y install gcc-c++ flex bison git ctags cscope expat-devel patch zlib-devel zlib-static texinfo perl-bignum "perl(XML::Simple)" "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)" libxml2-devel libxslt "perl(ExtUtils::MakeMaker)"
+RUN dnf -y install which wget unzip tar cpio python bzip2 bc vim redhat-lsb-core
+RUN dnf -y install findutils
+RUN dnf -y install ncurses-devel openssl-devel
diff --git a/ci/Dockerfile/fedora25.x86_64 b/ci/Dockerfile/fedora25.x86_64
new file mode 120000
index 0000000..c6db8fc
--- /dev/null
+++ b/ci/Dockerfile/fedora25.x86_64
@@ -0,0 +1 @@
+fedora25
\ No newline at end of file
diff --git a/ci/Dockerfile/ubuntu1404 b/ci/Dockerfile/ubuntu1404
index 8acb932..b3833c9 100644
--- a/ci/Dockerfile/ubuntu1404
+++ b/ci/Dockerfile/ubuntu1404
@@ -7,4 +7,4 @@
   python language-pack-en texinfo \
   build-essential g++ git bison flex unzip \
   libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -yy wget bc
+RUN DEBIAN_FRONTEND=noninteractive apt-get install -yy wget bc libssl-dev
diff --git a/ci/build-all-defconfigs.sh b/ci/build-all-defconfigs.sh
index 1730e28..f8b1cd4 100755
--- a/ci/build-all-defconfigs.sh
+++ b/ci/build-all-defconfigs.sh
@@ -3,7 +3,20 @@
 set -ex
 set -eo pipefail
 
-DEFCONFIGS=`(cd openpower/configs; ls -1 *_defconfig)`
+CONFIGTAG="_defconfig"
+
+DEFCONFIGS=();
+
+if [ -z "$2" ]; then
+        echo "Using all the defconfigs for all the platforms"
+        DEFCONFIGS=`(cd openpower/configs; ls -1 *_defconfig)`
+else
+        IFS=', '
+        for p in $2;
+        do
+                DEFCONFIGS+=($p$CONFIGTAG)
+        done
+fi
 
 if [ -z "$1" or ! -d "$1" ]; then
 	echo "No output directory specified"
@@ -17,7 +30,7 @@
 shopt -s expand_aliases
 source op-build-env
 
-for i in $DEFCONFIGS; do
+for i in ${DEFCONFIGS[@]}; do
         op-build $i
         echo 'BR2_CCACHE=y' >> output/.config
         echo "BR2_CCACHE_DIR=\"$CCACHE_DIR\"" >> output/.config
diff --git a/ci/build.sh b/ci/build.sh
index d7e98ca..0ace0e1 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -1,5 +1,43 @@
 #!/bin/bash
 
+CONTAINERS="ubuntu1404 fedora25"
+
+while getopts ":ahp:c:" opt; do
+  case $opt in
+    a)
+      echo "Build firmware images for all the platforms"
+      PLATFORMS=""
+      ;;
+    p)
+      echo "Build firmware images for the platforms: $OPTARG"
+      PLATFORMS=$OPTARG
+      ;;
+    c)
+      echo "Build in container: $OPTARG"
+      CONTAINERS=$OPTARG
+      ;;
+    h)
+      echo "Usage: ./ci/build.sh [options] [--]"
+      echo "-h          Print this help and exit successfully."
+      echo "-a          Build firmware images for all the platform defconfig's."
+      echo "-p          List of comma separated platform names to build images for particular platforms."
+      echo "-c          Container to run in"
+      echo "Example:DOCKER_PREFIX=sudo ./ci/build.sh -a"
+      echo -e "\tDOCKER_PREFIX=sudo ./ci/build.sh -p firestone"
+      echo -e "\tDOCKER_PREFIX=sudo ./ci/build.sh -p garrison,palmetto,openpower_p9_mambo"
+      exit 1
+      ;;
+    \?)
+      echo "Invalid option: -$OPTARG"
+      exit 1
+      ;;
+    :)
+      echo "Option -$OPTARG requires an argument."
+      exit 1
+      ;;
+  esac
+done
+
 set -ex
 set -eo pipefail
 
@@ -17,7 +55,7 @@
 	exit 1;
 fi
 
-for distro in ubuntu1404 fedora23;
+for distro in $CONTAINERS;
 do
 	base_dockerfile=ci/Dockerfile/$distro.`arch`
 	if [ ! -f $base_dockerfile ]; then
@@ -28,7 +66,7 @@
 		http_proxy=$HTTP_PROXY
 	fi
 	if [[ -n "$http_proxy" ]]; then
-	  if [[ "$distro" == fedora23 ]]; then
+	  if [[ "$distro" == fedora25 ]]; then
 	    PROXY="RUN echo \"proxy=${http_proxy}\" >> /etc/dnf/dnf.conf"
 	  fi
 	  if [[ "$distro" == ubuntu1404 ]]; then
@@ -45,7 +83,7 @@
 )
 	$DOCKER_PREFIX docker build -t openpower/op-build-$distro - <<< "${Dockerfile}"
 	mkdir -p output-images/$distro
-	run_docker openpower/op-build-$distro "./ci/build-all-defconfigs.sh output-images/$distro"
+	run_docker openpower/op-build-$distro "./ci/build-all-defconfigs.sh output-images/$distro $PLATFORMS"
 	if [ $? = 0 ]; then
 		mv *-images output-$distro/
 	else
diff --git a/op-build-env b/op-build-env
index 9cd5cb5..e6ca40e 100755
--- a/op-build-env
+++ b/op-build-env
@@ -5,6 +5,12 @@
     source ./customrc
 fi
 
+if [ ! -e buildroot/Makefile ]; then
+	echo "Please make sure you've checked out the buildroot submodule"
+	echo "  git submodule init && git submodule update"
+	return -1
+fi
+
 export BR2_EXTERNAL=${__PWD}/openpower
 export BR2_DL_DIR=${__PWD}/dl
 
diff --git a/openpower/Config.in b/openpower/Config.in
index 19a2859..b6decad 100644
--- a/openpower/Config.in
+++ b/openpower/Config.in
@@ -1,15 +1,15 @@
 menu "OpenPower"
 
-source "$BR2_EXTERNAL/platform/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/platform/Config.in"
 
 menu "OpenPower Packages"
 if BR2_OPENPOWER_PLATFORM
-source "$BR2_EXTERNAL/package/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/Config.in"
 endif
 endmenu
 
 menu "Custom Packages"
-source "$BR2_EXTERNAL/custom/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/custom/Config.in"
 endmenu
 
 endmenu
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index 1a45b18..d3e3943 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -1,73 +1,65 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
-BR2_OPENPOWER_PLATFORM=y
-
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
-# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
-BR2_GLIBC_VERSION_2_23=y
-
-BR2_OPENPOWER_CONFIG_NAME="barreleye"
-BR2_OPENPOWER_XML_PACKAGE="barreleye-xml"
-BR2_HOSTBOOT_CONFIG_FILE="barreleye.config"
-
-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_OCC_BIN_FILENAME="occ.bin"
-
-BR2_BARRELEYE_SYSTEM_XML_FILENAME="BARRELEYE_hb.system.xml"
-BR2_BARRELEYE_MRW_XML_FILENAME="BARRELEYE_hb.mrw.xml"
-BR2_BARRELEYE_BIOS_XML_FILENAME="BARRELEYE_bios.xml"
-
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="BARRELEYE_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="BARRELEYE_HB.targeting.bin.ecc"
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
-BR2_OPENPOWER_PNOR_FILENAME="barreleye.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="barreleye_update.pnor"
-
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-
-# skiboot requirements
-BR2_PACKAGE_SKIBOOT=y
-BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
-
-# petitboot requirements
-BR2_ENABLE_LOCALE_PURGE=y
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_LATEST_VERSION=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
 # BR2_PACKAGE_DROPBEAR_SERVER is not set
 BR2_PACKAGE_ETHTOOL=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_POWERPC_UTILS=y
-BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+BR2_HOSTBOOT_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_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/busybox.fragment b/openpower/configs/busybox.fragment
new file mode 100644
index 0000000..1b13459
--- /dev/null
+++ b/openpower/configs/busybox.fragment
@@ -0,0 +1 @@
+CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
new file mode 100644
index 0000000..13d4990
--- /dev/null
+++ b/openpower/configs/firenze_defconfig
@@ -0,0 +1,53 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_RADEON=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+# BR2_PACKAGE_HOSTBOOT is not set
+# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
+# BR2_PACKAGE_MACHINE_XML is not set
+# BR2_PACKAGE_OPENPOWER_PNOR is not set
+BR2_OPENPOWER_CONFIG_NAME="openpower-firenze"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+# BR2_PACKAGE_HOST_P8_PORE_BINUTILS is not set
+# BR2_PACKAGE_OCC is not set
+# BR2_PACKAGE_CAPP_UCODE is not set
+BR2_PACKAGE_LOADKEYS=y
+# BR2_PACKAGE_IMA_CATALOG is not set
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 5eb16b1..46f7956 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -1,73 +1,64 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
-BR2_OPENPOWER_PLATFORM=y
-
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
-# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
-BR2_GLIBC_VERSION_2_23=y
-
-BR2_OPENPOWER_CONFIG_NAME="firestone"
-BR2_OPENPOWER_XML_PACKAGE="firestone-xml"
-BR2_HOSTBOOT_CONFIG_FILE="firestone.config"
-
-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_OCC_BIN_FILENAME="occ.bin"
-
-BR2_FIRESTONE_SYSTEM_XML_FILENAME="FIRESTONE_hb.system.xml"
-BR2_FIRESTONE_MRW_XML_FILENAME="FIRESTONE_hb.mrw.xml"
-BR2_FIRESTONE_BIOS_XML_FILENAME="FIRESTONE_bios.xml"
-
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="FIRESTONE_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="FIRESTONE_HB.targeting.bin.ecc"
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
-BR2_OPENPOWER_PNOR_FILENAME="firestone.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="firestone_update.pnor"
-
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-
-# skiboot requirements
-BR2_PACKAGE_SKIBOOT=y
-BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
-
-# petitboot requirements
-BR2_ENABLE_LOCALE_PURGE=y
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_LATEST_VERSION=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
 # BR2_PACKAGE_DROPBEAR_SERVER is not set
 BR2_PACKAGE_ETHTOOL=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_POWERPC_UTILS=y
-BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+BR2_HOSTBOOT_CONFIG_FILE="firestone.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="firestone-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="2494a430656504d014780000adbc2c2e7cfc54ab"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="firestone.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="FIRESTONE_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="FIRESTONE_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="FIRESTONE_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
+BR2_OPENPOWER_CONFIG_NAME="firestone"
+BR2_OPENPOWER_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_OCC_BIN_FILENAME="occ.bin"
+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
index 0239831..172a8f7 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -1,73 +1,64 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
-BR2_OPENPOWER_PLATFORM=y
-
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
-# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
-BR2_GLIBC_VERSION_2_23=y
-
-BR2_OPENPOWER_CONFIG_NAME="garrison"
-BR2_OPENPOWER_XML_PACKAGE="garrison-xml"
-BR2_HOSTBOOT_CONFIG_FILE="garrison.config"
-
-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_OCC_BIN_FILENAME="occ.bin"
-
-BR2_GARRISON_SYSTEM_XML_FILENAME="GARRISON_hb.system.xml"
-BR2_GARRISON_MRW_XML_FILENAME="GARRISON_hb.mrw.xml"
-BR2_GARRISON_BIOS_XML_FILENAME="GARRISON_bios.xml"
-
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="GARRISON_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="GARRISON_HB.targeting.bin.ecc"
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
-BR2_OPENPOWER_PNOR_FILENAME="garrison.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="garrison_update.pnor"
-
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-
-# skiboot requirements
-BR2_PACKAGE_SKIBOOT=y
-BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
-
-# petitboot requirements
-BR2_ENABLE_LOCALE_PURGE=y
-BR2_ENABLE_LOCALE_WHITELIST="C en_US"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
 BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_LATEST_VERSION=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
 # BR2_PACKAGE_DROPBEAR_SERVER is not set
 BR2_PACKAGE_ETHTOOL=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_POWERPC_UTILS=y
-BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+BR2_HOSTBOOT_CONFIG_FILE="garrison.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="garrison-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="19a516499e1090c20c5a3303db256529ef22c1c9"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="garrison.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="GARRISON_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="GARRISON_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="GARRISON_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
+BR2_OPENPOWER_CONFIG_NAME="garrison"
+BR2_OPENPOWER_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_OCC_BIN_FILENAME="occ.bin"
+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
index ffa0967..f4ebe50 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -1,73 +1,66 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
-BR2_OPENPOWER_PLATFORM=y
-
+BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OP_BUILD_PATH)/patches/habanero-patches"
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
-# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
-BR2_GLIBC_VERSION_2_23=y
-
-BR2_OPENPOWER_CONFIG_NAME="habanero"
-BR2_OPENPOWER_XML_PACKAGE="habanero-xml"
-BR2_HOSTBOOT_CONFIG_FILE="habanero.config"
-
-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_OCC_BIN_FILENAME="occ.bin"
-
-BR2_HABANERO_SYSTEM_XML_FILENAME="HABANERO_hb.system.xml"
-BR2_HABANERO_MRW_XML_FILENAME="HABANERO_hb.mrw.xml"
-BR2_HABANERO_BIOS_XML_FILENAME="HABANERO_bios.xml"
-
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="HABANERO_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="HABANERO_HB.targeting.bin.ecc"
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
-BR2_OPENPOWER_PNOR_FILENAME="habanero.pnor"
-BR2_OPENPOWER_PNOR_UPDATE_FILENAME="habanero_update.pnor"
-
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-
-# skiboot requirements
-BR2_PACKAGE_SKIBOOT=y
-BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
-
-# petitboot requirements
-BR2_ENABLE_LOCALE_PURGE=y
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
 BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
-BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_LATEST_VERSION=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
 # BR2_PACKAGE_DROPBEAR_SERVER is not set
 BR2_PACKAGE_ETHTOOL=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_POWERPC_UTILS=y
-BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+BR2_HOSTBOOT_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="6a78496c286e284719a8201148a5088030b897de"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="habanero.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="HABANERO_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="HABANERO_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="HABANERO_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
+BR2_OPENPOWER_CONFIG_NAME="habanero"
+BR2_OPENPOWER_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_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/hostboot/garrison.config b/openpower/configs/hostboot/garrison.config
index 4dd3cde..7fc9adf 100755
--- a/openpower/configs/hostboot/garrison.config
+++ b/openpower/configs/hostboot/garrison.config
@@ -11,7 +11,7 @@
 set MVPD_READ_FROM_PNOR
 set MVPD_WRITE_TO_PNOR
 set DJVPD_READ_FROM_HW
-set DJVPD_WRITE_TO_HW
+unset DJVPD_WRITE_TO_HW
 set DJVPD_READ_FROM_PNOR
 set DJVPD_WRITE_TO_PNOR
 set CVPD_READ_FROM_HW
diff --git a/openpower/configs/hostboot/p9dsu.config b/openpower/configs/hostboot/p9dsu.config
new file mode 100644
index 0000000..52ff4c9
--- /dev/null
+++ b/openpower/configs/hostboot/p9dsu.config
@@ -0,0 +1,68 @@
+# The Serial Flash Controller is the AST2400 BMC.
+set   SFC_IS_AST2500
+unset SFC_IS_AST2400
+unset BMC_DOES_SFC_INIT
+unset SFC_IS_IBM_DPSS
+set   ALLOW_MICRON_PNOR
+set   ALLOW_MACRONIX_PNOR
+
+# VPD options.
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
+set MVPD_READ_FROM_PNOR
+set MVPD_WRITE_TO_PNOR
+set DJVPD_READ_FROM_HW
+unset DJVPD_WRITE_TO_HW
+set DJVPD_READ_FROM_PNOR
+set DJVPD_WRITE_TO_PNOR
+unset MEMVPD_READ_FROM_HW
+unset MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_PNOR
+set MEMVPD_WRITE_TO_PNOR
+unset PVPD_READ_FROM_HW
+unset PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+unset PALMETTO_VDDR
+
+# Enable SBE updates
+unset SBE_UPDATE_INDEPENDENT
+unset SBE_UPDATE_SEQUENTIAL
+set SBE_UPDATE_SIMULTANEOUS
+unset NO_SBE_UPDATES
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2500
+
+set DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+unset HTMGT
+unset START_OCC_DURING_BOOT
+
+#PNOR flags
+unset PNOR_TWO_SIDE_SUPPORT
+
+set BMC_BT_LPC_IPMI
+
+# Disable Checktop Analysis
+unset ENABLE_CHECKSTOP_ANALYSIS
+unset IPLTIME_CHECKSTOP_ANALYSIS
+
+# Hostboot will not detect hardware changes
+unset HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+set CONSOLE_OUTPUT_TRACE
+
+unset CONFIG_SECUREBOOT
+unset CONFIG_TPMDD
+unset CONFIG_TPM_NUVOTON
diff --git a/openpower/configs/hostboot/romulus.config b/openpower/configs/hostboot/romulus.config
new file mode 100755
index 0000000..3d8aaad
--- /dev/null
+++ b/openpower/configs/hostboot/romulus.config
@@ -0,0 +1,68 @@
+# The Serial Flash Controller is the AST2400 BMC.
+set   SFC_IS_AST2500
+unset SFC_IS_AST2400
+unset BMC_DOES_SFC_INIT
+unset SFC_IS_IBM_DPSS
+set   ALLOW_MICRON_PNOR
+set   ALLOW_MACRONIX_PNOR
+
+# VPD options.
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
+set MVPD_READ_FROM_PNOR
+set MVPD_WRITE_TO_PNOR
+set DJVPD_READ_FROM_HW
+unset DJVPD_WRITE_TO_HW
+set DJVPD_READ_FROM_PNOR
+set DJVPD_WRITE_TO_PNOR
+set MEMVPD_READ_FROM_HW
+set MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_PNOR
+set MEMVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+unset PALMETTO_VDDR
+
+# Enable SBE updates
+unset SBE_UPDATE_INDEPENDENT
+unset SBE_UPDATE_SEQUENTIAL
+set SBE_UPDATE_SIMULTANEOUS
+unset NO_SBE_UPDATES
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2500
+
+set DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+unset HTMGT
+unset START_OCC_DURING_BOOT
+
+#PNOR flags
+unset PNOR_TWO_SIDE_SUPPORT
+
+set BMC_BT_LPC_IPMI
+
+# Enable Checktop Analysis
+unset ENABLE_CHECKSTOP_ANALYSIS
+unset IPLTIME_CHECKSTOP_ANALYSIS
+
+# Hostboot will detect hardware changes
+unset HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+set CONSOLE_OUTPUT_TRACE
+
+unset CONFIG_SECUREBOOT
+unset CONFIG_TPMDD
+unset CONFIG_TPM_NUVOTON
diff --git a/openpower/configs/hostboot/witherspoon.config b/openpower/configs/hostboot/witherspoon.config
new file mode 100755
index 0000000..a3380fb
--- /dev/null
+++ b/openpower/configs/hostboot/witherspoon.config
@@ -0,0 +1,74 @@
+# The BMC MBOX Protocol is used to access PNOR
+unset SFC_IS_AST2500
+unset SFC_IS_AST2400
+set   PNORDD_IS_BMCMBOX
+unset PNORDD_IS_SFC
+unset BMC_DOES_SFC_INIT
+unset SFC_IS_IBM_DPSS
+set   ALLOW_MICRON_PNOR
+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 MEMVPD_READ_FROM_HW
+set MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_PNOR
+set MEMVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+unset PALMETTO_VDDR
+
+# Disable SBE updates
+unset SBE_UPDATE_INDEPENDENT
+unset SBE_UPDATE_SEQUENTIAL
+set SBE_UPDATE_SIMULTANEOUS
+unset NO_SBE_UPDATES
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2500
+
+unset DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+
+# Compile in hb rt HTMGT : Load/Start OCC
+set HTMGT
+set START_OCC_DURING_BOOT
+unset CONSOLE_OUTPUT_OCC_COMM
+
+#PNOR flags
+unset PNOR_TWO_SIDE_SUPPORT
+
+set BMC_BT_LPC_IPMI
+
+# Disable Checktop Analysis
+unset ENABLE_CHECKSTOP_ANALYSIS
+unset IPLTIME_CHECKSTOP_ANALYSIS
+
+# Hostboot will not detect hardware changes
+unset HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+unset CONSOLE_OUTPUT_TRACE
+set CONSOLE_OUTPUT_FFDCDISPLAY
+
+unset CONFIG_SECUREBOOT
+unset CONFIG_TPMDD
+unset CONFIG_TPM_NUVOTON
diff --git a/openpower/configs/hostboot/zaius.config b/openpower/configs/hostboot/zaius.config
new file mode 100755
index 0000000..7f76996
--- /dev/null
+++ b/openpower/configs/hostboot/zaius.config
@@ -0,0 +1,75 @@
+# The BMC MBOX Protocol is used to access PNOR
+unset SFC_IS_AST2500
+unset SFC_IS_AST2400
+set   PNORDD_IS_BMCMBOX
+unset PNORDD_IS_SFC
+unset BMC_DOES_SFC_INIT
+unset SFC_IS_IBM_DPSS
+set   ALLOW_MICRON_PNOR
+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 MEMVPD_READ_FROM_HW
+set MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_PNOR
+set MEMVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+unset PALMETTO_VDDR
+
+# Disable SBE updates
+unset SBE_UPDATE_INDEPENDENT
+unset SBE_UPDATE_SEQUENTIAL
+set SBE_UPDATE_SIMULTANEOUS
+unset NO_SBE_UPDATES
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2500
+
+unset DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+
+# Compile in hb rt HTMGT : Load/Start OCC
+set HTMGT
+set START_OCC_DURING_BOOT
+unset CONSOLE_OUTPUT_OCC_COMM
+
+#PNOR flags
+unset PNOR_TWO_SIDE_SUPPORT
+
+set BMC_BT_LPC_IPMI
+
+# Disable Checktop Analysis
+unset ENABLE_CHECKSTOP_ANALYSIS
+unset IPLTIME_CHECKSTOP_ANALYSIS
+
+# Hostboot will not detect hardware changes
+unset HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+unset CONSOLE_OUTPUT_TRACE
+set CONSOLE_OUTPUT_FFDCDISPLAY
+
+
+unset SECUREBOOT
+unset TPMDD
+unset TPM_NUVOTON
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index b76ecb8..c0c6bad 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -1,5 +1,4 @@
 CONFIG_PPC64=y
-CONFIG_POWER8_CPU=y
 CONFIG_ALTIVEC=y
 CONFIG_VSX=y
 CONFIG_SMP=y
@@ -32,22 +31,26 @@
 CONFIG_JUMP_LABEL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_SIG=y
+CONFIG_MODULE_SIG_FORCE=y
+CONFIG_MODULE_SIG_SHA512=y
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_PPC_PSERIES is not set
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_IDLE=y
 CONFIG_HZ_100=y
 CONFIG_KEXEC=y
 CONFIG_IRQ_ALL_CPUS=y
+CONFIG_NUMA=y
 # CONFIG_COMPACTION is not set
 # CONFIG_MIGRATION is not set
 # CONFIG_BOUNCE is not set
 CONFIG_PPC_64K_PAGES=y
 CONFIG_SCHED_SMT=y
 CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="console=tty0 console=hvc0"
+CONFIG_CMDLINE="console=tty0 console=hvc0 quiet"
 # CONFIG_SECCOMP is not set
-CONFIG_PCI_MSI=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -86,7 +89,7 @@
 CONFIG_SCSI_CXGB4_ISCSI=m
 CONFIG_SCSI_BNX2_ISCSI=m
 CONFIG_BE2ISCSI=m
-CONFIG_SCSI_AACRAID=y
+CONFIG_SCSI_AACRAID=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -139,12 +142,13 @@
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
 CONFIG_MLX4_EN=m
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
 CONFIG_MYRI10GE=m
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
 # CONFIG_WLAN is not set
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
 # CONFIG_SERIO_SERPORT is not set
@@ -154,15 +158,15 @@
 CONFIG_IPMI_DEVICE_INTERFACE=y
 CONFIG_IPMI_POWERNV=y
 CONFIG_HW_RANDOM=y
-CONFIG_GEN_RTC=y
 CONFIG_RAW_DRIVER=y
 CONFIG_MAX_RAW_DEVS=1024
+CONFIG_TCG_TIS_I2C_NUVOTON=y
 # CONFIG_I2C_COMPAT is not set
 CONFIG_I2C_CHARDEV=y
 # CONFIG_I2C_HELPER_AUTO is not set
 CONFIG_DRM=y
 CONFIG_DRM_RADEON=y
-CONFIG_DRM_AST=y
+CONFIG_DRM_AST=m
 CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_OF=y
@@ -182,6 +186,8 @@
 # CONFIG_USB_EHCI_HCD_PPC_OF is not set
 CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GENERIC=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO_PCI=y
 # CONFIG_IOMMU_SUPPORT is not set
@@ -214,7 +220,6 @@
 CONFIG_CRC_ITU_T=y
 CONFIG_LIBCRC32C=y
 CONFIG_PRINTK_TIME=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
@@ -223,13 +228,13 @@
 # CONFIG_FTRACE is not set
 CONFIG_XMON=y
 CONFIG_XMON_DEFAULT=y
+CONFIG_SECURITY=y
+CONFIG_IMA=y
+CONFIG_EVM=y
 # CONFIG_CRYPTO_ECHAINIV is not set
 CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_CMAC=y
-CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_MD4=y
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_ARC4=y
 CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_HW is not set
diff --git a/openpower/configs/linux/skiroot_p9_defconfig b/openpower/configs/linux/skiroot_p9_defconfig
new file mode 100644
index 0000000..1c6a4c5
--- /dev/null
+++ b/openpower/configs/linux/skiroot_p9_defconfig
@@ -0,0 +1,227 @@
+CONFIG_PPC64=y
+CONFIG_ALTIVEC=y
+CONFIG_VSX=y
+CONFIG_SMP=y
+CONFIG_NR_CPUS=2048
+CONFIG_CPU_LITTLE_ENDIAN=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_CROSS_MEMORY_ATTACH is not set
+CONFIG_IRQ_DOMAIN_DEBUG=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=20
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_RD_GZIP is not set
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_JUMP_LABEL=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_SIG=y
+CONFIG_MODULE_SIG_FORCE=y
+CONFIG_MODULE_SIG_SHA512=y
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_PPC_PSERIES is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_IDLE=y
+CONFIG_HZ_100=y
+CONFIG_KEXEC=y
+CONFIG_IRQ_ALL_CPUS=y
+CONFIG_NUMA=y
+# CONFIG_COMPACTION is not set
+# CONFIG_MIGRATION is not set
+# CONFIG_BOUNCE is not set
+CONFIG_PPC_64K_PAGES=y
+CONFIG_SCHED_SMT=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=tty0 console=hvc0 powersave=off"
+# CONFIG_SECCOMP is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_NET_IPIP=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_IPV6 is not set
+CONFIG_DNS_RESOLVER=y
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_MTD=m
+CONFIG_MTD_POWERNV_FLASH=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_VIRTIO_BLK=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_EEPROM_AT24=y
+# CONFIG_CXL is not set
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_VIRTIO=m
+CONFIG_SCSI_DH=y
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_ATA=y
+CONFIG_SATA_AHCI=y
+# CONFIG_ATA_SFF is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_NETCONSOLE=m
+CONFIG_TUN=m
+CONFIG_VIRTIO_NET=m
+CONFIG_ACENIC=m
+CONFIG_ACENIC_OMIT_TIGON_I=y
+CONFIG_TIGON3=y
+CONFIG_BNX2X=m
+CONFIG_CHELSIO_T1=y
+CONFIG_BE2NET=m
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_MLX4_EN=m
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_SFC=m
+# CONFIG_WLAN is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_MISC=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_DEVMEM is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_IPMI_HANDLER=y
+CONFIG_IPMI_DEVICE_INTERFACE=y
+CONFIG_IPMI_POWERNV=y
+CONFIG_HW_RANDOM=y
+CONFIG_TCG_TIS_I2C_NUVOTON=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_DRM=y
+CONFIG_DRM_RADEON=y
+CONFIG_DRM_AST=m
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_OF=y
+CONFIG_FB_MATROX=y
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_LOGO=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB=y
+CONFIG_USB_MON=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_HCD_PPC_OF is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GENERIC=m
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_PCI=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXT4_FS=m
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_AUTOFS4_FS=m
+CONFIG_ISO9660_FS=m
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_PROC_KCORE=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_MISC_FILESYSTEMS is not set
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_UTF8=y
+CONFIG_CRC16=y
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
+CONFIG_PRINTK_TIME=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SCHEDSTATS=y
+# CONFIG_FTRACE is not set
+CONFIG_XMON=y
+CONFIG_XMON_DEFAULT=y
+CONFIG_SECURITY=y
+CONFIG_IMA=y
+CONFIG_EVM=y
+# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_HW is not set
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index c7ba28e..cf7a6fd 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -1,59 +1,50 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
-BR2_OPENPOWER_PLATFORM=y
-
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
-BR2_GLIBC_VERSION_2_23=y
-
-# No HostBoot for Mambo
-BR2_PACKAGE_HOSTBOOT=n
-BR2_PACKAGE_HOSTBOOT_BINARIES=n
-
-BR2_OPENPOWER_CONFIG_NAME="openpower-mambo"
-
-# no OCC for Mambo either
-BR2_PACKAGE_OCC=n
-
-# we don't need a PNOR layout for Mambo
-BR2_PACKAGE_OPENPOWER_PNOR=n
-
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-
-# skiboot will be built but we don't need embedded payload
-BR2_PACKAGE_SKIBOOT=y
-BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
-
-# petitboot requirements
-BR2_ENABLE_LOCALE_PURGE=y
-BR2_ENABLE_LOCALE_WHITELIST="C en_US"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
 BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_LATEST_VERSION=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
 # BR2_PACKAGE_DROPBEAR_SERVER is not set
 BR2_PACKAGE_ETHTOOL=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_POWERPC_UTILS=y
-BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+# BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
+# BR2_PACKAGE_HOSTBOOT is not set
+# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
+# BR2_PACKAGE_MACHINE_XML is not set
+# BR2_PACKAGE_OPENPOWER_PNOR is not set
+BR2_OPENPOWER_CONFIG_NAME="openpower-mambo"
+BR2_PACKAGE_PETITBOOT=y
+# BR2_PACKAGE_HOST_P8_PORE_BINUTILS is not set
+# BR2_PACKAGE_OCC is not set
+# BR2_PACKAGE_CAPP_UCODE is not set
+# BR2_PACKAGE_IMA_CATALOG is not set
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
new file mode 100644
index 0000000..c00a5fd
--- /dev/null
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -0,0 +1,53 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TARGET_GENERIC_HOSTNAME="skiroot-p9"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_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_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_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+# BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
+# BR2_PACKAGE_HOSTBOOT is not set
+# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
+# BR2_PACKAGE_MACHINE_XML is not set
+# BR2_PACKAGE_OPENPOWER_PNOR is not set
+BR2_OPENPOWER_CONFIG_NAME="openpower-mambo-p9"
+BR2_PACKAGE_PETITBOOT=y
+# BR2_PACKAGE_HOST_P8_PORE_BINUTILS is not set
+# BR2_PACKAGE_OCC is not set
+# BR2_PACKAGE_CAPP_UCODE is not set
+# BR2_PACKAGE_HOST_PPE42_BINUTILS is not set
+# BR2_PACKAGE_HOST_PPE42_GCC is not set
+# BR2_PACKAGE_IMA_CATALOG is not set
+# BR2_PACKAGE_SBE is not set
diff --git a/openpower/configs/p9dsu_defconfig b/openpower/configs/p9dsu_defconfig
new file mode 100644
index 0000000..ca84442
--- /dev/null
+++ b/openpower/configs/p9dsu_defconfig
@@ -0,0 +1,66 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_4_9_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+BR2_HOSTBOOT_CONFIG_FILE="p9dsu.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="p9dsu-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="1c5c5b43ace53371671ca189f7fae16fdf8fe3ed"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="p9dsu.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="P9DSU_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="P9DSU_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="P9DSU_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
+BR2_OPENPOWER_CONFIG_NAME="p9dsu"
+BR2_OPENPOWER_PNOR_FILENAME="p9dsu.pnor"
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9n.ref_image.hdr.bin.ecc"
+BR2_WOFDATA_FILENAME="wof_output"
+BR2_WOFDATA_BINARY_FILENAME="wofdata.bin.ecc"
+BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="P9DSU_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="P9DSU_HB.targeting.bin.ecc"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 6b7a269..41691b7 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -1,72 +1,63 @@
 BR2_powerpc64le=y
 BR2_powerpc_power8=y
-BR2_OPENPOWER_PLATFORM=y
-
+BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OP_BUILD_PATH)/patches/palmetto-patches"
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
-# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
-BR2_GLIBC_VERSION_2_23=y
-
-BR2_OPENPOWER_CONFIG_NAME="palmetto"
-BR2_OPENPOWER_XML_PACKAGE="palmetto-xml"
-BR2_HOSTBOOT_CONFIG_FILE="palmetto.config"
-
-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_OCC_BIN_FILENAME="occ.bin"
-
-BR2_PALMETTO_SYSTEM_XML_FILENAME="PALMETTO_hb.system.xml"
-BR2_PALMETTO_MRW_XML_FILENAME="PALMETTO_hb.mrw.xml"
-BR2_PALMETTO_BIOS_XML_FILENAME="PALMETTO_bios.xml"
-
-BR2_OPENPOWER_TARGETING_BIN_FILENAME="PALMETTO_HB.targeting.bin"
-BR2_OPENPOWER_TARGETING_ECC_FILENAME="PALMETTO_HB.targeting.bin.ecc"
-BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
-
-BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutSingleSide.xml"
-BR2_OPENPOWER_PNOR_FILENAME="palmetto.pnor"
-
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
-
-# skiboot requirements
-BR2_PACKAGE_SKIBOOT=y
-BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
-
-# petitboot requirements
-BR2_ENABLE_LOCALE_PURGE=y
-BR2_ENABLE_LOCALE_WHITELIST="C en_US"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="../openpower/overlay"
 BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_LATEST_VERSION=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
 # BR2_PACKAGE_DROPBEAR_SERVER is not set
 BR2_PACKAGE_ETHTOOL=y
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_PETITBOOT=y
-BR2_PACKAGE_PETITBOOT_MTD=y
-BR2_PACKAGE_IPMITOOL=y
-BR2_PACKAGE_POWERPC_UTILS=y
-BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER8=y
+BR2_HOSTBOOT_CONFIG_FILE="palmetto.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="palmetto-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="c6f563966e9fadc4fb60194c064b2310c9b916b1"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="palmetto.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="PALMETTO_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="PALMETTO_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="PALMETTO_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutSingleSide.xml"
+BR2_OPENPOWER_CONFIG_NAME="palmetto"
+BR2_OPENPOWER_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_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
 BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER8"
diff --git a/openpower/configs/romulus_defconfig b/openpower/configs/romulus_defconfig
new file mode 100644
index 0000000..6f1540a
--- /dev/null
+++ b/openpower/configs/romulus_defconfig
@@ -0,0 +1,64 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_4_9_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+BR2_HOSTBOOT_CONFIG_FILE="romulus.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="romulus-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="301279cbdb3595ad1bbdce4d9d2189db0470a62a"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="romulus.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="ROMULUS_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="ROMULUS_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="ROMULUS_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
+BR2_OPENPOWER_CONFIG_NAME="romulus"
+BR2_OPENPOWER_PNOR_FILENAME="romulus.pnor"
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9n.ref_image.hdr.bin.ecc"
+BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="ROMULUS_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="ROMULUS_HB.targeting.bin.ecc"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
new file mode 100644
index 0000000..309fc03
--- /dev/null
+++ b/openpower/configs/witherspoon_defconfig
@@ -0,0 +1,66 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_4_9_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+BR2_HOSTBOOT_CONFIG_FILE="witherspoon.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="witherspoon-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="d0f86cf46a99800c6f15a4e650701da141216940"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="witherspoon.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="WITHERSPOON_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="WITHERSPOON_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="WITHERSPOON_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
+BR2_OPENPOWER_CONFIG_NAME="witherspoon"
+BR2_OPENPOWER_PNOR_FILENAME="witherspoon.pnor"
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9n.ref_image.hdr.bin.ecc"
+BR2_WOFDATA_FILENAME="wof_output"
+BR2_WOFDATA_BINARY_FILENAME="wofdata.bin.ecc"
+BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="WITHERSPOON_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="WITHERSPOON_HB.targeting.bin.ecc"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
new file mode 100644
index 0000000..2657629
--- /dev/null
+++ b/openpower/configs/zaius_defconfig
@@ -0,0 +1,66 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_4_9_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+BR2_HOSTBOOT_CONFIG_FILE="zaius.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="zaius-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="500647235aab6e2bb5a24dd00baab59083461833"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="zaius.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="ZAIUS_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="ZAIUS_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="ZAIUS_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayout_64.xml"
+BR2_OPENPOWER_CONFIG_NAME="zaius"
+BR2_OPENPOWER_PNOR_FILENAME="zaius.pnor"
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="nimbus_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9n.ref_image.hdr.bin.ecc"
+BR2_WOFDATA_FILENAME="wof_output"
+BR2_WOFDATA_BINARY_FILENAME="wofdata.bin.ecc"
+BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="ZAIUS_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="ZAIUS_HB.targeting.bin.ecc"
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_OCC_BIN_FILENAME="occ.bin"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER9"
diff --git a/openpower/configs/zz_defconfig b/openpower/configs/zz_defconfig
new file mode 100644
index 0000000..afd6fc7
--- /dev/null
+++ b/openpower/configs/zz_defconfig
@@ -0,0 +1,57 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_GLIBC_VERSION_2_24=y
+BR2_BINUTILS_VERSION_2_27_X=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.2"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_RADEON=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_TARGET_ROOTFS_CPIO=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+# BR2_PACKAGE_HOST_OPENPOWER_FFS is not set
+# BR2_PACKAGE_HOSTBOOT is not set
+# BR2_PACKAGE_HOSTBOOT_BINARIES is not set
+# BR2_PACKAGE_MACHINE_XML is not set
+# BR2_PACKAGE_OPENPOWER_PNOR is not set
+BR2_OPENPOWER_CONFIG_NAME="openpower-firenze"
+# BR2_TARGET_SKIBOOT_XZ is not set
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+# BR2_PACKAGE_HOST_P8_PORE_BINUTILS is not set
+# BR2_PACKAGE_OCC is not set
+# BR2_PACKAGE_CAPP_UCODE is not set
+BR2_PACKAGE_LOADKEYS=y
+# BR2_PACKAGE_HOST_PPE42_BINUTILS is not set
+# BR2_PACKAGE_HOST_PPE42_GCC is not set
+# BR2_PACKAGE_IMA_CATALOG is not set
diff --git a/openpower/external.desc b/openpower/external.desc
new file mode 100644
index 0000000..2088d4b
--- /dev/null
+++ b/openpower/external.desc
@@ -0,0 +1,2 @@
+name: OP_BUILD
+desc: The OpenPower Firmware build environment
diff --git a/openpower/external.mk b/openpower/external.mk
index 8d7b578..e8f46f1 100644
--- a/openpower/external.mk
+++ b/openpower/external.mk
@@ -1,6 +1,6 @@
-include $(sort $(wildcard $(BR2_EXTERNAL)/package/*.mk))
-include $(sort $(wildcard $(BR2_EXTERNAL)/package/*/*.mk))
+include $(sort $(wildcard $(BR2_EXTERNAL_OP_BUILD_PATH)/package/*.mk))
+include $(sort $(wildcard $(BR2_EXTERNAL_OP_BUILD_PATH)/package/*/*.mk))
 
 # Utilize user-defined custom directory.
-include $(sort $(wildcard $(BR2_EXTERNAL)/custom/*.mk))
-BR2_GLOBAL_PATCH_DIR += "$(BR2_EXTERNAL)/custom/patches"
+include $(sort $(wildcard $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/*.mk))
+BR2_GLOBAL_PATCH_DIR += "$(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches"
diff --git a/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
similarity index 72%
rename from openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
rename to openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index 5534929..ba1eeaf 100644
--- a/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
+++ b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -1,7 +1,7 @@
-From 996db84dbe234e5f3845c0408c68d5c091d3d201 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Thadeu Lima De Souza Cascardo <thadeul@br.ibm.com>
 Date: Tue, 25 Mar 2014 10:45:16 -0400
-Subject: [PATCH 1/7] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 1/4] xhci: Use xhci_pci_remove for xhci device shutdown
 
 Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
 Signed-off-by: Joel Stanley <joel@jms.id.au>
@@ -10,10 +10,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index ea4fb4b0cd44..186a544e1d1f 100644
+index 7b86508ac8cf..c358d5e7ef79 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -441,7 +441,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -470,7 +470,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
@@ -23,5 +23,5 @@
  	.driver = {
  		.pm = &usb_hcd_pci_pm_ops
 -- 
-2.8.1
+2.11.0
 
diff --git a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
new file mode 100644
index 0000000..ad7d0a1
--- /dev/null
+++ b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
@@ -0,0 +1,55 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Tue, 19 Jul 2016 22:43:26 +0930
+Subject: [PATCH 2/4] xhci: do not halt the secondary HCD
+
+We can't halt the secondary HCD, because it's also the primary HCD,
+which will cause problems if we have devices attached to the primary
+HCD, like a keyboard.
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/usb/host/xhci.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
+index 953fd8f62df0..d17a7039b154 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -689,6 +689,21 @@ void xhci_stop(struct usb_hcd *hcd)
+ 
+ 	mutex_lock(&xhci->mutex);
+ 
++	/*
++	 * We can't halt the secondary HCD, because it's also the primary
++	 * HCD, which will cause problems if we have devices attached to the
++	 * primary HCD, like a keyboard.
++	 */
++	if (!usb_hcd_is_primary_hcd(hcd)) {
++		/* The shared_hcd is going to be deallocated shortly (the USB
++		 * core only calls this function when allocation fails in
++		 * usb_add_hcd(), or usb_remove_hcd() is called).  So we need
++		 * to unset xHCI's pointer.  */
++		xhci->shared_hcd = NULL;
++		mutex_unlock(&xhci->mutex);
++		return;
++	}
++
+ 	if (!(xhci->xhc_state & XHCI_STATE_HALTED)) {
+ 		spin_lock_irq(&xhci->lock);
+ 
+@@ -699,11 +714,6 @@ void xhci_stop(struct usb_hcd *hcd)
+ 		spin_unlock_irq(&xhci->lock);
+ 	}
+ 
+-	if (!usb_hcd_is_primary_hcd(hcd)) {
+-		mutex_unlock(&xhci->mutex);
+-		return;
+-	}
+-
+ 	xhci_cleanup_msix(xhci);
+ 
+ 	/* Deleting Compliance Mode Recovery Timer */
+-- 
+2.11.0
+
diff --git a/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
new file mode 100644
index 0000000..d31ee40
--- /dev/null
+++ b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
@@ -0,0 +1,120 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Matt Brown <matthew.brown.dev@gmail.com>
+Date: Thu, 30 Mar 2017 10:28:01 +1100
+Subject: [PATCH 3/4] powerpc/powernv: Add OPAL exports attributes to sysfs
+
+New versions of OPAL have a device node /ibm,opal/firmware/exports, each
+property of which describes a range of memory in OPAL that Linux might
+want to export to userspace for debugging.
+
+This patch adds a sysfs file under 'opal/exports' for each property
+found there, and makes it read-only by root.
+
+Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
+[mpe: Drop counting of props, rename to attr, free on sysfs error, c'log]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit 11fe909d236263f62808dc3c73caf798e026d7aa)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/platforms/powernv/opal.c | 76 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 76 insertions(+)
+
+diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
+index e0f856bfbfe8..25ea8f6fe7f8 100644
+--- a/arch/powerpc/platforms/powernv/opal.c
++++ b/arch/powerpc/platforms/powernv/opal.c
+@@ -595,6 +595,79 @@ static void opal_export_symmap(void)
+ 		pr_warn("Error %d creating OPAL symbols file\n", rc);
+ }
+ 
++static ssize_t export_attr_read(struct file *fp, struct kobject *kobj,
++				struct bin_attribute *bin_attr, char *buf,
++				loff_t off, size_t count)
++{
++	return memory_read_from_buffer(buf, count, &off, bin_attr->private,
++				       bin_attr->size);
++}
++
++/*
++ * opal_export_attrs: creates a sysfs node for each property listed in
++ * the device-tree under /ibm,opal/firmware/exports/
++ * All new sysfs nodes are created under /opal/exports/.
++ * This allows for reserved memory regions (e.g. HDAT) to be read.
++ * The new sysfs nodes are only readable by root.
++ */
++static void opal_export_attrs(void)
++{
++	struct bin_attribute *attr;
++	struct device_node *np;
++	struct property *prop;
++	struct kobject *kobj;
++	u64 vals[2];
++	int rc;
++
++	np = of_find_node_by_path("/ibm,opal/firmware/exports");
++	if (!np)
++		return;
++
++	/* Create new 'exports' directory - /sys/firmware/opal/exports */
++	kobj = kobject_create_and_add("exports", opal_kobj);
++	if (!kobj) {
++		pr_warn("kobject_create_and_add() of exports failed\n");
++		return;
++	}
++
++	for_each_property_of_node(np, prop) {
++		if (!strcmp(prop->name, "name") || !strcmp(prop->name, "phandle"))
++			continue;
++
++		if (of_property_read_u64_array(np, prop->name, &vals[0], 2))
++			continue;
++
++		attr = kmalloc(sizeof(*attr), GFP_KERNEL);
++
++		if (attr == NULL) {
++			pr_warn("Failed kmalloc for bin_attribute!");
++			continue;
++		}
++
++		attr->attr.name = kstrdup(prop->name, GFP_KERNEL);
++		attr->attr.mode = 0400;
++		attr->read = export_attr_read;
++		attr->private = __va(vals[0]);
++		attr->size = vals[1];
++
++		if (attr->attr.name == NULL) {
++			pr_warn("Failed kstrdup for bin_attribute attr.name");
++			kfree(attr);
++			continue;
++		}
++
++		rc = sysfs_create_bin_file(kobj, attr);
++		if (rc) {
++			pr_warn("Error %d creating OPAL sysfs exports/%s file\n",
++				 rc, prop->name);
++			kfree(attr->attr.name);
++			kfree(attr);
++		}
++	}
++
++	of_node_put(np);
++}
++
+ static void __init opal_dump_region_init(void)
+ {
+ 	void *addr;
+@@ -733,6 +806,9 @@ static int __init opal_init(void)
+ 		opal_msglog_sysfs_init();
+ 	}
+ 
++	/* Export all properties */
++	opal_export_attrs();
++
+ 	/* Initialize platform devices: IPMI backend, PRD & flash interface */
+ 	opal_pdev_init("ibm,opal-ipmi");
+ 	opal_pdev_init("ibm,opal-flash");
+-- 
+2.11.0
+
diff --git a/openpower/linux/0004-Release-OpenPower-kernel.patch b/openpower/linux/0004-Release-OpenPower-kernel.patch
new file mode 100644
index 0000000..a5ef22e
--- /dev/null
+++ b/openpower/linux/0004-Release-OpenPower-kernel.patch
@@ -0,0 +1,26 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Wed, 3 May 2017 13:25:26 +0930
+Subject: [PATCH 4/4] Release OpenPower kernel
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index d7b64830a7b7..e77804c0405d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 4
+ PATCHLEVEL = 11
+ SUBLEVEL = 2
+-EXTRAVERSION =
++EXTRAVERSION = -openpower1
+ NAME = Fearless Coyote
+ 
+ # *DOCUMENTATION*
+-- 
+2.11.0
+
diff --git a/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch b/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
deleted file mode 100644
index c3d0af6..0000000
--- a/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 3b14bbcd5006de154dd3a8830a56f3d4a9c3622e Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Thu, 28 Jan 2016 13:07:06 +1030
-Subject: [PATCH 2/7] Revert "usb: xhci: stop everything on the first call to
- xhci_stop"
-
-This reverts commit 8c24d6d7b09deee3036ddc4f2b81b53b28c8f877.
-
-With this patch, the driver stops everything at the first call to
-xhci_stop, which is always for the secondary HCD when executing the
-.remove handler. We instead want to only stop when the primray HCD is
-shutting down.
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/usb/host/xhci.c | 20 +++++++++++++++-----
- 1 file changed, 15 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index ec9e758d5fcd..0e66476d4866 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -666,6 +666,15 @@ int xhci_run(struct usb_hcd *hcd)
- }
- EXPORT_SYMBOL_GPL(xhci_run);
- 
-+static void xhci_only_stop_hcd(struct usb_hcd *hcd)
-+{
-+	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
-+
-+	spin_lock_irq(&xhci->lock);
-+	xhci_halt(xhci);
-+	spin_unlock_irq(&xhci->lock);
-+}
-+
- /*
-  * Stop xHCI driver.
-  *
-@@ -680,14 +689,15 @@ void xhci_stop(struct usb_hcd *hcd)
- 	u32 temp;
- 	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
- 
--	if (xhci->xhc_state & XHCI_STATE_HALTED)
-+	mutex_lock(&xhci->mutex);
-+
-+	if (!usb_hcd_is_primary_hcd(hcd)) {
-+		xhci_only_stop_hcd(xhci->shared_hcd);
-+		mutex_unlock(&xhci->mutex);
- 		return;
-+	}
- 
--	mutex_lock(&xhci->mutex);
- 	spin_lock_irq(&xhci->lock);
--	xhci->xhc_state |= XHCI_STATE_HALTED;
--	xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
--
- 	/* Make sure the xHC is halted for a USB3 roothub
- 	 * (xhci_stop() could be called as part of failed init).
- 	 */
--- 
-2.8.1
-
diff --git a/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
deleted file mode 100644
index 6118ab4..0000000
--- a/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From ebac2735434d75a2b2a14506c92300b4088d9d9d Mon Sep 17 00:00:00 2001
-From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
-Date: Mon, 10 Mar 2014 13:02:13 -0300
-Subject: [PATCH 3/7] xhci: do not halt the secondary HCD
-
-We can't halt the secondary HCD, because it's also the primary HCD,
-which will cause problems if we have devices attached to the primary
-HCD, like a keyboard.
-
-Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/usb/host/xhci.c | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 0e66476d4866..ce7b10506bac 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -671,7 +671,18 @@ static void xhci_only_stop_hcd(struct usb_hcd *hcd)
- 	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
- 
- 	spin_lock_irq(&xhci->lock);
--	xhci_halt(xhci);
-+	/*
-+	 * We can't halt the secondary HCD, because it's also the
-+	 * primary HCD, which will cause problems if we have devices
-+	 * attached to the primary HCD, like a keyboard.
-+	 */
-+	/*xhci_halt(xhci);*/
-+
-+	/* The shared_hcd is going to be deallocated shortly (the USB core only
-+	 * calls this function when allocation fails in usb_add_hcd(), or
-+	 * usb_remove_hcd() is called).  So we need to unset xHCI's pointer.
-+	 */
-+	xhci->shared_hcd = NULL;
- 	spin_unlock_irq(&xhci->lock);
- }
- 
--- 
-2.8.1
-
diff --git a/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch b/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
deleted file mode 100644
index bafbb62..0000000
--- a/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 0d888c4e2a38d43e5e24bae62b18418ab667f38a Mon Sep 17 00:00:00 2001
-From: Jeremy Kerr <jk@ozlabs.org>
-Date: Wed, 2 Mar 2016 11:25:47 +0800
-Subject: [PATCH 4/7] drivers/drm/ast: Switch SCU to VGA output on POST
-
-On AST BMC platforms, the BMC may be using the VGA device for UART
-mirroring. In this case, we need to switch the DAC output to
-VGA mode.
-
-Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_post.c | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 810c51d92b99..703dba2ba84b 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -32,6 +32,7 @@
- #include "ast_dram_tables.h"
- 
- static void ast_init_dram_2300(struct drm_device *dev);
-+static void ast_init_output_control(struct drm_device *dev);
- 
- void ast_enable_vga(struct drm_device *dev)
- {
-@@ -384,6 +385,9 @@ void ast_post_gpu(struct drm_device *dev)
- 	else
- 		ast_init_dram_reg(dev);
- 
-+	if (ast->chip == AST2400)
-+		ast_init_output_control(dev);
-+
- 	ast_init_3rdtx(dev);
- }
- 
-@@ -1655,3 +1659,31 @@ static void ast_init_dram_2300(struct drm_device *dev)
- 	} while ((reg & 0x40) == 0);
- }
- 
-+static void ast_init_output_control(struct drm_device *dev)
-+{
-+	struct ast_private *ast = dev->dev_private;
-+	const uint32_t scu_addr = 0x1e6e2000;
-+	const uint32_t scu_key = 0x1688a8a8;
-+	uint32_t val;
-+
-+	/* unlock write access to SCUs */
-+	val = ast_mindwm(ast, scu_addr);
-+	ast_moutdwm(ast, scu_addr, scu_key);
-+
-+	/* configure SCU2C with the appropriate video output mode */
-+	val = ast_mindwm(ast, scu_addr | 0x2c);
-+
-+	switch (ast->tx_chip_type) {
-+	case AST_TX_SIL164:
-+	case AST_TX_DP501:
-+		/* Enable DVO output */
-+		val &= ~0x40000;
-+		break;
-+	default:
-+		/* VGA only: enable DAC output */
-+		val &= ~0x30000;
-+		break;
-+	}
-+
-+	ast_moutdwm(ast, scu_addr | 0x2c, val);
-+}
--- 
-2.8.1
-
diff --git a/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch b/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch
deleted file mode 100644
index c140845..0000000
--- a/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 26d223cac4dea89aadf26eba6559220d2e925d88 Mon Sep 17 00:00:00 2001
-From: Hannes Reinecke <hare@suse.de>
-Date: Tue, 1 Mar 2016 13:57:59 +1100
-Subject: [PATCH 5/7] scsi: ignore errors from scsi_dh_add_device()
-
-device handler initialisation might fail due to a number of
-reasons. But as device_handlers are optional this shouldn't
-cause us to disable the device entirely.
-So just ignore errors from scsi_dh_add_device().
-
-Reviewed-by: Johannes Thumshirn <jthumshirn@suse.com>
-Reviewed-by: Christoph Hellwig <hch@lst.de>
-Signed-off-by: Hannes Reinecke <hare@suse.de>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/scsi_sysfs.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
-index c8115b4fe474..750df9b9b11c 100644
---- a/drivers/scsi/scsi_sysfs.c
-+++ b/drivers/scsi/scsi_sysfs.c
-@@ -1058,11 +1058,12 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
- 	}
- 
- 	error = scsi_dh_add_device(sdev);
--	if (error) {
-+	if (error)
-+		/*
-+		 * device_handler is optional, so any error can be ignored
-+		 */
- 		sdev_printk(KERN_INFO, sdev,
- 				"failed to add device handler: %d\n", error);
--		return error;
--	}
- 
- 	device_enable_async_suspend(&sdev->sdev_dev);
- 	error = device_add(&sdev->sdev_dev);
--- 
-2.8.1
-
diff --git a/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch b/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
deleted file mode 100644
index 6070d5e..0000000
--- a/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
+++ /dev/null
@@ -1,299 +0,0 @@
-From 6189e547b0a411e22dffdd79768d67945eb81c8b Mon Sep 17 00:00:00 2001
-From: Huy Nguyen <huyn@mellanox.com>
-Date: Wed, 17 Feb 2016 17:24:26 +0200
-Subject: [PATCH 6/7] net/mlx4_core: Set UAR page size to 4KB regardless of
- system page size
-
-problem description:
-
-The current code sets UAR page size equal to system page size.
-The ConnectX-3 and ConnectX-3 Pro HWs require minimum 128 UAR pages.
-The mlx4 kernel drivers are not loaded if there is less than 128 UAR pages.
-
-solution:
-
-Always set UAR page to 4KB. This allows more UAR pages if the OS
-has PAGE_SIZE larger than 4KB. For example, PowerPC kernel use 64KB
-system page size, with 4MB uar region, there are 4MB/2/64KB = 32
-uars (half for uar, half for blueflame). This does not meet minimum 128
-UAR pages requirement. With 4KB UAR page, there are 4MB/2/4KB = 512 uars
-which meet the minimum requirement.
-
-Note that only codes in mlx4_core that deal with firmware know that uar
-page size is 4KB. Codes that deal with usr page in cq and qp context
-(mlx4_ib, mlx4_en and part of mlx4_core) still have the same assumption
-that uar page size equals to system page size.
-
-Note that with this implementation, on 64KB system page size kernel, there
-are 16 uars per system page but only one uars is used. The other 15
-uars are ignored because of the above assumption.
-
-Regarding SR-IOV, mlx4_core in hypervisor will set the uar page size
-to 4KB and mlx4_core code in virtual OS will obtain the uar page size from
-firmware.
-
-Regarding backward compatibility in SR-IOV, if hypervisor has this new code,
-the virtual OS must be updated. If hypervisor has old code, and the virtual
-OS has this new code, the new code will be backward compatible with the
-old code. If the uar size is big enough, this new code in VF continues to
-work with 64 KB uar page size (on PowerPc kernel). If the uar size does not
-meet 128 uars requirement, this new code not loaded in VF and print the same
-error message as the old code in Hypervisor.
-
-Signed-off-by: Huy Nguyen <huyn@mellanox.com>
-Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-(cherry picked from commit 85743f1eb34548ba4b056d2f184a3d107a3b8917)
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/infiniband/hw/mlx4/qp.c                   |  7 ++-
- drivers/net/ethernet/mellanox/mlx4/cq.c           |  4 +-
- drivers/net/ethernet/mellanox/mlx4/en_resources.c |  3 +-
- drivers/net/ethernet/mellanox/mlx4/en_tx.c        |  4 +-
- drivers/net/ethernet/mellanox/mlx4/eq.c           |  7 +--
- drivers/net/ethernet/mellanox/mlx4/main.c         | 56 ++++++++++++++++++-----
- drivers/net/ethernet/mellanox/mlx4/pd.c           | 12 +++--
- include/linux/mlx4/device.h                       | 13 ++++++
- 8 files changed, 84 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
-index 13eaaf45288f..c981fba11da8 100644
---- a/drivers/infiniband/hw/mlx4/qp.c
-+++ b/drivers/infiniband/hw/mlx4/qp.c
-@@ -1591,9 +1591,12 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
- 	}
- 
- 	if (qp->ibqp.uobject)
--		context->usr_page = cpu_to_be32(to_mucontext(ibqp->uobject->context)->uar.index);
-+		context->usr_page = cpu_to_be32(
-+			mlx4_to_hw_uar_index(dev->dev,
-+					     to_mucontext(ibqp->uobject->context)->uar.index));
- 	else
--		context->usr_page = cpu_to_be32(dev->priv_uar.index);
-+		context->usr_page = cpu_to_be32(
-+			mlx4_to_hw_uar_index(dev->dev, dev->priv_uar.index));
- 
- 	if (attr_mask & IB_QP_DEST_QPN)
- 		context->remote_qpn = cpu_to_be32(attr->dest_qp_num);
-diff --git a/drivers/net/ethernet/mellanox/mlx4/cq.c b/drivers/net/ethernet/mellanox/mlx4/cq.c
-index 3348e646db70..a849da92f857 100644
---- a/drivers/net/ethernet/mellanox/mlx4/cq.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/cq.c
-@@ -318,7 +318,9 @@ int mlx4_cq_alloc(struct mlx4_dev *dev, int nent,
- 	if (timestamp_en)
- 		cq_context->flags  |= cpu_to_be32(1 << 19);
- 
--	cq_context->logsize_usrpage = cpu_to_be32((ilog2(nent) << 24) | uar->index);
-+	cq_context->logsize_usrpage =
-+		cpu_to_be32((ilog2(nent) << 24) |
-+			    mlx4_to_hw_uar_index(dev, uar->index));
- 	cq_context->comp_eqn	    = priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(vector)].eqn;
- 	cq_context->log_page_size   = mtt->page_shift - MLX4_ICM_PAGE_SHIFT;
- 
-diff --git a/drivers/net/ethernet/mellanox/mlx4/en_resources.c b/drivers/net/ethernet/mellanox/mlx4/en_resources.c
-index 12aab5a659d3..02e925d6f734 100644
---- a/drivers/net/ethernet/mellanox/mlx4/en_resources.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/en_resources.c
-@@ -58,7 +58,8 @@ void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride,
- 	} else {
- 		context->sq_size_stride = ilog2(TXBB_SIZE) - 4;
- 	}
--	context->usr_page = cpu_to_be32(mdev->priv_uar.index);
-+	context->usr_page = cpu_to_be32(mlx4_to_hw_uar_index(mdev->dev,
-+					mdev->priv_uar.index));
- 	context->local_qpn = cpu_to_be32(qpn);
- 	context->pri_path.ackto = 1 & 0x07;
- 	context->pri_path.sched_queue = 0x83 | (priv->port - 1) << 6;
-diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
-index 4421bf5463f6..e0946ab22010 100644
---- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
-@@ -213,7 +213,9 @@ int mlx4_en_activate_tx_ring(struct mlx4_en_priv *priv,
- 	mlx4_en_fill_qp_context(priv, ring->size, ring->stride, 1, 0, ring->qpn,
- 				ring->cqn, user_prio, &ring->context);
- 	if (ring->bf_alloced)
--		ring->context.usr_page = cpu_to_be32(ring->bf.uar->index);
-+		ring->context.usr_page =
-+			cpu_to_be32(mlx4_to_hw_uar_index(mdev->dev,
-+							 ring->bf.uar->index));
- 
- 	err = mlx4_qp_to_ready(mdev->dev, &ring->wqres.mtt, &ring->context,
- 			       &ring->qp, &ring->qp_state);
-diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c
-index 603d1c3d3b2e..ad6240e45441 100644
---- a/drivers/net/ethernet/mellanox/mlx4/eq.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/eq.c
-@@ -924,9 +924,10 @@ static void __iomem *mlx4_get_eq_uar(struct mlx4_dev *dev, struct mlx4_eq *eq)
- 
- 	if (!priv->eq_table.uar_map[index]) {
- 		priv->eq_table.uar_map[index] =
--			ioremap(pci_resource_start(dev->persist->pdev, 2) +
--				((eq->eqn / 4) << PAGE_SHIFT),
--				PAGE_SIZE);
-+			ioremap(
-+				pci_resource_start(dev->persist->pdev, 2) +
-+				((eq->eqn / 4) << (dev->uar_page_shift)),
-+				(1 << (dev->uar_page_shift)));
- 		if (!priv->eq_table.uar_map[index]) {
- 			mlx4_err(dev, "Couldn't map EQ doorbell for EQN 0x%06x\n",
- 				 eq->eqn);
-diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
-index 31c491e02e69..225551150442 100644
---- a/drivers/net/ethernet/mellanox/mlx4/main.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
-@@ -168,6 +168,20 @@ struct mlx4_port_config {
- 
- static atomic_t pf_loading = ATOMIC_INIT(0);
- 
-+static inline void mlx4_set_num_reserved_uars(struct mlx4_dev *dev,
-+					      struct mlx4_dev_cap *dev_cap)
-+{
-+	/* The reserved_uars is calculated by system page size unit.
-+	 * Therefore, adjustment is added when the uar page size is less
-+	 * than the system page size
-+	 */
-+	dev->caps.reserved_uars	=
-+		max_t(int,
-+		      mlx4_get_num_reserved_uar(dev),
-+		      dev_cap->reserved_uars /
-+			(1 << (PAGE_SHIFT - dev->uar_page_shift)));
-+}
-+
- int mlx4_check_port_params(struct mlx4_dev *dev,
- 			   enum mlx4_port_type *port_type)
- {
-@@ -386,8 +400,6 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
- 	dev->caps.reserved_mtts      = dev_cap->reserved_mtts;
- 	dev->caps.reserved_mrws	     = dev_cap->reserved_mrws;
- 
--	/* The first 128 UARs are used for EQ doorbells */
--	dev->caps.reserved_uars	     = max_t(int, 128, dev_cap->reserved_uars);
- 	dev->caps.reserved_pds	     = dev_cap->reserved_pds;
- 	dev->caps.reserved_xrcds     = (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) ?
- 					dev_cap->reserved_xrcds : 0;
-@@ -405,6 +417,15 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
- 	dev->caps.max_gso_sz	     = dev_cap->max_gso_sz;
- 	dev->caps.max_rss_tbl_sz     = dev_cap->max_rss_tbl_sz;
- 
-+	/* Save uar page shift */
-+	if (!mlx4_is_slave(dev)) {
-+		/* Virtual PCI function needs to determine UAR page size from
-+		 * firmware. Only master PCI function can set the uar page size
-+		 */
-+		dev->uar_page_shift = DEFAULT_UAR_PAGE_SHIFT;
-+		mlx4_set_num_reserved_uars(dev, dev_cap);
-+	}
-+
- 	if (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_PHV_EN) {
- 		struct mlx4_init_hca_param hca_param;
- 
-@@ -815,16 +836,25 @@ static int mlx4_slave_cap(struct mlx4_dev *dev)
- 		return -ENODEV;
- 	}
- 
--	/* slave gets uar page size from QUERY_HCA fw command */
--	dev->caps.uar_page_size = 1 << (hca_param.uar_page_sz + 12);
-+	/* Set uar_page_shift for VF */
-+	dev->uar_page_shift = hca_param.uar_page_sz + 12;
- 
--	/* TODO: relax this assumption */
--	if (dev->caps.uar_page_size != PAGE_SIZE) {
--		mlx4_err(dev, "UAR size:%d != kernel PAGE_SIZE of %ld\n",
--			 dev->caps.uar_page_size, PAGE_SIZE);
--		return -ENODEV;
-+	/* Make sure the master uar page size is valid */
-+	if (dev->uar_page_shift > PAGE_SHIFT) {
-+		mlx4_err(dev,
-+			 "Invalid configuration: uar page size is larger than system page size\n");
-+		return  -ENODEV;
- 	}
- 
-+	/* Set reserved_uars based on the uar_page_shift */
-+	mlx4_set_num_reserved_uars(dev, &dev_cap);
-+
-+	/* Although uar page size in FW differs from system page size,
-+	 * upper software layers (mlx4_ib, mlx4_en and part of mlx4_core)
-+	 * still works with assumption that uar page size == system page size
-+	 */
-+	dev->caps.uar_page_size = PAGE_SIZE;
-+
- 	memset(&func_cap, 0, sizeof(func_cap));
- 	err = mlx4_QUERY_FUNC_CAP(dev, 0, &func_cap);
- 	if (err) {
-@@ -2092,8 +2122,12 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
- 
- 		dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1;
- 
--		init_hca.log_uar_sz = ilog2(dev->caps.num_uars);
--		init_hca.uar_page_sz = PAGE_SHIFT - 12;
-+		/* Always set UAR page size 4KB, set log_uar_sz accordingly */
-+		init_hca.log_uar_sz = ilog2(dev->caps.num_uars) +
-+				      PAGE_SHIFT -
-+				      DEFAULT_UAR_PAGE_SHIFT;
-+		init_hca.uar_page_sz = DEFAULT_UAR_PAGE_SHIFT - 12;
-+
- 		init_hca.mw_enabled = 0;
- 		if (dev->caps.flags & MLX4_DEV_CAP_FLAG_MEM_WINDOW ||
- 		    dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN)
-diff --git a/drivers/net/ethernet/mellanox/mlx4/pd.c b/drivers/net/ethernet/mellanox/mlx4/pd.c
-index 609c59dc854e..b3cc3ab63799 100644
---- a/drivers/net/ethernet/mellanox/mlx4/pd.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/pd.c
-@@ -269,9 +269,15 @@ EXPORT_SYMBOL_GPL(mlx4_bf_free);
- 
- int mlx4_init_uar_table(struct mlx4_dev *dev)
- {
--	if (dev->caps.num_uars <= 128) {
--		mlx4_err(dev, "Only %d UAR pages (need more than 128)\n",
--			 dev->caps.num_uars);
-+	int num_reserved_uar = mlx4_get_num_reserved_uar(dev);
-+
-+	mlx4_dbg(dev, "uar_page_shift = %d", dev->uar_page_shift);
-+	mlx4_dbg(dev, "Effective reserved_uars=%d", dev->caps.reserved_uars);
-+
-+	if (dev->caps.num_uars <= num_reserved_uar) {
-+		mlx4_err(
-+			dev, "Only %d UAR pages (need more than %d)\n",
-+			dev->caps.num_uars, num_reserved_uar);
- 		mlx4_err(dev, "Increase firmware log2_uar_bar_megabytes?\n");
- 		return -ENODEV;
- 	}
-diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
-index d3133be12d92..8bab38f8872a 100644
---- a/include/linux/mlx4/device.h
-+++ b/include/linux/mlx4/device.h
-@@ -44,6 +44,8 @@
- 
- #include <linux/timecounter.h>
- 
-+#define DEFAULT_UAR_PAGE_SHIFT  12
-+
- #define MAX_MSIX_P_PORT		17
- #define MAX_MSIX		64
- #define MIN_MSIX_P_PORT		5
-@@ -853,6 +855,7 @@ struct mlx4_dev {
- 	u64			regid_promisc_array[MLX4_MAX_PORTS + 1];
- 	u64			regid_allmulti_array[MLX4_MAX_PORTS + 1];
- 	struct mlx4_vf_dev     *dev_vfs;
-+	u8  uar_page_shift;
- };
- 
- struct mlx4_clock_params {
-@@ -1527,4 +1530,14 @@ int mlx4_ACCESS_PTYS_REG(struct mlx4_dev *dev,
- int mlx4_get_internal_clock_params(struct mlx4_dev *dev,
- 				   struct mlx4_clock_params *params);
- 
-+static inline int mlx4_to_hw_uar_index(struct mlx4_dev *dev, int index)
-+{
-+	return (index << (PAGE_SHIFT - dev->uar_page_shift));
-+}
-+
-+static inline int mlx4_get_num_reserved_uar(struct mlx4_dev *dev)
-+{
-+	/* The first 128 UARs are used for EQ doorbells */
-+	return (128 >> (PAGE_SHIFT - dev->uar_page_shift));
-+}
- #endif /* MLX4_DEVICE_H */
--- 
-2.8.1
-
diff --git a/openpower/linux/linux-0007-Release-4.4.9-openpower2.patch b/openpower/linux/linux-0007-Release-4.4.9-openpower2.patch
deleted file mode 100644
index fc7c869..0000000
--- a/openpower/linux/linux-0007-Release-4.4.9-openpower2.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 46fa670c69c3a100f3579b59182ae2457d58daf8 Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Thu, 14 Apr 2016 21:40:26 +0930
-Subject: [PATCH 7/7] Release 4.4.9-openpower2
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 0722cdf52152..a75988596f8f 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 4
- PATCHLEVEL = 4
- SUBLEVEL = 9
--EXTRAVERSION =
-+EXTRAVERSION = -openpower2
- NAME = Blurry Fish Butt
- 
- # *DOCUMENTATION*
--- 
-2.8.1
-
diff --git a/openpower/overlay/etc/fstab b/openpower/overlay/etc/fstab
index d373dc6..ece6d84 100644
--- a/openpower/overlay/etc/fstab
+++ b/openpower/overlay/etc/fstab
@@ -4,3 +4,4 @@
 devpts		/dev/pts	devpts	defaults,gid=5,mode=620	0	0
 tmpfs		/dev/shm	tmpfs	mode=0777	0	0
 sysfs		/sys		sysfs	defaults	0	0
+securityfs	/sys/kernel/security	securityfs	defaults	0	0
diff --git a/openpower/overlay/etc/init.d/S10udev b/openpower/overlay/etc/init.d/S10udev
new file mode 100755
index 0000000..fd8179e
--- /dev/null
+++ b/openpower/overlay/etc/init.d/S10udev
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# udev	This is a minimal non-LSB version of a UDEV startup script.  It
+#	was derived by stripping down the udev-058 LSB version for use
+#	with buildroot on embedded hardware using Linux 2.6.34+ kernels.
+#
+#	You may need to customize this for your system's resource limits
+#	(including startup time!) and administration.  For example, if
+#	your early userspace has a custom initramfs or initrd you might
+#	need /dev much earlier; or without hotpluggable busses (like USB,
+#	PCMCIA, MMC/SD, and so on) your /dev might be static after boot.
+#
+#	This script assumes your system boots right into the eventual root
+#	filesystem, and that init runs this udev script before any programs
+#	needing more device nodes than the bare-bones set -- /dev/console,
+#	/dev/zero, /dev/null -- that's needed to boot and run this script.
+#
+
+# Check for missing binaries
+UDEV_BIN=/sbin/udevd
+test -x $UDEV_BIN || exit 5
+
+# Check for config file and read it
+UDEV_CONFIG=/etc/udev/udev.conf
+test -r $UDEV_CONFIG || exit 6
+. $UDEV_CONFIG
+
+case "$1" in
+    start)
+        printf "Populating ${udev_root:-/dev} using udev: "
+        printf '\000\000\000\000' > /proc/sys/kernel/hotplug
+        $UDEV_BIN -d || (echo "FAIL" && exit 1)
+        udevadm trigger --type=subsystems --action=add
+        udevadm trigger --type=devices --action=add
+        echo "done"
+        ;;
+    stop)
+        # Stop execution of events
+        udevadm control --stop-exec-queue
+        killall udevd
+        ;;
+    *)
+        echo "Usage: $0 {start|stop}"
+        exit 1
+        ;;
+esac
+
+
+exit 0
diff --git a/openpower/overlay/etc/init.d/S17udevsettle b/openpower/overlay/etc/init.d/S17udevsettle
new file mode 100755
index 0000000..92d3f9c
--- /dev/null
+++ b/openpower/overlay/etc/init.d/S17udevsettle
@@ -0,0 +1,10 @@
+#!/bin/sh
+case "$1" in
+    start)
+        udevadm settle --timeout=30 || echo "udevadm settle failed"
+	;;
+    *)
+        exit 1;;
+esac
+
+exit 0
diff --git a/openpower/overlay/etc/init.d/S18lvm b/openpower/overlay/etc/init.d/S18lvm
new file mode 100755
index 0000000..043e846
--- /dev/null
+++ b/openpower/overlay/etc/init.d/S18lvm
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+case "$1" in
+	start)
+		logger "Scanning for LVM volumes"
+		/usr/sbin/vgscan
+		/usr/sbin/vgchange -ay
+		;;
+	stop)
+		logger "Stopping LVM volumes"
+		/usr/sbin/vgchange -an
+		;;
+	restart|force-reload)
+		;;
+esac
+
+exit 0
diff --git a/openpower/overlay/lib/udev/rules.d/10-dm.rules b/openpower/overlay/lib/udev/rules.d/10-dm.rules
new file mode 100644
index 0000000..f33df58
--- /dev/null
+++ b/openpower/overlay/lib/udev/rules.d/10-dm.rules
@@ -0,0 +1,150 @@
+# Copyright (C) 2009 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM2.
+
+# Udev rules for device-mapper devices.
+#
+# These rules create a DM control node in /dev/mapper directory.
+# The rules also create nodes named dm-x (x is a number) in /dev
+# directory and symlinks to these nodes with names given by
+# the actual DM names. Some udev environment variables are set
+# for use in later rules:
+#   DM_NAME - actual DM device's name
+#   DM_UUID - UUID set for DM device (blank if not specified)
+#   DM_SUSPENDED - suspended state of DM device (0 or 1)
+#   DM_UDEV_RULES_VSN - DM udev rules version
+#
+# These rules cover only basic device-mapper functionality in udev.
+#
+# Various DM subsystems may contain further subsystem-specific rules
+# in 11-dm-<subsystem_name>.rules which should be installed together
+# with the DM subsystem and which extend these basic rules.
+# For example:
+#   11-dm-lvm.rules for LVM subsystem
+#   11-dm-mpath.rules for multipath subsystem (since version 0.6.0, recommended!)
+#
+# Even more specific rules may be required by subsystems so always
+# check subsystem's upstream repository for recent set of rules.
+# Also, keep in mind that recent rules may also require recent
+# subsystem-specific binaries.
+
+KERNEL=="device-mapper", NAME="mapper/control"
+
+SUBSYSTEM!="block", GOTO="dm_end"
+KERNEL!="dm-[0-9]*", GOTO="dm_end"
+
+
+# Device created, major and minor number assigned - "add" event generated.
+# Table loaded - no event generated.
+# Device resumed (or renamed) - "change" event generated.
+# Device removed - "remove" event generated.
+#
+# The dm-X nodes are always created, even on "add" event, we can't suppress
+# that (the node is created even earlier with devtmpfs). All the symlinks
+# (e.g. /dev/mapper) are created in right time after a device has its table
+# loaded and is properly resumed. For this reason, direct use of dm-X nodes
+# is not recommended.
+ACTION!="add|change", GOTO="dm_end"
+
+# Decode udev control flags and set environment variables appropriately.
+# These flags are encoded in DM_COOKIE variable that was introduced in
+# kernel version 2.6.31. Therefore, we can use this feature with
+# kernels >= 2.6.31 only. Cookie is not decoded for remove event.
+ENV{DM_COOKIE}=="?*", IMPORT{program}="/usr/sbin/dmsetup udevflags $env{DM_COOKIE}"
+
+# Rule out easy-to-detect inappropriate events first.
+ENV{DISK_RO}=="1", GOTO="dm_disable"
+
+# There is no cookie set nor any flags encoded in events not originating
+# in libdevmapper so we need to detect this and try to behave correctly.
+# For such spurious events, regenerate all flags from current udev database content
+# (this information would normally be inaccessible for spurious ADD and CHANGE events).
+ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}="1", GOTO="dm_flags_done"
+IMPORT{db}="DM_UDEV_DISABLE_DM_RULES_FLAG"
+IMPORT{db}="DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG"
+IMPORT{db}="DM_UDEV_DISABLE_DISK_RULES_FLAG"
+IMPORT{db}="DM_UDEV_DISABLE_OTHER_RULES_FLAG"
+IMPORT{db}="DM_UDEV_LOW_PRIORITY_FLAG"
+IMPORT{db}="DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG"
+IMPORT{db}="DM_UDEV_PRIMARY_SOURCE_FLAG"
+IMPORT{db}="DM_UDEV_FLAG7"
+IMPORT{db}="DM_UDEV_RULES_VSN"
+LABEL="dm_flags_done"
+
+# Normally, we operate on "change" events. But when coldplugging, there's an
+# "add" event present. We have to recognize this and do our actions in this
+# particular situation, too. Also, we don't want the nodes to be created
+# prematurely on "add" events while not coldplugging. We check
+# DM_UDEV_PRIMARY_SOURCE_FLAG to see if the device was activated correctly
+# before and if not, we ignore the "add" event totally. This way we can support
+# udev triggers generating "add" events (e.g. "udevadm trigger --action=add" or
+# "echo add > /sys/block/<dm_device>/uevent"). The trigger with "add" event is
+# also used at boot to reevaluate udev rules for all existing devices activated
+# before (e.g. in initrd). If udev is used in initrd, we require the udev init
+# script to not remove the existing udev database so we can reuse the information
+# stored at the time of device activation in the initrd.
+ACTION!="add", GOTO="dm_no_coldplug"
+ENV{DM_UDEV_RULES_VSN}!="1", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="dm_disable"
+ENV{DM_ACTIVATION}="1"
+LABEL="dm_no_coldplug"
+
+# Putting it together, following table is used to recognize genuine and spurious events.
+# N.B. Spurious events are generated based on use of the WATCH udev
+# rule or by triggering an event manually by "udevadm trigger" call
+# or by "echo <event_name> > /sys/block/dm-X/uevent".
+#
+#        EVENT              DM_UDEV_PRIMARY_SOURCE_FLAG   DM_ACTIVATION
+# ======================================================================
+# add event (genuine)                  0                        0
+# change event (genuine)               1                        1
+# add event (spurious)
+#   |_ dev still not active            0                        0
+#   \_ dev already active              1                        1
+# change event (spurious)
+#   |_ dev still not active            0                        0
+#   \_ dev already active              1                        0
+
+# "dm" sysfs subdirectory is available in newer versions of DM
+# only (kernels >= 2.6.29). We have to check for its existence
+# and use dmsetup tool instead to get the DM name, uuid and 
+# suspended state if the "dm" subdirectory is not present.
+# The "suspended" item was added even later (kernels >= 2.6.31),
+# so we also have to call dmsetup if the kernel version used
+# is in between these releases.
+TEST=="dm", ENV{DM_NAME}="$attr{dm/name}", ENV{DM_UUID}="$attr{dm/uuid}", ENV{DM_SUSPENDED}="$attr{dm/suspended}"
+TEST!="dm", IMPORT{program}="/usr/sbin/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o name,uuid,suspended"
+ENV{DM_SUSPENDED}!="?*", IMPORT{program}="/usr/sbin/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o suspended"
+
+# dmsetup tool provides suspended state information in textual
+# form with values "Suspended"/"Active". We translate it to
+# 0/1 respectively to be consistent with sysfs values.
+ENV{DM_SUSPENDED}=="Active", ENV{DM_SUSPENDED}="0"
+ENV{DM_SUSPENDED}=="Suspended", ENV{DM_SUSPENDED}="1"
+
+# This variable provides a reliable way to check that device-mapper
+# rules were installed. It means that all needed variables are set
+# by these rules directly so there's no need to acquire them again
+# later. Other rules can alternate the functionality based on this
+# fact (e.g. fallback to rules that behave correctly even without
+# these rules installed). It also provides versioning for any
+# possible future changes.
+# VSN 1 - original rules
+# VSN 2 - add support for synthesized events
+ENV{DM_UDEV_RULES_VSN}="2"
+
+ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="mapper/$env{DM_NAME}"
+
+# Avoid processing and scanning a DM device in the other (foreign)
+# rules if it is in suspended state. However, we still keep 'disk'
+# and 'DM subsystem' related rules enabled in this case.
+ENV{DM_SUSPENDED}=="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
+
+GOTO="dm_end"
+
+LABEL="dm_disable"
+ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}="1"
+ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
+ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
+OPTIONS:="nowatch"
+
+LABEL="dm_end"
diff --git a/openpower/overlay/lib/udev/rules.d/11-dm-lvm.rules b/openpower/overlay/lib/udev/rules.d/11-dm-lvm.rules
new file mode 100644
index 0000000..16b80f9
--- /dev/null
+++ b/openpower/overlay/lib/udev/rules.d/11-dm-lvm.rules
@@ -0,0 +1,54 @@
+# Copyright (C) 2009 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM2.
+
+# Udev rules for LVM.
+#
+# These rules create symlinks for LVM logical volumes in
+# /dev/VG directory (VG is an actual VG name). Some udev
+# environment variables are set (they can be used in later
+# rules as well):
+#   DM_LV_NAME - logical volume name
+#   DM_VG_NAME - volume group name
+#   DM_LV_LAYER - logical volume layer (blank if not set)
+
+# "add" event is processed on coldplug only!
+ACTION!="add|change", GOTO="lvm_end"
+ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="lvm_end"
+ENV{DM_UUID}!="LVM-?*", GOTO="lvm_end"
+
+# Use DM name and split it up into its VG/LV/layer constituents.
+IMPORT{program}="/usr/sbin/dmsetup splitname --nameprefixes --noheadings --rows $env{DM_NAME}"
+
+# DM_SUBSYSTEM_UDEV_FLAG0 is the 'NOSCAN' flag for LVM subsystem.
+# This flag is used to temporarily disable selected rules to prevent any
+# processing or scanning done on the LVM volume before LVM has any chance
+# to zero any stale metadata found within the LV data area. Such stale
+# metadata could cause false claim of the LV device, keeping it open etc.
+#
+# If the NOSCAN flag is present, backup selected existing flags used to
+# disable rules, then set them firmly so those selected rules are surely skipped.
+# Restore these flags once the NOSCAN flag is dropped (which is normally any
+# uevent that follows for this LV, even an artificially generated one).
+ENV{DM_SUBSYSTEM_UDEV_FLAG0}=="1", ENV{DM_NOSCAN}="1", ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="$env{DM_UDEV_DISABLE_OTHER_RULES_FLAG}", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
+ENV{DM_SUBSYSTEM_UDEV_FLAG0}!="1", IMPORT{db}="DM_NOSCAN", IMPORT{db}="DM_DISABLE_OTHER_RULES_FLAG_OLD"
+ENV{DM_SUBSYSTEM_UDEV_FLAG0}!="1", ENV{DM_NOSCAN}=="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="$env{DM_DISABLE_OTHER_RULES_FLAG_OLD}", \
+				   ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="", ENV{DM_NOSCAN}=""
+
+ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}=="1", GOTO="lvm_end"
+
+OPTIONS+="event_timeout=180"
+
+# Do not create symlinks for inappropriate subdevices.
+ENV{DM_LV_NAME}=="pvmove?*|?*_vorigin", GOTO="lvm_disable"
+ENV{DM_LV_LAYER}=="?*", GOTO="lvm_disable"
+
+# Create symlinks for top-level devices only.
+ENV{DM_VG_NAME}=="?*", ENV{DM_LV_NAME}=="?*", SYMLINK+="$env{DM_VG_NAME}/$env{DM_LV_NAME}", GOTO="lvm_end"
+
+LABEL="lvm_disable"
+ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1"
+ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
+OPTIONS:="nowatch"
+
+LABEL="lvm_end"
diff --git a/openpower/overlay/lib/udev/rules.d/13-dm-disk.rules b/openpower/overlay/lib/udev/rules.d/13-dm-disk.rules
new file mode 100644
index 0000000..9958cac
--- /dev/null
+++ b/openpower/overlay/lib/udev/rules.d/13-dm-disk.rules
@@ -0,0 +1,39 @@
+# Copyright (C) 2009 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM2.
+
+# Udev rules for device-mapper devices.
+#
+# These rules create symlinks in /dev/disk directory.
+# Symlinks that depend on probing filesystem type,
+# label and uuid are created only if the device is not
+# suspended.
+
+# "add" event is processed on coldplug only!
+ACTION!="add|change", GOTO="dm_end"
+ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_end"
+ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="dm_end"
+
+SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
+ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"
+
+ENV{DM_SUSPENDED}=="1", GOTO="dm_end"
+ENV{DM_NOSCAN}=="1", GOTO="dm_watch"
+
+IMPORT{builtin}="blkid"
+ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", OPTIONS="link_priority=-100"
+ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+
+# Add inotify watch to track changes on this device.
+# Using the watch rule is not optimal - it generates a lot of spurious
+# and useless events whenever the device opened for read-write is closed.
+# The best would be to generete the event directly in the tool changing
+# relevant information so only relevant events will be processed
+# (like creating a filesystem, changing filesystem label etc.).
+#
+# But let's use this until we have something better...
+LABEL="dm_watch"
+OPTIONS+="watch"
+
+LABEL="dm_end"
diff --git a/openpower/overlay/lib/udev/rules.d/95-dm-notify.rules b/openpower/overlay/lib/udev/rules.d/95-dm-notify.rules
new file mode 100644
index 0000000..e6bb512
--- /dev/null
+++ b/openpower/overlay/lib/udev/rules.d/95-dm-notify.rules
@@ -0,0 +1,12 @@
+# Copyright (C) 2009 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM2.
+
+# Udev rules for device-mapper devices.
+#
+# These rules are responsible for sending a notification to a process
+# waiting for completion of udev rules. The process is identified by
+# a cookie value sent within "change" and "remove" events (the cookie
+# value is set before by that process for every action requested).
+
+ENV{DM_COOKIE}=="?*", RUN+="/usr/sbin/dmsetup udevcomplete $env{DM_COOKIE}"
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index 902d2ec..d380784 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -1,16 +1,19 @@
-source "$BR2_EXTERNAL/package/openpower-ffs/Config.in"
-source "$BR2_EXTERNAL/package/hostboot/Config.in"
-source "$BR2_EXTERNAL/package/hostboot-binaries/Config.in"
-source "$BR2_EXTERNAL/package/palmetto-xml/Config.in"
-source "$BR2_EXTERNAL/package/habanero-xml/Config.in"
-source "$BR2_EXTERNAL/package/firestone-xml/Config.in"
-source "$BR2_EXTERNAL/package/garrison-xml/Config.in"
-source "$BR2_EXTERNAL/package/barreleye-xml/Config.in"
-source "$BR2_EXTERNAL/package/openpower-pnor/Config.in"
-source "$BR2_EXTERNAL/package/petitboot/Config.in"
-source "$BR2_EXTERNAL/package/p8-pore-binutils/Config.in"
-source "$BR2_EXTERNAL/package/occ/Config.in"
-source "$BR2_EXTERNAL/package/capp-ucode/Config.in"
-source "$BR2_EXTERNAL/package/skiboot/Config.in"
-source "$BR2_EXTERNAL/package/libflash/Config.in"
-source "$BR2_EXTERNAL/package/loadkeys/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-ffs/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/hostboot-binaries/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-mrw/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/common-p8-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/machine-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-pnor/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/petitboot/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/p8-pore-binutils/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/occ/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/capp-ucode/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/skiboot/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/libflash/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/loadkeys/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-binutils/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ppe42-gcc/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/ima-catalog/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/sbe/Config.in"
+
diff --git a/openpower/package/barreleye-xml/Config.in b/openpower/package/barreleye-xml/Config.in
deleted file mode 100755
index 9187dac..0000000
--- a/openpower/package/barreleye-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_BARRELEYE_XML
-        bool "barreleye_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "barreleye")
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_BARRELEYE_SYSTEM_XML_FILENAME
-        string "Barreleye targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_BARRELEYE_MRW_XML_FILENAME
-        string "Barreleye targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_BARRELEYE_BIOS_XML_FILENAME
-        string "Barreleye BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/barreleye-xml/barreleye-xml.mk b/openpower/package/barreleye-xml/barreleye-xml.mk
deleted file mode 100755
index b18b14c..0000000
--- a/openpower/package/barreleye-xml/barreleye-xml.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# barreleye_xml
-#
-################################################################################
-
-BARRELEYE_XML_VERSION ?= 81ac3ff3c4ccd16d2174f455c1cb17976daca948
-BARRELEYE_XML_SITE = $(call github,open-power,barreleye-xml,$(BARRELEYE_XML_VERSION))
-
-BARRELEYE_XML_LICENSE = Apache-2.0
-BARRELEYE_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-BARRELEYE_XML_INSTALL_IMAGES = YES
-BARRELEYE_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-BARRELEYE_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_BARRELEYE_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define BARRELEYE_XML_BUILD_CMDS
-        # copy the barreleye xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/barreleye.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_BARRELEYE_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_BARRELEYE_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(BARRELEYE_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define BARRELEYE_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define BARRELEYE_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/capp-ucode/Config.in b/openpower/package/capp-ucode/Config.in
index 1bdbc23..d432419 100644
--- a/openpower/package/capp-ucode/Config.in
+++ b/openpower/package/capp-ucode/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_CAPP_UCODE
         bool "capp_capp"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
         help
             Microcode for CAPP hardware
 
diff --git a/openpower/package/capp-ucode/capp-ucode.mk b/openpower/package/capp-ucode/capp-ucode.mk
index ba5acd4..7513fe0 100644
--- a/openpower/package/capp-ucode/capp-ucode.mk
+++ b/openpower/package/capp-ucode/capp-ucode.mk
@@ -3,9 +3,10 @@
 # capp-ucode.mk
 #
 ################################################################################
-CAPP_UCODE_VERSION ?= 105cb8f69edb7e76c4d153bf2e5c9718811a3114
+CAPP_UCODE_VERSION ?= 9c73e9f51d240847fbd150815a3b9c548aae0cb8
 CAPP_UCODE_SITE ?= $(call github,open-power,capp-ucode,$(CAPP_UCODE_VERSION))
 CAPP_UCODE_LICENSE = Apache-2.0
+CAPP_UCODE_LICENSE_FILES = NOTICES
 
 CAPP_UCODE_INSTALL_IMAGES = YES
 
diff --git a/openpower/package/common-p8-xml/Config.in b/openpower/package/common-p8-xml/Config.in
index e69de29..2c01702 100644
--- a/openpower/package/common-p8-xml/Config.in
+++ b/openpower/package/common-p8-xml/Config.in
@@ -0,0 +1,4 @@
+config BR2_PACKAGE_COMMON_P8_XML
+        bool "Common P8 XML files"
+        default y if BR2_PACKAGE_HOSTBOOT
+        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
index 282adb3..cd0afe4 100644
--- a/openpower/package/common-p8-xml/common-p8-xml.mk
+++ b/openpower/package/common-p8-xml/common-p8-xml.mk
@@ -8,6 +8,7 @@
 COMMON_P8_XML_SITE ?= $(call github,open-power,common-p8-xml,$(COMMON_P8_XML_VERSION))
 
 COMMON_P8_XML_LICENSE = Apache-2.0
+COMMON_P8_XML_LICENSE_FILES = LICENSE
 COMMON_P8_XML_DEPENDENCIES =
 
 COMMON_P8_XML_INSTALL_IMAGES = YES
diff --git a/openpower/package/firestone-xml/Config.in b/openpower/package/firestone-xml/Config.in
deleted file mode 100755
index f0c0948..0000000
--- a/openpower/package/firestone-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_FIRESTONE_XML
-        bool "firestone_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "firestone")
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_FIRESTONE_SYSTEM_XML_FILENAME
-        string "Firestone targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_FIRESTONE_MRW_XML_FILENAME
-        string "Firestone targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_FIRESTONE_BIOS_XML_FILENAME
-        string "Firestone BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/firestone-xml/firestone.mk b/openpower/package/firestone-xml/firestone.mk
deleted file mode 100644
index 5f631fd..0000000
--- a/openpower/package/firestone-xml/firestone.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# firestone_xml
-#
-################################################################################
-
-FIRESTONE_XML_VERSION ?= 15e371874a8dec1d8ef279aef2d0a0fed3ded8dd
-FIRESTONE_XML_SITE ?= $(call github,open-power,firestone-xml,$(FIRESTONE_XML_VERSION))
-
-FIRESTONE_XML_LICENSE = Apache-2.0
-FIRESTONE_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-FIRESTONE_XML_INSTALL_IMAGES = YES
-FIRESTONE_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-FIRESTONE_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_FIRESTONE_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define FIRESTONE_XML_BUILD_CMDS
-        # copy the firestone xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/firestone.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_FIRESTONE_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_FIRESTONE_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(FIRESTONE_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define FIRESTONE_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define FIRESTONE_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/garrison-xml/Config.in b/openpower/package/garrison-xml/Config.in
deleted file mode 100755
index a1626d0..0000000
--- a/openpower/package/garrison-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_GARRISON_XML
-        bool "garrison_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "garrison")
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_GARRISON_SYSTEM_XML_FILENAME
-        string "Garrison targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_GARRISON_MRW_XML_FILENAME
-        string "Garrison targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_GARRISON_BIOS_XML_FILENAME
-        string "Garrison BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/garrison-xml/garrison.mk b/openpower/package/garrison-xml/garrison.mk
deleted file mode 100644
index a3b019f..0000000
--- a/openpower/package/garrison-xml/garrison.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# garrison_xml
-#
-################################################################################
-
-GARRISON_XML_VERSION ?= 124e1216e3d19715baaf576d809209124c73313e
-GARRISON_XML_SITE ?= $(call github,open-power,garrison-xml,$(GARRISON_XML_VERSION))
-
-GARRISON_XML_LICENSE = Apache-2.0
-GARRISON_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-GARRISON_XML_INSTALL_IMAGES = YES
-GARRISON_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-GARRISON_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_GARRISON_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define GARRISON_XML_BUILD_CMDS
-        # copy the garrison xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/garrison.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_GARRISON_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_GARRISON_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(GARRISON_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define GARRISON_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define GARRISON_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/habanero-xml/Config.in b/openpower/package/habanero-xml/Config.in
deleted file mode 100755
index 2939cb6..0000000
--- a/openpower/package/habanero-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_HABANERO_XML
-        bool "habanero_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "habanero")
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_HABANERO_SYSTEM_XML_FILENAME
-        string "Habanero targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_HABANERO_MRW_XML_FILENAME
-        string "Habanero targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-            
-config BR2_HABANERO_BIOS_XML_FILENAME
-        string "Habanero BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
deleted file mode 100644
index b85a952..0000000
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# habanero_xml
-#
-################################################################################
-
-HABANERO_XML_VERSION ?= 5a2a5413a6e2cd55f2e30342e898980a3d3a15d7
-HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
-
-HABANERO_XML_LICENSE = Apache-2.0
-HABANERO_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-HABANERO_XML_INSTALL_IMAGES = YES
-HABANERO_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-HABANERO_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_HABANERO_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define HABANERO_XML_BUILD_CMDS
-        # copy the habanero xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/habanero.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_HABANERO_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_HABANERO_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(HABANERO_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define HABANERO_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define HABANERO_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/hostboot-binaries/Config.in b/openpower/package/hostboot-binaries/Config.in
index eccf3e3..4c3e770 100644
--- a/openpower/package/hostboot-binaries/Config.in
+++ b/openpower/package/hostboot-binaries/Config.in
@@ -1,5 +1,5 @@
 config BR2_PACKAGE_HOSTBOOT_BINARIES
         bool "hostboot_binaries"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
         help
             Project to stage hostboot binary images
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index 766202a..7097ddd 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,16 +4,23 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= 7f593a3545f47310132f67e0ba8f4d0c6350c9e7
+HOSTBOOT_BINARIES_VERSION ?= 24995fcf90762d96fe701ff7f71b10009518582d
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
+
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
+HOSTBOOT_BINARIES_LICENSE_FILES = LICENSE
 
 HOSTBOOT_BINARIES_INSTALL_IMAGES = YES
 HOSTBOOT_BINARIES_INSTALL_TARGET = NO
 
+#for P9 the hw_ref image is changing to not be padded with ECC.  However
+#all the other op-build files use the end name result.  Thus replace ".hdr.bin.ecc"
+#with ".bin"
+BIN_FILENAME ?= $(if $(BR2_OPENPOWER_POWER9),$(subst hdr.bin.ecc,bin,$(BR2_HOSTBOOT_BINARY_WINK_FILENAME)),$(BR2_HOSTBOOT_BINARY_WINK_FILENAME))
+
 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)/$(BIN_FILENAME) $(STAGING_DIR)/hostboot_binaries/
      $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) $(STAGING_DIR)/hostboot_binaries/
      $(INSTALL) -D $(@D)/$(BR2_HOSTBOOT_BINARY_SBE_FILENAME)  $(STAGING_DIR)/hostboot_binaries/
 endef
diff --git a/openpower/package/hostboot/Config.in b/openpower/package/hostboot/Config.in
index f7f8005..d864c49 100644
--- a/openpower/package/hostboot/Config.in
+++ b/openpower/package/hostboot/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_HOSTBOOT
         bool "hostboot"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
         select BR2_CPP
         help
             Project to build the hostboot firmware codebase
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index af6df35..bbc07ef 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -3,27 +3,47 @@
 # hostboot
 #
 ################################################################################
+HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= 695bd891343faf1f0ef85fe53148590e58239efd
+HOSTBOOT_VERSION_BRANCH_MASTER ?= 44d178b6d050d9491e35360d5f3867e23c8ee895
 
-HOSTBOOT_VERSION ?= dcf07f54b2b8cdf15ee930cc027660d37637331e
+HOSTBOOT_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(HOSTBOOT_VERSION_BRANCH_MASTER),$(HOSTBOOT_VERSION_BRANCH_MASTER_P8))
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
 
 HOSTBOOT_LICENSE = Apache-2.0
+HOSTBOOT_LICENSE_FILES = LICENSE
 HOSTBOOT_DEPENDENCIES = host-binutils
 
 HOSTBOOT_INSTALL_IMAGES = YES
 HOSTBOOT_INSTALL_TARGET = NO
 
 HOSTBOOT_ENV_VARS=$(TARGET_MAKE_ENV) \
-    CONFIG_FILE=$(BR2_EXTERNAL)/configs/hostboot/$(BR2_HOSTBOOT_CONFIG_FILE) \
+    CONFIG_FILE=$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/hostboot/$(BR2_HOSTBOOT_CONFIG_FILE) \
     OPENPOWER_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) HOST_PREFIX="" HOST_BINUTILS_DIR=$(HOST_BINUTILS_DIR) \
-    HOSTBOOT_VERSION=`cat $(HOSTBOOT_VERSION_FILE)`
+    HOSTBOOT_VERSION=`cat $(HOSTBOOT_VERSION_FILE)` 
+
+define HOSTBOOT_APPLY_PATCHES
+       if [ "$(BR2_OPENPOWER_POWER9)" == "y" ]; then \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/hostboot/p9Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p9Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p9Patches \*.patch; \
+           fi; \
+       fi; \
+       if [ "$(BR2_OPENPOWER_POWER8)" == "y" ]; then \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/hostboot/p8Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p8Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/hostboot/p8Patches \*.patch; \
+           fi; \
+       fi;
+endef
+
+HOSTBOOT_POST_PATCH_HOOKS += HOSTBOOT_APPLY_PATCHES
 
 define HOSTBOOT_BUILD_CMDS
         $(HOSTBOOT_ENV_VARS) bash -c 'cd $(@D) && source ./env.bash && $(MAKE)'
 endef
 
 define HOSTBOOT_INSTALL_IMAGES_CMDS
-        cd $(@D) && $(@D)/src/build/tools/hbDistribute --openpower $(STAGING_DIR)/hostboot_build_images/
+        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/hostboot/hostboot-0001-Increase-uart-delay.patch b/openpower/package/hostboot/p8Patches/hostboot-0001-Increase-uart-delay.patch
similarity index 100%
rename from openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch
rename to openpower/package/hostboot/p8Patches/hostboot-0001-Increase-uart-delay.patch
diff --git a/openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch b/openpower/package/hostboot/p8Patches/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
similarity index 100%
rename from openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
rename to openpower/package/hostboot/p8Patches/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch b/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch
new file mode 100644
index 0000000..f6c6710
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch
@@ -0,0 +1,32 @@
+From bc7b8b21549752274b162c64dbce3c81d20f2cab Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:22:30 +1000
+Subject: [PATCH 03/10] Default to std=gnu++03
+
+Seeing as no C++ dialect was previously selected, GCC < 6 defaulted
+to GNU++98 as the standard C++ mode. However... it seems that C++03
+is a better match for HostBoot code (confirmed by Patrick Williams
+in https://github.com/open-power/hostboot/pull/62#discussion_r76830612 )
+
+Change-Id: I6661b5b61319c85c2a90926beb6e2662e96dcf06
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/build/mkrules/cflags.env.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk
+index c805999..0bae0ec 100644
+--- a/src/build/mkrules/cflags.env.mk
++++ b/src/build/mkrules/cflags.env.mk
+@@ -41,7 +41,7 @@ CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
+ 	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian
+ ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian
+ CXXFLAGS += $(CFLAGS) -nostdinc++ -fno-rtti -fno-exceptions -Wall \
+-	    -fuse-cxa-atexit
++	    -fuse-cxa-atexit -std=gnu++03
+ LDFLAGS += --nostdlib --sort-common -EB $(COMMONFLAGS)
+ 
+ INCFLAGS = $(addprefix -I, $(INCDIR) )
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch b/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch
new file mode 100644
index 0000000..b1ecacd
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch
@@ -0,0 +1,28 @@
+From 6ae906e70c7209e69b750f6566263fe4998dfb48 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:22:00 +1000
+Subject: [PATCH 04/10] fix build error: return-statement with a value, in
+ function returning 'void'
+
+Change-Id: I9dc8b698fec95488e209cbc40b928769a26b6de6
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/usr/devicefw/driverif.H | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/include/usr/devicefw/driverif.H b/src/include/usr/devicefw/driverif.H
+index a148725..fb43073 100644
+--- a/src/include/usr/devicefw/driverif.H
++++ b/src/include/usr/devicefw/driverif.H
+@@ -266,7 +266,7 @@ namespace DeviceFW
+                              TargType i_targetType,
+                              deviceOp_t i_regRoute)
+     {
+-        return InvalidParameterType(); // Cause a compile fail if not one of
++        InvalidParameterType(); // Cause a compile fail if not one of
+                                        // the explicit template specializations.
+     }
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch b/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch
new file mode 100644
index 0000000..fcfe570
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch
@@ -0,0 +1,71 @@
+From 550d36dca3cdec84d47f05711c2569990d3b4708 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:27:04 +1000
+Subject: [PATCH 05/10] error: dereferencing type-punned pointer will break
+ strict-aliasing rules
+
+Change-Id: I63accd3e881c941736ece4b4498c2c9d06ff8761
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H             | 7 +++++++
+ .../usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H        | 1 -
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C        | 6 +++---
+ 3 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+index e5af2c9..7edf2bf 100755
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+@@ -227,6 +227,13 @@ namespace getAttrData
+         uint8_t              iv_systemType;
+         uint8_t              iv_systemType_ext;
+         uint8_t              iv_dataVersion;
++    public:
++	MBvpdVMKeyword() : iv_version(0),iv_systemType(0),
++			   iv_systemType_ext(0),iv_dataVersion(0) {};
++	operator uint32_t() const {
++		return iv_version << 24 | iv_systemType << 16 |
++			iv_systemType_ext << 8 | iv_dataVersion;
++	}
+     };
+ //  Attribute definition
+     struct MBvpdAttrDef
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+index f172508..85460b2 100644
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+@@ -33,7 +33,6 @@
+ #define _HWP_GETMBVPDMEMDATAVERSION_
+ 
+ #include <fapi.H>
+-#define VM_KEYWORD_DEFAULT_VALUE 0x00000000
+ 
+ // function pointer typedef definition for HWP call support
+ typedef fapi::ReturnCode (*getMBvpdMemoryDataVersion_FP_t)
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+index 2f83fa2..ef64515 100644
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+@@ -50,7 +50,7 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
+     fapi::ReturnCode l_fapirc;
+     DimmType l_dimmType = ISDIMM;
+     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX;
+-    uint32_t l_vpdMemoryDataVersion = VM_KEYWORD_DEFAULT_VALUE;   
++    MBvpdVMKeyword l_vpdMemoryDataVersion;
+     uint32_t l_bufSize = sizeof(l_vpdMemoryDataVersion);
+ 
+     FAPI_DBG("getMBvpdMemoryDataVersion: entry ");
+@@ -140,8 +140,8 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
+         }
+                     
+         // Check if the format byte in the value returned is in between valid range
+-        if (( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version >  VM_SUPPORTED_HIGH_VER )||
+-            ( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version == VM_NOT_SUPPORTED ))
++        if ((l_vpdMemoryDataVersion.iv_version >  VM_SUPPORTED_HIGH_VER )||
++            (l_vpdMemoryDataVersion.iv_version == VM_NOT_SUPPORTED ))
+         {
+             FAPI_ERR("getMBvpdMemoryDataVersion:"
+                      " keyword data returned is invalid : %d ",
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch b/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
new file mode 100644
index 0000000..666c747
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
@@ -0,0 +1,70 @@
+From 74d099aaffa37498859c0840771052f50253ce4d Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:33:42 +1000
+Subject: [PATCH 06/10] Change cv_forcedMemPeriodic to uint8_t as bool is
+ invalid
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GCC6 throws the following error:
+operand type ‘bool*’ is incompatible with argument 1 of ‘__sync_fetch_and_and’
+
+GCC documents that bool is invalid for __sync builtins over at:
+https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#g_t_005f_005fsync-Builtins
+" GCC allows any scalar type that is 1, 2, 4 or 8 bytes in size other than the C type _Bool or the C++ type bool"
+
+Change-Id: Iab6415348cb19f590921d8ccc5349867fa57a42d
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/kernel/cpumgr.H | 2 +-
+ src/kernel/cpumgr.C         | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/include/kernel/cpumgr.H b/src/include/kernel/cpumgr.H
+index 68f8972..6e9b697 100644
+--- a/src/include/kernel/cpumgr.H
++++ b/src/include/kernel/cpumgr.H
+@@ -215,7 +215,7 @@ class CpuManager
+              */
+         static uint64_t cv_cpuSeq;
+ 
+-        static bool cv_forcedMemPeriodic;       //!<  force free / coalesce.
++        static uint8_t cv_forcedMemPeriodic;       //!<  force free / coalesce.
+ 
+         // If a shutdown of all CPUs is requested
+         static bool cv_shutdown_requested;
+diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
+index 44f61a1..ce7516f 100644
+--- a/src/kernel/cpumgr.C
++++ b/src/kernel/cpumgr.C
+@@ -50,7 +50,7 @@ cpu_t** CpuManager::cv_cpus[KERNEL_MAX_SUPPORTED_NODES];
+ bool CpuManager::cv_shutdown_requested = false;
+ uint64_t CpuManager::cv_shutdown_status = 0;
+ size_t CpuManager::cv_cpuSeq = 0;
+-bool CpuManager::cv_forcedMemPeriodic = false;
++uint8_t CpuManager::cv_forcedMemPeriodic = 0;
+ InteractiveDebug CpuManager::cv_interactive_debug;
+ 
+ CpuManager::CpuManager() : iv_lastStartTimebase(0)
+@@ -361,7 +361,7 @@ void CpuManager::executePeriodics(cpu_t * i_cpu)
+         }
+ 
+         bool forceMemoryPeriodic = __sync_fetch_and_and(&cv_forcedMemPeriodic,
+-                                                        false);
++                                                        0);
+ 
+         ++(i_cpu->periodic_count);
+         if((0 == (i_cpu->periodic_count % CPU_PERIODIC_CHECK_MEMORY)) ||
+@@ -461,7 +461,7 @@ size_t CpuManager::getThreadCount()
+ 
+ void CpuManager::forceMemoryPeriodic()
+ {
+-    cv_forcedMemPeriodic = true;
++    cv_forcedMemPeriodic = 1;
+ }
+ 
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch b/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
new file mode 100644
index 0000000..9c2c8f4
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
@@ -0,0 +1,34 @@
+From 8797f215a09a89c271dab484b892ceedd2486615 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:13:11 +1000
+Subject: [PATCH 07/10] =?UTF-8?q?error:=20the=20compiler=20can=20assume=20?=
+ =?UTF-8?q?that=20the=20address=20of=20=E2=80=98r=E2=80=99=20will=20never?=
+ =?UTF-8?q?=20be=20NULL?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+     PRDF_ASSERT( &r  != NULL );
+
+Change-Id: I2d60075f9e2232512efe45a5c6aa5563f3a565f5
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
+index 9ee1358..ef7279b 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
++++ b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
+@@ -120,8 +120,6 @@ ErrorRegister::ErrorRegister( SCAN_COMM_REGISTER_CLASS & r, ResolutionMap & rm,
+     ErrorRegisterType(), scr(r), scr_rc(SUCCESS), rMap(rm),
+     xNoErrorOnZeroScr(false), xScrId(scrId)
+ {
+-    PRDF_ASSERT( &r  != NULL );
+-    PRDF_ASSERT( &rm != NULL );
+ }
+ 
+ /*---------------------------------------------------------------------*/
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch b/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
new file mode 100644
index 0000000..73adecc
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
@@ -0,0 +1,90 @@
+From b315c53f2803b84e35fe646aa82702b82e8ecd98 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:07:58 +1000
+Subject: [PATCH 08/10] Fix compiler can assume address will never be NULL
+ error with GCC6
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+So, it turns out that relying on the address of something passed by
+reference being able to be NULL isn't exactly a good idea, or remotely
+obvious code. So, instead, do the sane thing and pass a pointer and
+check it.
+
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:
+In constructor ‘PRDF::AttnTypeRegister::AttnTypeRegister(PRDF::SCAN_COMM_REGISTE
+R_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF
+::SCAN_COMM_REGISTER_CLASS&)’:
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+42:21: error: the compiler can assume that the address of ‘i_check’ will never b
+e NULL [-Werror=address]
+         iv_check(  NULL == &i_check   ? &cv_null : &i_check),
+                   ~~^~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+43:21: error: the compiler can assume that the address of ‘i_recov’ will never b
+e NULL [-Werror=address]
+         iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
+                   ~~^~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+44:22: error: the compiler can assume that the address of ‘i_special’ will never
+ be NULL [-Werror=address]
+         iv_special(NULL == &i_special ? &cv_null : &i_special),
+                    ~~^~~~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+45:22: error: the compiler can assume that the address of ‘i_proccs’ will never
+be NULL [-Werror=address]
+         iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
+                    ~~^~~~~~~~~~~~
+
+Change-Id: Iecd8636da67aac24f64f73fd82b1f7ccbfced900
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ .../common/framework/register/prdfOperatorRegister.H     | 16 ++++++++--------
+ .../prdf/common/framework/register/prdfScanFacility.C    |  2 +-
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
+index b0513e4..a26a76e 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
++++ b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
+@@ -434,15 +434,15 @@ class AttnTypeRegister : public SCAN_COMM_REGISTER_CLASS
+         iv_bs = &iv_iBS;
+     }
+ 
+-    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS & i_check,
+-                      SCAN_COMM_REGISTER_CLASS & i_recov,
+-                      SCAN_COMM_REGISTER_CLASS & i_special,
+-                      SCAN_COMM_REGISTER_CLASS & i_proccs ) :
++    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS *i_check,
++                      SCAN_COMM_REGISTER_CLASS *i_recov,
++                      SCAN_COMM_REGISTER_CLASS *i_special,
++                      SCAN_COMM_REGISTER_CLASS *i_proccs ) :
+         SCAN_COMM_REGISTER_CLASS( ),
+-        iv_check(  NULL == &i_check   ? &cv_null : &i_check),
+-        iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
+-        iv_special(NULL == &i_special ? &cv_null : &i_special),
+-        iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
++        iv_check(  NULL == i_check   ? &cv_null : i_check),
++        iv_recov(  NULL == i_recov   ? &cv_null : i_recov),
++        iv_special(NULL == i_special ? &cv_null : i_special),
++        iv_proccs( NULL == i_proccs  ? &cv_null : i_proccs),
+         iv_iBS(0)         // will fully initialize this inside ctor.
+     {
+         uint32_t l_length = 1024;
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
+index 0d379cf..cad5ce8 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
++++ b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
+@@ -166,7 +166,7 @@ SCAN_COMM_REGISTER_CLASS &  ScanFacility::GetAttnTypeRegister(
+                                            SCAN_COMM_REGISTER_CLASS * i_special,
+                                            SCAN_COMM_REGISTER_CLASS * i_proccs )
+ {
+-  AttnTypeRegister r(*i_check, *i_recov, *i_special, *i_proccs);
++  AttnTypeRegister r(i_check, i_recov, i_special, i_proccs);
+   return iv_attnRegFw.get(r);
+ }
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch b/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
new file mode 100644
index 0000000..7e17bf9
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
@@ -0,0 +1,33 @@
+From 9279a2bf255392321594b9457a67b796195b0891 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Wed, 31 Aug 2016 13:07:17 +1000
+Subject: [PATCH 09/10] =?UTF-8?q?error:=20in=20C++98=20=E2=80=98l=5FvmVers?=
+ =?UTF-8?q?ionBuf=E2=80=99=20must=20be=20initialized=20by=20constructor?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fix GCC6 thrown error
+
+Change-Id: I9aa508843f54c99ebb59822c39590811423ad0b1
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+index 3739c75..a4685ad 100755
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+@@ -392,7 +392,7 @@ fapi::ReturnCode getVersion  (const fapi::Target    & i_mbaTarget,
+     fapi::Target l_mbTarget;
+     fapi::MBvpdKeyword l_keyword = fapi::MBVPD_KEYWORD_VM;  // try VM first
+     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX; // default to SPDX
+-    MBvpdVMKeyword l_vmVersionBuf={};
++    MBvpdVMKeyword l_vmVersionBuf;
+     uint32_t l_version = 0;
+     uint32_t l_vmBufSize = sizeof(MBvpdVMKeyword); // VM keyword is of 4 bytes.
+     uint16_t l_versionBuf = 0;
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch b/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch
new file mode 100644
index 0000000..a9cef3f
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch
@@ -0,0 +1,69 @@
+From 9852975319c864b47759cc8d7814bf6f9f0f1f4c Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 3 Nov 2016 14:36:19 +1100
+Subject: [PATCH 10/10] Use -std=gnu++03 for host g++ invocations
+
+Seeing as the ancient GCC on RHEL6 doesn't actually support -std=gnu++03
+we have to go through some hoops to detect it (we use the same magic
+Make as we use in skiboot to do the same)
+
+Change-Id: I338560ae2ebdac842c8055c07519d542564c3923
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/hwpf/makefile | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile
+index 8d0bb72..ee8cf13 100644
+--- a/src/usr/hwpf/makefile
++++ b/src/usr/hwpf/makefile
+@@ -5,7 +5,7 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# Contributors Listed Below - COPYRIGHT 2011,2015
++# Contributors Listed Below - COPYRIGHT 2011,2016
+ # [+] International Business Machines Corp.
+ #
+ #
+@@ -402,18 +402,26 @@ $(call GENTARGET, ${IF_CMP_FLEX_TARGET}) : \
+ 	$(C2) "    FLEX       $(notdir $<)"
+ 	$(C1)flex -o$@ $^
+ 
++try = $(shell set -e; if ($(1)) >/dev/null 2>&1; \
++        then echo "$(2)"; \
++        else echo "$(3)"; fi )
++
++try-cflag = $(call try,$(1) $(2) -x c -c /dev/null -o /dev/null,$(2))
++HOSTCFLAGS:=-O3
++HOSTCFLAGS+=$(call try-cflag,$(HOST_PREFIX)g++,-std=gnu++03)
++
+ $(GENDIR)/$(IF_CMP_SUBDIR)/%.host.o: \
+ 	    ifcompiler/%.C $(IF_COMPILER_H_FILES) \
+ 	    $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+ $(GENDIR)/$(IF_CMP_YACC_C_TARGET:.c=.host.o): \
+     $(GENDIR)/$(IF_CMP_YACC_C_TARGET) $(IF_COMPILER_H_FILES)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+@@ -421,7 +429,7 @@ $(GENDIR)/$(IF_CMP_FLEX_TARGET:.c=.host.o): \
+     $(GENDIR)/$(IF_CMP_FLEX_TARGET) $(IF_COMPILER_H_FILES) \
+     $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0001-Increase-uart-delay.patch b/openpower/package/hostboot/p9Patches/hostboot-0001-Increase-uart-delay.patch
new file mode 120000
index 0000000..10137ed
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0001-Increase-uart-delay.patch
@@ -0,0 +1 @@
+../p8Patches/hostboot-0001-Increase-uart-delay.patch
\ No newline at end of file
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch b/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch
new file mode 100644
index 0000000..d369874
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0002-Only-build-attributeOverride-if-compiler-supports-st.patch
@@ -0,0 +1,101 @@
+From 88a9eed95a72e6cbc8956585308599bf07aec70a Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Mon, 20 Mar 2017 13:31:35 +1100
+Subject: [PATCH] Only build attributeOverride if compiler supports
+ -std=gnu++11
+
+GCC prior to 4.8 doesn't support -std=gnu++11, which the attributeOverride
+tool requires to build.
+
+Since this is only a host side utility, we can not build it if we're
+building hostboot with ancient host compilers (e.g. on RHEL6.x)
+
+Change-Id: I53ad31b56dd90c2cd77f5ca1f91b46e519cdfe48
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/build/mkrules/cc.rules.mk           | 10 +++++++++-
+ src/build/mkrules/dist.targets.mk       |  7 ++++++-
+ src/usr/targeting/attroverride/makefile |  8 +++++++-
+ 3 files changed, 22 insertions(+), 3 deletions(-)
+
+diff --git a/src/build/mkrules/cc.rules.mk b/src/build/mkrules/cc.rules.mk
+index cb00ea001072..c89995f825df 100644
+--- a/src/build/mkrules/cc.rules.mk
++++ b/src/build/mkrules/cc.rules.mk
+@@ -5,7 +5,9 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# COPYRIGHT International Business Machines Corp. 2013,2014
++# Contributors Listed Below - COPYRIGHT 2013,2017
++# [+] International Business Machines Corp.
++#
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+@@ -74,3 +76,9 @@ $(IMGDIR)/lib$(MODULE).so : $(OBJECTS) $(ROOTPATH)/src/module.ld $(MODULE_INIT)
+ 		   $(OBJECTS) $(MODULE_INIT) \
+ 	           -T $(ROOTPATH)/src/module.ld -o $@
+ endif
++
++try = $(shell set -e; if ($(1)) >/dev/null 2>&1; \
++        then echo "$(2)"; \
++        else echo "$(3)"; fi )
++
++try-cflag = $(call try,$(1) $(2) -x c -c /dev/null -o /dev/null,$(2))
+diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
+index 2f047bcda0b7..ba6114db9aae 100644
+--- a/src/build/mkrules/dist.targets.mk
++++ b/src/build/mkrules/dist.targets.mk
+@@ -71,7 +71,6 @@ COPY_FILES = \
+     obj/genfiles/targAttrInfo.csv:vpo \
+     obj/genfiles/target_types_merged.xml:openpower \
+     obj/genfiles/fapiattrs.xml:openpower \
+-    obj/genfiles/attributeOverride:tools,openpower \
+     src/usr/targeting/attroverride/README.attr_override:tools,openpower \
+     src/build/hwpf/prcd_compile.tcl:tools \
+     src/build/buildpnor/buildSbePart.pl:openpower \
+@@ -94,6 +93,12 @@ COPY_FILES = \
+     src/usr/targeting/common/xmltohb/bios_metadata_petitboot.xslt:openpower \
+     $(foreach file, $(call ROOTPATH_WILDCARD,releaseNotes.html), $(file):fsp)\
+ 
++ifeq ($(call try-cflag,$(CCACHE) $(HOST_PREFIX)g++,-std=gnu++11),-std=gnu++11)
++COPY_FILES += obj/genfiles/attributeOverride:tools,openpower
++else
++COPY_FILES += obj/genfiles/attributeOverride:tools
++endif
++
+ include ${ROOTPATH}/config.mk
+ COPY_FILES += $(if $(CONFIG_INCLUDE_XML_OPPOWERVM),src/usr/targeting/common/xmltohb/target_types_oppowervm.xml:openpower) \
+     $(if $(CONFIG_INCLUDE_XML_OPPOWERVM),src/usr/targeting/common/xmltohb/attribute_types_oppowervm.xml:openpower) \
+diff --git a/src/usr/targeting/attroverride/makefile b/src/usr/targeting/attroverride/makefile
+index 8ab26fd5009b..d9f0e85b324c 100644
+--- a/src/usr/targeting/attroverride/makefile
++++ b/src/usr/targeting/attroverride/makefile
+@@ -5,7 +5,7 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# Contributors Listed Below - COPYRIGHT 2014,2016
++# Contributors Listed Below - COPYRIGHT 2014,2017
+ # [+] International Business Machines Corp.
+ #
+ #
+@@ -49,8 +49,14 @@ include $(ROOTPATH)/config.mk
+ vpath %.C $(GENDIR)
+ vpath %.H $(GENDIR)
+ 
++ifeq ($(call try-cflag,$(CCACHE) $(HOST_PREFIX)g++,-std=gnu++11),-std=gnu++11)
+ $(OUT_FILE): $(C_FILES) $(H_FILES)
+ 	$(C2) "    CC         $(notdir $@)"
+ 	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -std=gnu++11 -O3 -g -o $(OUT_FILE)\
+ 			$(foreach dir,$(INC_DIRS), -I $(dir)) -iquote.\
+ 			$(foreach file,$^,$(if $(findstring .H,$(file)),,$(file)))
++else
++$(OUT_FILE): $(C_FILES) $(H_FILES)
++	$(C2) "    GEN-NULL   $(notdir $@)"
++	@(echo '#!/bin/sh'; echo 'exit -1';) > $(OUT_FILE)
++endif
+-- 
+2.9.3
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch b/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch
new file mode 100644
index 0000000..7c097e7
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0003-Revert-ProcessMRW-changes-for-dynamic-i2c-devices.patch
@@ -0,0 +1,359 @@
+From 7a4142d229ddd0554684664df8d7fa9bd402abc7 Mon Sep 17 00:00:00 2001
+From: Bill Hoffa <wghoffa@us.ibm.com>
+Date: Mon, 8 May 2017 13:03:51 -0500
+Subject: [PATCH] Revert "ProcessMRW changes for dynamic i2c devices"
+
+- Do this temporarily while the attribute dependencies are sorted out
+  (HDAT_I2C_DEVICE_TYPE + HDAT_I2C_DEVICE_PURPOSE)
+
+This reverts commit 651ed35f1c045ea0c52ac659f9c27d757a351877.
+---
+ src/usr/i2c/i2c.C                                  |  12 +-
+ src/usr/targeting/common/Targets.pm                |  16 --
+ src/usr/targeting/common/processMrw.pl             | 190 ---------------------
+ .../common/xmltohb/attribute_types_openpower.xml   |   4 +-
+ .../common/xmltohb/target_types_openpower.xml      |   6 +-
+ 5 files changed, 12 insertions(+), 216 deletions(-)
+
+diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
+index 3892497..835d9ea 100755
+--- a/src/usr/i2c/i2c.C
++++ b/src/usr/i2c/i2c.C
+@@ -3854,6 +3854,9 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
+                 case EEPROM::VPD_BACKUP:
+                     l_currentDI.devicePurpose =
+                             TARGETING::HDAT_I2C_DEVICE_PURPOSE_MODULE_VPD;
++                    //TODO RTC:165485 this isn't currently right. we'll need
++                    //to add the changes in the enum and possibly the other
++                    //struct/attribute.
+                     break;
+                 case EEPROM::SBE_PRIMARY:
+                 case EEPROM::SBE_BACKUP:
+@@ -3938,8 +3941,8 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
+         TARGETING::ATTR_HDAT_I2C_MASTER_PORT_type l_i2cMasterPort;
+         (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_MASTER_PORT>(
+                                                     l_i2cMasterPort);
+-        TARGETING::ATTR_HDAT_I2C_DEVICE_TYPE_type l_i2cDevType;
+-        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVICE_TYPE>(
++        TARGETING::ATTR_HDAT_I2C_DEVTYPE_type l_i2cDevType;
++        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVTYPE>(
+                                                     l_i2cDevType);
+         TARGETING::ATTR_HDAT_I2C_ADDR_type l_i2cAddr;
+         (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_ADDR>(l_i2cAddr);
+@@ -3949,8 +3952,8 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
+         TARGETING::ATTR_HDAT_I2C_BUS_FREQ_type l_i2cBusFreq;
+         (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_BUS_FREQ>(
+                                                     l_i2cBusFreq);
+-        TARGETING::ATTR_HDAT_I2C_DEVICE_PURPOSE_type l_i2cDevPurpose;
+-        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVICE_PURPOSE>(
++        TARGETING::ATTR_HDAT_I2C_DEV_PURPOSE_type l_i2cDevPurpose;
++        (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEV_PURPOSE>(
+                                                     l_i2cDevPurpose);
+ 
+         uint8_t l_arrayLength =
+@@ -3966,7 +3969,6 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
+                     l_idx++)
+         {
+             DeviceInfo_t l_currentDevice;
+-            l_currentDevice.masterChip = (*childItr);
+             l_currentDevice.engine = l_i2cEngine[l_idx];
+             l_currentDevice.masterPort = l_i2cMasterPort[l_idx];
+             l_currentDevice.addr = l_i2cAddr[l_idx];
+diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
+index 44b24bb..9009b4d 100644
+--- a/src/usr/targeting/common/Targets.pm
++++ b/src/usr/targeting/common/Targets.pm
+@@ -1708,18 +1708,6 @@ sub getBusAttribute
+       ->{default};
+ }
+ 
+-## returns a boolean for if a given bus attribute is defined
+-sub isBusAttributeDefined
+-{
+-    my $self       = shift;
+-    my $target     = shift;
+-    my $busnum     = shift;
+-    my $attr       = shift;
+-    my $target_ptr = $self->getTarget($target);
+-
+-    return defined($target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}
+-            ->{$attr}->{default});
+-}
+ 
+ ## returns a pointer to an array of children target names
+ sub getTargetChildren
+@@ -2059,10 +2047,6 @@ to value C<VALUE>.  This is for complex attributes.
+ Gets the attribute C<ATTRIBUTE_NAME> from bus C<TARGET_STRING> bus number
+ C<INDEX>.
+ 
+-=item isBusAttributeDefined(C<TARGET_STRING>,C<INDEX>.C<ATTRIBUTE_NAME>)
+-
+-Looks for a specific attribute and returns if it exists or not
+-
+ =item getTargetChildren(C<TARGET_STRING>)
+ 
+ Returns an array of target strings representing all the children of target
+diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
+index 97d9901..fd6fbad 100644
+--- a/src/usr/targeting/common/processMrw.pl
++++ b/src/usr/targeting/common/processMrw.pl
+@@ -477,15 +477,6 @@ sub processProcessor
+        $targetObj->setMasterProc($target);
+     }
+ 
+-    # I2C arrays
+-    my @engine = ();
+-    my @port = ();
+-    my @slavePort = ();
+-    my @addr = ();
+-    my @speed = ();
+-    my @type = ();
+-    my @purpose = ();
+-
+     $targetObj->log($target, "Processing PROC");
+     foreach my $child (@{ $targetObj->getTargetChildren($target) })
+     {
+@@ -537,58 +528,8 @@ sub processProcessor
+         {
+             processOcc($targetObj, $child, $target);
+         }
+-        # Ideally this should be $child_type eq "I2C", but we need a change
+-        # in serverwiz and the witherspoon.xml first
+-        elsif (index($child,"i2c-master") != -1)
+-        {
+-            my ($i2cEngine, $i2cPort, $i2cSlavePort, $i2cAddr,
+-                $i2cSpeed, $i2cType, $i2cPurpose) =
+-                    processI2C($targetObj, $child, $target);
+-
+-            # Add this I2C device's information to the proc array
+-            push(@engine,@$i2cEngine);
+-            push(@port,@$i2cPort);
+-            push(@slavePort,@$i2cSlavePort);
+-            push(@addr,@$i2cAddr);
+-            push(@speed,@$i2cSpeed);
+-            push(@type,@$i2cType);
+-            push(@purpose,@$i2cPurpose);
+-
+-        }
+     }
+ 
+-    # Add final I2C arrays to processor
+-    my $size         = scalar @engine;
+-    my $engine_attr  = $engine[0];
+-    my $port_attr    = $port[0];
+-    my $slave_attr   = $slavePort[0];
+-    my $addr_attr    = $addr[0];
+-    my $speed_attr   = $speed[0];
+-    my $type_attr    = "0x".$type[0];
+-    my $purpose_attr = "0x".$purpose[0];
+-
+-    # Parse out array to print as a string
+-    foreach my $n (1..($size-1))
+-    {
+-        $engine_attr    .= ",".$engine[$n];
+-        $port_attr      .= ",".$port[$n];
+-        $slave_attr     .= ",".$slavePort[$n];
+-        $addr_attr      .= ",".$addr[$n];
+-        $speed_attr     .= ",".$speed[$n];
+-        $type_attr      .= ",0x".$type[$n];
+-        $purpose_attr   .= ",0x".$purpose[$n];
+-    }
+-
+-    # Set the arrays to the corresponding attribute on the proc
+-    $targetObj->setAttribute($target,"HDAT_I2C_ENGINE",$engine_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_MASTER_PORT",$port_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_SLAVE_PORT",$slave_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_ADDR",$addr_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_BUS_FREQ",$speed_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_DEVICE_TYPE",$type_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_DEVICE_PURPOSE",$purpose_attr);
+-    $targetObj->setAttribute($target,"HDAT_I2C_ELEMENTS",$size);
+-
+     ## update path for mvpd's and sbe's
+     my $path  = $targetObj->getAttribute($target, "PHYS_PATH");
+     my $model = $targetObj->getAttribute($target, "MODEL");
+@@ -1290,137 +1231,6 @@ sub getI2cMapField
+     return $hexfield;
+ }
+ 
+-#------------------------------------------------------------------------------
+-# I2C
+-#
+-sub processI2C
+-{
+-    my $targetObj    = shift; # Top Hierarchy of targeting structure
+-    my $target       = shift; # I2C targetInstance
+-    my $parentTarget = shift; # Processor target
+-
+-    # Initialize output arrays
+-    my @i2cEngine = ();
+-    my @i2cPort = ();
+-    my @i2cSlave = ();
+-    my @i2cAddr = ();
+-    my @i2cSpeed = ();
+-    my @i2cType = ();
+-    my @i2cPurpose = ();
+-
+-    # Step 1: get I2C_ENGINE and PORT from <targetInstance>
+-
+-    my $engine = $targetObj->getAttribute($target, "I2C_ENGINE");
+-    if($engine eq "") {$engine = "0xFF";}
+-
+-    my $port = $targetObj->getAttribute($target, "I2C_PORT");
+-    if($port eq "") {$port = "0xFF";}
+-
+-    # Step 2: get I2C_ADDRESS and I2C_SPEED from <bus>
+-    #         This is different for each connection.
+-
+-    my $i2cs = $targetObj->findConnections($parentTarget, "I2C","");
+-    if ($i2cs ne "")
+-    {
+-        # This gives all i2c connections
+-        foreach my $i2c (@{$i2cs->{CONN}})
+-        {
+-            # Here we are checking that the i2c source matches our target
+-            my $source = $i2c->{SOURCE};
+-            if ($source ne $target)
+-            {
+-                next;
+-            }
+-
+-            # Most I2C devices will default the slave port, it is only valid
+-            # for gpio expanders.
+-            my $slavePort = "0xFF";
+-
+-            my @source_array = split(/-/,$source);
+-            my $source_idx = scalar @source_array;
+-
+-            # If the last part of the source only includes numbers
+-            if($source_array[$source_idx-1] =~ /^[0-9,.E]+$/)
+-            {
+-                $slavePort = $source_array[$source_idx-1];
+-            }
+-
+-            my $addr;
+-            my $speed;
+-            my $type;
+-            my $purpose;
+-
+-            # For all these attributes, we need to check if they're defined,
+-            # and if not we set them to a default value.
+-            if ($targetObj->isBusAttributeDefined(
+-                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_ADDRESS"))
+-            {
+-                $addr = $targetObj->getBusAttribute(
+-                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_ADDRESS");
+-            }
+-
+-            if ($addr eq "") {$addr = "0xFF";}
+-
+-            if ($targetObj->isBusAttributeDefined(
+-                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED"))
+-            {
+-                $speed = $targetObj->getBusAttribute(
+-                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED");
+-            }
+-
+-            if ($speed eq "") {$speed = "0";}
+-
+-            if ($targetObj->isBusAttributeDefined(
+-                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_TYPE"))
+-            {
+-                $type = $targetObj->getBusAttribute(
+-                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_TYPE");
+-            }
+-
+-            if ($type eq "")
+-            {
+-                $type = "FF";
+-            }
+-            else
+-            {
+-                $type = $targetObj->getEnumValue("HDAT_I2C_DEVICE_TYPE",$type);
+-            }
+-
+-            if ($targetObj->isBusAttributeDefined(
+-                     $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE"))
+-            {
+-                $purpose = $targetObj->getBusAttribute(
+-                           $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE");
+-            }
+-
+-            if ($purpose eq "")
+-            {
+-                $purpose = "FF";
+-            }
+-            else
+-            {
+-                $purpose = $targetObj->getEnumValue("HDAT_I2C_DEVICE_PURPOSE",
+-                                                    $purpose);
+-            }
+-
+-            # Step 3: For each connection, create an instance in the array
+-            #         for the DeviceInfo_t struct.
+-            push @i2cEngine, $engine;
+-            push @i2cPort, $port;
+-            push @i2cSlave, $slavePort;
+-            push @i2cAddr, $addr;
+-            push @i2cSpeed, $speed;
+-            push @i2cType, $type;
+-            push @i2cPurpose, $purpose;
+-
+-        }
+-    }
+-
+-    # Return this i2c device's information back to the processor
+-    return (\@i2cEngine, \@i2cPort, \@i2cSlave, \@i2cAddr,
+-            \@i2cSpeed, \@i2cType, \@i2cPurpose);
+-}
+-
+ 
+ sub setEepromAttributes
+ {
+diff --git a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
+index e40f8eb..841d3d2 100644
+--- a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
++++ b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
+@@ -191,7 +191,7 @@
+ </attribute>
+ 
+ <attribute>
+-    <id>HDAT_I2C_DEVICE_TYPE</id>
++    <id>HDAT_I2C_DEVTYPE</id>
+     <description>
+         This attribute holds the values of the I2C device type from the i2c
+         device connections as defined in the MRW.  It is parsed into a
+@@ -255,7 +255,7 @@
+ </attribute>
+ 
+ <attribute>
+-    <id>HDAT_I2C_DEVICE_PURPOSE</id>
++    <id>HDAT_I2C_DEV_PURPOSE</id>
+     <description>
+         This attribute holds the values of the I2C device purpose from the i2c
+         device connections as defined in the MRW.  It is parsed into a
+diff --git a/src/usr/targeting/common/xmltohb/target_types_openpower.xml b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
+index 6efbbd1..548c559 100644
+--- a/src/usr/targeting/common/xmltohb/target_types_openpower.xml
++++ b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
+@@ -32,14 +32,14 @@
+      =====================================================================
+  -->
+ <targetTypeExtension>
+-    <id>chip-processor</id>
++    <id>base</id>
+     <attribute><id>HDAT_I2C_ENGINE</id></attribute>
+     <attribute><id>HDAT_I2C_MASTER_PORT</id></attribute>
+-    <attribute><id>HDAT_I2C_DEVICE_TYPE</id></attribute>
++    <attribute><id>HDAT_I2C_DEVTYPE</id></attribute>
+     <attribute><id>HDAT_I2C_ADDR</id></attribute>
+     <attribute><id>HDAT_I2C_SLAVE_PORT</id></attribute>
+     <attribute><id>HDAT_I2C_BUS_FREQ</id></attribute>
+-    <attribute><id>HDAT_I2C_DEVICE_PURPOSE</id></attribute>
++    <attribute><id>HDAT_I2C_DEV_PURPOSE</id></attribute>
+     <attribute><id>HDAT_I2C_ELEMENTS</id></attribute>
+     <attribute>
+         <id>IPMI_INSTANCE</id>
+-- 
+1.8.2.2
+
diff --git a/openpower/package/ima-catalog/Config.in b/openpower/package/ima-catalog/Config.in
new file mode 100644
index 0000000..98d02c5
--- /dev/null
+++ b/openpower/package/ima-catalog/Config.in
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_IMA_CATALOG
+	bool "ima_catalog"
+	default y if (BR2_OPENPOWER_PLATFORM)
+	help
+		Event Catalog for In Memory Accumulation(IMA) hardware
+
+config BR2_IMA_CATALOG_DTS
+	string "Catalog DTS file to select"
+	help
+		String used to define the CATALOG dts file to select
+
+config BR2_IMA_CATALOG_FILENAME
+	string "Name of Catalog Binary file"
+	help
+		String used to define name of the CATALOG binary image file
diff --git a/openpower/package/ima-catalog/ima-catalog.mk b/openpower/package/ima-catalog/ima-catalog.mk
new file mode 100644
index 0000000..20b62f2
--- /dev/null
+++ b/openpower/package/ima-catalog/ima-catalog.mk
@@ -0,0 +1,22 @@
+################################################################################
+#
+# ima-catalog.mk
+#
+################################################################################
+IMA_CATALOG_VERSION ?= 0e3bbcb56dfc60fd99b862406ecd3e117117d9af
+IMA_CATALOG_SITE ?= $(call github,open-power,ima-catalog,$(IMA_CATALOG_VERSION))
+IMA_CATALOG_LICENSE = Apache-2.0
+IMA_CATALOG_DEPENDENCIES = host-dtc host-xz
+
+IMA_CATALOG_INSTALL_IMAGES = YES
+IMA_CATALOG_INSTALL_TARGET = NO
+
+define IMA_CATALOG_BUILD_CMDS
+       cd $(@D) && ./build.sh $(HOST_DIR)/usr/bin/ $(BR2_IMA_CATALOG_DTS)
+endef
+
+define IMA_CATALOG_INSTALL_IMAGES_CMDS
+       $(INSTALL) $(@D)/$(BR2_IMA_CATALOG_FILENAME) $(BINARIES_DIR)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/libflash/libflash.mk b/openpower/package/libflash/libflash.mk
index f39e8c8..a76aa4d 100644
--- a/openpower/package/libflash/libflash.mk
+++ b/openpower/package/libflash/libflash.mk
@@ -10,6 +10,8 @@
 LIBFLASH_INSTALL_STAGING = YES
 LIBFLASH_INSTALL_TARGET = YES
 
+LIBFLASH_LICENSE_FILES = LICENCE
+
 LIBFLASH_MAKE_OPTS += CC="$(TARGET_CC)" LD="$(TARGET_LD)" \
 		     AS="$(TARGET_AS)" AR="$(TARGET_AR)" NM="$(TARGET_NM)" \
 		     OBJCOPY="$(TARGET_OBJCOPY)" OBJDUMP="$(TARGET_OBJDUMP)" \
diff --git a/openpower/package/loadkeys/loadkeys.mk b/openpower/package/loadkeys/loadkeys.mk
index db6cbca..0a05026 100644
--- a/openpower/package/loadkeys/loadkeys.mk
+++ b/openpower/package/loadkeys/loadkeys.mk
@@ -20,9 +20,9 @@
 endef
 
 define LOADKEYS_POST_INSTALL
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/loadkeys/S16-keymap \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/loadkeys/S16-keymap \
 		$(TARGET_DIR)/etc/init.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/loadkeys/backtab-keymap \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/loadkeys/backtab-keymap \
 		$(TARGET_DIR)/etc/kbd/config
 endef
 
diff --git a/openpower/package/machine-xml/Config.in b/openpower/package/machine-xml/Config.in
new file mode 100755
index 0000000..3f2163f
--- /dev/null
+++ b/openpower/package/machine-xml/Config.in
@@ -0,0 +1,63 @@
+config BR2_PACKAGE_MACHINE_XML
+        bool "machine_xml"
+        default y if (BR2_OPENPOWER_PLATFORM)
+        select BR2_PACKAGE_COMMON_P8_XML
+        help
+
+choice
+	prompt "Machine XML location"
+
+config BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT
+       bool "OpenPOWER Github project name"
+
+config BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT
+       bool "Custom URL of machine xml repository"
+
+endchoice
+
+config BR2_OPENPOWER_MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES
+       bool "Filter Unwanted Attributes"
+       default y if (BR2_OPENPOWER_POWER9)
+       default n
+
+config BR2_OPENPOWER_MACHINE_XML_OPPOWERVM_ATTRIBUTES
+       bool "OPPOWERVM Attributes/Target"
+       default y if (BR2_OPENPOWER_POWER9)
+       default n
+
+config BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML
+       bool "Include target_types_openpower.xml"
+       default y if (BR2_OPENPOWER_POWER9)
+       default n
+
+config BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT_VALUE
+	string "URL of machine xml repository"
+	depends on BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT
+
+config BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE
+       string "The Github project name (e.g. palmetto-xml)"
+       depends on BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT
+
+config BR2_OPENPOWER_MACHINE_XML_VERSION
+       string "Version of Machine XML"
+
+config BR2_OPENPOWER_MACHINE_XML_FILENAME
+       string "Machine XML filename (e.g. habanero.xml)"
+
+config BR2_OPENPOWER_SYSTEM_XML_FILENAME
+        string "Targeting system xml filename"
+        default ""
+        help
+            Defines the name of the system XML filename to be used when creating targeting binary image
+
+config BR2_OPENPOWER_MRW_XML_FILENAME
+        string "Targeting mrw xml filename"
+        default ""
+        help
+            Defines the name of the mrw XML filename to be used when creating targeting binary image
+
+config BR2_OPENPOWER_BIOS_XML_FILENAME
+        string "BIOS metadata XML filename"
+        default ""
+        help
+            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/machine-xml/machine-xml.mk b/openpower/package/machine-xml/machine-xml.mk
new file mode 100644
index 0000000..d443802
--- /dev/null
+++ b/openpower/package/machine-xml/machine-xml.mk
@@ -0,0 +1,121 @@
+################################################################################
+# machine_xml
+#
+################################################################################
+
+MACHINE_XML_VERSION ?= $(call qstrip,$(BR2_OPENPOWER_MACHINE_XML_VERSION))
+ifeq ($(BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT),y)
+MACHINE_XML_SITE = $(call github,open-power,$(BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE),$(MACHINE_XML_VERSION))
+else ifeq ($(BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT),y)
+MACHINE_XML_SITE_METHOD = git
+MACHINE_XML_SITE = $(BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT_VALUE)
+endif
+
+MACHINE_XML_LICENSE = Apache-2.0
+MACHINE_XML_LICENSE_FILES = LICENSE
+MACHINE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
+
+MACHINE_XML_INSTALL_IMAGES = YES
+MACHINE_XML_INSTALL_TARGET = YES
+
+MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
+MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
+
+# Defines for BIOS metadata creation
+BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
+OPENPOWER_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_OPENPOWER_BIOS_XML_FILENAME)
+BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
+PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
+PETITBOOT_BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
+PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
+    $(TARGET_DIR)/usr/share/bios_metadata.xml
+
+WOFDATA_FILE = `ls $(MRW_SCRATCH)/wofdata`
+
+ifeq ($(BR2_OPENPOWER_MACHINE_XML_OPPOWERVM_ATTRIBUTES),y)
+MACHINE_XML_OPPOWERVM_ATTR_XML = $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml
+MACHINE_XML_OPPOWERVM_TARGET_XML = $(MRW_HB_TOOLS)/target_types_oppowervm.xml
+endif
+ifeq ($(BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML),y)
+MACHINE_XML_TARGET_TYPES_OPENPOWER_XML = $(MRW_HB_TOOLS)/target_types_openpower.xml
+endif
+
+define MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES
+       chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
+
+       $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \
+            --tgt-xml $(MRW_HB_TOOLS)/target_types_openpower.xml \
+            --mrw-xml $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME)
+
+       cp  $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME).updated  $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME)
+endef
+
+define MACHINE_XML_BUILD_CMDS
+        # copy the machine xml where the common lives
+        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
+
+        # generate the system mrw xml
+        perl -I $(MRW_HB_TOOLS) \
+        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/$(BR2_OPENPOWER_MACHINE_XML_FILENAME)
+
+	$(if $(BR2_OPENPOWER_MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES), $(call MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES))
+
+        # merge in any system specific attributes, hostboot attributes
+        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_OPENPOWER_SYSTEM_XML_FILENAME) \
+            $(MRW_HB_TOOLS)/attribute_types.xml \
+            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
+            $(MACHINE_XML_OPPOWERVM_ATTR_XML) \
+            $(MRW_HB_TOOLS)/attribute_types_openpower.xml \
+            $(MRW_HB_TOOLS)/target_types_merged.xml \
+            $(MRW_HB_TOOLS)/target_types_hb.xml \
+            $(MACHINE_XML_OPPOWERVM_TARGET_XML) \
+            $(MACHINE_XML_TARGET_TYPES_OPENPOWER_XML) \
+            $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
+
+        # creating the targeting binary
+        $(MRW_HB_TOOLS)/xmltohb.pl  \
+            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
+            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
+            --src-output-dir=none \
+            --img-output-dir=$(MRW_HB_TOOLS)/ \
+            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
+            --bios-xml-file=$(OPENPOWER_BIOS_XML_CONFIG_FILE) \
+            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
+            --bios-output-file=$(BIOS_XML_METADATA_FILE)
+
+        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
+        xsltproc -o \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_XSLT_FILE) \
+            $(BIOS_XML_METADATA_FILE)
+
+        # Create the wofdata
+        if [ -e $(MRW_HB_TOOLS)/wof-tables-img ]; then \
+            chmod +x $(MRW_HB_TOOLS)/wof-tables-img; \
+        fi
+        
+		if [ -d $(MRW_SCRATCH)/wofdata ]; then \
+			$(MRW_HB_TOOLS)/wof-tables-img --create $(MRW_SCRATCH)/wof_output $(MRW_SCRATCH)/wofdata; \
+        fi
+
+
+
+endef
+
+define MACHINE_XML_INSTALL_IMAGES_CMDS
+        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
+endef
+
+define MACHINE_XML_INSTALL_TARGET_CMDS
+        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
+        $(INSTALL) -D -m 0644 \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/occ/Config.in b/openpower/package/occ/Config.in
index f00396d..29b5eb4 100644
--- a/openpower/package/occ/Config.in
+++ b/openpower/package/occ/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_OCC
         bool "occ"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
         select BR2_CPP
         help
             Project to build OCC
diff --git a/openpower/package/occ/occ.mk b/openpower/package/occ/occ.mk
index d18c3e5..fb62b71 100644
--- a/openpower/package/occ/occ.mk
+++ b/openpower/package/occ/occ.mk
@@ -4,25 +4,60 @@
 #
 ################################################################################
 
-OCC_VERSION ?= 19a3ebc0f759ba4af88ef1664c0e373cd8487653
+OCC_VERSION_BRANCH_MASTER_P8 ?= 28f2cec690b7f19548ce860a8820f519e6c39a6a
+OCC_VERSION_BRANCH_MASTER ?= 1dc97a688e32e63420533bfde8c6d7d2996619ea
+
+OCC_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_VERSION_BRANCH_MASTER),$(OCC_VERSION_BRANCH_MASTER_P8))
 OCC_SITE ?= $(call github,open-power,occ,$(OCC_VERSION))
 OCC_LICENSE = Apache-2.0
-OCC_DEPENDENCIES = host-binutils host-p8-pore-binutils
+
+OCC_LICENSE_FILES_P8 = src/LICENSE
+OCC_LICENSE_FILES_P9 = LICENSE
+OCC_LICENSE_FILES ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_LICENSE_FILES_P9),$(OCC_LICENSE_FILES_P8))
 
 OCC_INSTALL_IMAGES = YES
 OCC_INSTALL_TARGET = NO
 
 OCC_STAGING_DIR = $(STAGING_DIR)/occ
 
-define OCC_BUILD_CMDS
+OCC_IMAGE_BIN_PATH = $(if $(BR2_OPENPOWER_POWER9),obj/image.bin,src/image.bin)
+
+OCC_DEPENDENCIES_P8 = host-binutils host-p8-pore-binutils
+OCC_DEPENDENCIES_P9 = host-binutils host-ppe42-gcc
+OCC_DEPENDENCIES ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_DEPENDENCIES_P9),$(OCC_DEPENDENCIES_P8))
+
+define OCC_APPLY_PATCHES
+       if [ "$(BR2_OPENPOWER_POWER9)" == "y" ]; then \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/occ/p9Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p9Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p9Patches \*.patch; \
+           fi; \
+       fi; \
+       if [ "$(BR2_OPENPOWER_POWER8)" == "y" ]; then \
+           $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/package/occ/p8Patches \*.patch; \
+           if [ -d $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p8Patches ]; then \
+               $(APPLY_PATCHES) $(@D) $(BR2_EXTERNAL_OP_BUILD_PATH)/custom/patches/occ/p8Patches \*.patch; \
+           fi; \
+       fi;
+endef
+
+OCC_POST_PATCH_HOOKS += OCC_APPLY_PATCHES
+
+define OCC_BUILD_CMDS_P8
         cd $(@D)/src && \
         make POREPATH=$(P8_PORE_BINUTILS_BIN)/bin/ OCC_OP_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) all && \
+        make tracehash && \
         make combineImage
 endef
+define OCC_BUILD_CMDS_P9
+        cd $(@D)/src && \
+        make PPE_TOOL_PATH=$(PPE42_GCC_BIN) OCC_OP_BUILD=1 CROSS_PREFIX=$(TARGET_CROSS) LD_LIBRARY_PATH=$(HOST_DIR)/usr/lib all 
+endef
+OCC_BUILD_CMDS ?= $(if $(BR2_OPENPOWER_POWER9),$(OCC_BUILD_CMDS_P9),$(OCC_BUILD_CMDS_P8))
 
 define OCC_INSTALL_IMAGES_CMDS
        mkdir -p $(STAGING_DIR)/occ
-       cp $(@D)/src/image.bin $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME)
+       cp $(@D)/$(OCC_IMAGE_BIN_PATH) $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME)
 endef
 
 $(eval $(generic-package))
diff --git a/openpower/package/openpower-ffs/Config.in b/openpower/package/openpower-ffs/Config.in
index 688b654..19a98f4 100644
--- a/openpower/package/openpower-ffs/Config.in
+++ b/openpower/package/openpower-ffs/Config.in
@@ -1,5 +1,5 @@
 config BR2_PACKAGE_HOST_OPENPOWER_FFS
         bool "ffs"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
         help
             Utilites for building an 'ffs' image file.
diff --git a/openpower/package/openpower-ffs/openpower-ffs.mk b/openpower/package/openpower-ffs/openpower-ffs.mk
index ff82950..b2909cf 100644
--- a/openpower/package/openpower-ffs/openpower-ffs.mk
+++ b/openpower/package/openpower-ffs/openpower-ffs.mk
@@ -1,6 +1,7 @@
 OPENPOWER_FFS_VERSION ?= 2e790b8409071ca15767d822dabfa8e60f12c6e2
 OPENPOWER_FFS_SITE ?= $(call github,open-power,ffs,$(OPENPOWER_FFS_VERSION))
 OPENPOWER_FFS_LICENSE = GPLv2+
+OPENPOWER_FFS_LICENSE_FILES = LICENSE
 
 define HOST_OPENPOWER_FFS_BUILD_CMDS
 	cd $(@D) ; \
diff --git a/openpower/package/openpower-mrw/Config.in b/openpower/package/openpower-mrw/Config.in
index e69de29..633e166 100644
--- a/openpower/package/openpower-mrw/Config.in
+++ b/openpower/package/openpower-mrw/Config.in
@@ -0,0 +1,3 @@
+config BR2_PACKAGE_OPENPOWER_MRW
+        bool "Machine Readable Workbook (MRW) infrastructure"
+        default y if BR2_PACKAGE_HOSTBOOT
diff --git a/openpower/package/openpower-mrw/openpower-mrw.mk b/openpower/package/openpower-mrw/openpower-mrw.mk
index ccd059f..e70cbd6 100644
--- a/openpower/package/openpower-mrw/openpower-mrw.mk
+++ b/openpower/package/openpower-mrw/openpower-mrw.mk
@@ -8,6 +8,7 @@
 OPENPOWER_MRW_SITE = $(call github,open-power,openpower-mrw,$(OPENPOWER_MRW_VERSION))
 
 OPENPOWER_MRW_LICENSE = Apache-2.0
+OPENPOWER_MRW_LICENSE_FILES = LICENSE
 OPENPOWER_MRW_DEPENDENCIES =
 
 OPENPOWER_MRW_INSTALL_IMAGES = YES
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index cc7cc71..2328a04 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -1,6 +1,14 @@
 config BR2_PACKAGE_OPENPOWER_PNOR
         bool "openpower_pnor"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
+        select BR2_PACKAGE_HOSTBOOT
+        select BR2_PACKAGE_HOSTBOOT_BINARIES
+        select BR2_PACKAGE_SKIBOOT
+        select BR2_PACKAGE_OPENPOWER_FFS
+        select BR2_PACKAGE_OCC
+        select BR2_PACKAGE_CAPP_UCODE
+        select BR2_PACKAGE_IMA_CATALOG
+	select BR2_PACKAGE_MACHINE_XML
         help
             Utilites for building a targeting binary image
 
@@ -14,11 +22,6 @@
         help
             String used to define configuration name
 
-config BR2_OPENPOWER_XML_PACKAGE
-        string "Name of xml/targeting package"
-        help
-            String defines the xml/targeting package used
-
 config BR2_OPENPOWER_PNOR_FILENAME
         string "Name of pnor file to be created"
         help
@@ -37,7 +40,8 @@
 
 config BR2_TARGET_SKIBOOT_XZ
         boolean "Compress the skiboot image with XZ"
-        default n
+        select BR2_OPENPOWER_PNOR_XZ_ENABLED
+        default y
 
 config BR2_SKIBOOT_LID_XZ_NAME
         string "Name of compressed skiboot lid"
@@ -51,7 +55,6 @@
         help
             String used to define name of sbe hostboot binary file
 
-
 config BR2_HOSTBOOT_BINARY_SBEC_FILENAME
         string "Name of sbec hostboot binary"
         help
@@ -62,6 +65,28 @@
         help
             String used to define name of winkle hostboot binary file
 
+config BR2_WOFDATA_FILENAME
+        string "Name of wofdata original file"
+        default "wof_output"
+        help
+            String used to define name of wofdata original file
+
+config BR2_WOFDATA_BINARY_FILENAME
+        string "Name of wofdata binary file"
+        default "wofdata.bin.ecc"
+        help
+            String used to define name of wofdata binary ecc'd file
+
+config BR2_IMA_CATALOG_FILENAME
+        string "Name of IMA catalog binary"
+        help
+            String used to define name of IMA catalog binary file
+
+config BR2_IMA_CATALOG_ECC_FILENAME
+        string "Name of IMA catalog binary"
+        help
+            String used to define name of IMA catalog binary file, ecc protected
+
 config BR2_OPENPOWER_TARGETING_BIN_FILENAME
         string "Name of openpower binary targeting file"
         help
@@ -73,6 +98,5 @@
             String used to define name of openpower targeting binary file, ecc protected
 
 config BR2_OPENPOWER_PNOR_XZ_ENABLED
-        string "False if we are not compressing with XZ anywhere"
-        default "false" if !BR2_TARGET_SKIBOOT_XZ
-        default "true" if BR2_TARGET_SKIBOOT_XZ
+        bool "Enable xz compression in PNOR payloads"
+        default n
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index c4184f4..2f64253 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -4,15 +4,16 @@
 #
 ################################################################################
 
-# remove the quotes from the XML/Targeting package as
-# make doesn't care for quotes in the dependencies.
-XML_PACKAGE=$(subst $\",,$(BR2_OPENPOWER_XML_PACKAGE))
-
-OPENPOWER_PNOR_VERSION ?= b937782225b96b6fb176f8acb59278026c8d9fd6
+OPENPOWER_PNOR_VERSION ?= 3ab2d5d3f0c030bd68a4b431ac128004d54f7511
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
-OPENPOWER_PNOR_DEPENDENCIES = hostboot hostboot-binaries $(XML_PACKAGE) skiboot host-openpower-ffs occ capp-ucode
+OPENPOWER_PNOR_LICENSE_FILES = LICENSE
+OPENPOWER_PNOR_DEPENDENCIES = hostboot hostboot-binaries machine-xml skiboot host-openpower-ffs occ capp-ucode
+
+ifeq ($(BR2_PACKAGE_IMA_CATALOG),y)
+OPENPOWER_PNOR_DEPENDENCIES += ima-catalog
+endif
 
 ifeq ($(BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD),n)
 
@@ -25,7 +26,13 @@
 endif
 
 ifeq ($(BR2_OPENPOWER_PNOR_XZ_ENABLED),y)
-OPENPOWER_PNOR_DEPENDENCIES += host_xz
+OPENPOWER_PNOR_DEPENDENCIES += host-xz
+endif
+
+ifeq ($(BR2_OPENPOWER_POWER9),y)
+    OPENPOWER_RELEASE=p9
+else
+    OPENPOWER_RELEASE=p8
 endif
 
 
@@ -34,17 +41,25 @@
 
 HOSTBOOT_IMAGE_DIR=$(STAGING_DIR)/hostboot_build_images/
 HOSTBOOT_BINARY_DIR = $(STAGING_DIR)/hostboot_binaries/
+SBE_BINARY_DIR = $(STAGING_DIR)/sbe_binaries/
 OPENPOWER_PNOR_SCRATCH_DIR = $(STAGING_DIR)/openpower_pnor_scratch/
 OPENPOWER_VERSION_DIR = $(STAGING_DIR)/openpower_version
+OPENPOWER_MRW_SCRATCH_DIR = $(STAGING_DIR)/openpower_mrw_scratch
 
 # Subpackages we want to include in the version info (do not include openpower-pnor)
-OPENPOWER_VERSIONED_SUBPACKAGES = skiboot hostboot linux petitboot $(XML_PACKAGE) occ hostboot-binaries capp-ucode
+OPENPOWER_VERSIONED_SUBPACKAGES = skiboot hostboot linux petitboot machine-xml occ hostboot-binaries capp-ucode
 OPENPOWER_PNOR = openpower-pnor
 
+ifeq ($(BR2_OPENPOWER_POWER9),y)
+    OPENPOWER_PNOR_DEPENDENCIES += sbe
+    OPENPOWER_VERSIONED_SUBPACKAGES += sbe
+endif
+
 define OPENPOWER_PNOR_INSTALL_IMAGES_CMDS
         mkdir -p $(OPENPOWER_PNOR_SCRATCH_DIR)
 
         $(TARGET_MAKE_ENV) $(@D)/update_image.pl \
+            -release  $(OPENPOWER_RELEASE) \
             -op_target_dir $(HOSTBOOT_IMAGE_DIR) \
             -hb_image_dir $(HOSTBOOT_IMAGE_DIR) \
             -scratch_dir $(OPENPOWER_PNOR_SCRATCH_DIR) \
@@ -52,17 +67,21 @@
             -targeting_binary_filename $(BR2_OPENPOWER_TARGETING_ECC_FILENAME) \
             -targeting_binary_source $(BR2_OPENPOWER_TARGETING_BIN_FILENAME) \
             -sbe_binary_filename $(BR2_HOSTBOOT_BINARY_SBE_FILENAME) \
+            -sbe_binary_dir $(SBE_BINARY_DIR) \
             -sbec_binary_filename $(BR2_HOSTBOOT_BINARY_SBEC_FILENAME) \
             -wink_binary_filename $(BR2_HOSTBOOT_BINARY_WINK_FILENAME) \
             -occ_binary_filename $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME) \
             -capp_binary_filename $(BINARIES_DIR)/$(BR2_CAPP_UCODE_BIN_FILENAME) \
+            -ima_catalog_binary_filename $(BINARIES_DIR)/$(BR2_IMA_CATALOG_FILENAME) \
             -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE) \
+            -wof_binary_filename $(OPENPOWER_MRW_SCRATCH_DIR)/$(BR2_WOFDATA_FILENAME) \
             -payload $(BINARIES_DIR)/$(BR2_SKIBOOT_LID_NAME) \
-            -xz_compression $(BR2_OPENPOWER_PNOR_XZ_ENABLED)
+            $(if ($(BR2_OPENPOWER_PNOR_XZ_ENABLED),y),-xz_compression)
 
         mkdir -p $(STAGING_DIR)/pnor/
         $(TARGET_MAKE_ENV) $(@D)/create_pnor_image.pl \
-            -xml_layout_file $(@D)/$(BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME) \
+            -release $(OPENPOWER_RELEASE) \
+            -xml_layout_file $(@D)/"$(OPENPOWER_RELEASE)"Layouts/$(BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME) \
             -pnor_filename $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME) \
             -hb_image_dir $(HOSTBOOT_IMAGE_DIR) \
             -scratch_dir $(OPENPOWER_PNOR_SCRATCH_DIR) \
@@ -74,8 +93,8 @@
             -wink_binary_filename $(BR2_HOSTBOOT_BINARY_WINK_FILENAME) \
             -occ_binary_filename $(OCC_STAGING_DIR)/$(BR2_OCC_BIN_FILENAME) \
             -targeting_binary_filename $(BR2_OPENPOWER_TARGETING_ECC_FILENAME) \
-            -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE) \
-            -xz_compression $(BR2_OPENPOWER_PNOR_XZ_ENABLED)
+            -wofdata_binary_filename $(OPENPOWER_PNOR_SCRATCH_DIR)/$(BR2_WOFDATA_BINARY_FILENAME) \
+            -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE)
 
         $(INSTALL) $(STAGING_DIR)/pnor/$(BR2_OPENPOWER_PNOR_FILENAME) $(BINARIES_DIR)
 
diff --git a/openpower/package/p8-pore-binutils/Config.in b/openpower/package/p8-pore-binutils/Config.in
index 6099c31..f8d4bf0 100644
--- a/openpower/package/p8-pore-binutils/Config.in
+++ b/openpower/package/p8-pore-binutils/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_HOST_P8_PORE_BINUTILS
         bool "p8-pore-binutils"
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
         select BR2_CPP
         help
             Project to build the P8 PORE binutils
diff --git a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
index 070e4dc..a94d8c6 100644
--- a/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
+++ b/openpower/package/p8-pore-binutils/p8-pore-binutils.mk
@@ -4,10 +4,10 @@
 #
 ################################################################################
 
-P8_PORE_BINUTILS_VERSION ?= 1d6a41d5a5104ce9bc8b6ad59f8e58c3a50824a4
+P8_PORE_BINUTILS_VERSION ?= 91069b732e4c253055cd94fff6ad179116563df9
 P8_PORE_BINUTILS_SITE ?= $(call github,open-power,p8-pore-binutils,$(P8_PORE_BINUTILS_VERSION))
 P8_PORE_BINUTILS_LICENSE = GPLv3+
-
+P8_PORE_BINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB
 HOST_P8_PORE_BINUTILS_DEPENDENCIES = host-binutils
 
 P8_PORE_BINUTILS_DIR = $(STAGING_DIR)/p8-pore-binutils
diff --git a/openpower/package/palmetto-xml/Config.in b/openpower/package/palmetto-xml/Config.in
deleted file mode 100755
index b07d517..0000000
--- a/openpower/package/palmetto-xml/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_PACKAGE_PALMETTO_XML
-        bool "palmetto_xml"
-        default y if (BR2_OPENPOWER_CONFIG_NAME = "palmetto")
-        help
-            Utilites for building xml and the targeting binary image
-
-config BR2_PALMETTO_SYSTEM_XML_FILENAME
-        string "Palmetto targeting system xml filename"
-        default ""
-        help
-            Defines the name of the system XML filename to be used when creating targeting binary image
-
-config BR2_PALMETTO_MRW_XML_FILENAME
-        string "Palmetto targeting mrw xml filename"
-        default ""
-        help
-            Defines the name of the mrw XML filename to be used when creating targeting binary image
-
-config BR2_PALMETTO_BIOS_XML_FILENAME
-        string "Palmetto BIOS metadata XML filename"
-        default ""
-        help
-            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/palmetto-xml/palmetto-xml.mk b/openpower/package/palmetto-xml/palmetto-xml.mk
deleted file mode 100644
index 8130f4e..0000000
--- a/openpower/package/palmetto-xml/palmetto-xml.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-################################################################################
-#
-# palmetto_xml
-#
-################################################################################
-
-PALMETTO_XML_VERSION ?= 82818682f2c2009c30d700df6d5f8897a3096e4f
-PALMETTO_XML_SITE = $(call github,open-power,palmetto-xml,$(PALMETTO_XML_VERSION))
-
-PALMETTO_XML_LICENSE = Apache-2.0
-PALMETTO_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
-
-PALMETTO_XML_INSTALL_IMAGES = YES
-PALMETTO_XML_INSTALL_TARGET = YES
-
-MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
-MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
-
-# Defines for BIOS metadata creation
-BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
-PALMETTO_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_PALMETTO_BIOS_XML_FILENAME)
-BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
-PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
-PETITBOOT_BIOS_XML_METADATA_FILE = \
-    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
-PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
-    $(TARGET_DIR)/usr/share/bios_metadata.xml
-
-define PALMETTO_XML_BUILD_CMDS
-        # copy the palmetto xml where the common lives
-        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
-
-        # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
-        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/palmetto.xml
-        
-        # merge in any system specific attributes, hostboot attributes
-        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_PALMETTO_SYSTEM_XML_FILENAME) \
-            $(MRW_HB_TOOLS)/attribute_types.xml \
-            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
-            $(MRW_HB_TOOLS)/target_types_merged.xml \
-            $(MRW_HB_TOOLS)/target_types_hb.xml \
-            $(MRW_SCRATCH)/$(BR2_PALMETTO_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
-
-        # creating the targeting binary
-        $(MRW_HB_TOOLS)/xmltohb.pl  \
-            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
-            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
-            --src-output-dir=none \
-            --img-output-dir=$(MRW_HB_TOOLS)/ \
-            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
-            --bios-xml-file=$(PALMETTO_BIOS_XML_CONFIG_FILE) \
-            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
-            --bios-output-file=$(BIOS_XML_METADATA_FILE)
-
-        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
-        xsltproc -o \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_XSLT_FILE) \
-            $(BIOS_XML_METADATA_FILE)
-endef
-
-define PALMETTO_XML_INSTALL_IMAGES_CMDS
-        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
-endef
-
-define PALMETTO_XML_INSTALL_TARGET_CMDS
-        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
-        $(INSTALL) -D -m 0644 \
-            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
-            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
-endef
-
-$(eval $(generic-package))
diff --git a/openpower/package/petitboot/66-add-sg-module.rules b/openpower/package/petitboot/66-add-sg-module.rules
new file mode 100644
index 0000000..ae18d28
--- /dev/null
+++ b/openpower/package/petitboot/66-add-sg-module.rules
@@ -0,0 +1,2 @@
+# load modules to scsi disks, if they aren't in kernel
+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg"
diff --git a/openpower/package/petitboot/S14silence-console b/openpower/package/petitboot/S14silence-console
index 6570200..2ce6b39 100755
--- a/openpower/package/petitboot/S14silence-console
+++ b/openpower/package/petitboot/S14silence-console
@@ -2,7 +2,7 @@
 
 case "$1" in
     start)
-        echo 0 0 7 0 > /proc/sys/kernel/printk
+        echo 1 1 1 1 > /proc/sys/kernel/printk
         ;;
 esac
 
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
index 21d673b..ba7276b 100644
--- a/openpower/package/petitboot/petitboot.mk
+++ b/openpower/package/petitboot/petitboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PETITBOOT_VERSION = v1.0.1
+PETITBOOT_VERSION = v1.4.2
 PETITBOOT_SITE ?= $(call github,open-power,petitboot,$(PETITBOOT_VERSION))
 PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex lvm2
 PETITBOOT_LICENSE = GPLv2
@@ -17,7 +17,9 @@
 	      --localstatedir=/var \
 	      HOST_PROG_KEXEC=/usr/sbin/kexec \
 	      HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot \
-	      $(if $(BR2_PACKAGE_BUSYBOX),--with-tftp=busybox)
+	      $(if $(BR2_PACKAGE_BUSYBOX),--with-tftp=busybox --enable-busybox)
+
+PETITBOOT_AUTORECONF_ENV += PETITBOOT_VERSION=`cat $(PETITBOOT_VERSION_FILE) | cut -d '-' -f 2-`
 
 ifdef PETITBOOT_DEBUG
 PETITBOOT_CONF_OPTS += --enable-debug
@@ -42,26 +44,24 @@
 	$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/petitboot/boot.d
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
-	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/20-set-stdout \
-		$(TARGET_DIR)/etc/petitboot/boot.d/
 	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
 		$(TARGET_DIR)/etc/petitboot/boot.d/
-	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-add-offb \
-		$(TARGET_DIR)/etc/petitboot/boot.d/
 
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S14silence-console \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/S14silence-console \
 		$(TARGET_DIR)/etc/init.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S15pb-discover \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/S15pb-discover \
 		$(TARGET_DIR)/etc/init.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/kexec-restart \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/kexec-restart \
 		$(TARGET_DIR)/usr/sbin/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/petitboot-console-ui.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/petitboot-console-ui.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/removable-event-poll.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/removable-event-poll.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/63-md-raid-arrays.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/63-md-raid-arrays.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
-	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/65-md-incremental.rules \
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_OP_BUILD_PATH)/package/petitboot/65-md-incremental.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/66-add-sg-module.rules \
 		$(TARGET_DIR)/etc/udev/rules.d/
 
 	ln -sf /usr/sbin/pb-udhcpc \
@@ -72,6 +72,15 @@
 	$(MAKE) -C $(@D)/po DESTDIR=$(TARGET_DIR) install
 endef
 
+define PETITBOOT_POST_INSTALL_DTB
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+endef
+
 PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL
 
+ifeq ($(BR2_PACKAGE_DTC),y)
+	PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_DTB
+endif
+
 $(eval $(autotools-package))
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index 474d455..9a37bbb 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -33,16 +33,16 @@
 		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 	fi; \
 else \
-	if ls $$(BR2_EXTERNAL)/package/$(1)/*.patch 2>/dev/null; then sha512sum \
-		$$(BR2_EXTERNAL)/package/$(1)/*.patch | sha512sum | \
+	if ls $$(BR2_EXTERNAL_OP_BUILD_PATH)/package/$(1)/*.patch 2>/dev/null; then sha512sum \
+		$$(BR2_EXTERNAL_OP_BUILD_PATH)/package/$(1)/*.patch | sha512sum | \
 		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 	fi; \
 fi
 
 # If this is for linux, also check openpower/linux
-if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
-	if ls $$(BR2_EXTERNAL)/$(1)/*.patch 2>/dev/null; then sha512sum \
-		$$(BR2_EXTERNAL)/$(1)/*.patch | sha512sum | \
+if [ "LINUX" == "$(2)" ]; then \
+	if ls $$(BR2_EXTERNAL_OP_BUILD_PATH)/$(1)/*.patch 2>/dev/null; then sha512sum \
+		$$(BR2_EXTERNAL_OP_BUILD_PATH)/$(1)/*.patch | sha512sum | \
 		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 	fi; \
 fi;
@@ -77,19 +77,17 @@
 whoami | xargs echo -n >> $$($(2)_VERSION_FILE); \
 echo -n "-" >> $$($(2)_VERSION_FILE); \
 \
-cd "$$($(2)_SITE)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
-	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/;s/$(1)-//;' | xargs echo -n \
+cd "$$($(2)_SITE)"; (git describe --always --dirty || echo "unknown") \
+	|sed -e 's/$(1)-//' | xargs echo -n\
 	>> $$($(2)_VERSION_FILE); \
 \
-cd "$$($(2)_SITE)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/;' | \
-	xargs echo -n >> $$($(2)_VERSION_FILE); \
 else \
 \
 [ `echo -n $$($(2)_VERSION) | wc -c` == "40" ] && (echo -n $$($(2)_VERSION) | \
 	sed "s/^\([0-9a-f]\{7\}\).*/\1/;s/$(1)-//;" >> $$($(2)_VERSION_FILE)) \
 	|| echo -n $$($(2)_VERSION) | sed -e 's/$(1)-//' >> $$($(2)_VERSION_FILE); \
 \
-if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
+if [ "LINUX" == "$(2)" ]; then \
 	if ls $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)/Makefile 1>/dev/null; then \
 		head $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)/Makefile | grep EXTRAVERSION \
 		| cut -d ' ' -f 3 | \
@@ -97,13 +95,8 @@
 	fi; \
 fi; \
 \
-cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | \
-	if grep -e "-dirty"; then \
-	echo -n "-opdirty" >> $$($(2)_VERSION_FILE); \
-	fi; \
-\
 if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt ]; then \
-	echo -n "-" >> $$($(2)_VERSION_FILE); \
+	echo -n "-p" >> $$($(2)_VERSION_FILE); \
 	cat $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt >> $$($(2)_VERSION_FILE); fi \
 fi
 
@@ -114,7 +107,7 @@
 
 # Add appropriate templates to hooks
 $(2)_POST_PATCH_HOOKS += $(2)_OPENPOWER_PATCH_FILE
-$(2)_PRE_BUILD_HOOKS += $(2)_OPENPOWER_VERSION_FILE
+$(2)_PRE_CONFIGURE_HOOKS += $(2)_OPENPOWER_VERSION_FILE
 
 # Top-level rule to print or generate a subpackage version
 $(1)-version: $$(if $$(wildcard $$($(2)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
@@ -152,14 +145,14 @@
 mkdir -p "$$(OPENPOWER_VERSION_DIR)"
 
 # Add vendor or default open-power
-if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
+if [ -n "$$(OPBUILD_VENDOR)" ]; then \
 echo -n "$$(OPBUILD_VENDOR)-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 else \
 echo -n "open-power-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 fi
 
 # Add platform or default from defconfig
-if [ "$$(OPBUILD_PLATFORM)" != '' ]; then \
+if [ -n "$$(OPBUILD_PLATFORM)" ]; then \
 echo -n "$$(OPBUILD_PLATFORM)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 else \
 echo -n "$$(BR2_OPENPOWER_CONFIG_NAME)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
@@ -167,38 +160,30 @@
 
 # Add op-build version
 # Order: OPBUILD_VERSION, tag, commit, unknown
-if [ "$$(OPBUILD_VERSION)" != '' ]; then \
+if [ -n "$$(OPBUILD_VERSION)" ]; then \
 	echo -n "$$(OPBUILD_VERSION)" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 else \
-cd "$$(BR2_EXTERNAL)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
-	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty || echo "unknown") \
+	| xargs echo -n \
 	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 fi
 
-# Check if op-build is dirty
-cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
-	xargs echo -n >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
-
 # Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
 echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
 
 # Add a specific line for op-build if it has been overwritten
-if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
+if [ -n "$$(OPBUILD_VENDOR)" ]; then \
 echo -n "	op-build-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-cd "$$(BR2_EXTERNAL)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
-	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+(cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty  || echo "unknown")) \
+	| xargs echo \
 	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
-	xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
 fi
 
 # Include the currently checked-out buildroot version
 echo -n "	buildroot-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
-cd "./buildroot"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
-	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+(git describe --always --dirty || echo "unknown") \
+	| xargs echo \
 	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
-	xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
 
 
 # Combing subpackage version files into $$($$(UPPER_CASE_PKG)_VERSION_FILE)
diff --git a/openpower/package/ppe42-binutils/Config.in b/openpower/package/ppe42-binutils/Config.in
new file mode 100644
index 0000000..824e557
--- /dev/null
+++ b/openpower/package/ppe42-binutils/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_HOST_PPE42_BINUTILS
+        bool "ppe42-binutils"
+        default y if (BR2_OPENPOWER_PLATFORM && BR2_OPENPOWER_POWER9)
+        select BR2_CPP
+        help
+            Project to build the PPE42 PORE binutils
diff --git a/openpower/package/ppe42-binutils/ppe42-binutils.mk b/openpower/package/ppe42-binutils/ppe42-binutils.mk
new file mode 100644
index 0000000..b63e2a1
--- /dev/null
+++ b/openpower/package/ppe42-binutils/ppe42-binutils.mk
@@ -0,0 +1,32 @@
+################################################################################
+#
+# ppe42-binutils
+#
+################################################################################
+
+PPE42_BINUTILS_VERSION ?= ded0eff199fa1d9bd8be5a78935e8f023a2c5fad
+PPE42_BINUTILS_SITE ?= $(call github,open-power,ppe42-binutils,$(PPE42_BINUTILS_VERSION))
+PPE42_BINUTILS_LICENSE = GPLv3+
+
+PPE42_BINUTILS_DEPENDENCIES = host-binutils
+
+PPE42_BINUTILS_DIR = $(STAGING_DIR)/ppe42-binutils
+PPE42_BINUTILS_BIN = $(STAGING_DIR)/ppe42-binutils/linux
+
+define HOST_PPE42_BINUTILS_BUILD_CMDS
+        cd $(@D) && \
+        ./configure --prefix=$(PPE42_BINUTILS_DIR) \
+                    --exec-prefix=$(PPE42_BINUTILS_BIN) \
+					--target=powerpc-eabi \
+					--enable-shared \
+					--enable-64-bit-bfd \
+					&& \
+        $(MAKE) configure-host && \
+        $(MAKE) LDFLAGS=-all-static CFLAGS=-Wno-error
+endef
+
+define HOST_PPE42_BINUTILS_INSTALL_CMDS
+        bash -c 'cd $(@D) && make install'
+endef
+
+$(eval $(host-generic-package))
diff --git a/openpower/package/ppe42-gcc/0001-2016-02-19-Jakub-Jelinek-jakub-redhat.com.patch b/openpower/package/ppe42-gcc/0001-2016-02-19-Jakub-Jelinek-jakub-redhat.com.patch
new file mode 100644
index 0000000..c5dc6d4
--- /dev/null
+++ b/openpower/package/ppe42-gcc/0001-2016-02-19-Jakub-Jelinek-jakub-redhat.com.patch
@@ -0,0 +1,150 @@
+From ec1cc0263f156f70693a62cf17b254a0029f4852 Mon Sep 17 00:00:00 2001
+From: edlinger <edlinger@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Fri, 19 Feb 2016 22:13:29 +0000
+Subject: [PATCH] 2016-02-19  Jakub Jelinek  <jakub@redhat.com>            
+ Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+        * Make-lang.in: Invoke gperf with -L C++.
+        * cfns.gperf: Remove prototypes for hash and libc_name_p
+        inlines.
+        * cfns.h: Regenerated.
+        * except.c (nothrow_libfn_p): Adjust.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233572 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ gcc/cp/ChangeLog    |  9 +++++++++
+ gcc/cp/Make-lang.in |  2 +-
+ gcc/cp/cfns.gperf   | 10 ++--------
+ gcc/cp/cfns.h       | 41 ++++++++++++++---------------------------
+ gcc/cp/except.c     |  3 ++-
+ 5 files changed, 28 insertions(+), 37 deletions(-)
+
+diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
+index 671ce12..2286c64 100644
+--- a/gcc/cp/Make-lang.in
++++ b/gcc/cp/Make-lang.in
+@@ -112,7 +112,7 @@ else
+ # deleting the $(srcdir)/cp/cfns.h file.
+ $(srcdir)/cp/cfns.h:
+ endif
+-	gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \
++	gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L C++ \
+ 		$(srcdir)/cp/cfns.gperf --output-file $(srcdir)/cp/cfns.h
+ 
+ #
+diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf
+index 2784edc..8d7f015 100644
+--- a/gcc/cp/cfns.gperf
++++ b/gcc/cp/cfns.gperf
+@@ -1,3 +1,5 @@
++%language=C++
++%define class-name libc_name
+ %{
+ /* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ 
+@@ -16,14 +18,6 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+-#ifdef __GNUC__
+-__inline
+-#endif
+-static unsigned int hash (const char *, unsigned int);
+-#ifdef __GNUC__
+-__inline
+-#endif
+-const char * libc_name_p (const char *, unsigned int);
+ %}
+ %%
+ # The standard C library functions, for feeding to gperf; the result is used
+diff --git a/gcc/cp/cfns.h b/gcc/cp/cfns.h
+index d8e02c9..9a37249 100644
+--- a/gcc/cp/cfns.h
++++ b/gcc/cp/cfns.h
+@@ -1,5 +1,5 @@
+-/* ANSI-C code produced by gperf version 3.0.3 */
+-/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf  */
++/* C++ code produced by gperf version 3.0.4 */
++/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L C++ --output-file cfns.h cfns.gperf  */
+ 
+ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+@@ -28,7 +28,7 @@
+ #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+ #endif
+ 
+-#line 1 "cfns.gperf"
++#line 3 "cfns.gperf"
+ 
+ /* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ 
+@@ -47,25 +47,18 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+-#ifdef __GNUC__
+-__inline
+-#endif
+-static unsigned int hash (const char *, unsigned int);
+-#ifdef __GNUC__
+-__inline
+-#endif
+-const char * libc_name_p (const char *, unsigned int);
+ /* maximum key range = 391, duplicates = 0 */
+ 
+-#ifdef __GNUC__
+-__inline
+-#else
+-#ifdef __cplusplus
+-inline
+-#endif
+-#endif
+-static unsigned int
+-hash (register const char *str, register unsigned int len)
++class libc_name
++{
++private:
++  static inline unsigned int hash (const char *str, unsigned int len);
++public:
++  static const char *libc_name_p (const char *str, unsigned int len);
++};
++
++inline unsigned int
++libc_name::hash (register const char *str, register unsigned int len)
+ {
+   static const unsigned short asso_values[] =
+     {
+@@ -122,14 +115,8 @@ hash (register const char *str, register unsigned int len)
+   return hval + asso_values[(unsigned char)str[len - 1]];
+ }
+ 
+-#ifdef __GNUC__
+-__inline
+-#ifdef __GNUC_STDC_INLINE__
+-__attribute__ ((__gnu_inline__))
+-#endif
+-#endif
+ const char *
+-libc_name_p (register const char *str, register unsigned int len)
++libc_name::libc_name_p (register const char *str, register unsigned int len)
+ {
+   enum
+     {
+diff --git a/gcc/cp/except.c b/gcc/cp/except.c
+index c73a16b..5336710 100644
+--- a/gcc/cp/except.c
++++ b/gcc/cp/except.c
+@@ -1040,7 +1040,8 @@ nothrow_libfn_p (const_tree fn)
+      unless the system headers are playing rename tricks, and if
+      they are, we don't want to be confused by them.  */
+   id = DECL_NAME (fn);
+-  return !!libc_name_p (IDENTIFIER_POINTER (id), IDENTIFIER_LENGTH (id));
++  return !!libc_name::libc_name_p (IDENTIFIER_POINTER (id),
++				   IDENTIFIER_LENGTH (id));
+ }
+ 
+ /* Returns nonzero if an exception of type FROM will be caught by a
+-- 
+2.9.3
+
diff --git a/openpower/package/ppe42-gcc/Config.in b/openpower/package/ppe42-gcc/Config.in
new file mode 100644
index 0000000..d66418d
--- /dev/null
+++ b/openpower/package/ppe42-gcc/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_HOST_PPE42_GCC
+        bool "ppe42-gcc"
+        default y if (BR2_OPENPOWER_PLATFORM && BR2_OPENPOWER_POWER9)
+        select BR2_CPP
+        help
+            Project to build the PPE42 gcc
diff --git a/openpower/package/ppe42-gcc/ppe42-gcc.mk b/openpower/package/ppe42-gcc/ppe42-gcc.mk
new file mode 100644
index 0000000..bfaf608
--- /dev/null
+++ b/openpower/package/ppe42-gcc/ppe42-gcc.mk
@@ -0,0 +1,37 @@
+################################################################################
+#
+# ppe42-gcc
+#
+################################################################################
+
+PPE42_GCC_VERSION ?= d8a1bac8634033a3edd4e9a22455f97318718f43
+PPE42_GCC_SITE ?= $(call github,open-power,ppe42-gcc,$(PPE42_GCC_VERSION))
+PPE42_GCC_LICENSE = GPLv3+
+
+PPE42_GCC_DEPENDENCIES = ppe42-binutils gmp mpfr mpc
+HOST_PPE42_GCC_DEPENDENCIES = host-ppe42-binutils host-gmp host-mpfr host-mpc
+
+PPE42_GCC_DIR = $(STAGING_DIR)/ppe42-binutils
+PPE42_GCC_BIN = $(STAGING_DIR)/ppe42-binutils/linux
+
+define HOST_PPE42_GCC_BUILD_CMDS
+        cd $(@D) && \
+        ./configure --prefix=$(PPE42_GCC_DIR) \
+                    --exec-prefix=$(PPE42_GCC_BIN) \
+                    --target=powerpc-eabi \
+                    --without-headers \
+                    --with-newlib \
+                    --with-gnu-as \
+                    --with-gnu-ld \
+                    --with-gmp=$(HOST_DIR)/usr \
+                    --with-mpfr=$(HOST_DIR)/usr \
+                    && \
+        $(MAKE) configure-host && \
+        $(MAKE) CFLAGS=-Wno-error all-gcc
+endef
+
+define HOST_PPE42_GCC_INSTALL_CMDS
+        bash -c 'cd $(@D) && make install-gcc'
+endef
+
+$(eval $(host-generic-package))
diff --git a/openpower/package/sbe/Config.in b/openpower/package/sbe/Config.in
new file mode 100644
index 0000000..cd9e84f
--- /dev/null
+++ b/openpower/package/sbe/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_SBE
+        bool "sbe"
+        default y if (BR2_OPENPOWER_PLATFORM && BR2_OPENPOWER_POWER9)
+        select BR2_CPP
+        help
+            Project to build the sbe firmware codebase
diff --git a/openpower/package/sbe/sbe.mk b/openpower/package/sbe/sbe.mk
new file mode 100644
index 0000000..aa926f5
--- /dev/null
+++ b/openpower/package/sbe/sbe.mk
@@ -0,0 +1,29 @@
+################################################################################
+#
+# SBE
+#
+################################################################################
+
+SBE_VERSION ?= d770027426ba0c5d6c44fa985e9dfaf28fd6fcce
+SBE_SITE ?= $(call github,open-power,sbe,$(SBE_VERSION))
+
+SBE_LICENSE = Apache-2.0
+SBE_DEPENDENCIES = host-ppe42-gcc
+
+SBE_INSTALL_IMAGES = YES
+SBE_INSTALL_TARGET = NO
+
+define SBE_BUILD_CMDS
+	SBE_COMMIT_ID=$(SBE_VERSION) $(MAKE1) -C $(@D) \
+		LD_LIBRARY_PATH=$(HOST_DIR)/usr/lib \
+		CROSS_COMPILER_PATH=$(PPE42_GCC_BIN) \
+		all
+endef
+
+define SBE_INSTALL_IMAGES_CMDS
+	$(INSTALL) -D $(@D)/images/p9_ipl_build  $(HOST_DIR)/usr/bin/
+	python $(@D)/src/build/sbeOpDistribute.py --sbe_binary_dir=$(STAGING_DIR)/sbe_binaries --img_dir=$(@D)/images
+	cp $(@D)/src/build/sbeOpDistribute.py $(STAGING_DIR)/sbe_binaries/
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index 277a3b5..fa8a8a3 100644
--- a/openpower/package/skiboot/Config.in
+++ b/openpower/package/skiboot/Config.in
@@ -3,9 +3,9 @@
 config BR2_PACKAGE_SKIBOOT
 	bool "skiboot"
 	depends on BR2_powerpc64 || BR2_powerpc64le
-        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        default y if (BR2_OPENPOWER_PLATFORM)
 	help
-	  Build skiboot POWER8 firmware
+	  Build skiboot POWER firmware
 
 if BR2_PACKAGE_SKIBOOT
 
@@ -31,7 +31,7 @@
 
 config BR2_SKIBOOT_VERSION
 	string
-	default "skiboot-5.2.2" if BR2_SKIBOOT_LATEST_VERSION
+	default "skiboot-5.6.0-87-ge835c2fb7ce1" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/package/skiboot/skiboot.mk b/openpower/package/skiboot/skiboot.mk
index 90b2110..b14855f 100644
--- a/openpower/package/skiboot/skiboot.mk
+++ b/openpower/package/skiboot/skiboot.mk
@@ -7,6 +7,8 @@
 SKIBOOT_VERSION = $(call qstrip,$(BR2_SKIBOOT_VERSION))
 
 SKIBOOT_SITE = $(call github,open-power,skiboot,$(SKIBOOT_VERSION))
+SKIBOOT_LICENSE = Apache-2.0
+SKIBOOT_LICENSE_FILES = LICENCE
 SKIBOOT_INSTALL_IMAGES = YES
 SKIBOOT_INSTALL_TARGET = NO
 
diff --git a/openpower/package/habanero-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch b/openpower/patches/habanero-patches/machine-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch
similarity index 100%
rename from openpower/package/habanero-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch
rename to openpower/patches/habanero-patches/machine-xml/habanero-xml-0002-Add-System-Fw-Fru-Id.patch
diff --git a/openpower/package/palmetto-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch b/openpower/patches/palmetto-patches/machine-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch
similarity index 100%
rename from openpower/package/palmetto-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch
rename to openpower/patches/palmetto-patches/machine-xml/palmetto-xml-0002-Add-Sys-Fw-Fru-Id.patch
diff --git a/openpower/platform/Config.in b/openpower/platform/Config.in
index 206b343..3232cd0 100644
--- a/openpower/platform/Config.in
+++ b/openpower/platform/Config.in
@@ -1,4 +1,14 @@
 config BR2_OPENPOWER_PLATFORM
-    bool "Enable the 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
+
+config BR2_OPENPOWER_POWER9
+    bool "Enables the OpenPower p9 platform"
     default n
     depends on BR2_powerpc64 || BR2_powerpc64le
diff --git a/openpower/scripts/firmware-whitelist b/openpower/scripts/firmware-whitelist
new file mode 100755
index 0000000..2d0fc05
--- /dev/null
+++ b/openpower/scripts/firmware-whitelist
@@ -0,0 +1,43 @@
+#!/bin/bash
+# Scan the /lib/firmware directory of the target and delete any firmware
+# binaries that are not in our whitelist
+
+# A whitelist of entire directories or specific binary files. The trailing
+# slash is required.
+whitelist=(     'acenic/'
+                'bnx2/'
+                'bnx2x/bnx2x-e2-7.13.1.0.fw'
+                'cxgb4/'
+                'cxgb3/'
+                'e100/'
+                'radeon/CEDAR_rlc.bin'
+                'radeon/CEDAR_pfp.bin'
+                'radeon/CEDAR_smc.bin'
+                'radeon/CEDAR_me.bin'
+                'radeon/CYPRESS_uvd.bin')
+
+if [ -z "${TARGET_DIR}" ] ; then
+        echo "TARGET_DIR not defined, setting to $1"
+        TARGET_DIR=$1
+fi
+
+files=$(find ${TARGET_DIR}/lib/firmware/*)
+for file in ${files};
+do
+        if [ -d  $file ] ; then
+                continue
+        fi
+
+        found=0
+        for item in ${whitelist[@]};
+        do
+                if [ "${file/${item}}" != "${file}" ] ; then
+                        found=1
+                        break
+                fi
+        done
+
+        if [ "${found}" -ne "1" ] ; then
+                rm -v ${file}
+        fi
+done
diff --git a/openpower/scripts/op-target-dependencies b/openpower/scripts/op-target-dependencies
index cd24a56..c99c69d 100755
--- a/openpower/scripts/op-target-dependencies
+++ b/openpower/scripts/op-target-dependencies
@@ -56,7 +56,6 @@
     my $package = shift;
     my $level = shift;
 
-    $package =~ s/-install-images//;    # Strip off -install-images subpass.
     $package =~ s/-rebuild.*//;         # Strip off -rebuild* subpass.
     $package =~ s/linux[0-9]*/linux/;   # Strip off linux version.
 
diff --git a/openpower/scripts/release-notes b/openpower/scripts/release-notes
new file mode 100755
index 0000000..4231aa0
--- /dev/null
+++ b/openpower/scripts/release-notes
@@ -0,0 +1,331 @@
+#!/bin/env perl
+
+use strict;
+
+use Getopt::Long;
+use DBI;
+
+# We use an in-memory SQLite database as SQL is good for doing queries
+# of differences between data sets, and doing that in perl is annoying.
+my $db = "dbi:SQLite:dbname=release-notes.sqlite";
+#my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:","","");
+my $dbh = DBI->connect($db,undef,undef, {AutoCommit => 1, RaiseError=>1});
+
+my $repos =
+{
+    'op-build' => { REPO => "http://github.com/open-power/op-build" },
+    'hostboot' => { REPO => "http://github.com/open-power/hostboot" ,
+                    DIR => "openpower/package/hostboot" },
+    'sbe'      => { REPO => "http://github.com/open-power/sbe" ,
+                    DIR => "openpower/package/sbe"},
+    'skiboot'  => { REPO => "http://github.com/open-power/skiboot" ,
+                    DIR => "openpower/package/skiboot"},
+    'occ'      => { REPO => "http://github.com/open-power/occ" ,
+                    DIR => "openpower/package/occ"},
+    'pnor'     => { REPO => "http://github.com/open-power/pnor" ,
+                    DIR => "openpower/package/openpower-pnor"},
+    'petitboot'     => { REPO => "http://github.com/open-power/petitboot" ,
+			 DIR => "openpower/package/petitboot"},
+};
+
+my $begin_release;
+my $end_release;
+my $begin_worktree;
+my $end_worktree;
+my $platform;
+
+GetOptions("begin-release=s" => \$begin_release,
+	   "end-release=s" => \$end_release,
+	   "begin-worktree=s" => \$begin_worktree,
+	   "platform=s" => \$platform,
+	   "end-worktree=s" => \$end_worktree)
+    or die("Error in command line arguments");
+
+die "Required argument missing" unless ($begin_release and $end_release and $begin_worktree and $end_worktree);
+
+open(OUTPUT, "> RELEASE.md") || die "Failed to open RELEASE.md";
+
+print OUTPUT "# Release Notes for OpenPower Firmware $end_release\n";
+
+if (-e $begin_worktree) {
+    system("cd $begin_worktree && git checkout $begin_release && git submodule update --reference ../buildroot && git submodule update") and die "Could not update $begin_worktree";
+} else {
+    system("git worktree add $begin_worktree $begin_release && cd $begin_worktree&& git submodule update --reference ../buildroot && git submodule update && rm -rf dl && ln -s ../dl dl") and die "Couldn't init $begin_worktree";
+}
+
+if (-e $end_worktree) {
+    system("cd $end_worktree && git checkout $end_release  && git submodule update --reference ../buildroot && git submodule update") and die "Could not update $end_worktree";
+} else {
+    system("git worktree add $end_worktree $end_release && cd $end_worktree && git submodule update --reference ../buildroot && git submodule update && rm -rf dl && ln -s ../dl dl") and die "Couldn't init $end_worktree";
+}
+
+opendir (my $dh, "$begin_worktree/openpower/configs")
+    or die "can't scan $begin_worktree defconfigs";
+my @begin_platforms = grep { /.*_defconfig/ } readdir($dh);
+closedir $dh;
+
+opendir (my $dh, "$end_worktree/openpower/configs")
+    or die "can't scan $end_worktree defconfigs";
+my @end_platforms = grep { /.*_defconfig/ } readdir($dh);
+closedir $dh;
+
+s/_defconfig// foreach (@begin_platforms);
+s/_defconfig// foreach (@end_platforms);
+
+if ($platform) {
+    @begin_platforms = ($platform);
+    @end_platforms = ($platform);
+}
+
+$dbh->do("CREATE TABLE platforms (platform TEXT, version TEXT);") or die "$!";
+{
+    my $q = "INSERT INTO platforms (platform,version) VALUES (?,?)";
+    my $sth = $dbh->prepare($q) or die "$!";
+    $sth->execute($_, $begin_release) foreach (@begin_platforms);
+    $sth->execute($_, $end_release) foreach (@end_platforms);
+}
+
+{
+    my $q = "SELECT platform FROM platforms WHERE version is ? AND platform NOT IN (SELECT platform FROM platforms WHERE version is ?)";
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute($begin_release, $end_release);
+    my $r;
+    print OUTPUT "## Removed platforms\n\n- ".$r->{platform}."\n" if $r = $sth->fetchrow_hashref;
+    print OUTPUT "- ".$_->{platform}."\n" while ($r = $sth->fetchrow_hashref);
+
+    $sth->execute($end_release, $begin_release);
+    print OUTPUT "## New platforms\n\n- ".$r->{platform}."\n" if $r = $sth->fetchrow_hashref;
+    print OUTPUT "- ".$_->{platform}."\n" while($r = $sth->fetchrow_hashref);
+}
+
+my @common_platforms;
+{
+    my $q = "SELECT platform FROM platforms WHERE version is ? AND EXISTS (select platform from platforms where version is ?)";
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute($begin_release, $end_release);
+    my $r;
+    push @common_platforms, $r->{platform} while ($r = $sth->fetchrow_hashref);
+}
+
+foreach my $p (@common_platforms) {
+    next if $p =~ /firenze/;
+    next if $p =~ /^zz$/;
+    next if $p =~ /mambo/;
+    $repos->{"$p-xml"} = { REPO => "http://github.com/open-power/$p-xml" ,
+			   DIR => "openpower/package/$p-xml" };
+}
+
+foreach my $p (@begin_platforms) {
+    system("bash -c '(cd $begin_worktree && . op-build-env && op-build ".$p."_defconfig && op-build legal-info)'");
+    # Forgive me for this....
+    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $begin_worktree/output/legal-info/manifest.csv begin_".$p."_manifest\"");
+}
+
+foreach my $p (@end_platforms) {
+    system("bash -c '(cd $end_worktree && . op-build-env && op-build ".$p."_defconfig && op-build legal-info)'");
+    # Forgive me for this....
+    system("sqlite3 release-notes.sqlite \".mode csv\" \".import $end_worktree/output/legal-info/manifest.csv end_".$p."_manifest\"");
+}
+
+$dbh->do(<<'SQL') or die "$!";
+CREATE TABLE package_upgrades (
+  PACKAGE TEXT,
+  OLDVERSION TEXT,
+  NEWVERSION TEXT,
+  PLATFORM TEXT
+)
+SQL
+
+foreach my $p (@common_platforms) {
+    $dbh->do("INSERT INTO package_upgrades select b.package,b.version,e.version,'$p' from begin_".$p."_manifest as b LEFT JOIN end_".$p."_manifest AS e ON b.package=e.package WHERE b.version != e.version") or die $!;
+}
+
+$dbh->do(<<'SQL') or die "$!";
+CREATE TABLE new_package (
+  PACKAGE TEXT,
+  VERSION TEXT,
+  PLATFORM TEXT
+)
+SQL
+
+foreach my $p (@common_platforms) {
+    $dbh->do("INSERT INTO new_package select b.package,b.version,'$p' from end_".$p."_manifest as b WHERE NOT EXISTS(SELECT package FROM begin_".$p."_manifest AS e WHERE b.package=e.package)") or die $!;
+}
+
+$dbh->do(<<'SQL') or die "$!";
+CREATE TABLE removed_package (
+  PACKAGE TEXT,
+  VERSION TEXT,
+  PLATFORM TEXT
+)
+SQL
+
+foreach my $p (@common_platforms) {
+    $dbh->do("INSERT INTO removed_package select b.package,b.version,'$p' from begin_".$p."_manifest as b WHERE NOT EXISTS(SELECT package FROM end_".$p."_manifest AS e WHERE b.package=e.package)") or die $!;
+}
+
+my $old_level = {};
+my $new_level = {};
+
+{
+    my $q = <<'SQL';
+select package as pk ,oldversion as o ,newversion as n, 
+	GROUP_CONCAT(platform) as ps
+FROM package_upgrades 
+	GROUP BY package,oldversion,newversion
+ORDER BY package,platform
+SQL
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute();
+
+    print OUTPUT "## Updated Packages\n\n";
+    print OUTPUT "Package | Old Version | New Version | Platforms\n";
+    print OUTPUT "--- | --- | --- | ---\n";
+    while (my $r = $sth->fetchrow_hashref) {
+	print OUTPUT join(' | ',($r->{pk}, $r->{o}, $r->{n}, $r->{ps}))."\n" ;
+	if ($r->{pk} eq 'machine-xml') {
+	    $old_level->{$r->{ps}."-xml"} = $r->{o};
+	    $new_level->{$r->{ps}."-xml"} = $r->{n};
+	} else {
+	    $old_level->{$r->{pk}} = $r->{o};
+	    $new_level->{$r->{pk}} = $r->{n};
+	}
+    }
+}
+
+{
+    my $q = <<'SQL';
+select package as pk ,version as v,
+	GROUP_CONCAT(platform) as ps
+FROM new_package
+	GROUP BY package,version
+ORDER BY package,platform
+SQL
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute();
+
+    print OUTPUT "\n\n## New Packages\n\n";
+    print OUTPUT "Package | Version | Platforms\n";
+    print OUTPUT "--- | --- | ---\n";
+    while (my $r = $sth->fetchrow_hashref) {
+	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."\n" ;
+	if ($r->{pk} eq 'machine-xml') {
+	    $new_level->{$r->{ps}."-xml"} = $r->{v};
+	}
+    }
+}
+
+{
+    my $q = <<'SQL';
+select package as pk ,version as v,
+	GROUP_CONCAT(platform) as ps
+FROM removed_package
+	GROUP BY package,version
+ORDER BY package,platform
+SQL
+    my $sth = $dbh->prepare($q) or die $!;
+    $sth->execute();
+
+    print OUTPUT "\n\n## Removed Packages\n\n";
+    print OUTPUT "Package | Version | Platforms\n";
+    print OUTPUT "--- | --- | ---\n";
+    while (my $r = $sth->fetchrow_hashref) {
+	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."\n" ;
+	if ($r->{pk} eq $r->{ps}."-xml") {
+	    $old_level->{$r->{ps}."-xml"} = $r->{v};
+	}
+    }
+    print OUTPUT "\n\n";
+}
+
+foreach my $repo (keys %{$repos})
+{
+    if (-e $repo)
+    {
+        system("cd $repo; git fetch") && die "Could not fetch $repo";
+    }
+    else
+    {
+        system("git clone $repos->{$repo}->{REPO} $repo") &&
+            die "Could not clone $repo";
+    }
+}
+
+system("cd op-build; git checkout $end_release --force; git reset HEAD --hard");
+
+
+my $op_url = $repos->{'op-build'}->{REPO};
+
+foreach my $repo (sort keys %{$repos})
+{
+    my $package = $repo;
+    my $url = $repos->{$repo}->{REPO};
+    my $dir = $repos->{$repo}->{DIR};
+
+    print OUTPUT "## Package: $repo\n";
+    print OUTPUT "[Repository]($url)\n";
+    print OUTPUT "\n";
+
+    # Display patches.
+    if (open(LSLOG, "ls op-build/$dir/*.patch | ".
+                    "xargs -n1 --no-run-if-empty basename |"))
+    {
+        print OUTPUT "### Patches\n";
+        while (my $logline = <LSLOG>)
+        {
+            chomp $logline;
+            print OUTPUT "* [$logline]".
+                "($op_url/tree/$end_release/$dir/$logline)\n";
+        }
+        close LSLOG;
+        print OUTPUT "\n";
+    }
+    else
+    {
+        print OUTPUT "None.\n";
+    }
+
+    # Display changes.
+    print OUTPUT "### Commits\n";
+    if ((not exists $old_level->{$package}) &&
+        (not exists $new_level->{$package}))
+    {
+        # No change identified.
+        print "No changes: $repo\n";
+        print OUTPUT "No changes.\n";
+        next;
+    }
+
+    if ((exists $old_level->{$package}) &&
+        (exists $new_level->{$package}))
+    {
+        print "Changes in $repo...\n";
+        open(GITLOG, "cd $repo; git shortlog $old_level->{$package}...".
+                     "$new_level->{$package} --no-merges --format=".
+                     "\"* [%h]($url/commit/%h) %s\" |");
+
+        while (my $logline = <GITLOG>)
+        {
+            chomp $logline;
+            $logline =~ s/^[[:space:]]*//;
+            print OUTPUT "$logline\n";
+        }
+        close GITLOG;
+        print OUTPUT "\n";
+        next;
+    }
+
+    if (not exists $old_level->{$package})
+    {
+        print "New package $repo.\n";
+        print OUTPUT "New package.\n";
+        next;
+    }
+
+    if (not exists $new_level->{$package})
+    {
+        print "Deleted package $repo.\n";
+        print OUTPUT "Package removed.\n";
+        next;
+    }
+}