From cc3f1edde23cbb8a70d00bde8cbbb6815e9a4383 Mon Sep 17 00:00:00 2001 From: Brian Stegmiller Date: Tue, 15 Aug 2017 09:38:28 -0500 Subject: OCC: Hostboot handles ECC size in firdata Change-Id: Ifa63f04bb83e5dea0cff3beae38753b910f6d877 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44633 Tested-by: FSP CI Jenkins Reviewed-by: Benjamin J. Weisenbeck Reviewed-by: Zane C. Shelley Reviewed-by: Brian J. Stegmiller Reviewed-by: William A. Bryan Reviewed-by: Martha Broyles --- src/occ_gpe0/firdata/firData.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/occ_gpe0/firdata') diff --git a/src/occ_gpe0/firdata/firData.c b/src/occ_gpe0/firdata/firData.c index f87f9d5..6906b2e 100644 --- a/src/occ_gpe0/firdata/firData.c +++ b/src/occ_gpe0/firdata/firData.c @@ -163,8 +163,13 @@ bool FirData_addRegToPnor( FirData_t * io_fd, PNOR_Trgt_t * io_pTrgt, break; } + // Skip zero value registers. + if ( 0 == reg.val ) break; - if ( 0 == reg.val ) break; // Skip zero value registers. + // Skip chiplet global checkstop registers if only reporting + // xstop Broadcast via OOB + if ( ((i_addr & 0x00FFFFFF) == 0x040000) && + ((reg.val & 0x3FFFFFFFFFFFFFFF) == 0) ) break; #ifdef DEBUG_PRD_CHKSTOP_ANALYSIS TRAC_IMP("addRegToPnor: got scom value, addr=0x%08X value=0x%08X %08X", @@ -1217,7 +1222,6 @@ int32_t FirData_init( FirData_t * io_fd, int32_t rc = SUCCESS; uint32_t sz_hData = sizeof(HOMER_Data_t); - uint32_t sz_pnoNoEcc = 0; uint32_t sz_u32 = sizeof(uint32_t); uint32_t sz_u64 = sizeof(uint64_t); @@ -1259,11 +1263,11 @@ int32_t FirData_init( FirData_t * io_fd, break; /* nothing to analyze. */ } - /* The actual maximum PNOR size may possibly be less then the PNOR data */ - /* buffer. If so, adjust maximum size. */ - sz_pnoNoEcc = (io_fd->hData->pnorInfo.pnorSize / 9) * 8; - if ( sz_pnoNoEcc < io_fd->maxPBufSize ) - io_fd->maxPBufSize = sz_pnoNoEcc; + /* The actual max PNOR size may possibly be less then the PNOR data */ + /* buffer. If so, adjust maximum size. Hostboot already handled ECC.*/ + /* We have to use smaller of what OCC or Hostboot has. */ + if ( io_fd->hData->pnorInfo.pnorSize < io_fd->maxPBufSize ) + io_fd->maxPBufSize = io_fd->hData->pnorInfo.pnorSize; /* Initialize the PNOR header data. */ PNOR_Data_t pData; -- cgit v1.2.1