Fixes to get witherspoon xml working with latest hb
diff --git a/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch b/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch
new file mode 100644
index 0000000..29d2444
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-0008-Add-Hacked-values-for-VPD-attributes.patch
@@ -0,0 +1,122 @@
+From 85b90b1ceae68b9f473a12b652bdaf2c8d78a007 Mon Sep 17 00:00:00 2001
+From: Prachi Gupta <pragupta@us.ibm.com>
+Date: Wed, 7 Dec 2016 10:44:25 -0600
+Subject: [PATCH 4/4] Add Hacked values for VPD attributes
+
+Change-Id: Ida797dba646f0110637521daf27dfeea0f730959
+---
+ src/usr/targeting/common/Targets.pm    | 14 ++++++++
+ src/usr/targeting/common/processMrw.pl | 61 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 75 insertions(+)
+
+diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
+index 42780dd..25fe0cb 100644
+--- a/src/usr/targeting/common/Targets.pm
++++ b/src/usr/targeting/common/Targets.pm
+@@ -1655,6 +1655,20 @@ sub getAttributeField
+ }
+ 
+ ## returns an attribute from a bus
++sub setBusAttribute
++{
++    my $self       = shift;
++    my $target     = shift;
++    my $busnum     = shift;
++    my $attr       = shift;
++    my $value      = shift;
++    my $target_ptr = $self->getTarget($target);
++    $target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}->{$attr}->{default}
++        = $value;
++    $self->log($target, "Setting Attribute (BusNum=$busnum): $attr=$value");
++}
++
++## returns an attribute from a bus
+ sub getBusAttribute
+ {
+     my $self       = shift;
+diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
+index 312582d..bfe33a4 100644
+--- a/src/usr/targeting/common/processMrw.pl
++++ b/src/usr/targeting/common/processMrw.pl
+@@ -538,6 +538,7 @@ sub processProcessor
+     $targetObj->setAttributeField($target, "SCOM_SWITCHES", "useXscom", "0");
+ 
+     processMembufVpdAssociation($targetObj,$target);
++    processNodeVpd($targetObj, $target);
+     setupBars($targetObj,$target);
+ }
+ 
+@@ -1110,10 +1111,70 @@ sub processOcc
+     $targetObj->setAttribute($target,"OCC_MASTER_CAPABLE",$master_capable);
+ }
+ 
++#@FIXME: This is just a hack to get the witherspoon xml to compile
++sub processNodeVpd
++{
++    my $targetObj = shift;
++    my $target    = shift; #proc target
++    my $name      = "EEPROM_VPD_PRIMARY_INFO";
++    foreach my $child (@{$targetObj->getTargetChildren($target)})
++    {
++        if ($targetObj->getType($child) eq "MCBIST")
++        {
++            foreach my $mcs (@{$targetObj->getTargetChildren($child)})
++            {
++                if ($targetObj->getType($mcs) eq "MCS")
++                {
++                    my $path            = "physical:sys-0/node-0";
++                    my $port            = 0x02;
++                    my $addr            = 0xE0;
++                    my $engine          = 1;
++                    my $offset          = 0x01;
++                    my $mem             = 0x01;
++                    my $count           = 2;
++                    my $page            = 0x50;
++                    my $cycle           = 0x05;
++                    $targetObj->setAttributeField($mcs, $name, "i2cMasterPath", $path);
++                    $targetObj->setAttributeField($mcs, $name, "port", $port);
++                    $targetObj->setAttributeField($mcs, $name, "devAddr", $addr);
++                    $targetObj->setAttributeField($mcs, $name, "engine", $engine);
++                    $targetObj->setAttributeField($mcs, $name, "byteAddrOffset", $offset);
++                    $targetObj->setAttributeField($mcs, $name, "maxMemorySizeKB", $mem);
++                    $targetObj->setAttributeField($mcs, $name, "chipCount", $count);
++                    $targetObj->setAttributeField($mcs, $name, "writePageSize", $page);
++                    $targetObj->setAttributeField($mcs, $name, "writeCycleTime", $cycle);
++                }
++
++            }
++        }
++    }
++
++}
++
+ sub processMembufVpdAssociation
+ {
+     my $targetObj = shift;
+     my $target    = shift;
++    my $dimms=$targetObj->findConnections($target,"I2C","SPD");
++    if ($dimms ne "") {
++        foreach my $dimm (@{$dimms->{CONN}}) {
++            my $dimm_target = $targetObj->getTargetParent($dimm->{DEST_PARENT});
++
++            #@FIXME: hacked value for now
++            my $addr = $targetObj->setBusAttribute($dimm->{SOURCE},
++                    $dimm->{BUS_NUM}, "I2C_ADDRESS", 0xE0);
++
++            setEepromAttributes($targetObj,
++                       "EEPROM_VPD_PRIMARY_INFO",$dimm_target,
++                       $dimm);
++            my $i2cMasterPath = $targetObj->getAttributeField($dimm_target,
++                "EEPROM_VPD_PRIMARY_INFO", "i2cMasterPath");
++
++            $targetObj->setAttributeField($dimm_target,"TEMP_SENSOR_I2C_CONFIG",
++                "i2cMasterPath", $i2cMasterPath);
++        }
++    }
++
+     my $vpds=$targetObj->findConnections($target,"I2C","VPD");
+     if ($vpds ne "" ) {
+         my $vpd = $vpds->{CONN}->[0];
+-- 
+1.8.2.2
+