diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2019-06-06 15:27:16 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2019-06-24 10:26:01 -0500 |
commit | 1ac1e9584462a41e204ffaae13f086b0a22c6cf8 (patch) | |
tree | b98dd53baa9c7db49f006d7bb0e0a0372911aa14 /src/include | |
parent | 5316f7dc08c6ebdbf96d93a9a17b97060a29d489 (diff) | |
download | talos-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.H | 19 | ||||
-rw-r--r-- | src/include/usr/i2c/eepromddreasoncodes.H | 5 |
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 |