summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2014-02-19 14:05:55 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-21 10:52:12 -0600
commit86817c8c9cece2024c595c9781aac69a3ddf9e57 (patch)
tree119e813e2e6f91ceb58f3b7910187f9827a115c4 /src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C
parentf4d566d7f5e11db454b4ff4487425dd991095ed9 (diff)
downloadtalos-hostboot-86817c8c9cece2024c595c9781aac69a3ddf9e57.tar.gz
talos-hostboot-86817c8c9cece2024c595c9781aac69a3ddf9e57.zip
INITPROC: Hostboot SW247747 PCBS FSM & Global Xstop/Recoverable Tracing
Change-Id: I3dc94c6c6064c112c08857f816bb234e3dc34535 CQ:SW247747 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9002 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C')
-rw-r--r--src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C464
1 files changed, 231 insertions, 233 deletions
diff --git a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C
index 415346551..a487cbfa9 100644
--- a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C
+++ b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pcbs_init.C
@@ -20,8 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-
-// $Id: p8_pcbs_init.C,v 1.26 2014/01/29 17:54:51 cswenson Exp $
+// $Id: p8_pcbs_init.C,v 1.27 2014/02/17 03:00:35 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_pcbs_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -41,68 +40,15 @@
// *!
// *! Procedure Prereq:
// *! o System clocks are running
+// *|
+// *| buildfapiprcd -e "../../xml/error_info/p8_pcbs_init_errors.xml" -C p8_pm_utils.C p8_pcbs_init.C
// *!
//------------------------------------------------------------------------------
/// \file p8_pcbs_init.C
/// \brief Establish the Pstate 0 frequency from VPD
///
-///
-///
-/// \version --------------------------------------------------------------------------
-/// \version 1.8 rmaier 12/07/12 Removed PFET delay value calculation from pcbs_config since this is moved to p8_pfet_init.C
-/// \version --------------------------------------------------------------------------
-/// \version 1.7 rmaier 10/25/12 Removed PMGP1_REG Idle-Configuration since this function moved to p8_poreslw_init.C
-/// \version --------------------------------------------------------------------------
-/// \version 1.6 rmaier 10/12/12 Removed not needed scan0 writes to EX_PCBS_Pstate_Step_Target_Register EX_PCBS_OCC_Heartbeat_Reg
-/// \version --------------------------------------------------------------------------
-/// \version 1.5 rmaier 10/10/12 Changed value of EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165_scan0
-/// \version --------------------------------------------------------------------------
-/// \version 1.4 rmaier 10/08/12 Removed genBinStr and <string> function
-/// \version --------------------------------------------------------------------------
-/// \version 1.3 rmaier 10/04/12 Replacing genHex*Str function
-/// \version --------------------------------------------------------------------------
-/// \version 1.2 rmaier 09/20/12 Updated with new PCBS-addressing method
-/// \version --------------------------------------------------------------------------
-/// \version 1.1 rmaier 08/23/12 Renaming proc_ to p8_
-/// \version --------------------------------------------------------------------------
-/// \version 1.15 rmaier 08/15/12 Included review feedback Set7 (removed conditional compile statements )
-/// \version --------------------------------------------------------------------------
-/// \version 1.14 rmaier 08/03/12 Included review feedback Set4
-/// \version --------------------------------------------------------------------------
-/// \version 1.13 rmaier 08/02/12 Included review feedback Set4 partial
-/// \version --------------------------------------------------------------------------
-/// \version 1.12 rmaier 07/30/12 Included review feedback Set3 partial
-/// \version --------------------------------------------------------------------------
-/// \version 1.11 rmaier 07/23/12 Included review feedback Set2 partial
-/// \version --------------------------------------------------------------------------
-/// \version 1.10 rmaier 07/17/12 Included review feedback Set1
-/// \version --------------------------------------------------------------------------
-/// \version 1.7 rmaier 05/24/12 Included review feedback
-/// \version --------------------------------------------------------------------------
-/// \version 1.6 rmaier 03/27/12 Coded CONFIG mode
-/// \version --------------------------------------------------------------------------
-/// \version 1.5 rmaier 03/20/12 Coded INIT mode
-/// \version --------------------------------------------------------------------------
-/// \version 1.4 rmaier 03/13/12 Added modes-structure
-/// \version --------------------------------------------------------------------------
-/// \version 1.3 rmaier 01/11/12 Removed PFET values
-/// \version --------------------------------------------------------------------------
-/// \version 1.2 rmaier 12/05/11 Hardcoded valid chiplets ... need to be removed again fapiGetExistingChiplets => fapiGetChildChiplets
-/// \version --------------------------------------------------------------------------
-/// \version 1.1 rmaier 11/30/11 eCMD 12.2 adaptions. fapiGetExistingChiplets => fapiGetChildChiplets , Scan0 values set
-/// \version --------------------------------------------------------------------------
-/// \version 1.0 rmaier 10/17/11 Initial Version - RESET mode
-/// \version ---------------------------------------------------------------------------
-///
-/// \todo command order
-/// \todo next -- > initialize all pm_reg with scan-zero values upfront
-/// \todo Clear definition/doc of parms and attributes required at the beginning.
-/// \todo GP3 Changes Winkle fence changes
-/// \todo Review
-///
-/// High-level procedure flow:
-///
/// \verbatim
+/// High-level procedure flow:
///
/// Procedure Prereq:
/// - completed istep procedure
@@ -311,7 +257,7 @@
/// OLD-DOC - Restore to Deep Sleep and Deep Winkle upon reset
/// OLD-DOC - PMCR default value adjustment (Hardware flush 0 -> restore to 0 for
/// reset case) SCAN0
-/// OLD-DOC -For reset case, disable all “global_en” bits in PMCR and PMICR;
+/// OLD-DOC -For reset case, disable all “global_en” bits in PMCR and PMICR;
/// this keeps Global Pstate Request from occuring to the PMC until
/// it has been initialized. OCCFW to be do this
/// OLD-DOC - PMICR default value adjustment (Hardware flush 0 -> restore to 0 for
@@ -326,6 +272,7 @@
// Includes
// -----------------------------------------------------------------------------
#include "p8_pm.H"
+#include "p8_pm_utils.H"
#include "p8_pcbs_init.H"
@@ -404,7 +351,7 @@ CONST_UINT64_T( EX_ECOPFPUDly_REG_0x100F014C_scan0 , ULL(0
CONST_UINT64_T( EX_ECOPFPDDly_REG_0x100F014D_scan0 , ULL(0x00000000));
CONST_UINT64_T( EX_ECOPFVRET_REG_0x100F0150_scan0 , ULL(0x00000000));
CONST_UINT64_T( EX_FREQCNTL_0x100F0151_scan0 , ULL(0x32320000)); // "0011 0010 0011 0010 000000000000" ;
-CONST_UINT64_T( EX_DPLL_CPM_PARM_REG_0x100F0152_scan0 , ULL(0x00000200)); // "0000 0000 0000 0000 0000 0010 0000000" ;
+CONST_UINT64_T( EX_DPLL_CPM_PARM_REG_0x100F0152_scan0 , ULL(0x00004000)); // 64us for DPLL Lock replacement
CONST_UINT64_T( EX_PCBS_iVRM_Control_Status_Reg_0x100F0154_scan0 , ULL(0x00000000));
CONST_UINT64_T( EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155_scan0 , ULL(0x00000000));
CONST_UINT64_T( EX_PCBSPM_MODE_REG_0x100F0156_scan0 , ULL(0x01000000)); //"0000 0001 0000 0000 00" ;
@@ -449,16 +396,10 @@ pcbs_init ( const fapi::Target& i_target);
fapi::ReturnCode
pcbs_scan0(const Target &i_target, uint8_t i_ex_number);
-// FIR trace function
-fapi::ReturnCode
-glob_fir_trace ( const fapi::Target& i_target,
- const char * i_msg);
-
// ----------------------------------------------------------------------
// Function definitions
// ----------------------------------------------------------------------
-
// ----------------------------------------------------------------------
/**
* p8_pcbs_init calls the underlying routine based on mode parameter
@@ -482,6 +423,15 @@ p8_pcbs_init( const Target& i_target, uint32_t i_mode)
do
{
+ uint8_t ipl_mode = 0;
+ rc = FAPI_ATTR_GET(ATTR_IS_MPIPL, NULL, ipl_mode);
+ if (!rc.ok())
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_IS_MPIPL rc = 0x%x", (uint32_t)rc);
+ break;
+ }
+
+ FAPI_INF("IPL mode = %s", ipl_mode ? "MPIPL" : "NORMAL");
if ( i_mode == PM_CONFIG )
{
@@ -626,31 +576,41 @@ pcbs_init(const Target& i_target)
FAPI_DBG("Core number = %d", l_ex_number);
ex_offset = l_ex_number * 0x01000000;
-
- // Set DPLL Lock Replacement value (15:23) = 2 (eg bit 22 = 1)
- FAPI_INF ("Set DPLL Lock Replacement value of EX_DPLL_CPM_PARM_REG_0x1*0F0152 ");
-
- address = EX_DPLL_CPM_PARM_REG_0x100F0152 + ex_offset;
- GETSCOM(rc, i_target, address, data);
-
- e_rc = data.setBit(22);
- E_RC_CHECK(e_rc, rc);
-
- PUTSCOM(rc, i_target, address, data);
-
+
// ******************************************************************
- // - Enable DPLL Lock Replacement mode
+ // FSM trace
// ******************************************************************
- FAPI_INF("Set DPLL Lock Replacement mode");
-
- address = EX_PCBSPM_MODE_REG_0x100F0156 + ex_offset;
-
- GETSCOM(rc, i_target, address, data );
-
- e_rc |= data.setBit(7);
- E_RC_CHECK(e_rc, rc);
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "beginning of pbcs_init");
+ if (!rc.ok())
+ {
+ break;
+ }
- PUTSCOM(rc, i_target, address, data );
+// Removed in deference to the setting by SBE code
+// // Set DPLL Lock Replacement value (15:23) = 2 (eg bit 22 = 1)
+// FAPI_INF ("Set DPLL Lock Replacement value of EX_DPLL_CPM_PARM_REG_0x1*0F0152 ");
+//
+// address = EX_DPLL_CPM_PARM_REG_0x100F0152 + ex_offset;
+// GETSCOM(rc, i_target, address, data);
+//
+// e_rc = data.setBit(22);
+// E_RC_CHECK(e_rc, rc);
+//
+// PUTSCOM(rc, i_target, address, data);
+//
+// // ******************************************************************
+// // - Enable DPLL Lock Replacement mode
+// // ******************************************************************
+// FAPI_INF("Set DPLL Lock Replacement mode");
+//
+// address = EX_PCBSPM_MODE_REG_0x100F0156 + ex_offset;
+//
+// GETSCOM(rc, i_target, address, data );
+//
+// e_rc |= data.setBit(7);
+// E_RC_CHECK(e_rc, rc);
+//
+// PUTSCOM(rc, i_target, address, data );
// ******************************************************************
// - set PCBS_PM_PMGP1_REG_1
@@ -700,7 +660,17 @@ pcbs_init(const Target& i_target)
PUTSCOM(rc, i_target, address, data);
FAPI_IMP("WARNING: resonant clocking was NOT properly disabled");
FAPI_IMP(" Not currently failing until real resonant disable is available");
- }
+ }
+
+
+ // ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after ResClk");
+ if (!rc.ok())
+ {
+ break;
+ }
// ******************************************************************
// - Power Management Control Reg
@@ -728,6 +698,15 @@ pcbs_init(const Target& i_target)
FAPI_INF ("PMCR default value adjustment (Hardware flush 0) of EX_PCBS_Power_Management_Idle_Control_Reg_0x1*0F0158 " );
+
+ // ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after PMCR and PMICR");
+ if (!rc.ok())
+ {
+ break;
+ }
// ******************************************************************
// - Power Management Error Reg
@@ -748,7 +727,7 @@ pcbs_init(const Target& i_target)
chipHasPcbsErrReset);
if(rc)
{
- FAPI_ERR("Error querying Chip EC feature: "
+ FAPI_ERR("Error querying Chip EC feature: "
"ATTR_CHIP_EC_FEATURE_PCBS_ERR_RESET");
break;
}
@@ -761,6 +740,15 @@ pcbs_init(const Target& i_target)
{
// Write anything to the register to clear it.
PUTSCOM(rc, i_target, address, data);
+ }
+
+ // ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after Power Management Error Reg");
+ if (!rc.ok())
+ {
+ break;
}
} //END FOR
@@ -863,7 +851,7 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
chipHasPcbIntrFixed);
if(rc)
{
- FAPI_ERR("Error querying Chip EC feature: "
+ FAPI_ERR("Error querying Chip EC feature: "
"ATTR_CHIP_EC_FEATURE_PCBS_ERR_RESET");
break;
}
@@ -936,7 +924,7 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
//PUTSCOM(rc, i_target, address, data);
- rc = glob_fir_trace (i_target, "after setting force safe mode bit");
+ rc = p8_pm_glob_fir_trace (i_target, "after setting force safe mode bit");
if (!rc.ok())
{
break;
@@ -1016,10 +1004,19 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
} // Pstates enabled
// ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after setting force safe mode poll");
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ // ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after force safe mode poll");
+ rc = p8_pm_glob_fir_trace (i_target, "after force safe mode poll");
if (!rc.ok())
{
break;
@@ -1058,9 +1055,18 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
PUTSCOM(rc, i_target, address, data);
// ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after DPLL settings");
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ // ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after FREQ_CTRL_REG");
+ rc = p8_pm_glob_fir_trace (i_target, "after FREQ_CTRL_REG");
if (!rc.ok())
{
break;
@@ -1076,9 +1082,18 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
PUTSCOM(rc, i_target, address, data);
// ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after hold DPLL");
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ // ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after hold DPLL");
+ rc = p8_pm_glob_fir_trace (i_target, "after hold DPLL");
if (!rc.ok())
{
break;
@@ -1101,9 +1116,18 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
PUTSCOM(rc, i_target, address, data );
// ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after disable Pstates");
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ // ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after disable Pstates");
+ rc = p8_pm_glob_fir_trace (i_target, "after disable Pstates");
if (!rc.ok())
{
break;
@@ -1199,9 +1223,18 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
FAPI_INF ("Disabled RESCLK, set bit 22 of GP3_REG_0_RWXx1*0F0012 " );
// ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after setting force safe mode poll");
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ // ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after RESCLK");
+ rc = p8_pm_glob_fir_trace (i_target, "after RESCLK");
if (!rc.ok())
{
break;
@@ -1255,9 +1288,18 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
}
// ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after iVRM disable");
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ // ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after IVRM Disable");
+ rc = p8_pm_glob_fir_trace (i_target, "after IVRM Disable");
if (!rc.ok())
{
break;
@@ -1313,12 +1355,20 @@ pcbs_reset(const Target &i_target, struct_pcbs_val_init_type &pcbs_val_init)
// ******************************************************************
// Check for xstops and recoverables
// ******************************************************************
- rc = glob_fir_trace (i_target, "after SCAN0");
+ rc = p8_pm_glob_fir_trace (i_target, "after SCAN0");
if (!rc.ok())
{
break;
}
-
+
+ // ******************************************************************
+ // FSM trace
+ // ******************************************************************
+ rc = p8_pm_pcbs_fsm_trace (i_target, l_ex_number, "after PCBS scan0");
+ if (!rc.ok())
+ {
+ break;
+ }
} // Chiplet loop
} while(0);
@@ -1351,7 +1401,7 @@ pcbs_scan0(const Target &i_target, uint8_t i_ex_number)
uint64_t address;
uint64_t ex_offset;
uint64_t reset_doubleword;
- uint32_t reset_word;
+// uint32_t reset_word;
do
{
@@ -1385,12 +1435,13 @@ pcbs_scan0(const Target &i_target, uint8_t i_ex_number)
// by register accesses
//----
- address = EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165 + ex_offset;
- reset_doubleword = EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165_scan0;
- SETDWSCAN0(i_target, address, data, reset_doubleword );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165");
- if (!rc.ok()) { break; }
+// will be setup by GPSM; not need to reset
+// address = EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165 + ex_offset;
+// reset_doubleword = EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165_scan0;
+// SETDWSCAN0(i_target, address, data, reset_doubleword );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_Resonant_Clock_Control_Reg0_0x100F0165");
+// if (!rc.ok()) { break; }
//----
address = EX_PMErrMask_REG_0x100F010A + ex_offset;
@@ -1400,155 +1451,95 @@ pcbs_scan0(const Target &i_target, uint8_t i_ex_number)
reset_doubleword = EX_PMErrMask_REG_0x100F010A_scan0;
SETDWSCAN0(i_target, address, data, reset_doubleword );
- rc = glob_fir_trace (i_target, "after scan0 EX_PMErrMask_REG_0x100F010A");
+ rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PMErrMask_REG_0x100F010A");
if (!rc.ok()) { break; }
// OCC does not mess with the PFET delays so these are left in tact.
// This can only be done IF the IVRM is previously disabled.
- address = EX_PCBS_iVRM_Control_Status_Reg_0x100F0154 + ex_offset;
- reset_word = EX_PCBS_iVRM_Control_Status_Reg_0x100F0154_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_Control_Status_Reg_0x100F0154");
- if (!rc.ok()) { break; }
+// Should be done by an explicit iVRM disable routine as all bits don't really
+// need to touched
+// address = EX_PCBS_iVRM_Control_Status_Reg_0x100F0154 + ex_offset;
+// reset_word = EX_PCBS_iVRM_Control_Status_Reg_0x100F0154_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_Control_Status_Reg_0x100F0154");
+// if (!rc.ok()) { break; }
+//
+// //----
+// address = EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155 + ex_offset;
+// reset_word = EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155");
+// if (!rc.ok()) { break; }
//----
- address = EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155 + ex_offset;
- reset_word = EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_Value_Setting_Reg_0x100F0155");
- if (!rc.ok()) { break; }
+// This actually has a danger as Global Actual of 0 is Turbo!!!!
+//
+// address = EX_PCBS_PMC_VF_CTRL_REG_0x100F015A + ex_offset;
+// reset_word = EX_PCBS_PMC_VF_CTRL_REG_0x100F015A_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_PMC_VF_CTRL_REG_0x100F015A");
+// if (!rc.ok()) { break; }
//----
- address = EX_PCBS_PMC_VF_CTRL_REG_0x100F015A + ex_offset;
- reset_word = EX_PCBS_PMC_VF_CTRL_REG_0x100F015A_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_PMC_VF_CTRL_REG_0x100F015A");
- if (!rc.ok()) { break; }
-
- //----
- address = EX_PCBS_Pstate_Index_Bound_Reg_0x100F015C + ex_offset;
- reset_word = EX_PCBS_Pstate_Index_Bound_Reg_0x100F015C_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_Pstate_Index_Bound_Reg_0x100F015C");
- if (!rc.ok()) { break; }
+// Applies only to iVRMs. However, this is re-written by GPSM upon LPST installation
+// No real need to clear it.
+// address = EX_PCBS_Pstate_Index_Bound_Reg_0x100F015C + ex_offset;
+// reset_word = EX_PCBS_Pstate_Index_Bound_Reg_0x100F015C_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_Pstate_Index_Bound_Reg_0x100F015C");
+// if (!rc.ok()) { break; }
//----
- address = EX_PCBS_PSTATE_TABLE_CTRL_REG_0x100F015E + ex_offset;
- reset_word = EX_PCBS_PSTATE_TABLE_CTRL_REG_0x100F015E_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_PSTATE_TABLE_CTRL_REG_0x100F015E");
- if (!rc.ok()) { break; }
+// Applies only to iVRMs. However, this is re-written by GPSM upon LPST installation
+// No real need to clear it.
+// address = EX_PCBS_PSTATE_TABLE_CTRL_REG_0x100F015E + ex_offset;
+// reset_word = EX_PCBS_PSTATE_TABLE_CTRL_REG_0x100F015E_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_PSTATE_TABLE_CTRL_REG_0x100F015E");
+// if (!rc.ok()) { break; }
//----
- address = EX_PCBS_iVRM_VID_Control_Reg0_0x100F0162 + ex_offset;
- reset_word = EX_PCBS_iVRM_VID_Control_Reg0_0x100F0162_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_VID_Control_Reg0_0x100F0162");
- if (!rc.ok()) { break; }
+// Applies only to iVRMs. However, this is re-written by GPSM upon LPST installation
+// No real need to clear it.
+// address = EX_PCBS_iVRM_VID_Control_Reg0_0x100F0162 + ex_offset;
+// reset_word = EX_PCBS_iVRM_VID_Control_Reg0_0x100F0162_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_VID_Control_Reg0_0x100F0162");
+// if (!rc.ok()) { break; }
//----
- address = EX_PCBS_iVRM_VID_Control_Reg1_0x100F0163 + ex_offset;
- reset_word = EX_PCBS_iVRM_VID_Control_Reg1_0x100F0163_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_VID_Control_Reg1_0x100F0163");
- if (!rc.ok()) { break; }
+// Applies only to iVRMs. However, this is re-written by GPSM upon LPST installation
+// No real need to clear it.
+// address = EX_PCBS_iVRM_VID_Control_Reg1_0x100F0163 + ex_offset;
+// reset_word = EX_PCBS_iVRM_VID_Control_Reg1_0x100F0163_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_iVRM_VID_Control_Reg1_0x100F0163");
+// if (!rc.ok()) { break; }
//----
- address = EX_PCBS_Resonant_Clock_Control_Reg1_0x100F0166 + ex_offset;
- reset_word = EX_PCBS_Resonant_Clock_Control_Reg1_0x100F0166_scan0;
- SETSCAN0(i_target, address, data, reset_word );
-
- rc = glob_fir_trace (i_target, "after scan0 EX_PCBS_Resonant_Clock_Control_Reg1_0x100F0166");
- if (!rc.ok()) { break; }
+// Applies only to resonant clocks only. However, this is re-written by GPSM upon
+// enalement of resonant clocks. No real need to clear it.
+// address = EX_PCBS_Resonant_Clock_Control_Reg1_0x100F0166 + ex_offset;
+// reset_word = EX_PCBS_Resonant_Clock_Control_Reg1_0x100F0166_scan0;
+// SETSCAN0(i_target, address, data, reset_word );
+//
+// rc = p8_pm_glob_fir_trace (i_target, "after scan0 EX_PCBS_Resonant_Clock_Control_Reg1_0x100F0166");
+// if (!rc.ok()) { break; }
} while(0);
return rc;
}
-//------------------------------------------------------------------------------
-/**
- * Trace a set of FIRs (Globals and select Locals)
- *
- * @param[in] i_target Chip target
- * @param[in] i_msg String to put out in the trace
- *
- * @retval ECMD_SUCCESS
- * @retval ERROR defined in xml
- */
-fapi::ReturnCode
-glob_fir_trace ( const fapi::Target& i_target,
- const char * i_msg)
-{
- fapi::ReturnCode rc;
- ecmdDataBufferBase data(64);
- uint64_t address;
-
- CONST_UINT64_T( GLOB_XSTOP_FIR_0x01040000 , ULL(0x01040000) );
- CONST_UINT64_T( GLOB_RECOV_FIR_0x01040001 , ULL(0x01040001) );
- CONST_UINT64_T( TP_LFIR_0x0104000A , ULL(0x0104000A) );
-
- do
- {
- // ******************************************************************
- // Check for xstops and recoverables and put in the trace
- // ******************************************************************
- address = READ_GLOBAL_XSTOP_FIR_0x570F001B;
- GETSCOM(rc, i_target, address, data);
- if (data.getNumBitsSet(0,64))
- {
- FAPI_INF("Xstop is **ACTIVE** %s", i_msg);
- }
-
- address = READ_GLOBAL_RECOV_FIR_0x570F001C;
- GETSCOM(rc, i_target, address, data);
- if (data.getNumBitsSet(0,64))
- {
- FAPI_INF("Recoverable attention is **ACTIVE** %s", i_msg);
- }
-
- address = READ_GLOBAL_RECOV_FIR_0x570F001C;
- GETSCOM(rc, i_target, address, data);
- if (data.getNumBitsSet(0,64))
- {
- FAPI_INF("Recoverable attention is **ACTIVE** %s", i_msg);
- }
-
- address = GLOB_XSTOP_FIR_0x01040000;
- GETSCOM(rc, i_target, address, data);
- if (data.getNumBitsSet(0,64))
- {
- FAPI_INF("Glob Xstop FIR is **ACTIVE** %s", i_msg);
- }
-
- address = GLOB_RECOV_FIR_0x01040001;
- GETSCOM(rc, i_target, address, data);
- if (data.getNumBitsSet(0,64))
- {
- FAPI_INF("Glob Recov FIR is **ACTIVE** %s", i_msg);
- }
-
- address = TP_LFIR_0x0104000A;
- GETSCOM(rc, i_target, address, data);
- if (data.getNumBitsSet(0,64))
- {
- FAPI_INF("TP LFIR is **ACTIVE** %s", i_msg);
- }
-
- } while(0);
- return rc;
-}
-
-
} //end extern C
/*
@@ -1557,8 +1548,15 @@ This section is automatically updated by CVS when you check in this file.
Be sure to create CVS comments when you commit so that they can be included here.
$Log: p8_pcbs_init.C,v $
+Revision 1.27 2014/02/17 03:00:35 stillgs
+- After review (in dealing with SW240169), removed most *scan0 statements as they were more detrimental than valuable.
+ The testcase for SW242617 should be run with this change
+- Added PCBS and Global FIR trace points for hang debug using common routines in p8_pm_utils.C
+- Added MPIPL debug message
+- Removed old comments (the *scan0 one above were left in until regressions fully pass)
+
Revision 1.26 2014/01/29 17:54:51 cswenson
-changed char* to const char* in glob_fir_trace()
+changed char* to const char* in p8_pm_glob_fir_trace()
Revision 1.25 2014/01/22 20:58:31 stillgs
OpenPOWER on IntegriCloud