diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index f7fe6da..7497752 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= bdf43c1a6b5b67770f60b87ea7a789ea2c125cfc
+HOSTBOOT_BINARIES_VERSION ?= 61c5c1a6318cad6d20b0926403e4444defb9a60a
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
 
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index 4df993d..17eced6 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -3,8 +3,8 @@
 # hostboot
 #
 ################################################################################
-HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= 3ed4df70acbcf3927071ebd626d11e37f3656c38
-HOSTBOOT_VERSION_BRANCH_MASTER ?= 1ff9bbea76be1abe3a861706aa55ad1bd873a175
+HOSTBOOT_VERSION_BRANCH_MASTER_P8 ?= 19ef62a252501bca496ca39bfa11ee1d64ba1764
+HOSTBOOT_VERSION_BRANCH_MASTER ?= 61e3ac4d305b4611afc41353b3bcdb210d05f616
 
 HOSTBOOT_VERSION ?= $(if $(BR2_OPENPOWER_POWER9),$(HOSTBOOT_VERSION_BRANCH_MASTER),$(HOSTBOOT_VERSION_BRANCH_MASTER_P8))
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0004-target-pm-serverwiz1-and-2.patch b/openpower/package/hostboot/p9Patches/hostboot-0004-target-pm-serverwiz1-and-2.patch
new file mode 100644
index 0000000..0a15fc7
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0004-target-pm-serverwiz1-and-2.patch
@@ -0,0 +1,308 @@
+From 7afb20f3484eb118855d2033e7308cfc4a07fae3 Mon Sep 17 00:00:00 2001
+From: Norm James <njames@us.ibm.com>
+Date: Mon, 12 Sep 2016 18:47:13 -0700
+Subject: [PATCH] Add ability to read old and new Serverwiz xml outputs.
+
+The new Serverwiz format added outer tags for performance
+reasons.  It also added attribute groups for accessing
+like attributes with one API call.
+
+Change-Id: I6b6c6de8defbc5c0f0c8c7d191836e69ac7bfc98
+---
+ src/usr/targeting/common/Targets.pm | 157 +++++++++++++++++++++++++++++-------
+ 1 file changed, 126 insertions(+), 31 deletions(-)
+
+diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
+index 096db10..35f0842 100644
+--- a/src/usr/targeting/common/Targets.pm
++++ b/src/usr/targeting/common/Targets.pm
+@@ -26,6 +26,7 @@ package Targets;
+ 
+ use strict;
+ use XML::Simple;
++use XML::Parser;
+ use Data::Dumper;
+ 
+ sub new
+@@ -43,9 +44,10 @@ sub new
+         force        => 0,
+         debug        => 0,
+         version      => "",
++        xml_version  => 0,
+         errorsExist  => 0,
+         NUM_PROCS    => 0,
+-        TOP_LEVEL    => "sys-0",
++        TOP_LEVEL    => "",
+         TOPOLOGY     => undef,
+         report_log   => "",
+         vpd_num      => 0,
+@@ -87,9 +89,16 @@ sub loadXML
+     print "Loading MRW XML: $filename\n";
+     $self->{xml} =
+       XMLin($filename,forcearray => [ 'child_id', 'hidden_child_id', 'bus',
+-                                      'property' ]);
++                                      'property', 'field', 'attribute' ]);
++
++    if (defined($self->{xml}->{'enumerationTypes'}))
++    {
++          $self->{xml_version} = 1;
++    }
++
+     $self->storeEnumerations();
+-    $self->buildHierarchy($self->{TOP_LEVEL});
++    $self->storeGroups();
++    $self->buildHierarchy();
+     $self->buildAffinity();
+     $self->{report_filename}=$filename.".rpt";
+     $self->{report_filename}=~s/\.xml//g;
+@@ -230,15 +239,31 @@ sub printAttribute
+ sub storeEnumerations
+ {
+     my $self = shift;
+-
+-    foreach my $enumType (keys(%{ $self->{xml}->{enumerationType} }))
++    my $baseptr = $self->{xml}->{enumerationType};
++    if ($self->{xml_version} == 1)
++    {
++        $baseptr = $self->{xml}->{enumerationTypes}->{enumerationType};
++    }
++    foreach my $enumType (keys(%{ $baseptr }))
+     {
+         foreach my $enum (
+-            keys(%{$self->{xml}->{enumerationType}->{$enumType}->{enumerator}}))
++            keys(%{$baseptr->{$enumType}->{enumerator}}))
+         {
+             $self->{enumeration}->{$enumType}->{$enum} =
+-              $self->{xml}->{enumerationType}->{$enumType}->{enumerator}
+-              ->{$enum}->{value};
++              $baseptr->{$enumType}->{enumerator}->{$enum}->{value};
++        }
++    }
++}
++sub storeGroups
++{
++    my $self = shift;
++    foreach my $grp (keys(%{ $self->{xml}->{attributeGroups}
++        ->{attributeGroup} }))
++    {
++        foreach my $attr (@{$self->{xml}->{attributeGroups}
++            ->{attributeGroup}->{$grp}->{'attribute'}})
++        {
++            $self->{groups}->{$grp}->{$attr} = 1;
+         }
+     }
+ }
+@@ -277,13 +302,45 @@ sub buildHierarchy
+     my $self   = shift;
+     my $target = shift;
+ 
+-    my $old_path        = $self->{data}->{INSTANCE_PATH};
+-    my $target_xml      = $self->{xml}->{'targetInstance'}{$target};
++    my $instance_path = $self->{data}->{INSTANCE_PATH};
++    if (!defined $instance_path)
++    {
++        $instance_path = "";
++    }
++    my $baseptr = $self->{xml}->{'targetInstance'};
++    if ($self->{xml_version} == 1)
++    {
++        $baseptr = $self->{xml}->{'targetInstances'}->{'targetInstance'};
++    }
++    if ($target eq "")
++    {
++        ## find system target
++        foreach my $t (keys(%{$baseptr}))
++        {
++            if ($baseptr->{$t}->{attribute}->{TYPE}->{default} eq "SYS")
++            {
++                $self->{TOP_LEVEL} = $t;
++                $target = $t;
++            }
++        }
++    }
++    if ($target eq "")
++    {
++        die "Unable to find system top level target\n";
++    }
++    my $old_path        = $instance_path;
++    my $target_xml      = $baseptr->{$target};
+     my $affinity_target = $target;
+-    my $key             = $self->{data}->{INSTANCE_PATH} . "/" . $target;
++    my $key             = $instance_path . "/" . $target;
+ 
+-    my $instance_path = $self->{data}->{INSTANCE_PATH};
+-    $instance_path = "instance:" . substr($instance_path, 1);
++    if ($instance_path ne "")
++    {
++        $instance_path = "instance:" . substr($instance_path, 1);
++    }
++    else
++    {
++        $instance_path = "instance:";
++    }
+     $self->setAttribute($key, "INSTANCE_PATH", $instance_path);
+     $self->{data}->{TARGETS}->{$key}->{TARGET} = $target_xml;
+     $self->{data}->{INSTANCE_PATH} = $old_path . "/" . $target;
+@@ -321,9 +378,15 @@ sub buildHierarchy
+         }
+     }
+     ## global attributes overwrite local
+-    foreach my $prop (keys %{$self->{xml}->{globalSetting}->{$key}->{property}})
++    my $settingptr = $self->{xml}->{globalSetting};
++    if ($self->{xml_version} == 1)
+     {
+-        my $val=$self->{xml}->{globalSetting}->{$key}->{property}->
++        $settingptr = $self->{xml}->{globalSettings}->{globalSetting};
++    }
++
++    foreach my $prop (keys %{$settingptr->{$key}->{property}})
++    {
++        my $val=$settingptr->{$key}->{property}->
+                        {$prop}->{value};
+         $self->setAttribute($key, $prop, $val);
+     }
+@@ -413,8 +476,10 @@ sub buildAffinity
+             $node = -1;
+ 
+             $self->{targeting}{SYS}[0]{KEY} = $target;
+-            $self->setAttribute($target, "AFFINITY_PATH", "affinity:sys-0");
+-            $self->setAttribute($target, "PHYS_PATH",     "physical:sys-0");
++            $self->setAttribute($target, "AFFINITY_PATH",
++                                         "affinity:".$self->{TOP_LEVEL});
++            $self->setAttribute($target, "PHYS_PATH",
++                                         "physical:".$self->{TOP_LEVEL});
+             $self->setAttribute($target, "ENTITY_INSTANCE","0");
+         }
+         elsif ($type eq "NODE")
+@@ -424,13 +489,13 @@ sub buildAffinity
+             $self->{dimm_tpos} = 0;
+             $self->{membuf_inst_num}=0;
+             $node++;
+-            $node_phys = "physical:sys-0/node-$node";
+-            $node_aff  = "affinity:sys-0/node-$node";
++            $node_phys = "physical:".$self->{TOP_LEVEL}."/node-$node";
++            $node_aff  = "affinity:".$self->{TOP_LEVEL}."/node-$node";
+             $self->{targeting}{SYS}[0]{NODES}[$node]{KEY} = $target;
+             $self->setAttribute($target, "AFFINITY_PATH",
+-                "affinity:sys-0/node-$node");
++                "affinity:".$self->{TOP_LEVEL}."/node-$node");
+             $self->setAttribute($target, "PHYS_PATH",
+-                "physical:sys-0/node-$node");
++                "physical:".$self->{TOP_LEVEL}."/node-$node");
+             $self->setHuid($target, 0, $node);
+             $self->setAttribute($target, "ENTITY_INSTANCE",$node);
+         }
+@@ -439,9 +504,11 @@ sub buildAffinity
+             $tpm++;
+             $self->{targeting}{SYS}[0]{NODES}[$node]{TPMS}[$tpm]{KEY} = $target;
+             $self->setAttribute($target, "AFFINITY_PATH",
+-                                "affinity:sys-0/node-$node/tpm-$tpm");
++                                "affinity:".$self->{TOP_LEVEL}.
++                                "/node-$node/tpm-$tpm");
+             $self->setAttribute($target, "PHYS_PATH",
+-                                "physical:sys-0/node-$node/tpm-$tpm");
++                                "physical:".$self->{TOP_LEVEL}.
++                                "/node-$node/tpm-$tpm");
+             $self->setHuid($target, 0, $tpm);
+             $self->setAttribute($target, "ENTITY_INSTANCE",$tpm);
+         }
+@@ -469,8 +536,10 @@ sub buildAffinity
+             $self->setHuid($target, 0, $node);
+             my $socket = $self->getTargetParent(
+                          $self->getTargetParent($target));
+-            my $parent_affinity = "affinity:sys-0/node-$node/proc-$proc";
+-            my $parent_physical = "physical:sys-0/node-$node/proc-$proc";
++            my $parent_affinity = "affinity:".$self->{TOP_LEVEL}
++                                  ."/node-$node/proc-$proc";
++            my $parent_physical = "physical:".$self->{TOP_LEVEL}
++                                  ."/node-$node/proc-$proc";
+             $self->setAttribute($target, "AFFINITY_PATH",  $parent_affinity);
+             $self->setAttribute($target, "PHYS_PATH",      $parent_physical);
+             $self->setAttribute($target, "POSITION",       $proc);
+@@ -619,8 +688,6 @@ sub processMcs
+         $self->setFsiAttributes($membuf,"FSICM",0,$proc_path,$fsi_port,0);
+         $self->setAttribute($unit, "DMI_REFCLOCK_SWIZZLE",$fsi_port);
+         my $dmi_swizzle =
+-             $dmi_bus->{bus_attribute}->{DMI_REFCLOCK_SWIZZLE}->{default};
+-        my $dmi_swizzle =
+              $self->getBusAttribute($unit,0,"DMI_REFCLOCK_SWIZZLE");
+         if ($dmi_swizzle ne "")
+         {
+@@ -974,7 +1041,8 @@ sub isBadAttribute
+     {
+         return 1;
+     }
+-    if ($target_ptr->{ATTRIBUTES}->{$attribute}->{default} eq $badvalue)
++    if (defined $badvalue &&
++        $target_ptr->{ATTRIBUTES}->{$attribute}->{default} eq $badvalue)
+     {
+         return 1;
+     }
+@@ -1029,7 +1097,6 @@ sub getAttribute
+         printf("ERROR: getAttribute(%s,%s) | Attribute not defined\n",
+             $target, $attribute);
+ 
+-        #print Dumper($target_ptr);
+         $self->myExit(4);
+     }
+     if (ref($target_ptr->{ATTRIBUTES}->{$attribute}->{default}) eq "HASH")
+@@ -1038,6 +1105,30 @@ sub getAttribute
+     }
+     return $target_ptr->{ATTRIBUTES}->{$attribute}->{default};
+ }
++
++sub getAttributeGroup
++{
++    my $self       = shift;
++    my $target     = shift;
++    my $group      = shift;
++    my $target_ptr = $self->getTarget($target);
++    if (!defined($self->{groups}->{$group})) {
++        printf("ERROR: getAttributeGroup(%s,%s) | Group not defined\n",
++            $target, $group);
++        $self->myExit(4);
++    }
++    my %attr;
++    foreach my $attribute (keys(%{$self->{groups}->{$group}}))
++    {
++        if (defined($target_ptr->{ATTRIBUTES}->{$attribute}->{default}))
++        {
++            $attr{$attribute} = $target_ptr->{ATTRIBUTES}->{$attribute};
++        }
++    }
++    return \%attr;
++}
++
++
+ ## renames a target attribute
+ sub renameAttribute
+ {
+@@ -1141,6 +1232,8 @@ sub getBusAttribute
+     return $target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}->{$attr}
+       ->{default};
+ }
++
++
+ ## returns a pointer to an array of children target names
+ sub getTargetChildren
+ {
+@@ -1216,7 +1309,10 @@ sub setMruid
+ 
+     my $type          = $self->getType($target);
+     my $mru_prefix_id = $self->{enumeration}->{MRU_PREFIX}->{$type};
+-    if ($mru_prefix_id eq "") { $mru_prefix_id = "0xFFFF"; }
++    if (!defined $mru_prefix_id || $mru_prefix_id eq "")
++    {
++         $mru_prefix_id = "0xFFFF";
++    }
+     if ($mru_prefix_id eq "0xFFFF") { return; }
+     my $index = 0;
+     if (defined($self->{mru_idx}->{$node}->{$type}))
+@@ -1486,4 +1582,3 @@ Prints to stdout log message is debug mode is turned on.
+ Norman James <njames@us.ibm.com>
+ 
+ =cut
+-
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0005-add-nimbus-simics-xml.patch b/openpower/package/hostboot/p9Patches/hostboot-0005-add-nimbus-simics-xml.patch
new file mode 100644
index 0000000..f2f7d0b
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0005-add-nimbus-simics-xml.patch
@@ -0,0 +1,27 @@
+From 56e613d9e7cb2ef6cc1ab0adfae691cfcbdcf9e5 Mon Sep 17 00:00:00 2001
+From: Matt Ploetz <maploetz@us.ibm.com>
+Date: Wed, 28 Sep 2016 17:06:31 -0500
+Subject: [PATCH] Add nimbus simics xml to openPower until processMrw changes
+ are in
+
+Change-Id: Iac895ed08b7e182301e223d45ce064715e459723
+RTC:143114
+---
+ src/build/mkrules/dist.targets.mk | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
+index ecd4b58..0e2434c 100644
+--- a/src/build/mkrules/dist.targets.mk
++++ b/src/build/mkrules/dist.targets.mk
+@@ -81,6 +81,7 @@ COPY_FILES = \
+     src/usr/targeting/common/xmltohb/attribute_types.xml:openpower \
+     src/usr/targeting/common/xmltohb/attribute_types_hb.xml:openpower \
+     src/usr/targeting/common/xmltohb/target_types_hb.xml:openpower \
++    src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml:openpower \
+     src/usr/targeting/common/xmltohb/xmltohb.pl:openpower \
+     src/usr/targeting/xmltohb/updatetempsxml.pl:openpower \
+     src/include/usr/vmmconst.h:openpower \
+-- 
+1.8.2.2
+
diff --git a/openpower/package/witherspoon-xml/witherspoon.mk b/openpower/package/witherspoon-xml/witherspoon.mk
index 42d892a..1d53545 100644
--- a/openpower/package/witherspoon-xml/witherspoon.mk
+++ b/openpower/package/witherspoon-xml/witherspoon.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-WITHERSPOON_XML_VERSION ?= 8625696cf60951885b9af780027aa7d047b63949
+WITHERSPOON_XML_VERSION ?= 166b3135edbc7299aaa991a42f6eb0fc40d784e6
 WITHERSPOON_XML_SITE ?= $(call github,open-power,witherspoon-xml,$(WITHERSPOON_XML_VERSION))
 
 WITHERSPOON_XML_LICENSE = Apache-2.0
@@ -32,9 +32,13 @@
         bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
 
         # generate the system mrw xml
-        perl -I $(MRW_HB_TOOLS) \
+        #perl -I $(MRW_HB_TOOLS) \
         $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/witherspoon.xml
         
+        # copy local simics_NIMBUS xml until processMrw changes are in
+        # RTC: 143114
+        cp $(MRW_HB_TOOLS)/simics_NIMBUS.system.xml $(MRW_SCRATCH)/$(BR2_WITHERSPOON_SYSTEM_XML_FILENAME)
+
         # merge in any system specific attributes, hostboot attributes
         $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_WITHERSPOON_SYSTEM_XML_FILENAME) \
             $(MRW_HB_TOOLS)/attribute_types.xml \
