Merge pull request #3597 from op-jenkins/op-build-update_254_4-29-2020

op-build update 4-29-2020
diff --git a/ci/build-all-defconfigs.sh b/ci/build-all-defconfigs.sh
index 0ad613e..30703f2 100755
--- a/ci/build-all-defconfigs.sh
+++ b/ci/build-all-defconfigs.sh
@@ -4,14 +4,14 @@
 set -eo pipefail
 
 BUILD_INFO=0
+SDK_ONLY=0
 CONFIGTAG="_defconfig"
-
 DEFCONFIGS=();
-
+CCACHE_DIR=""
 SDK_DIR=""
 
-opt=$(getopt -o 'o:s:p:r' -- "$@")
-if [ $? != 0 ] ; then
+opt=$(getopt -o 'o:Ss:p:r' -- "$@")
+if [ $? -ne 0 ] ; then
 	echo "Invalid arguments"
 	exit 1
 fi
@@ -26,10 +26,14 @@
       echo "Output directory: $1"
       OUTDIR="$1"
       ;;
+    '-S')
+      echo "Build SDK Only"
+      SDK_ONLY=1
+      ;;
     '-s')
       shift
-      echo "SDK is in: $1"
-      SDK_DIR=$1
+      echo "SDK cache dir is in: $1"
+      SDK_CACHE=$1
       ;;
     '-p')
       shift
@@ -52,12 +56,142 @@
   shift
 done
 
-function get_kernel_release
+function get_major_minor_release
 {
 	IFS=. read major minor macro <<<"$1"
 	echo -n "${major}_${minor}"
 }
 
+function get_major_release
+{
+	IFS=. read major minor macro <<<"$1"
+	echo -n "${major}"
+}
+
+function build_sdk
+{
+# $1 is the defconfig
+# $2 is the SDK output directory
+# writes the output SDK pathname in global $SDK_DIR
+# also considers global var $CCACHE_DIR
+	SDK_BUILD_DIR=`mktemp -d`
+	op-build O=$SDK_BUILD_DIR $1
+
+	# Accumulate the SDK properties we want to hash to make it unique, but
+	# just so. Start with the buildroot version and machine/OS
+	HASH_PROPERTIES="$(git submodule) $(uname -mo)"
+
+	# Even if they should be interchangeable, we want to force the sdk
+	# build on every supported OS variations
+	HASH_PROPERTIES="$(HASH PROPERTIES) $(lsb_release -as | tr -d '/n[:space:]')"
+
+	# Disable things not necessary for the sdk
+	# (Buildroot manual section 6.1.3 plus a few more things)
+	buildroot/utils/config --file $SDK_BUILD_DIR/.config --disable INIT_BUSYBOX \
+		--enable INIT_NONE \
+		--disable SYSTEM_BIN_SH_BUSYBOX \
+		--disable TARGET_ROOTFS_TAR \
+		--disable SYSTEM_BIN_SH_DASH \
+		--enable SYSTEM_BIN_SH_NONE
+
+	# We don't need the Linux Kernel or eudev (they'll be rebuilt anyway), but we need
+	# to preserve the custom kernel version (if defined) for headers consistency, and
+	# since we're at it,  enabling CPP won't hurt and will make the SDK more general
+	buildroot/utils/config --file $SDK_BUILD_DIR/.config --disable LINUX_KERNEL \
+		--disable ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV \
+		--enable INSTALL_LIBSTDCPP
+
+	# As we are disabling BR2_LINUX_KERNEL, capture Kernel version if any
+	# to prevent it from defaulting to the last on olddefconfig
+	KERNEL_VER=$(buildroot/utils/config --file $SDK_BUILD_DIR/.config --state LINUX_KERNEL_CUSTOM_VERSION_VALUE)
+	if [ "$KERNEL_VER" != "undef" ]; then
+		KERNEL="KERNEL_HEADERS_$(get_major_minor_release $KERNEL_VER)"
+		buildroot/utils/config --file $SDK_BUILD_DIR/.config --enable "$KERNEL"
+	fi
+
+	# Disable packages we won't pull into the SDK to speed it's build
+	buildroot/utils/config --file $SDK_BUILD_DIR/.config --package \
+		--disable BUSYBOX \
+		--disable KEXEC_LITE \
+		--disable LINUX_FIRMWARE \
+		--disable CRYPTSETUP \
+		--disable IPMITOOL \
+		--disable LVM2 \
+		--disable MDADM \
+		--disable NVME \
+		--disable PCIUTILS \
+		--disable ZLIB \
+		--disable LIBZLIB \
+		--disable DTC \
+		--disable LIBAIO \
+		--disable JSON_C \
+		--disable ELFUTILS \
+		--disable NCURSES \
+		--disable POPT \
+		--disable DROPBEAR --disable DROPBEAR_CLIENT \
+		--disable ETHTOOL \
+		--disable IFUPDOWN_SCRIPTS \
+		--disable LRZSZ \
+		--disable NETCAT \
+		--disable RSYNC \
+		--disable SUDO \
+		--disable KMOD \
+		--disable POWERPC_UTILS \
+		--disable UTIL_LINUX \
+		--disable IPRUTILS
+
+	# Additionally, disable ROOTFS stuff that we won't need
+	# Including the OpenPower Packages
+	buildroot/utils/config --file $SDK_BUILD_DIR/.config --undefine ROOTFS_USERS_TABLES \
+		--undefine ROOTFS_OVERLAY \
+		--undefine ROOTFS_POST_BUILD_SCRIPT \
+		--undefine ROOTFS_POST_FAKEROOT_SCRIPT \
+		--undefine ROOTFS_POST_IMAGE_SCRIPT \
+		--undefine ROOTFS_POST_SCRIPT_ARGS \
+		--undefine OPENPOWER_PLATFORM \
+		--undefine BR2_OPENPOWER_POWER8 \
+		--undefine BR2_OPENPOWER_POWER9
+
+	# Enable CCACHE
+	buildroot/utils/config --file $SDK_BUILD_DIR/.config --enable CCACHE \
+		--set-str CCACHE_DIR $CCACHE_DIR
+
+	op-build O=$SDK_BUILD_DIR olddefconfig
+
+	# Ideally this woulnd't matter, but to be safe, include Kernel
+	# Headers and GCC version as part of the SDK Hash, so that we
+	# don't have Full builds and SDK builds potentially diverging
+	# on the headers/compiler versions each uses
+	KERNEL_VER=$(buildroot/utils/config --file $SDK_BUILD_DIR/.config --state DEFAULT_KERNEL_HEADERS)
+	HASH_PROPERTIES="$HASH_PROPERTIES $KERNEL_VER"
+	echo "SDK KERNEL Version: $KERNEL_VER"
+	GCC_VER=$(buildroot/utils/config --file $SDK_BUILD_DIR/.config --state GCC_VERSION)
+	echo "SDK GCC Version: $GCC_VER"
+	HASH_PROPERTIES="$HASH_PROPERTIES $GCC_VER"
+
+	# sha1sum our properties and check if a matching sdk exists
+	# A potential caveat he is if op-build is patching any of the
+	# HASH_PROPERTIES content at build time
+	HASH_VAL=$(echo -n "$HASH_PROPERTIES" | sha1sum | sed -e 's/ .*//')
+
+	SDK_DIR="$2/toolchain-${HASH_VAL}"
+
+	if [ -e "$SDK_DIR" ]; then
+		echo "Acceptable SDK for $i exists in $SDK_DIR - skipping build"
+	else
+		op-build O=$SDK_BUILD_DIR sdk
+		if [ $? -ne 0 ]; then
+			rm -rf $SDK_DIR
+			return 1
+		fi
+
+		# Move sdk to resting location and adjust paths
+		mv $SDK_BUILD_DIR $SDK_DIR
+		$SDK_DIR/host/relocate-sdk.sh
+	fi
+	export SDK_DIR
+}
+
 if [ -z "${PLATFORM_LIST}" ]; then
         echo "Using all the defconfigs for all the platforms"
         DEFCONFIGS=`(cd openpower/configs; ls -1 *_defconfig)`
@@ -90,26 +224,50 @@
 for i in ${DEFCONFIGS[@]}; do
 	export O=${OUTDIR}/$i
 	rm -rf $O
-        op-build O=$O $i
-	./buildroot/utils/config --file $O/.config --enable CCACHE \
-		--set-str CCACHE_DIR $CCACHE_DIR
-	if [ -d "$SDK_DIR" ]; then
-	    ./buildroot/utils/config --file $O/.config --enable TOOLCHAIN_EXTERNAL \
-		    --set-str TOOLCHAIN_EXTERNAL_PATH $SDK_DIR \
-		    --enable TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC \
-		    --enable TOOLCHAIN_EXTERNAL_CXX
-	    # FIXME: How do we work this out programatically?
-	    ./buildroot/utils/config --file $O/.config --enable BR2_TOOLCHAIN_EXTERNAL_GCC_6
 
-	    KERNEL_VER=$(./buildroot/utils/config --file $O/.config --state BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE)
-	    echo "KERNEL_VER " $KERNEL_VER
-	    HEADERS=BR2_TOOLCHAIN_EXTERNAL_HEADERS_$(get_kernel_release $KERNEL_VER)
-	    ./buildroot/utils/config --file $O/.config --set-val $HEADERS y
+	SDK_DIR=""
+	build_sdk $i $SDK_CACHE
+	if [ $? -ne 0 ]; then
+		echo "Error building SDK"
+		exit 1
 	fi
+
+	if [ $SDK_ONLY -ne 0 ]; then
+		continue
+	fi
+
+        op-build O=$O $i
+	buildroot/utils/config --file $O/.config --enable CCACHE \
+		--set-str CCACHE_DIR $CCACHE_DIR
+	buildroot/utils/config --file $O/.config --enable TOOLCHAIN_EXTERNAL \
+		--set-str TOOLCHAIN_EXTERNAL_PATH $SDK_DIR/host \
+		--enable TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
+
+	# Our SDK will always have CPP enabled, but avoid potentially
+	# diverging with the Full build by only enabling it
+	# conditionally
+	CPP_REQUIRED=$(buildroot/utils/config --file $O/.config --state INSTALL_LIBSTDCPP)
+	if [ "$CPP_REQUIRED" = "y" ]; then
+		buildroot/utils/config --file $O/.config --enable TOOLCHAIN_EXTERNAL_CXX
+	fi
+
+	# The Kernel Headers requested MUST be the same as the one
+	# provided by the SDK (i.e., it's part of the hash)
+	HEADERS_VER=$(buildroot/utils/config --file $O/.config --state TOOLCHAIN_HEADERS_AT_LEAST)
+	echo "Toolchain Headers Version Requested: $HEADERS_VER"
+	HEADERS="TOOLCHAIN_EXTERNAL_HEADERS_$(get_major_minor_release $HEADERS_VER)"
+	buildroot/utils/config --file $O/.config --enable "$HEADERS"
+
+	# Same for the GCC version
+	EXTERNAL_GCC_VER=$(buildroot/utils/config --file $O/.config --state GCC_VERSION)
+	echo "GCC Version Requested: $EXTERNAL_GCC_VER"
+	EXTERNAL_GCC="TOOLCHAIN_EXTERNAL_GCC_$(get_major_release $EXTERNAL_GCC_VER)"
+	buildroot/utils/config --file $O/.config --enable "$EXTERNAL_GCC"
+
         op-build O=$O olddefconfig
         op-build O=$O
         r=$?
-	if [ ${BUILD_INFO} = 1 ] && [ $r = 0 ]; then
+	if [ ${BUILD_INFO} -eq 1 ] && [ $r -eq 0 ]; then
 	    op-build O=$O legal-info
 	    op-build O=$O graph-build
 	    op-build O=$O graph-size
diff --git a/ci/build-sdk.sh b/ci/build-sdk.sh
deleted file mode 100755
index f2a312a..0000000
--- a/ci/build-sdk.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-
-set -ex
-set -eo pipefail
-
-if [ -z "$1" ]; then
-	echo "No build distro specified"
-	exit 1;
-fi
-
-if [ -z "$2" ]; then
-	echo "No defconfig to build SDK from specified"
-	exit 1;
-fi
-
-if [ -z "$CCACHE_DIR" ]; then
-	CCACHE_DIR=`pwd`/.op-build_ccache
-fi
-
-shopt -s expand_aliases
-source op-build-env
-
-if [ -n "$DL_DIR" ]; then
-	unset BR2_DL_DIR
-	export BR2_DL_DIR=${DL_DIR}
-fi
-
-export O=`pwd`/output-$1-$2/
-op-build O=$O $2
-./buildroot/utils/config --file $O/.config --enable CCACHE
-./buildroot/utils/config --file $O/.config --set-str CCACHE_DIR $CCACHE_DIR
-
-# Disable things not necessary for the sdk
-# (Buildroot manual section 6.1.3)
-./buildroot/utils/config --file $O/.config --disable INIT_BUSYBOX \
-	--enable INIT_NONE \
-	--disable SYSTEM_BIN_SH_BUSYBOX \
-	--disable TARGET_ROOTFS_TAR
-
-# Additionally, disable OpenPower packages and
-# ROOTFS stuff that we won't need
-./buildroot/utils/config --file $O/.config --disable OPENPOWER_PLATFORM \
-	--undefine ROOTFS_USERS_TABLES \
-	--undefine ROOTFS_OVERLAY \
-	--undefine ROOTFS_POST_BUILD_SCRIPT \
-	--undefine ROOTFS_POST_FAKEROOT_SCRIPT \
-	--undefine ROOTFS_POST_IMAGE_SCRIPT \
-	--undefine ROOTFS_POST_SCRIPT_ARGS
-
-op-build O=$O olddefconfig
-
-if [ -f "$(ldconfig -p | grep libeatmydata.so | tr ' ' '\n' | grep /|head -n1)" ]; then
-    export LD_PRELOAD=${LD_PRELOAD:+"$LD_PRELOAD "}libeatmydata.so
-elif [ -f "/usr/lib64/nosync/nosync.so" ]; then
-    export LD_PRELOAD=${LD_PRELOAD:+"$LD_PRELOAD "}/usr/lib64/nosync/nosync.so
-fi
-
-op-build O=$O sdk
diff --git a/ci/build.sh b/ci/build.sh
index a0430df..e0acc1a 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -7,7 +7,7 @@
 SDK_ONLY=0
 
 opt=$(getopt -o 's:Sab:p:c:hr' -- "$@")
-if [ $? != 0 ] ; then
+if [ $? -ne 0 ] ; then
 	echo "Invalid arguments"
 	exit 1
 fi
@@ -96,10 +96,6 @@
          -t $1 $2
 }
 
-function toolchain_hash
-{
-    echo -n 'toolchain-'$((git submodule ; cd openpower/configs/; cat `ls -1 |grep '_defconfig$'|sort`)|sha1sum |sed -e 's/ .*//')
-}
 
 env
 
@@ -144,15 +140,6 @@
 EOF
 		  )
 	$DOCKER_PREFIX docker build --network=host -t openpower/op-build-$distro - <<< "${Dockerfile}"
-	SDK_DIR=$SDK_CACHE/$(toolchain_hash)-$distro
-	if [ ! -d "$SDK_DIR" ]; then
-	    chmod +x ci/build-sdk.sh
-	    run_docker openpower/op-build-$distro "./ci/build-sdk.sh $distro witherspoon_defconfig"
-	    mv output-$distro-witherspoon_defconfig $SDK_DIR
-	    $SDK_DIR/host/relocate-sdk.sh
-	fi
-
-	sdk_args="-s $SDK_DIR/host"
 
 	if [ -n "$PLATFORMS" ]; then
 	    platform_args="-p $PLATFORMS"
@@ -160,11 +147,15 @@
 	    platform_args=""
 	fi
 
-	if [ $SDK_ONLY == 0 ]; then
-	    run_docker openpower/op-build-$distro "./ci/build-all-defconfigs.sh -o `pwd`/output-$distro ${platform_args} ${release_args} ${sdk_args}"
+	if [ $SDK_ONLY -ne 0 ]; then
+	    sdk_args="-S"
+	else
+	    sdk_args=""
 	fi
 
-	if [ $? != 0 ]; then
+	run_docker openpower/op-build-$distro "./ci/build-all-defconfigs.sh -o `pwd`/output-$distro ${platform_args} ${release_args} ${sdk_args} -s $SDK_CACHE"
+
+	if [ $? -ne 0 ]; then
 		exit $?;
 	fi
 done;
diff --git a/openpower/configs/hostboot/swift.config b/openpower/configs/hostboot/swift.config
new file mode 100755
index 0000000..ee791b8
--- /dev/null
+++ b/openpower/configs/hostboot/swift.config
@@ -0,0 +1,90 @@
+## Set this to pull in Axone only code (such as P9A/EXP MSS code)
+set AXONE
+
+# Allows us to put in workarounds specifically for Axone bringup
+set AXONE_BRING_UP
+
+# 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
+
+
+# Force DJVPD read/write to use EEPROM layer instead of old-style VPD cache
+set DJVPD_READ_FROM_HW
+set DJVPD_WRITE_TO_HW
+unset DJVPD_READ_FROM_PNOR
+unset DJVPD_WRITE_TO_PNOR
+
+# Force MEMVPD read/write to EEPROM layer instead of old-style VPD cache
+# ( No concept of MEMVPD in Axone so should not matter )
+set MEMVPD_READ_FROM_HW
+set MEMVPD_WRITE_TO_HW
+unset MEMVPD_READ_FROM_PNOR
+unset MEMVPD_WRITE_TO_PNOR
+
+# Force MVPD read/write to use EEPROM layer instead of old-style VPD cache
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
+unset MVPD_READ_FROM_PNOR
+unset MVPD_WRITE_TO_PNOR
+
+# Other VPD options.
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+unset PVPD_READ_FROM_PNOR
+unset PVPD_WRITE_TO_PNOR
+unset CDIMM_FORMAT_FOR_CVPD
+
+#enable EEPROM caching
+set SUPPORT_EEPROM_CACHING
+
+# gpio config
+set GPIODD
+unset PALMETTO_VDDR
+
+# Enable Consecutive SBE Updates
+set   SBE_UPDATE_CONSECUTIVE
+unset SBE_UPDATE_INDEPENDENT
+unset SBE_UPDATE_SEQUENTIAL
+unset 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
+
+# Enable Checkstop Analysis for both
+#   Runtime and IPLtime scenarios
+set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
+
+# set for trace debug to console
+unset CONSOLE_OUTPUT_TRACE
+set CONSOLE_OUTPUT_FFDCDISPLAY
+
+# Terminate Hostboot when errors occur in manufacturing mode
+#   (relies on BMC to not trigger reboot)
+unset HANG_ON_MFG_SRC_TERM
diff --git a/openpower/configs/swift_defconfig b/openpower/configs/swift_defconfig
new file mode 100644
index 0000000..de3b9bb
--- /dev/null
+++ b/openpower/configs/swift_defconfig
@@ -0,0 +1,73 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux --disable-libsanitizer"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_TARGET_GENERIC_HOSTNAME="skiroot"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_SYSTEM_ENABLE_NLS=y
+BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/users-table"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.33"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_LINUX_KERNEL_XZ=y
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_CRYPTSETUP=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_IPMITOOL_USB=y
+BR2_PACKAGE_MDADM=y
+BR2_PACKAGE_PCIUTILS=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_LRZSZ=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_PACKAGE_SUDO=y
+BR2_PACKAGE_UTIL_LINUX_AGETTY=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_OPENPOWER_PLATFORM=y
+BR2_OPENPOWER_POWER9=y
+BR2_HOSTBOOT_CONFIG_FILE="swift.config"
+BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="swift-xml"
+BR2_OPENPOWER_MACHINE_XML_VERSION="14a1bec7d32fabf990338cc6c7a33df99d86f499"
+BR2_OPENPOWER_MACHINE_XML_FILENAME="swift.xml"
+BR2_OPENPOWER_SYSTEM_XML_FILENAME="SWIFT_hb.system.xml"
+BR2_OPENPOWER_MRW_XML_FILENAME="SWIFT_hb.mrw.xml"
+BR2_OPENPOWER_BIOS_XML_FILENAME="SWIFT_bios.xml"
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="axonePnorLayout_64.xml"
+BR2_OPENPOWER_CONFIG_NAME="swift"
+BR2_OPENPOWER_PNOR_FILENAME="swift.pnor"
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="axone_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p9a.ref_image.hdr.bin.ecc"
+BR2_IMA_CATALOG_FILENAME="ima_catalog.bin"
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="SWIFT_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="SWIFT_HB.targeting.bin.ecc"
+BR2_BUILD_PNOR_SQUASHFS=y
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_OCC_GPU_BIN_BUILD=y
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+BR2_PACKAGE_LOADKEYS=y
+BR2_IMA_CATALOG_DTS="POWER9"
+BR2_PACKAGE_OCMB_EXPLORER_FW=y
diff --git a/openpower/package/hcode/Config.in b/openpower/package/hcode/Config.in
index 8612eed..a9cf79d 100644
--- a/openpower/package/hcode/Config.in
+++ b/openpower/package/hcode/Config.in
@@ -31,7 +31,7 @@
 
 config BR2_HCODE_VERSION
 	string
-	default "hw042720a.opmst" if BR2_HCODE_LATEST_VERSION
+	default "hw042920a.opmst" if BR2_HCODE_LATEST_VERSION
 	default BR2_HCODE_CUSTOM_VERSION_VALUE \
 		if BR2_HCODE_CUSTOM_VERSION
 
diff --git a/openpower/package/hostboot/Config.in b/openpower/package/hostboot/Config.in
index 46f35d2..b064c0a 100644
--- a/openpower/package/hostboot/Config.in
+++ b/openpower/package/hostboot/Config.in
@@ -25,7 +25,7 @@
 
 config BR2_HOSTBOOT_VERSION
 	string
-	default "e27c350a6a3d9ffda1eaf0e7dccc660963e631a1" if BR2_HOSTBOOT_LATEST_VERSION
+	default "1040e48ee138f9c7e858aadcd8ae6dbea4eb782e" if BR2_HOSTBOOT_LATEST_VERSION
 	default BR2_HOSTBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_HOSTBOOT_CUSTOM_VERSION
 
diff --git a/openpower/package/ocmb-explorer-fw/Config.in b/openpower/package/ocmb-explorer-fw/Config.in
index 73119ec..298855d 100644
--- a/openpower/package/ocmb-explorer-fw/Config.in
+++ b/openpower/package/ocmb-explorer-fw/Config.in
@@ -24,7 +24,7 @@
 
 config BR2_OCMB_EXPLORER_FW_VERSION
 	string
-	default "CL376092" if BR2_OCMB_EXPLORER_FW_LATEST_VERSION
+	default "v4.0" if BR2_OCMB_EXPLORER_FW_LATEST_VERSION
 	default BR2_OCMB_EXPLORER_FW_CUSTOM_VERSION_VALUE \
 		if BR2_OCMB_EXPLORER_FW_CUSTOM_VERSION