summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/occ_405/state.c21
-rw-r--r--src/occ_gpe0/gpe_core_data.c4
2 files changed, 22 insertions, 3 deletions
diff --git a/src/occ_405/state.c b/src/occ_405/state.c
index 7718ecf..19da6b2 100755
--- a/src/occ_405/state.c
+++ b/src/occ_405/state.c
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER OnChipController Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2017 */
+/* Contributors Listed Below - COPYRIGHT 2011,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -583,6 +583,7 @@ errlHndl_t SMGR_observation_to_active()
int l_extRc = OCC_NO_EXTENDED_RC;
int l_rc = 0;
uint32_t l_user_data = 0;
+ uint32_t l_freq = 0;
Pstate l_pstate;
// clear mnfg quad pstate request to default OCC to control all quads
@@ -610,7 +611,23 @@ errlHndl_t SMGR_observation_to_active()
// become enabled.
if(G_present_cores != 0 )
{
- l_pstate = proc_freq2pstate(G_proc_fmax_mhz);
+ if(G_sysConfigData.system_type.kvm)
+ {
+ // OCC controls frequency via clip
+ // set clip to nominal/turbo until WOF is fully enabled
+ if(G_sysConfigData.sys_mode_freq.table[OCC_MODE_TURBO] > G_sysConfigData.sys_mode_freq.table[OCC_MODE_NOMINAL])
+ l_freq = G_sysConfigData.sys_mode_freq.table[OCC_MODE_TURBO];
+ else
+ l_freq = G_sysConfigData.sys_mode_freq.table[OCC_MODE_NOMINAL];
+
+ l_pstate = proc_freq2pstate(l_freq);
+ }
+ else
+ {
+ // OCC controls frequency with PMCR so ok to set clips wide open
+ // the OCC won't actually write UT to PMCR unless WOF is fully enabled
+ l_pstate = proc_freq2pstate(G_proc_fmax_mhz);
+ }
l_rc = pgpe_set_clip_blocking(l_pstate);
if(l_rc)
diff --git a/src/occ_gpe0/gpe_core_data.c b/src/occ_gpe0/gpe_core_data.c
index 0911a49..923a7c8 100644
--- a/src/occ_gpe0/gpe_core_data.c
+++ b/src/occ_gpe0/gpe_core_data.c
@@ -57,7 +57,9 @@ void gpe_get_core_data(ipc_msg_t* cmd, void* arg)
if(rc)
{
- if( !(L_trace & (1 << args->core_num)) )
+ // trace non-offline error once per core.
+ // offline errors are normal with stop states and ignored by the 405
+ if( (!(L_trace & (1 << args->core_num))) && (rc != PCB_ERROR_CHIPLET_OFFLINE) )
{
PK_TRACE("gpe_get_core_data: get_core_data failed, rc = 0x%08x, core = 0x%08x",
rc, args->core_num);
OpenPOWER on IntegriCloud