diff options
author | Caleb Palmer <cnpalmer@us.ibm.com> | 2015-08-04 15:11:45 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-08-26 21:45:16 -0500 |
commit | f1f91e02d2ce0703784f217f2ea542adf3c9e635 (patch) | |
tree | 533f9232a2839e184406064bb543ba2fe7d12ca8 /src | |
parent | d774efe81a106739311388eb78ec4be20fb1901a (diff) | |
download | talos-hostboot-f1f91e02d2ce0703784f217f2ea542adf3c9e635.tar.gz talos-hostboot-f1f91e02d2ce0703784f217f2ea542adf3c9e635.zip |
PRD: IPL CS Analysis Init HOMER Data
Change-Id: Ie35ad0ae8e8282f06e4b6bf882ec643138a88132
RTC: 132362
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19802
Tested-by: Jenkins Server
Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Depends-on: I6255033e5da9db9a4c917e70ee2e7adf0f444ad6
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/20083
Tested-by: Jenkins OP Build CI
Tested-by: Jenkins OP HW
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/diag/prdf/prdfWriteHomerFirData.H | 13 | ||||
-rw-r--r-- | src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C | 222 | ||||
-rwxr-xr-x | src/usr/diag/prdf/test/makefile | 9 | ||||
-rw-r--r-- | src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H | 262 | ||||
-rwxr-xr-x | src/usr/diag/prdf/test/prdf_hb_common_test.mk | 7 |
5 files changed, 434 insertions, 79 deletions
diff --git a/src/include/usr/diag/prdf/prdfWriteHomerFirData.H b/src/include/usr/diag/prdf/prdfWriteHomerFirData.H index eb98f96bd..f4e3590f0 100644 --- a/src/include/usr/diag/prdf/prdfWriteHomerFirData.H +++ b/src/include/usr/diag/prdf/prdfWriteHomerFirData.H @@ -28,13 +28,22 @@ namespace PRDF { +// enum to determine what hardware is currently initialized +enum HwInitialized_t +{ + MASTER_PROC_CORE, //master processor and master core + ALL_PROC_MASTER_CORE, //all processors and master core + ALL_PROC_MEM_MASTER_CORE, //all processors, all memory, and master core + ALL_HARDWARE //all processors, all memory, and all cores +}; + /** @brief Writes register lists and hardware config in the HOMER data for * the OCC to capture in the event of a system checkstop. * @param i_hBuf SRAM pointer to the beginning of the HOMER data buffer. * @param i_hBufSize Total size of the HOMER data buffer. * @return An error log on failure. NULL on success. */ -errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize ); - +errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize, + const HwInitialized_t i_curHw = ALL_HARDWARE ); }; // end namespace PRDF diff --git a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C index db6f6c565..808c11589 100644 --- a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C +++ b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C @@ -28,6 +28,7 @@ #include <prdfErrlUtil.H> #include <prdfPlatServices.H> #include <prdfTrace.H> +#include <prdfWriteHomerFirData.H> #include <fsi/fsiif.H> #include <pnor/pnorif.H> @@ -464,20 +465,17 @@ static uint64_t mba_id_reg[] = //------------------------------------------------------------------------------ -errlHndl_t getHwConfig( HOMER_Data_t & o_data ) +errlHndl_t getPnorInfo( HOMER_Data_t & o_data ) { - #define FUNC "[PRDF::getHwConfig] " + #define FUNC "[PRDF::getPnorInfo] " errlHndl_t errl = NULL; - o_data = HOMER_getData(); // Initializes data. - + //---------------------------------------------------------------------- + // Get the PNOR information. + //---------------------------------------------------------------------- do { - //---------------------------------------------------------------------- - // Get the PNOR information. - //---------------------------------------------------------------------- - PNOR::SectionInfo_t sectionInfo; errl = PNOR::getSectionInfo( PNOR::FIRDATA, sectionInfo ); if ( NULL != errl ) @@ -493,7 +491,23 @@ errlHndl_t getHwConfig( HOMER_Data_t & o_data ) o_data.pnorInfo.pnorSize = sectionInfo.size; o_data.pnorInfo.mmioOffset = pnorInfo.mmioOffset; o_data.pnorInfo.norWorkarounds = pnorInfo.norWorkarounds; + }while(0); + + return errl; + + #undef FUNC +} +//------------------------------------------------------------------------------ + +errlHndl_t getHwConfig( HOMER_Data_t & o_data, const HwInitialized_t i_curHw ) +{ + #define FUNC "[PRDF::getHwConfig] " + + errlHndl_t errl = NULL; + + do + { //---------------------------------------------------------------------- // Get hardware config information. //---------------------------------------------------------------------- @@ -547,41 +561,44 @@ errlHndl_t getHwConfig( HOMER_Data_t & o_data ) o_data.exMasks[procPos] |= 0x8000 >> exPos; } - // Iterate the connected MCSs. - TargetHandleList mcsList = getConnected( *procIt, TYPE_MCS ); - for ( TargetHandleList::iterator mcsIt = mcsList.begin(); - mcsIt != mcsList.end(); ++mcsIt ) + if (ALL_PROC_MEM_MASTER_CORE == i_curHw || ALL_HARDWARE == i_curHw) { - uint32_t mcsPos = getTargetPosition( *mcsIt ); - PRDF_ASSERT( mcsPos < MAX_MCS_PER_PROC ); - - o_data.mcsMasks[procPos] |= 0x80 >> mcsPos; - } - - // Iterate the connected MEMBUFs. - TargetHandleList membList = getConnected( *procIt, TYPE_MEMBUF ); - for ( TargetHandleList::iterator membIt = membList.begin(); - membIt != membList.end(); ++membIt ) - { - uint32_t membPos = getTargetPosition(*membIt); - PRDF_ASSERT( membPos < MAX_MEMB_PER_PROC ); - - o_data.membMasks[procPos] |= 0x80 >> membPos; + // Iterate the connected MCSs. + TargetHandleList mcsList = getConnected( *procIt, TYPE_MCS ); + for ( TargetHandleList::iterator mcsIt = mcsList.begin(); + mcsIt != mcsList.end(); ++mcsIt ) + { + uint32_t mcsPos = getTargetPosition( *mcsIt ); + PRDF_ASSERT( mcsPos < MAX_MCS_PER_PROC ); - // Get the MEMBUF FSI address. - getFsiLinkInfo( *membIt, fsiInfo ); - o_data.membFsiBaseAddr[procPos][membPos] = fsiInfo.baseAddr; + o_data.mcsMasks[procPos] |= 0x80 >> mcsPos; + } - // Iterate the connected MBAs. - TargetHandleList mbaList = getConnected( *membIt, TYPE_MBA ); - for ( TargetHandleList::iterator mbaIt = mbaList.begin(); - mbaIt != mbaList.end(); ++mbaIt ) + // Iterate the connected MEMBUFs. + TargetHandleList membList = getConnected(*procIt, TYPE_MEMBUF ); + for ( TargetHandleList::iterator membIt = membList.begin(); + membIt != membList.end(); ++membIt ) { - uint32_t mbaPos = getTargetPosition(*mbaIt); - uint32_t shift = membPos * MAX_MBA_PER_MEMBUF + mbaPos; - PRDF_ASSERT( shift < MAX_MBA_PER_PROC ); - - o_data.mbaMasks[procPos] |= 0x8000 >> shift; + uint32_t membPos = getTargetPosition(*membIt); + PRDF_ASSERT( membPos < MAX_MEMB_PER_PROC ); + + o_data.membMasks[procPos] |= 0x80 >> membPos; + + // Get the MEMBUF FSI address. + getFsiLinkInfo( *membIt, fsiInfo ); + o_data.membFsiBaseAddr[procPos][membPos] = fsiInfo.baseAddr; + + // Iterate the connected MBAs. + TargetHandleList mbaList = getConnected(*membIt, TYPE_MBA ); + for ( TargetHandleList::iterator mbaIt = mbaList.begin(); + mbaIt != mbaList.end(); ++mbaIt ) + { + uint32_t mbaPos = getTargetPosition(*mbaIt); + uint32_t shift = membPos * MAX_MBA_PER_MEMBUF + mbaPos; + PRDF_ASSERT( shift < MAX_MBA_PER_PROC ); + + o_data.mbaMasks[procPos] |= 0x8000 >> shift; + } } } } @@ -595,22 +612,15 @@ errlHndl_t getHwConfig( HOMER_Data_t & o_data ) //------------------------------------------------------------------------------ -errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize ) +errlHndl_t writeData( uint8_t * i_hBuf, size_t i_hBufSize, + const HwInitialized_t i_curHw, HOMER_Data_t & o_data ) { - #define FUNC "[PRDF::writeHomerFirData] " + #define FUNC "[PRDF::writeData] " errlHndl_t errl = NULL; do { - // Get the hardware configuration. - HOMER_Data_t data; - errl = getHwConfig( data ); - if ( NULL != errl ) - { - PRDF_ERR( FUNC "getHwConfig() failed" ); - break; - } // Get the ultimate buffer size. size_t s[MAX_TRGTS][MAX_REGS]; @@ -618,28 +628,34 @@ errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize ) size_t sz_hBuf = 0; - size_t sz_data = sizeof(data); sz_hBuf += sz_data; + size_t sz_data = sizeof(o_data); sz_hBuf += sz_data; s[PROC][GLBL] = sizeof(proc_glbl); sz_hBuf += s[PROC][GLBL]; s[PROC][FIR] = sizeof(proc_fir); sz_hBuf += s[PROC][FIR]; s[PROC][REG] = sizeof(proc_reg); sz_hBuf += s[PROC][REG]; s[EX][GLBL] = sizeof(ex_glbl); sz_hBuf += s[EX][GLBL]; s[EX][FIR] = sizeof(ex_fir); sz_hBuf += s[EX][FIR]; s[EX][REG] = sizeof(ex_reg); sz_hBuf += s[EX][REG]; - s[MCS][FIR] = sizeof(mcs_fir); sz_hBuf += s[MCS][FIR]; - s[MCS][REG] = sizeof(mcs_reg); sz_hBuf += s[MCS][REG]; - s[MEMB][GLBL] = sizeof(memb_glbl); sz_hBuf += s[MEMB][GLBL]; - s[MEMB][FIR] = sizeof(memb_fir); sz_hBuf += s[MEMB][FIR]; - s[MEMB][REG] = sizeof(memb_reg); sz_hBuf += s[MEMB][REG]; - s[MBA][FIR] = sizeof(mba_fir); sz_hBuf += s[MBA][FIR]; - s[MBA][REG] = sizeof(mba_reg); sz_hBuf += s[MBA][REG]; - s[MBA][IDFIR] = sizeof(mba_id_fir); sz_hBuf += s[MBA][IDFIR]; - s[MBA][IDREG] = sizeof(mba_id_reg); sz_hBuf += s[MBA][IDREG]; + + if ((ALL_PROC_MEM_MASTER_CORE == i_curHw) || (ALL_HARDWARE == i_curHw)) + { + s[MCS][FIR] = sizeof(mcs_fir); sz_hBuf += s[MCS][FIR]; + s[MCS][REG] = sizeof(mcs_reg); sz_hBuf += s[MCS][REG]; + s[MEMB][GLBL] = sizeof(memb_glbl); sz_hBuf += s[MEMB][GLBL]; + s[MEMB][FIR] = sizeof(memb_fir); sz_hBuf += s[MEMB][FIR]; + s[MEMB][REG] = sizeof(memb_reg); sz_hBuf += s[MEMB][REG]; + s[MBA][FIR] = sizeof(mba_fir); sz_hBuf += s[MBA][FIR]; + s[MBA][REG] = sizeof(mba_reg); sz_hBuf += s[MBA][REG]; + s[MBA][IDFIR] = sizeof(mba_id_fir); sz_hBuf += s[MBA][IDFIR]; + s[MBA][IDREG] = sizeof(mba_id_reg); sz_hBuf += s[MBA][IDREG]; + } // Verify data will fit in HOMER. if ( i_hBufSize < sz_hBuf ) { + PRDF_ERR( FUNC "Required data size %d is greater that available " "HOMER data %d", sz_hBuf, i_hBufSize ); + /*@ * @errortype * @reasoncode PRDF_INVALID_CONFIG @@ -663,32 +679,89 @@ errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize ) for ( uint32_t c = FIRST_TRGT; c < MAX_TRGTS; c++ ) { - data.counts[c][GLBL] = s[c][GLBL] / u32; - data.counts[c][FIR] = s[c][FIR] / u32; - data.counts[c][REG] = s[c][REG] / u32; - data.counts[c][IDFIR] = s[c][IDFIR] / u64; - data.counts[c][IDREG] = s[c][IDREG] / u64; + o_data.counts[c][GLBL] = s[c][GLBL] / u32; + o_data.counts[c][FIR] = s[c][FIR] / u32; + o_data.counts[c][REG] = s[c][REG] / u32; + o_data.counts[c][IDFIR] = s[c][IDFIR] / u64; + o_data.counts[c][IDREG] = s[c][IDREG] / u64; } // Add everything to the buffer. uint32_t idx = 0; - memcpy( &i_hBuf[idx], &data, sz_data ); idx += sz_data; + memcpy( &i_hBuf[idx], &o_data, sz_data ); idx += sz_data; memcpy( &i_hBuf[idx], proc_glbl, s[PROC][GLBL] ); idx += s[PROC][GLBL]; memcpy( &i_hBuf[idx], proc_fir, s[PROC][FIR] ); idx += s[PROC][FIR]; memcpy( &i_hBuf[idx], proc_reg, s[PROC][REG] ); idx += s[PROC][REG]; memcpy( &i_hBuf[idx], ex_glbl, s[EX][GLBL] ); idx += s[EX][GLBL]; memcpy( &i_hBuf[idx], ex_fir, s[EX][FIR] ); idx += s[EX][FIR]; memcpy( &i_hBuf[idx], ex_reg, s[EX][REG] ); idx += s[EX][REG]; - memcpy( &i_hBuf[idx], mcs_fir, s[MCS][FIR] ); idx += s[MCS][FIR]; - memcpy( &i_hBuf[idx], mcs_reg, s[MCS][REG] ); idx += s[MCS][REG]; - memcpy( &i_hBuf[idx], memb_glbl, s[MEMB][GLBL] ); idx += s[MEMB][GLBL]; - memcpy( &i_hBuf[idx], memb_fir, s[MEMB][FIR] ); idx += s[MEMB][FIR]; - memcpy( &i_hBuf[idx], memb_reg, s[MEMB][REG] ); idx += s[MEMB][REG]; - memcpy( &i_hBuf[idx], mba_fir, s[MBA][FIR] ); idx += s[MBA][FIR]; - memcpy( &i_hBuf[idx], mba_reg, s[MBA][REG] ); idx += s[MBA][REG]; - memcpy( &i_hBuf[idx], mba_id_fir, s[MBA][IDFIR] ); idx += s[MBA][IDFIR]; - memcpy( &i_hBuf[idx], mba_id_reg, s[MBA][IDREG] ); idx += s[MBA][IDREG]; + + if ((ALL_PROC_MEM_MASTER_CORE == i_curHw) || (ALL_HARDWARE == i_curHw)) + { + memcpy( &i_hBuf[idx], mcs_fir, s[MCS][FIR] ); + idx += s[MCS][FIR]; + memcpy( &i_hBuf[idx], mcs_reg, s[MCS][REG] ); + idx += s[MCS][REG]; + memcpy( &i_hBuf[idx], memb_glbl, s[MEMB][GLBL] ); + idx += s[MEMB][GLBL]; + memcpy( &i_hBuf[idx], memb_fir, s[MEMB][FIR] ); + idx += s[MEMB][FIR]; + memcpy( &i_hBuf[idx], memb_reg, s[MEMB][REG] ); + idx += s[MEMB][REG]; + memcpy( &i_hBuf[idx], mba_fir, s[MBA][FIR] ); + idx += s[MBA][FIR]; + memcpy( &i_hBuf[idx], mba_reg, s[MBA][REG] ); + idx += s[MBA][REG]; + memcpy( &i_hBuf[idx], mba_id_fir, s[MBA][IDFIR] ); + idx += s[MBA][IDFIR]; + memcpy( &i_hBuf[idx], mba_id_reg, s[MBA][IDREG] ); + idx += s[MBA][IDREG]; + } + + }while(0); + + return errl; + + #undef FUNC +} + +//------------------------------------------------------------------------------ + +errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize, + const HwInitialized_t i_curHw ) +{ + #define FUNC "[PRDF::writeHomerFirData] " + + errlHndl_t errl = NULL; + + do + { + HOMER_Data_t data = HOMER_getData(); // Initializes data + + // Get the PNOR information + errl = getPnorInfo( data ); + if ( NULL != errl ) + { + PRDF_ERR( FUNC "getPnorInfo() failed" ); + break; + } + + // Get the hardware configuration + errl = getHwConfig( data, i_curHw ); + if ( NULL != errl ) + { + PRDF_ERR( FUNC "getHwConfig() failed" ); + break; + } + + // Write the HOMER data + errl = writeData( i_hBuf, i_hBufSize, i_curHw, data ); + if ( NULL != errl ) + { + PRDF_ERR( FUNC "writeData() failed" ); + break; + } } while (0); @@ -700,6 +773,7 @@ errlHndl_t writeHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize ) return errl; #undef FUNC + } }; // end namespace PRDF diff --git a/src/usr/diag/prdf/test/makefile b/src/usr/diag/prdf/test/makefile index b9229e11d..6119a5615 100755 --- a/src/usr/diag/prdf/test/makefile +++ b/src/usr/diag/prdf/test/makefile @@ -33,7 +33,9 @@ include prdf_hb_common_test.mk #------------------------------------------------------------------------------ # paths #------------------------------------------------------------------------------ -PRD_USR_PATH = ${ROOTPATH}/src/usr/diag/prdf +PRD_SRC_PATH = ${ROOTPATH}/src/usr/diag/prdf + +VPATH += ${PRD_SRC_PATH}/occ_firdata #------------------------------------------------------------------------------ # objects @@ -41,6 +43,11 @@ PRD_USR_PATH = ${ROOTPATH}/src/usr/diag/prdf OBJS += prdfsimMfgSync.o OBJS += prdfsimFspSyncSvc.o +ifneq (${HOSTBOOT_RUNTIME},1) +OBJS += prdfWriteHomerFirData.o +TESTS += prdfTest_WriteHomerFir.H +endif + TESTS += prdfTest_MfgSync.H include ${ROOTPATH}/config.mk diff --git a/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H b/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H new file mode 100644 index 000000000..c2d40bcdf --- /dev/null +++ b/src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H @@ -0,0 +1,262 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/diag/prdf/test/prdfTest_WriteHomerFir.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __TEST_PRDFWRITEHOMERFIR_H +#define __TEST_PRDFWRITEHOMERFIR_H + +/** + * @file prdfTest_WriteHomerFir.H + * + * @brief prdf testing writeHomerFirData() + */ + +#ifdef __HOSTBOOT_MODULE + #include <cxxtest/TestSuite.H> + #include <errl/errlentry.H> + #include <errl/errlmanager.H> +#else + #include <cxxtest/TestSuite.h> + #include <fsp/FipsGlobalFixture.H> + #include <errlentry.H> +#endif + +#include <prdfTrace.H> +#include <prdfMain.H> +#include "prdfsimMacros.H" +#include <homerData_common.h> +#include <prdfWriteHomerFirData.H> + +namespace PRDF +{ +// these functions from prdfWriteHomerFirData.C are needed for the +// fakeWriteHomerFirData() function +errlHndl_t getHwConfig( HOMER_Data_t & o_data, const HwInitialized_t i_curHw ); +errlHndl_t writeData( uint8_t * i_hBuf, size_t i_hBufSize, + const HwInitialized_t i_curHw, HOMER_Data_t & o_data ); +}; + +class WriteHomerFir: public CxxTest::TestSuite +{ +private: + + //faked getPnorInfo() function to accommodate unsupported getSectioninfo() + void fakeGetPnorInfo( HOMER_Data_t & o_data ) + { + o_data.pnorInfo.pnorOffset = 0; + o_data.pnorInfo.pnorSize = 0; + o_data.pnorInfo.mmioOffset = 0; + o_data.pnorInfo.norWorkarounds = 0; + } + +//------------------------------------------------------------------------------ + + // faked writeHomerFirData() function since getSectionInfo() in + // getPnorInfo() is unsupported during CxxTest cases + errlHndl_t fakeWriteHomerFirData( uint8_t * i_hBuf, size_t i_hBufSize, + const PRDF::HwInitialized_t i_curHw ) + { + using namespace PRDF; + + errlHndl_t errl = NULL; + + do + { + HOMER_Data_t data = HOMER_getData(); // Initializes data + + // Get the PNOR information, faked function + fakeGetPnorInfo( data ); + + // Get the hardware configuration + errl = getHwConfig( data, i_curHw ); + if ( NULL != errl ) + { + TS_FAIL("getHwConfig() failed"); + break; + } + + // Write the HOMER data + errl = writeData( i_hBuf, i_hBufSize, i_curHw, data ); + if ( NULL != errl ) + { + TS_FAIL("writeData() failed"); + break; + } + + } while (0); + + if ( NULL != errl ) + { + errl->collectTrace( PRDF_COMP_NAME, 512 ); + } + + return errl; + } + +//------------------------------------------------------------------------------ + + // check if data exists in HOMER when it should not + void checkHomerData(HOMER_Data_t d, const PRDF::HwInitialized_t i_curHw) + { + using namespace PRDF; + + if (MASTER_PROC_CORE == i_curHw || ALL_PROC_MASTER_CORE == i_curHw) + { + // check if mcs, membuf, or mba data is available + for (uint32_t i = 0; i < PRDF::MAX_PROC_PER_NODE; i++) + { + // mcs + if (d.mcsMasks[i] != 0) + { + TS_FAIL("ERROR: MCS should not be available. " + "(MCS: 0x%02x)", d.mcsMasks[i]); + break; + } + + // membuf + if (d.membMasks[i] != 0) + { + TS_FAIL("ERROR: MEMBUF should not be available. " + "(MEMBUF: 0x%02x)", d.membMasks[i]); + break; + } + + // mba + if (d.mbaMasks[i] != 0) + { + TS_FAIL("ERROR: MBA should not be available. " + "(MBA: 0x%02x)", d.mbaMasks[i]); + break; + } + } + } + } + +//------------------------------------------------------------------------------ + +public: + + uint8_t hBuf[3072]; + + // called at the beginning of each test + void setUp() + { + memset(hBuf, 0x00, sizeof(hBuf)); + } + +//------------------------------------------------------------------------------ + + // test when the master processor and core are the configured hw + void TestWriteHomerMasterProcCore(void) + { + using namespace PRDF; + + TS_TRACE("- Write Homer Test 1 - Master Proc Core - Start -"); + + errlHndl_t errl = fakeWriteHomerFirData(hBuf, sizeof(hBuf), + MASTER_PROC_CORE); + if (NULL != errl) + { + TS_FAIL("ERROR: writeHomerFirData failed."); + } + + HOMER_Data_t * d = reinterpret_cast<HOMER_Data_t *>(hBuf); + checkHomerData(*d, MASTER_PROC_CORE); + + TS_TRACE("- Write Homer Test 1 - Master Proc Core - End-"); + } + +//------------------------------------------------------------------------------ + + // test when all processors and the master core are the configured hw + void TestWriteHomerAllProcMasterCore(void) + { + using namespace PRDF; + + TS_TRACE("- Write Homer Test 2 - All Proc Master Core - Start -"); + + errlHndl_t errl = fakeWriteHomerFirData(hBuf, sizeof(hBuf), + ALL_PROC_MASTER_CORE); + if (NULL != errl) + { + TS_FAIL("ERROR: writeHomerFirData failed."); + } + + HOMER_Data_t * d = reinterpret_cast<HOMER_Data_t *>(hBuf); + checkHomerData(*d, ALL_PROC_MASTER_CORE); + + TS_TRACE("- Write Homer Test 2 - All Proc Master Core - End-"); + + } + +//------------------------------------------------------------------------------ + + // test when all processors, all memory, master core are the configured hw + void TestWriteHomerAllProcMemMasterCore(void) + { + using namespace PRDF; + + TS_TRACE("- Write Homer Test 3 - All Proc Mem Master Core - Start -"); + + errlHndl_t errl = fakeWriteHomerFirData(hBuf, sizeof(hBuf), + ALL_PROC_MEM_MASTER_CORE); + if (NULL != errl) + { + TS_FAIL("ERROR: writeHomerFirData failed."); + } + + HOMER_Data_t * d = reinterpret_cast<HOMER_Data_t *>(hBuf); + checkHomerData(*d, ALL_PROC_MEM_MASTER_CORE); + + TS_TRACE("- Write Homer Test 3 - All Proc Mem Master Core - End-"); + + } + +//------------------------------------------------------------------------------ + + // test when all hardware is configured + void TestWriteHomerAllHardware(void) + { + using namespace PRDF; + + TS_TRACE("- Write Homer Test 4 - All Hardware - Start -"); + + errlHndl_t errl = fakeWriteHomerFirData(hBuf, sizeof(hBuf), + ALL_HARDWARE); + if (NULL != errl) + { + TS_FAIL("ERROR: writeHomerFirData failed."); + } + + HOMER_Data_t * d = reinterpret_cast<HOMER_Data_t *>(hBuf); + checkHomerData(*d, ALL_HARDWARE); + + TS_TRACE("- Write Homer Test 4 - All Hardware - End-"); + + } + +//------------------------------------------------------------------------------ + +}; +#endif diff --git a/src/usr/diag/prdf/test/prdf_hb_common_test.mk b/src/usr/diag/prdf/test/prdf_hb_common_test.mk index 0d068bb48..d8fef5ffa 100755 --- a/src/usr/diag/prdf/test/prdf_hb_common_test.mk +++ b/src/usr/diag/prdf/test/prdf_hb_common_test.mk @@ -28,9 +28,11 @@ #------------------------------------------------------------------------------ PRD_USR_PATH = ${ROOTPATH}/src/usr/diag/prdf PRD_USR_TEST_PATH = ${ROOTPATH}/src/usr/diag/prdf/test +PRD_INC_PATH = ${ROOTPATH}/src/include/usr/diag/prdf + +EXTRAINCDIR += ${PRD_INC_PATH} +EXTRAINCDIR += ${PRD_INC_PATH}/common -EXTRAINCDIR += ${ROOTPATH}/src/include/usr/diag/prdf -EXTRAINCDIR += ${ROOTPATH}/src/include/usr/diag/prdf/common EXTRAINCDIR += ${PRD_USR_PATH} EXTRAINCDIR += ${PRD_USR_PATH}/common EXTRAINCDIR += ${PRD_USR_PATH}/common/plugins @@ -45,6 +47,7 @@ EXTRAINCDIR += ${PRD_USR_PATH}/common/plat/pegasus EXTRAINCDIR += ${PRD_USR_PATH}/common/mnfgtools EXTRAINCDIR += ${PRD_USR_PATH}/mnfgtools EXTRAINCDIR += ${PRD_USR_PATH}/framework/service +EXTRAINCDIR += ${PRD_USR_PATH}/occ_firdata EXTRAINCDIR += ${PRD_USR_PATH}/test EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer |