summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2019-06-06 15:27:16 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2019-06-24 10:26:01 -0500
commit1ac1e9584462a41e204ffaae13f086b0a22c6cf8 (patch)
treeb98dd53baa9c7db49f006d7bb0e0a0372911aa14 /src/include
parent5316f7dc08c6ebdbf96d93a9a17b97060a29d489 (diff)
downloadtalos-hostboot-1ac1e9584462a41e204ffaae13f086b0a22c6cf8.tar.gz
talos-hostboot-1ac1e9584462a41e204ffaae13f086b0a22c6cf8.zip
Add interface to mark eeprom caches valid/invalid
There are certain scenarios where we might want to update the table of contents at the start of the EECACHE section in pnor to indicate we have decided that the cached copy of one of the eeproms is no longer valid. This commit adds the ability to mark a cache entry as either valid or invalid by calling setIsValidCacheEntry in the EEPROM namespace and tests to verify this works. Future commits will add this call to places it is needed. Change-Id: I6b7dc807b7dbcaca3efa298790f862bc2c5f9ec6 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/78494 Reviewed-by: Roland Veloz <rveloz@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/i2c/eeprom_const.H19
-rw-r--r--src/include/usr/i2c/eepromddreasoncodes.H5
2 files changed, 23 insertions, 1 deletions
diff --git a/src/include/usr/i2c/eeprom_const.H b/src/include/usr/i2c/eeprom_const.H
index e9e157757..ea09c4330 100644
--- a/src/include/usr/i2c/eeprom_const.H
+++ b/src/include/usr/i2c/eeprom_const.H
@@ -108,7 +108,7 @@ enum EECACHE_VERSION
*
* uniqueRecord is useful if you want to quickly compare the "unique"
* bits of a header entry which includes the target_huid, port, engine,
-* devAddr, mux_huid, and mux_select.
+* devAddr, mux_huid, and mux_select, and size
*
*/
union eepromRecordHeader
@@ -235,5 +235,22 @@ struct EepromInfo_t
}
};
+/**
+ * @brief Define a set of information that describes the
+ different virtual addresses associated with a given
+ cache entry
+ */
+struct RecordAddresses_t
+{
+ uint64_t header_entry_address;
+ uint64_t cache_entry_address;
+
+ RecordAddresses_t()
+ : header_entry_address(0),
+ cache_entry_address(0)
+ {
+ }
+};
+
}
#endif \ No newline at end of file
diff --git a/src/include/usr/i2c/eepromddreasoncodes.H b/src/include/usr/i2c/eepromddreasoncodes.H
index a2c7b1c83..df71e4be4 100644
--- a/src/include/usr/i2c/eepromddreasoncodes.H
+++ b/src/include/usr/i2c/eepromddreasoncodes.H
@@ -57,6 +57,7 @@ enum eepromModuleId
EEPROM_CACHE_EEPROM = 0x07,
EEPROM_CLEAR_EECACHE = 0x08,
EEPROM_CACHE_PERFORM_OP = 0x09,
+ EEPROM_INVALIDATE_CACHE = 0x0A,
};
/**
@@ -87,6 +88,10 @@ enum eepromReasonCode
EEPROM_NEW_DEVICE_DETECTED = EEPROM_COMP_ID | 0x0E, // While looking up a part, found that current EEPROM size does not
// match what we have seen in previous IPLs indicating a new part has
// been installed on the system.
+ EEPROM_CACHE_NOT_FOUND_IN_MAP = EEPROM_COMP_ID | 0x0F, // An entry we thought would be in the global map that keeps track of
+ // what eeproms have been cached was not found
+ EEPROM_CACHE_NOT_FOUND_IN_PNOR = EEPROM_COMP_ID | 0x10, // An entry we thought would be in the the EECACHE section of PNOR seems
+ // to be missing
};
enum UserDetailsTypes
OpenPOWER on IntegriCloud