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 \
