diff --git a/openpower/configs/hostboot/zaius.config b/openpower/configs/hostboot/zaius.config
index 1ed4615..3a2480f 100755
--- a/openpower/configs/hostboot/zaius.config
+++ b/openpower/configs/hostboot/zaius.config
@@ -15,12 +15,12 @@
 set DJVPD_WRITE_TO_HW
 set DJVPD_READ_FROM_PNOR
 set DJVPD_WRITE_TO_PNOR
-unset MEMVPD_READ_FROM_HW
-unset MEMVPD_WRITE_TO_HW
+set MEMVPD_READ_FROM_HW
+set MEMVPD_WRITE_TO_HW
 set MEMVPD_READ_FROM_PNOR
 set MEMVPD_WRITE_TO_PNOR
-unset PVPD_READ_FROM_HW
-unset PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
 set PVPD_READ_FROM_PNOR
 set PVPD_WRITE_TO_PNOR
 unset CDIMM_FORMAT_FOR_CVPD
@@ -32,6 +32,7 @@
 # Disable SBE updates
 unset SBE_UPDATE_INDEPENDENT
 unset SBE_UPDATE_SEQUENTIAL
+unset SBE_UPDATE_SIMULTANEOUS
 set NO_SBE_UPDATES
 
 unset PCIE_HOTPLUG_CONTROLLER
@@ -50,7 +51,7 @@
 #PNOR flags
 unset PNOR_TWO_SIDE_SUPPORT
 
-unset BMC_BT_LPC_IPMI
+set BMC_BT_LPC_IPMI
 
 # Disable Checktop Analysis
 unset ENABLE_CHECKSTOP_ANALYSIS
@@ -60,8 +61,10 @@
 unset HOST_HCDB_SUPPORT
 
 # set for trace debug to console
-set CONSOLE_OUTPUT_TRACE
+unset CONSOLE_OUTPUT_TRACE
+set CONSOLE_OUTPUT_FFDCDISPLAY
 
-unset CONFIG_SECUREBOOT
-unset CONFIG_TPMDD
-unset CONFIG_TPM_NUVOTON
+
+unset SECUREBOOT
+unset TPMDD
+unset TPM_NUVOTON
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0007-Skip-running-p9_mss_eff_config_thermal.patch b/openpower/package/hostboot/p9Patches/hostboot-0007-Skip-running-p9_mss_eff_config_thermal.patch
deleted file mode 100644
index 38a85c8..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0007-Skip-running-p9_mss_eff_config_thermal.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From d68ea0cc45fa21821f3820dfb83fb8332c8eec8f Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Wed, 18 Jan 2017 21:56:18 -0600
-Subject: [PATCH 5/6] Temporarily Skip running p9_mss_eff_config_thermal
-
-Change-Id: I491c8e30fef9431663aaa29147ef96c0d897a015
----
- src/usr/isteps/istep07/call_mss_eff_config.C | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/usr/isteps/istep07/call_mss_eff_config.C b/src/usr/isteps/istep07/call_mss_eff_config.C
-index e13dace..761a07d 100644
---- a/src/usr/isteps/istep07/call_mss_eff_config.C
-+++ b/src/usr/isteps/istep07/call_mss_eff_config.C
-@@ -241,8 +241,8 @@ void*    call_mss_eff_config( void *io_pArgs )
-         }
-         // Call the mss_eff_config_thermal HWP
-         TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
--                   "p9_mss_eff_config_thermal HWP. ");
--        FAPI_INVOKE_HWP(l_err, p9_mss_eff_config_thermal,l_fapi_mcs_targs);
-+                   "Temporarily skipping p9_mss_eff_config_thermal HWP. ");
-+        //FAPI_INVOKE_HWP(l_err, p9_mss_eff_config_thermal,l_fapi_mcs_targs);
- 
-         if (l_err)
-         {
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0008-Mask-IPOLL-Interrupts-Disable-Nest-Pulse.patch b/openpower/package/hostboot/p9Patches/hostboot-0008-Mask-IPOLL-Interrupts-Disable-Nest-Pulse.patch
deleted file mode 100644
index cbc3077..0000000
--- a/openpower/package/hostboot/p9Patches/hostboot-0008-Mask-IPOLL-Interrupts-Disable-Nest-Pulse.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From cde8d0c32b37f398b157e17e4f20c3e3abe53599 Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Fri, 20 Jan 2017 12:16:47 -0600
-Subject: [PATCH] Mask IPOLL Interrupts + Disable Nest Pulse
-
-Change-Id: I5e479ee475b4edb275de60d2c158c5732f908e46
----
- src/usr/isteps/istep14/call_mss_memdiag.C | 43 ++++++++++++++++++++++++++++++-
- 1 file changed, 42 insertions(+), 1 deletion(-)
-
-diff --git a/src/usr/isteps/istep14/call_mss_memdiag.C b/src/usr/isteps/istep14/call_mss_memdiag.C
-index 8354e5f..1cf9ca5 100644
---- a/src/usr/isteps/istep14/call_mss_memdiag.C
-+++ b/src/usr/isteps/istep14/call_mss_memdiag.C
-@@ -5,7 +5,7 @@
- /*                                                                        */
- /* OpenPOWER HostBoot Project                                             */
- /*                                                                        */
--/* Contributors Listed Below - COPYRIGHT 2015,2016                        */
-+/* Contributors Listed Below - COPYRIGHT 2015,2017                        */
- /* [+] International Business Machines Corp.                              */
- /*                                                                        */
- /*                                                                        */
-@@ -30,6 +30,7 @@
- #include <diag/attn/attn.H>
- #include <diag/mdia/mdia.H>
- #include <targeting/common/targetservice.H>
-+#include <devicefw/driverif.H>
- 
- using   namespace   ISTEP;
- using   namespace   ISTEP_ERROR;
-@@ -101,6 +102,46 @@ void* call_mss_memdiag (void* io_pArgs)
-             break;
-         }
- 
-+        //Mask IPOLL Interrupts
-+        TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
-+                  "Mask IPOLL Interrupts");
-+
-+        // Get all functional proc chip targets
-+        //Use targeting code to get a list of all processors
-+        TARGETING::TargetHandleList l_procChips;
-+        getAllChips( l_procChips, TARGETING::TYPE_PROC   );
-+
-+        for (auto l_procChip: l_procChips)
-+        {
-+            uint64_t l_data = 0xfff0000000000000;
-+            size_t l_data_sz = sizeof(uint64_t);
-+
-+            l_errl = deviceWrite( l_procChip, &l_data, l_data_sz,
-+                  DEVICE_SCOM_ADDRESS(0x000F0033) );
-+
-+            if( NULL != l_errl )
-+            {
-+                TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
-+                   "IPOLL MASK ERROR: deviceWrite on 0x%08X failed HUID:0x%08X",
-+                   0x000F0033, get_huid(l_procChip));
-+                break;
-+            }
-+
-+            //Disable the nest pulse to the bottom 4 bits of the TB
-+            l_data = 0x0000000000000000;
-+
-+            l_errl = deviceWrite( l_procChip, &l_data, l_data_sz,
-+                  DEVICE_SCOM_ADDRESS(0x010F0023) );
-+
-+            if( NULL != l_errl )
-+            {
-+                TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
-+                   "Disable nest pulse: deviceWrite on 0x%08X failed HUID:0x%08X",
-+                   0x010F0023, get_huid(l_procChip));
-+                break;
-+            }
-+        }
-+
-     }while( 0 );
- 
-     if( NULL != l_errl )
--- 
-1.8.2.2
-
