diff --git a/openpower/package/hostboot/hostboot-0002-Changes-for-Habanero-bringup-uart-delay-and-centaur.patch b/openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch
similarity index 100%
rename from openpower/package/hostboot/hostboot-0002-Changes-for-Habanero-bringup-uart-delay-and-centaur.patch
rename to openpower/package/hostboot/hostboot-0001-Increase-uart-delay.patch
diff --git a/openpower/package/hostboot/hostboot-0001-Revert-Base-devtree-model-on-vpd.patch b/openpower/package/hostboot/hostboot-0001-Revert-Base-devtree-model-on-vpd.patch
deleted file mode 100644
index efa81c3..0000000
--- a/openpower/package/hostboot/hostboot-0001-Revert-Base-devtree-model-on-vpd.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 9d1ec4127e24aeb3c57895731acf71a160b3b193 Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Wed, 28 Jan 2015 11:20:18 -0600
-Subject: [PATCH 1/2] New PCIE Patch
-
-Change-Id: Ib601d7a92935670582b9cc1fd8fcd61b68159542
----
- src/usr/targeting/common/genHwsvMrwXml.pl | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl
-index 9c93205..f5c33e0 100755
---- a/src/usr/targeting/common/genHwsvMrwXml.pl
-+++ b/src/usr/targeting/common/genHwsvMrwXml.pl
-@@ -3049,7 +3049,7 @@ sub generate_proc
-             $pcie_list{$ipath}{0}{0}{'lane-mask'},
-             $pcie_list{$ipath}{0}{1}{'lane-mask'},
-             $pcie_list{$ipath}{1}{0}{'lane-mask'},
--            $pcie_list{$ipath}{1}{1}{'lane-mask'}
-+            0x0FF
-         </default>
-     </attribute>
-     <attribute>
--- 
-1.8.2.2
-
-
-From 25148d8c9f85273ee851df99d00782ef8ad7e3de Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Thu, 29 Jan 2015 16:28:55 -0600
-Subject: [PATCH 2/2] Temporary Patch to fix Opal Devtree Issue
-
-Change-Id: Ie6aecc4a9b957dfd665f5bda1bb4a72728fba40b
----
- src/usr/devtree/bld_devtree.C | 64 +++----------------------------------------
- 1 file changed, 4 insertions(+), 60 deletions(-)
-
-diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C
-index 07ec253..abe8496 100644
---- a/src/usr/devtree/bld_devtree.C
-+++ b/src/usr/devtree/bld_devtree.C
-@@ -585,6 +585,7 @@ void load_hbrt_image(uint64_t& io_address)
-     }
- }
- 
-+
- errlHndl_t bld_fdt_system(devTree * i_dt, bool i_smallTree)
- {
-     errlHndl_t errhdl = NULL;
-@@ -601,75 +602,18 @@ errlHndl_t bld_fdt_system(devTree * i_dt, bool i_smallTree)
-     // Nothing to do for small trees currently.
-     if (!i_smallTree)
-     {
--        /* Fetch the MRW-defined compatible model from attributes */
--        ATTR_OPAL_MODEL_type l_model = {0};
--        TARGETING::Target* sys = NULL;
--        TARGETING::targetService().getTopLevelTarget(sys);
--        sys->tryGetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model);
- 
-         /* Add compatibility node */
--        const char* l_compats[] = { "ibm,powernv", l_model, NULL };
--        i_dt->addPropertyStrings(rootNode, "compatible", l_compats);
-+        i_dt->addPropertyString(rootNode, "compatible", "ibm,powernv");
- 
-         /* Add system model node */
--        // Based off of the DR field in the OPFR
--        // TODO RTC 118373 -- update to account for firestone/memory riser
--        TARGETING::TargetHandleList l_membTargetList;
--        getAllChips(l_membTargetList, TYPE_MEMBUF);
--
--        //if can't find a centaur for the CVPD, default to unknown
--        if (l_membTargetList.size())
--        {
--            TARGETING::Target * l_pMem = l_membTargetList[0];
--            size_t vpdSize = 0x0;
--
--            // Note: First read with NULL for o_buffer sets vpdSize to the
--            // correct length
--            errhdl = deviceRead( l_pMem,
--                                 NULL,
--                                 vpdSize,
--                                 DEVICE_CVPD_ADDRESS( CVPD::OPFR,
--                                                      CVPD::DR ));
--
--            if(errhdl)
--            {
--                TRACFCOMP(g_trac_devtree,ERR_MRK" Couldn't get DR size for HUID=0x%.8X",
--                          TARGETING::get_huid(l_pMem));
--                i_dt->addPropertyString(rootNode, "model", "unknown");
--                errlCommit(errhdl, DEVTREE_COMP_ID);
--            }
--            else
--            {
--                char drBuf[vpdSize+1];
--                memset(&drBuf, 0x0, (vpdSize+1)); //ensure null terminated str
--                errhdl = deviceRead( l_pMem,
--                                     reinterpret_cast<void*>( &drBuf ),
--                                     vpdSize,
--                                     DEVICE_CVPD_ADDRESS( CVPD::OPFR,
--                                                          CVPD::DR ));
--
--                if(errhdl)
--                {
--                    TRACFCOMP(g_trac_devtree,ERR_MRK" Couldn't read DR for HUID=0x%.8X",
--                              TARGETING::get_huid(l_pMem));
--                }
--                else
--                {
--                    i_dt->addPropertyString(rootNode, "model", drBuf);
--                }
--            }
--        }
--        else //chassis info not found, default to unknown
--        {
--            TRACFCOMP(g_trac_devtree,ERR_MRK" VPD not found, model defaulted to unknown");
--            i_dt->addPropertyString(rootNode, "model", "unknown");
--        }
-+        //TODO RTC:88056 - store model type in attributes?
-+        i_dt->addPropertyString(rootNode, "model", "palmetto");
-     }
- 
-     return errhdl;
- }
- 
--
- errlHndl_t bld_fdt_cpu(devTree * i_dt,
-                        std::vector<uint64_t>& o_homerRegions,
-                        bool i_smallTree)
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0004-Disable-centaur-memory-throttle.patch b/openpower/package/hostboot/hostboot-0002-Disable-centaur-memory-throttle.patch
similarity index 100%
rename from openpower/package/hostboot/hostboot-0004-Disable-centaur-memory-throttle.patch
rename to openpower/package/hostboot/hostboot-0002-Disable-centaur-memory-throttle.patch
diff --git a/openpower/package/hostboot/hostboot-0005-Habanero-double-drop-4GB-DIMM-config-fails.patch b/openpower/package/hostboot/hostboot-0003-Habanero-double-drop-4GB-DIMM-config-fails.patch
similarity index 100%
rename from openpower/package/hostboot/hostboot-0005-Habanero-double-drop-4GB-DIMM-config-fails.patch
rename to openpower/package/hostboot/hostboot-0003-Habanero-double-drop-4GB-DIMM-config-fails.patch
diff --git a/openpower/package/hostboot/hostboot-0003-Temporary-Patch-to-fix-PCIE-issues-for-Open-Power-sy.patch b/openpower/package/hostboot/hostboot-0003-Temporary-Patch-to-fix-PCIE-issues-for-Open-Power-sy.patch
deleted file mode 100755
index b6f14c6..0000000
--- a/openpower/package/hostboot/hostboot-0003-Temporary-Patch-to-fix-PCIE-issues-for-Open-Power-sy.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 9d1ec4127e24aeb3c57895731acf71a160b3b193 Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Wed, 28 Jan 2015 11:20:18 -0600
-Subject: [PATCH] New PCIE Patch
-
-Change-Id: Ib601d7a92935670582b9cc1fd8fcd61b68159542
----
- src/usr/targeting/common/genHwsvMrwXml.pl | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl
-index 9c93205..f5c33e0 100755
---- a/src/usr/targeting/common/genHwsvMrwXml.pl
-+++ b/src/usr/targeting/common/genHwsvMrwXml.pl
-@@ -3049,7 +3049,7 @@ sub generate_proc
-             $pcie_list{$ipath}{0}{0}{'lane-mask'},
-             $pcie_list{$ipath}{0}{1}{'lane-mask'},
-             $pcie_list{$ipath}{1}{0}{'lane-mask'},
--            $pcie_list{$ipath}{1}{1}{'lane-mask'}
-+            0x0FF
-         </default>
-     </attribute>
-     <attribute>
--- 
-1.8.2.2
-
