Include Must-Fix Hostboot Items for 1.1 Release
diff --git a/openpower/package/hostboot/hostboot-0018-Fix-constant-refresh-of-vpd-cache.patch b/openpower/package/hostboot/hostboot-0018-Fix-constant-refresh-of-vpd-cache.patch
new file mode 100644
index 0000000..ac16f09
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0018-Fix-constant-refresh-of-vpd-cache.patch
@@ -0,0 +1,116 @@
+From 5f06da05527c3ef2d9ee709e912c5840eb366e87 Mon Sep 17 00:00:00 2001
+From: Dan Crowell <dcrowell@us.ibm.com>
+Date: Thu, 2 Apr 2015 12:29:45 -0500
+Subject: [PATCH 04/10] Fix constant refresh of vpd cache
+
+Code was inadvertantly detecting mismatched pnor cache contents
+on every boot.
+
+Change-Id: I631dc758e03316a28d13f6d19032c1a76e3cffc1
+(cherry picked from commit 0d95414e03ff337404a3e20fd421fd8b4272ebc5)
+---
+ src/usr/vpd/ipvpd.C | 18 ++++++++++++------
+ src/usr/vpd/ipvpd.H | 5 ++++-
+ src/usr/vpd/vpd.C | 2 +-
+ 3 files changed, 17 insertions(+), 8 deletions(-)
+
+diff --git a/src/usr/vpd/ipvpd.C b/src/usr/vpd/ipvpd.C
+index a0682d2..2cefb6e 100644
+--- a/src/usr/vpd/ipvpd.C
++++ b/src/usr/vpd/ipvpd.C
+@@ -397,6 +397,9 @@ errlHndl_t IpVpdFacade::cmpPnorToSeeprom ( TARGETING::Target * i_target,
+ l_dataSeeprom,
+ l_sizePnor ) != 0 )
+ {
++ TRACFCOMP( g_trac_vpd, "cmpPnorToSeeprom found mismatch for HUID %.8X 0x%X:0x%X", TARGETING::get_huid(i_target), i_record, i_keyword );
++ TRACFBIN( g_trac_vpd, "EEPROM", l_dataSeeprom, l_sizeSeeprom );
++ TRACFBIN( g_trac_vpd, "PNOR", l_dataPnor, l_sizePnor );
+ break;
+ }
+
+@@ -898,8 +901,9 @@ bool IpVpdFacade::hasVpdPresent( TARGETING::Target * i_target,
+ }
+
+ vpdPresent = recordPresent( recordName,
+- recordOffset,
+- i_target );
++ recordOffset,
++ i_target,
++ VPD::AUTOSELECT );
+
+ }while( 0 );
+
+@@ -918,7 +922,8 @@ bool IpVpdFacade::hasVpdPresent( TARGETING::Target * i_target,
+ // ------------------------------------------------------------------
+ bool IpVpdFacade::recordPresent( const char * i_record,
+ uint16_t & o_offset,
+- TARGETING::Target * i_target )
++ TARGETING::Target * i_target,
++ VPD::vpdCmdTarget i_location )
+ {
+ errlHndl_t err = NULL;
+ uint64_t tmpOffset = 0x0;
+@@ -946,7 +951,7 @@ bool IpVpdFacade::recordPresent( const char * i_record,
+ RECORD_BYTE_SIZE,
+ record,
+ i_target,
+- VPD::AUTOSELECT );
++ i_location );
+ tmpOffset += RECORD_BYTE_SIZE;
+
+ if( err )
+@@ -963,7 +968,7 @@ bool IpVpdFacade::recordPresent( const char * i_record,
+ RECORD_ADDR_BYTE_SIZE,
+ &o_offset,
+ i_target,
+- VPD::AUTOSELECT );
++ i_location );
+ if( err )
+ {
+ break;
+@@ -1003,7 +1008,8 @@ errlHndl_t IpVpdFacade::findRecordOffsetPnor ( const char * i_record,
+
+ matchFound = recordPresent( i_record,
+ offset,
+- i_target );
++ i_target,
++ i_args.location );
+
+ if( !matchFound )
+ {
+diff --git a/src/usr/vpd/ipvpd.H b/src/usr/vpd/ipvpd.H
+index 2350bdd..7c2090c 100644
+--- a/src/usr/vpd/ipvpd.H
++++ b/src/usr/vpd/ipvpd.H
+@@ -353,11 +353,14 @@ class IpVpdFacade
+ *
+ * @param[in] i_target - The target to retrieve the data for.
+ *
++ * @param[in] i_location - VPD location to fetch data from (PNOR/SEEPROM)
++ *
+ * @return bool - True if the record is found, False otherwise.
+ */
+ bool recordPresent( const char * i_record,
+ uint16_t & offset,
+- TARGETING::Target * i_target );
++ TARGETING::Target * i_target,
++ VPD::vpdCmdTarget i_location );
+
+ /**
+ * @brief This function will read the VPD TOC to find the offset where the
+diff --git a/src/usr/vpd/vpd.C b/src/usr/vpd/vpd.C
+index 3533af9..963025f 100755
+--- a/src/usr/vpd/vpd.C
++++ b/src/usr/vpd/vpd.C
+@@ -533,7 +533,7 @@ errlHndl_t ensureCacheIsInSync ( TARGETING::Target * i_target )
+ // If we did not match, we need to load SEEPROM VPD data into PNOR
+ if( l_matchPN && l_matchSN )
+ {
+- TRACFCOMP(g_trac_vpd,"VPD::ensureCacheIsInSync: PNOR_PN/SN = SEEPROM_PN/SN for target %.8X",TARGETING::get_huid(i_target));
++ TRACFCOMP(g_trac_vpd,"VPD::ensureCacheIsInSync: PNOR_PN/SN == SEEPROM_PN/SN for target %.8X",TARGETING::get_huid(i_target));
+ }
+ else
+ {
+--
+1.8.2.2
+