diff options
author | Prem Shanker Jha <premjha2@in.ibm.com> | 2018-05-07 08:52:24 -0500 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2018-05-17 00:39:20 -0400 |
commit | be807f0fd7ec8730c82bbd424c61d410c62409a5 (patch) | |
tree | b79ac067376edab4074c5fb87897ab2301b37b67 /src/import/chips/p9/procedures/hwp | |
parent | d73b8bc3e960795825e7ada1ec2700800fee1fba (diff) | |
download | talos-sbe-be807f0fd7ec8730c82bbd424c61d410c62409a5.tar.gz talos-sbe-be807f0fd7ec8730c82bbd424c61d410c62409a5.zip |
PM: Fix FFDC collection for HWP p9_collect_suspend_ffdc.
Commit addresses some coding errors in HWP. As a result of these
FFDC variables were getting populated with register data. Commit
also adds HWP wrapper for assisting debug in cronus environment.
Key_Cronus_Test=PM_REGRESS
CQ: SW427994
Change-Id: I5acff6bf85b5cfb9b1a582cb879dcb282e9d6809
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58417
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58430
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.C | 357 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.H | 21 |
2 files changed, 199 insertions, 179 deletions
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.C b/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.C index 635a58a4..5a1528be 100644 --- a/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.C +++ b/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2017 */ +/* Contributors Listed Below - COPYRIGHT 2017,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -37,204 +37,219 @@ #define NUM_BYTE_RANGES 52 #define CME_OFF 0x00000000BADCE0FF - -const uint32_t byteranges[NUM_BYTE_RANGES] = -{ - 0x07, //PGPE XIR - 0x07, //PGPE XIR - 0x07, //PGPE XIR - 0x03, //PGPE SPR - 0x03, //PGPE SPR - 0x03, //PGPE SPR - 0x07, //SGPE XIR - 0x07, //SGPE XIR - 0x07, //SGPE XIR - 0x03, //SGPE SPR - 0x03, //SGPE SPR - 0x03, //SGPE SPR - 0x03, //OCCS2 - 0x03, //OCCFLG - 0x00, 0x00, 0x00, 0x00, //OPIT2 C[0-3] - 0x00, 0x00, 0x00, 0x00, //OPIT2 C[4-7] - 0x00, 0x00, 0x00, 0x00, //OPIT2 C[8-11] - 0x00, 0x00, 0x00, 0x00, //OPIT2 C[12-15] - 0x00, 0x00, 0x00, 0x00, //OPIT2 C[16-19] - 0x00, 0x00, 0x00, 0x00, //OPIT2 C[20-23] - 0x01, //QCSR - 0x02, //CCSR - 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, //CME[0-5] IAR - 0x47, 0x47, 0x47, 0x47, 0x47, 0x47 //CME[6-11] IAR -}; // - -uint64_t extract(uint64_t data, uint32_t low, uint32_t high) +extern "C" { - uint32_t bitshift = (high - low) * 8; - return ((data >> (56 - (high << 3))) & (0xFFFFFFFFFFFFFFFF >> (56 - bitshift))); -} -void add_data(uint64_t l_data64, uint32_t& index, uint32_t& byte, uint32_t& scom, uint64_t* ffdcScoms) -{ - //first nibble hold2 low byte - uint32_t low = byteranges[index] >> 4; - //second nibble holds high byte - uint32_t high = byteranges[index] & 0xFF; - index++; - uint32_t length = (high - low) + 1; - //gets data between low and high byte inclusive - uint64_t data = extract(l_data64, low, high); - - if(byte - length < 0)//if length of data greater than remaining space in current local variable + const uint32_t byteranges[NUM_BYTE_RANGES] = + { + 0x07, //PGPE XIR + 0x07, //PGPE XIR + 0x07, //PGPE XIR + 0x03, //PGPE SPR + 0x03, //PGPE SPR + 0x03, //PGPE SPR + 0x07, //SGPE XIR + 0x07, //SGPE XIR + 0x07, //SGPE XIR + 0x03, //SGPE SPR + 0x03, //SGPE SPR + 0x03, //SGPE SPR + 0x03, //OCCS2 + 0x03, //OCCFLG + 0x00, 0x00, 0x00, 0x00, //OPIT2 C[0-3] + 0x00, 0x00, 0x00, 0x00, //OPIT2 C[4-7] + 0x00, 0x00, 0x00, 0x00, //OPIT2 C[8-11] + 0x00, 0x00, 0x00, 0x00, //OPIT2 C[12-15] + 0x00, 0x00, 0x00, 0x00, //OPIT2 C[16-19] + 0x00, 0x00, 0x00, 0x00, //OPIT2 C[20-23] + 0x01, // QCSR + 0x05, // CCSR 2B for QCSR 3B for CCSR and balance 3B are left unused + 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, //CME[0-5] IAR + 0x47, 0x47, 0x47, 0x47, 0x47, 0x47 //CME[6-11] IAR + }; // + +//------------------------------------------------------------------------------------------------------ + + uint64_t extract(uint64_t data, uint32_t low, uint32_t high) { - length -= byte; - ffdcScoms[scom] |= (data >> (length << 3)); //stores what will fit in current variable uint32_t bitshift = (high - low) * 8; - data &= (0xFFFFFFFFFFFFFFFF >> (56 - bitshift)); //sets up remaining data to be stored in next variable - scom++; - byte = 8; + return ((data >> (56 - (high << 3))) & (0xFFFFFFFFFFFFFFFF >> (56 - bitshift))); } - ffdcScoms[scom] |= (data << ((length - byte) << 3)); //stores data in current variable - byte -= length; +//------------------------------------------------------------------------------------------------------ - if(!byte) //if no space left in current local variable move to next + void add_data(uint64_t l_data64, uint32_t& index, uint32_t& byte, uint32_t& scom, uint64_t* ffdcScoms) { - scom++; - byte = 8; - } -} + //first nibble hold2 low byte + uint32_t low = byteranges[index] >> 4; + //second nibble holds high byte + uint32_t high = byteranges[index] & 0x0F; + index++; + uint32_t length = (high - low) + 1; + //gets data between low and high byte inclusive + uint64_t data = extract(l_data64, low, high); + + if(byte - length < 0)//if length of data greater than remaining space in current local variable + { + length -= byte; + ffdcScoms[scom] |= (data >> (length << 3)); //stores what will fit in current variable + uint32_t bitshift = (high - low) * 8; + data &= (0xFFFFFFFFFFFFFFFF >> (56 - bitshift)); //sets up remaining data to be stored in next variable + scom++; + byte = 8; + } -fapi2::ReturnCode -p9_collect_suspend_ffdc (const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target) -{ - FAPI_INF (">> p9_collect_suspend_ffdc.exe"); - uint32_t scom = 0; - uint32_t byte = 8; - uint64_t ffdcScoms[NUM_LOC_VARS]; - uint32_t index = 0; + ffdcScoms[scom] |= (data << ((byte - length) << 3)); //stores data in current variable + byte -= length; - fapi2::buffer<uint64_t> l_data64; - std::vector<uint64_t> ppe_regs; - uint32_t sbe_index; + if(!byte) //if no space left in current local variable move to next + { + scom++; + byte = 8; + } + } - for(sbe_index = 0; sbe_index < NUM_LOC_VARS; sbe_index++) +//------------------------------------------------------------------------------------------------------ + + fapi2::ReturnCode + p9_collect_suspend_ffdc ( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target ) { - ffdcScoms[sbe_index] = 0xDEADC0DEDEADC0DE; - } + FAPI_INF (">> p9_collect_suspend_ffdc.exe"); + uint32_t scom = 0; + uint32_t byte = 8; + uint64_t ffdcScoms[NUM_LOC_VARS]; + uint32_t index = 0; + uint32_t sbe_index; + + fapi2::buffer<uint64_t> l_data64; + std::vector<uint64_t> ppe_regs; + + //Init array meant for compressed FFDC collection with zero. + + for( sbe_index = 0; sbe_index < NUM_LOC_VARS; sbe_index++ ) + { + ffdcScoms[sbe_index] = 0x00; + } // SBE does not support ppe ffdc on DD1 #ifdef DD2 - ///Collect PGPE Data - p9_sbe_ppe_ffdc ( i_target, - PGPE_BASE_ADDRESS, - ppe_regs ); + ///Collect PGPE Data + p9_sbe_ppe_ffdc ( i_target, + PGPE_BASE_ADDRESS, + ppe_regs ); - for(sbe_index = 0; sbe_index < ppe_regs.size(); sbe_index++) - { - add_data(ppe_regs[sbe_index], index, byte, scom, ffdcScoms); - } + for(sbe_index = 0; sbe_index < ppe_regs.size(); sbe_index++) + { + add_data(ppe_regs[sbe_index], index, byte, scom, ffdcScoms); + } - //Collect SGPE Data - p9_sbe_ppe_ffdc ( i_target, - SGPE_BASE_ADDRESS, - ppe_regs ); + //Collect SGPE Data + p9_sbe_ppe_ffdc ( i_target, + SGPE_BASE_ADDRESS, + ppe_regs ); - for(sbe_index = 0; sbe_index < ppe_regs.size(); sbe_index++) - { - add_data(ppe_regs[sbe_index], index, byte, scom, ffdcScoms); - } + for(sbe_index = 0; sbe_index < ppe_regs.size(); sbe_index++) + { + add_data(ppe_regs[sbe_index], index, byte, scom, ffdcScoms); + } #else - // Each call to p9_sbe_ppe_ffdc would add REG_FFDC_IDX_MAX elements. - // These are defaulted in DD1 on SBE, so simply account for those in the - // ffdcScoms index by incrementing accordingly - index += 8; // (REG_FFDC_IDX_MAX * 2); + // Each call to p9_sbe_ppe_ffdc would add REG_FFDC_IDX_MAX elements. + // These are defaulted in DD1 on SBE, so simply account for those in the + // ffdcScoms index by incrementing accordingly + scom += 8; // (REG_FFDC_IDX_MAX * 2); + index = 12; #endif // DD2 - //Collect All other SCOMs - uint32_t scoms[NUM_SCOMS] = - { - PU_OCB_OCI_OCCS2_SCOM, - PU_OCB_OCI_OCCFLG_SCOM, - PU_OCB_OCI_OPIT2C0_SCOM, PU_OCB_OCI_OPIT2C1_SCOM, PU_OCB_OCI_OPIT2C2_SCOM, PU_OCB_OCI_OPIT2C3_SCOM, - PU_OCB_OCI_OPIT2C4_SCOM, PU_OCB_OCI_OPIT2C5_SCOM, PU_OCB_OCI_OPIT2C6_SCOM, PU_OCB_OCI_OPIT2C7_SCOM, - PU_OCB_OCI_OPIT2C8_SCOM, PU_OCB_OCI_OPIT2C9_SCOM, PU_OCB_OCI_OPIT2C10_SCOM, PU_OCB_OCI_OPIT2C11_SCOM, - PU_OCB_OCI_OPIT2C12_SCOM, PU_OCB_OCI_OPIT2C13_SCOM, PU_OCB_OCI_OPIT2C14_SCOM, PU_OCB_OCI_OPIT2C15_SCOM, - PU_OCB_OCI_OPIT2C16_SCOM, PU_OCB_OCI_OPIT2C17_SCOM, PU_OCB_OCI_OPIT2C18_SCOM, PU_OCB_OCI_OPIT2C19_SCOM, - PU_OCB_OCI_OPIT2C20_SCOM, PU_OCB_OCI_OPIT2C21_SCOM, PU_OCB_OCI_OPIT2C22_SCOM, PU_OCB_OCI_OPIT2C23_SCOM, - PU_OCB_OCI_QCSR_SCOM, - PU_OCB_OCI_CCSR_SCOM - }; - - uint32_t getscom_index; - - for(getscom_index = 0; getscom_index < NUM_SCOMS; getscom_index++) - { - fapi2::getScom ( i_target, - scoms[getscom_index], - l_data64 ); - add_data(l_data64, index, byte, scom, ffdcScoms); + //Collect All other SCOMs + uint32_t scoms[NUM_SCOMS] = + { + PU_OCB_OCI_OCCS2_SCOM, + PU_OCB_OCI_OCCFLG_SCOM, + PU_OCB_OCI_OPIT2C0_SCOM, PU_OCB_OCI_OPIT2C1_SCOM, PU_OCB_OCI_OPIT2C2_SCOM, PU_OCB_OCI_OPIT2C3_SCOM, + PU_OCB_OCI_OPIT2C4_SCOM, PU_OCB_OCI_OPIT2C5_SCOM, PU_OCB_OCI_OPIT2C6_SCOM, PU_OCB_OCI_OPIT2C7_SCOM, + PU_OCB_OCI_OPIT2C8_SCOM, PU_OCB_OCI_OPIT2C9_SCOM, PU_OCB_OCI_OPIT2C10_SCOM, PU_OCB_OCI_OPIT2C11_SCOM, + PU_OCB_OCI_OPIT2C12_SCOM, PU_OCB_OCI_OPIT2C13_SCOM, PU_OCB_OCI_OPIT2C14_SCOM, PU_OCB_OCI_OPIT2C15_SCOM, + PU_OCB_OCI_OPIT2C16_SCOM, PU_OCB_OCI_OPIT2C17_SCOM, PU_OCB_OCI_OPIT2C18_SCOM, PU_OCB_OCI_OPIT2C19_SCOM, + PU_OCB_OCI_OPIT2C20_SCOM, PU_OCB_OCI_OPIT2C21_SCOM, PU_OCB_OCI_OPIT2C22_SCOM, PU_OCB_OCI_OPIT2C23_SCOM, + PU_OCB_OCI_QCSR_SCOM, + PU_OCB_OCI_CCSR_SCOM + }; + + uint32_t getscom_index; + + for(getscom_index = 0; getscom_index < NUM_SCOMS; getscom_index++) + { + fapi2::getScom ( i_target, + scoms[getscom_index], + l_data64 ); - } + add_data(l_data64, index, byte, scom, ffdcScoms); - //Collect CME IARs - const uint32_t SSHSRC[12] = - { - EX_0_PPM_SSHSRC, EX_1_PPM_SSHSRC, EX_2_PPM_SSHSRC, EX_3_PPM_SSHSRC, EX_4_PPM_SSHSRC, EX_5_PPM_SSHSRC, - EX_6_PPM_SSHSRC, EX_7_PPM_SSHSRC, EX_8_PPM_SSHSRC, EX_9_PPM_SSHSRC, EX_10_PPM_SSHSRC, EX_11_PPM_SSHSRC - }; - const uint32_t DBGPRO[12] = - { - EX_0_PPE_XIDBGPRO, EX_1_PPE_XIDBGPRO, EX_2_PPE_XIDBGPRO, EX_3_PPE_XIDBGPRO, EX_4_PPE_XIDBGPRO, EX_5_PPE_XIDBGPRO, - EX_6_PPE_XIDBGPRO, EX_7_PPE_XIDBGPRO, EX_8_PPE_XIDBGPRO, EX_9_PPE_XIDBGPRO, EX_10_PPE_XIDBGPRO, EX_11_PPE_XIDBGPRO - }; + } - uint32_t ex; + //Collect CME IARs + const uint32_t SSHSRC[12] = + { + EX_0_PPM_SSHSRC, EX_1_PPM_SSHSRC, EX_2_PPM_SSHSRC, EX_3_PPM_SSHSRC, EX_4_PPM_SSHSRC, EX_5_PPM_SSHSRC, + EX_6_PPM_SSHSRC, EX_7_PPM_SSHSRC, EX_8_PPM_SSHSRC, EX_9_PPM_SSHSRC, EX_10_PPM_SSHSRC, EX_11_PPM_SSHSRC + }; + const uint32_t DBGPRO[12] = + { + EX_0_PPE_XIDBGPRO, EX_1_PPE_XIDBGPRO, EX_2_PPE_XIDBGPRO, EX_3_PPE_XIDBGPRO, EX_4_PPE_XIDBGPRO, EX_5_PPE_XIDBGPRO, + EX_6_PPE_XIDBGPRO, EX_7_PPE_XIDBGPRO, EX_8_PPE_XIDBGPRO, EX_9_PPE_XIDBGPRO, EX_10_PPE_XIDBGPRO, EX_11_PPE_XIDBGPRO + }; - for(ex = 0; ex < 12; ex++) - { - fapi2::getScom( i_target, - SSHSRC[ex], - l_data64 ); + uint32_t ex; - if(!(l_data64 >> 63))//is this ex stop gated? + for(ex = 0; ex < 12; ex++) { - fapi2::getScom( i_target, - DBGPRO[ex], - l_data64 ); - add_data(l_data64, index, byte, scom, ffdcScoms); - } - else - { - add_data(CME_OFF, index, byte, scom, ffdcScoms); //inject data which informs cme is offline + fapi2::getScom( i_target, + SSHSRC[ex], + l_data64 ); + + if(!(l_data64 >> 63))//is this ex stop gated? + { + fapi2::getScom( i_target, + DBGPRO[ex], + l_data64 ); + add_data(l_data64, index, byte, scom, ffdcScoms); + } + else + { + add_data(CME_OFF, index, byte, scom, ffdcScoms); //inject data which informs cme is offline + } } + + //Write out compacted SCOM data + FAPI_ASSERT ( false, + fapi2::SUSPEND_FFDC() + .set_PROC_CHIP_TARGET (i_target) + .set_PGPE_XSR_AND_IAR (ffdcScoms[0]) + .set_PGPE_IR_AND_EDR (ffdcScoms[1]) + .set_PGPE_LR_AND_SPRG0 (ffdcScoms[2]) + .set_PGPE_SRR0_AND_SRR1 (ffdcScoms[3]) + .set_SGPE_XSR_AND_IAR (ffdcScoms[4]) + .set_SGPE_IR_AND_EDR (ffdcScoms[5]) + .set_SGPE_LR_AND_SPRG0 (ffdcScoms[6]) + .set_SGPE_SRR0_AND_SRR1 (ffdcScoms[7]) + .set_OCCS2_AND_OCCFLG (ffdcScoms[8]) + .set_OPIT2C_0_THROUGH_7_B0 (ffdcScoms[9]) + .set_OPIT2C_8_THROUGH_15_B0 (ffdcScoms[10]) + .set_OPIT2C_16_THROUGH_23_B0 (ffdcScoms[11]) + .set_QCSR_B0_TO_B1_AND_CCSR_B0_TO_B2_AND_3B_EMPTY (ffdcScoms[12]) + .set_CME0_IAR_AND_CME1_IAR (ffdcScoms[13]) + .set_CME2_IAR_AND_CME3_IAR (ffdcScoms[14]) + .set_CME4_IAR_AND_CME5_IAR (ffdcScoms[15]) + .set_CME6_IAR_AND_CME7_IAR (ffdcScoms[16]) + .set_CME8_IAR_AND_CME9_IAR (ffdcScoms[17]) + .set_CME10_IAR_AND_CME11_IAR (ffdcScoms[18]), + "Suspend FFDC"); + + fapi_try_exit: + FAPI_INF ("<< p9_collect_suspend_ffdc"); + + return fapi2::current_err; } - //Write out compacted SCOM data - FAPI_ASSERT ( false, - fapi2::SUSPEND_FFDC() - .set_PROC_CHIP_TARGET (i_target) - .set_PGPE_XSR_AND_IAR (ffdcScoms[0]) - .set_PGPE_IR_AND_EDR (ffdcScoms[1]) - .set_PGPE_LR_AND_SPRG0 (ffdcScoms[2]) - .set_PGPE_SRR0_AND_SRR1 (ffdcScoms[3]) - .set_SGPE_XSR_AND_IAR (ffdcScoms[4]) - .set_SGPE_IR_AND_EDR (ffdcScoms[5]) - .set_SGPE_LR_AND_SPRG0 (ffdcScoms[6]) - .set_SGPE_SRR0_AND_SRR1 (ffdcScoms[7]) - .set_OCCS2_AND_OCCFLG (ffdcScoms[8]) - .set_OPIT2C_0_THROUGH_7_B0 (ffdcScoms[9]) - .set_OPIT2C_8_THROUGH_15_B0 (ffdcScoms[10]) - .set_OPIT2C_16_THROUGH_23_B0 (ffdcScoms[11]) - .set_QCSR_B0_TO_B1_AND_CCSR_B0_TO_B2_AND_3B_EMPTY (ffdcScoms[12]) - .set_CME0_IAR_AND_CME1_IAR (ffdcScoms[13]) - .set_CME2_IAR_AND_CME3_IAR (ffdcScoms[14]) - .set_CME4_IAR_AND_CME5_IAR (ffdcScoms[15]) - .set_CME6_IAR_AND_CME7_IAR (ffdcScoms[16]) - .set_CME8_IAR_AND_CME9_IAR (ffdcScoms[17]) - .set_CME10_IAR_AND_CME11_IAR (ffdcScoms[18]), - "Suspend FFDC"); - -fapi_try_exit: - FAPI_INF ("<< p9_collect_suspend_ffdc"); - return fapi2::current_err; -} +} //extern "C" diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.H b/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.H index 2fed207b..abad91fb 100644 --- a/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.H +++ b/src/import/chips/p9/procedures/hwp/lib/p9_collect_suspend_ffdc.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2017 */ +/* Contributors Listed Below - COPYRIGHT 2017,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -41,11 +41,14 @@ // Includes //------------------------------------------------------------------------------ +extern "C" +{ + /// @typedef p9_collect_suspend_ffdc_FP_t /// function pointer typedef definition for HWP call support -typedef fapi2::ReturnCode (*p9_collect_suspend_ffdc_FP_t) ( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& -); + typedef fapi2::ReturnCode (*p9_collect_suspend_ffdc_FP_t) ( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& + ); //------------------------------------------------------------------------------ // Function prototypes @@ -58,9 +61,11 @@ typedef fapi2::ReturnCode (*p9_collect_suspend_ffdc_FP_t) ( /// On failure, a ReturnCode object with the input HWP return code /// and partial or default FFDC added to it /// -fapi2::ReturnCode -p9_collect_suspend_ffdc ( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target -); + fapi2::ReturnCode + p9_collect_suspend_ffdc ( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target + ); + +} #endif // __P9_COLLECT_SUSPEND_FFDC_H__ |