From 2f063536057b564a446ce99bad8813428f04c70e Mon Sep 17 00:00:00 2001 From: Yue Du Date: Wed, 6 Jun 2018 14:18:06 -0500 Subject: PM: PGPE hang fix during VDM droop workaround -Fixed stop entry suspend ACK in CME to resolve PGPE hang -Masked PARTIAL_GOOD error in PGPE when doing core throttle multicast. Key_Cronus_Test=PM_REGRESS Change-Id: I56888585ddaf429a4ffd7ebdc13b7b7c6b5b8cc5 CQ: SW437277 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/62082 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Jennifer A. Stofer --- .../chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_threads.c | 4 ++++ .../chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_threads.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_threads.c index e85942c6..b03b11a6 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_threads.c +++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_threads.c @@ -60,6 +60,8 @@ p9_cme_stop_core_error_handler(uint32_t core, uint32_t core_error, uint32_t pani void p9_cme_stop_eval_eimr_override() { + wrteei(0); + g_eimr_override &= ~BITS64(12, 10); data64_t mask_irqs = {0}; mask_irqs.words.lower = 0; @@ -103,6 +105,8 @@ p9_cme_stop_eval_eimr_override() { out32(G_CME_LCL_FLAGS_CLR, BIT32(CME_FLAGS_DROOP_SUSPEND_ENTRY)); } + + wrteei(1); } #if !DISABLE_PERIODIC_CORE_QUIESCE && (NIMBUS_DD_LEVEL == 20 || NIMBUS_DD_LEVEL == 21 || CUMULUS_DD_LEVEL == 10) diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h index 169e1f90..e2895b64 100644 --- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h +++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h @@ -108,7 +108,7 @@ enum PGPE_CORE_THROTTLE // Include core offline, address error, and timeout. The timeout is // included to avoid an extra mtmsr in the event we need to cleanup // from SW407201 - MSR_THROTTLE_MASK = 0x29000000, + MSR_THROTTLE_MASK = 0x39000000, WORKAROUND_SCOM_MULTICAST_WRITE = 0x69010800, THROTTLE_SCOM_MULTICAST_WRITE = 0x69010A9E, CORE_IFU_THROTTLE = 0x80000000, -- cgit v1.2.3