Skip to content

Commit

Permalink
Support reading from EECACHE during runtime
Browse files Browse the repository at this point in the history
To support VPD accesses at runtime we had to add support to access
the information in the EECACHE section of pnor during runtime. To
do this we copy the contents of the EECACHE section into reserved
memory during the runtime setup steps of hostboot. Then when HBRT
is loaded we will process that EECACHE section and built up a map
that will allow read/write accesses to the eecache section just
like during the IPL.

Change-Id: I2d08c883e6c09c3194d85abe141c35bb2b76b126
RTC: 204341
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79985
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: Glenn Miles <milesg@ibm.com>
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
  • Loading branch information
crgeddes authored and dcrowell77 committed Jul 17, 2019
1 parent e7f8781 commit 73acf95
Show file tree
Hide file tree
Showing 15 changed files with 941 additions and 466 deletions.
6 changes: 6 additions & 0 deletions src/include/usr/i2c/eepromddreasoncodes.H
Expand Up @@ -58,6 +58,8 @@ enum eepromModuleId
EEPROM_CLEAR_EECACHE = 0x08,
EEPROM_CACHE_PERFORM_OP = 0x09,
EEPROM_INVALIDATE_CACHE = 0x0A,
EEPROM_RESOLVE_SOURCE = 0x0B,
EEPROM_CACHE_INIT_RT = 0x0C,
};

/**
Expand Down Expand Up @@ -92,6 +94,10 @@ enum eepromReasonCode
// 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
EEPROM_CACHE_NO_VPD_IN_RSV_MEM = EEPROM_COMP_ID | 0x11, // When looking up the VPD section in reserved memory no entry was found.
EEPROM_DUPLICATE_CACHE_ENTRY = EEPROM_COMP_ID | 0x12 // While parsing eecache found in reserved memory we found at least two
// cache entries that had identical "unique" identifiers
// (see structs defined in eeprom_const.H)
};

enum UserDetailsTypes
Expand Down
4 changes: 4 additions & 0 deletions src/include/usr/vmmconst.h
Expand Up @@ -208,9 +208,13 @@ enum BlockPriority
#define VMM_MODULE_VPD_SIZE (512*KILOBYTE) /* must be 64KB aligned */
#define VMM_CENTAUR_VPD_SIZE (256*KILOBYTE) /* must be 64KB aligned */
#define VMM_DIMM_JEDEC_VPD_SIZE (256*KILOBYTE) /* must be 64KB aligned */
#ifndef CONFIG_SUPPORT_EEPROM_CACHING
#define VMM_RT_VPD_SIZE ( VMM_MODULE_VPD_SIZE + \
VMM_CENTAUR_VPD_SIZE + \
VMM_DIMM_JEDEC_VPD_SIZE )
#else
#define VMM_RT_VPD_SIZE (512*KILOBYTE) /* 64KB aligned (size EECACHE section size - ecc) */
#endif


/** Internode communication area outside of the HB image.
Expand Down

0 comments on commit 73acf95

Please sign in to comment.