diff options
| author | Rahul Batra <rbatra@us.ibm.com> | 2018-01-22 16:11:56 -0600 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-03-22 14:04:30 -0500 |
| commit | e877c046104eedaa97e616f492a837b79884cbb4 (patch) | |
| tree | 9948380b227983dfae9c8087183782c22201686f | |
| parent | fb7e7a302989bf55d9437c6252962f14315463b9 (diff) | |
| download | talos-hcode-e877c046104eedaa97e616f492a837b79884cbb4.tar.gz talos-hcode-e877c046104eedaa97e616f492a837b79884cbb4.zip | |
PGPE: WOF Fix Pack
Fixes Clip Update hang if (WofClip and Pmin) > Psafe(Phase1&2)
Fix init of activeCores/reqQuads in PGPE WOF State(Phase1+STOP)
Fixes WOF Phase 2 Enable PGPE Hang(wait on Ctrl Stop Updt ACK)
Use DB3 for making High Priority Pstate Request(Phase 2)
Key_Cronus_Test=PM_REGRESS
Change-Id: I1f5c5c131004415d772584a47a6cdf2e91febea2
CQ: SW416205
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52400
Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Michael S. Floyd <mfloyd@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
| -rw-r--r-- | import/chips/p9/common/pmlib/include/pstate_pgpe_cme_api.h | 27 | ||||
| -rw-r--r-- | import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c | 35 |
2 files changed, 26 insertions, 36 deletions
diff --git a/import/chips/p9/common/pmlib/include/pstate_pgpe_cme_api.h b/import/chips/p9/common/pmlib/include/pstate_pgpe_cme_api.h index b0785f57..87e49c9b 100644 --- a/import/chips/p9/common/pmlib/include/pstate_pgpe_cme_api.h +++ b/import/chips/p9/common/pmlib/include/pstate_pgpe_cme_api.h @@ -91,27 +91,26 @@ enum PMSR_DEFS // enum MESSAGE_ID_DB0 { - MSGID_DB0_INVALID = 0, - MSGID_DB0_RESERVED = 1, - MSGID_DB0_VALID_START = 2, //This for error checking - MSGID_DB0_GLOBAL_ACTUAL_BROADCAST = 2, - MSGID_DB0_START_PSTATE_BROADCAST = 3, - MSGID_DB0_STOP_PSTATE_BROADCAST = 4, - MSGID_DB0_CLIP_BROADCAST = 5, - MSGID_DB0_PMSR_UPDT = 6, - MSGID_DB0_VALID_END = 6 //This for error checking + MSGID_DB0_VALID_START = 0, //This is for error checking + MSGID_DB0_DB3_GLOBAL_ACTUAL_BROADCAST = 0, + MSGID_DB0_RESERVED = 1, + MSGID_DB0_GLOBAL_ACTUAL_BROADCAST = 2, + MSGID_DB0_START_PSTATE_BROADCAST = 3, + MSGID_DB0_STOP_PSTATE_BROADCAST = 4, + MSGID_DB0_CLIP_BROADCAST = 5, + MSGID_DB0_PMSR_UPDT = 6, + MSGID_DB0_VALID_END = 6 //This is for error checking }; enum MESSAGE_ID_DB3 { - MSGID_DB3_RESERVED = 0, - MSGID_DB3_VALID_START = 1, //This for error checking - MSGID_DB3_PSTATE_START = 1, - MSGID_DB3_PSTATE_END = 0xF0, + MSGID_DB3_INVALID = 0, + MSGID_DB3_VALID_START = 1, //This is for error checking + MSGID_DB3_HIGH_PRIORITY_PSTATE = 1, MSGID_DB3_IMMEDIATE_HALT = 0xF1, MSGID_DB3_RESTORE_STATE_AND_HALT = 0xF2, MSGID_DB3_REPLAY_DB0 = 0xF3, - MSGID_DB3_VALID_END = 0xF3 //This for error checking + MSGID_DB3_VALID_END = 0xF3 //This is for error checking }; enum MESSAGEID_PCB_TYPE4_ACK_TYPES diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c index dabc0b3c..37e61b83 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c +++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c @@ -125,10 +125,9 @@ void p9_cme_pstate_db3_handler(void* arg, PkIrqId irq) CME_GETSCOM(CPPM_CMEDB3, CME_MASK_C1, db3.value); } - if((db3.fields.cme_message_numbern >= MSGID_DB3_PSTATE_START) && - (db3.fields.cme_message_numbern <= MSGID_DB3_PSTATE_END)) + if(db3.fields.cme_message_numbern >= MSGID_DB3_HIGH_PRIORITY_PSTATE) { - p9_cme_pstate_db3_handler_high_priority_pstate(db3.fields.cme_message_numbern); + p9_cme_pstate_db3_handler_high_priority_pstate(); } else if (db3.fields.cme_message_numbern == MSGID_DB3_REPLAY_DB0) { @@ -155,38 +154,29 @@ void p9_cme_pstate_db3_handler_replay_db0() { p9_cme_pstate_process_db0(); } - //On Sibling poll on intercme_msg "LOCK_SIBLING", then + //On Sibling, poll on intercme_msg "LOCK_SIBLING", then //poll on intercme_in0/1 direct msg. else { - p9_cme_pstate_sibling_lock_and_intercme_protocol(1, 1, 0); + p9_cme_pstate_sibling_lock_and_intercme_protocol(1); } } // -//Doorbell3 Handler Replay DB0 +//Doorbell3 Handler High Priority Pstate // -void p9_cme_pstate_db3_handler_high_priority_pstate(uint32_t pstate) +void p9_cme_pstate_db3_handler_high_priority_pstate() { - //QuadManager - G_dbData.fields.cme_message_number0 = MSGID_DB0_START_PSTATE_BROADCAST; - G_dbData.value |= (uint64_t)pstate; - G_dbData.value |= ((uint64_t)pstate << 8); - G_dbData.value |= ((uint64_t)pstate << 16); - G_dbData.value |= ((uint64_t)pstate << 24); - G_dbData.value |= ((uint64_t)pstate << 32); - G_dbData.value |= ((uint64_t)pstate << 40); - G_dbData.value |= ((uint64_t)pstate << 48); - + //Quad Manager if(G_cme_pstate_record.qmFlag) { - p9_cme_pstate_db0_glb_bcast(); + p9_cme_pstate_process_db0(); } - //On Sibling poll on intercme_msg "LOCK_SIBLING", then + //On Sibling poll, on intercme_msg "LOCK_SIBLING", then //poll on intercme_in0/1 direct msg. else { - p9_cme_pstate_sibling_lock_and_intercme_protocol(1, 0, G_dbData.value); + p9_cme_pstate_sibling_lock_and_intercme_protocol(1); } } @@ -528,7 +518,8 @@ void p9_cme_pstate_process_db0() p9_cme_pstate_db0_start(); } //Global Actual Broadcast and Pstates enabled - else if(G_dbData.fields.cme_message_number0 == MSGID_DB0_GLOBAL_ACTUAL_BROADCAST) + else if((G_dbData.fields.cme_message_number0 == MSGID_DB0_GLOBAL_ACTUAL_BROADCAST) || + (G_dbData.fields.cme_message_number0 == MSGID_DB0_DB3_GLOBAL_ACTUAL_BROADCAST)) { //Process Global Bcast only if Pstates are enabled. //Otherwise, ignore. The reason is PGPE multicasts Global Bcast, and doorbell0 @@ -664,7 +655,7 @@ inline void p9_cme_pstate_register() while(msgCnt != 3) { PK_TRACE_INF("DB_TH: Sib Register MsgCnt=0x%xt", msgCnt); - p9_cme_pstate_sibling_lock_and_intercme_protocol(1, 1, 0); + p9_cme_pstate_sibling_lock_and_intercme_protocol(1); msgCnt++; } } |

