From 207c92acba159b07ec96e2806e88b1f37a5442ec Mon Sep 17 00:00:00 2001 From: Yue Du Date: Fri, 3 Nov 2017 10:25:42 -0500 Subject: STOP: Fix SGPE UIH Messed up EIMR book keeping Error Key_Cronus_Test=PM_REGRESS Change-Id: Ic7a13488f61f302dd200059008c7e4ed1cee3148 Original-Change-Id: Ie1611b009e95192a0dad3a47af14ef8a36dd454b CQ: SW407045 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49234 Tested-by: Jenkins Server Tested-by: Cronus HW CI Tested-by: FSP CI Jenkins Reviewed-by: Gregory S. Still Reviewed-by: Michael S. Floyd Reviewed-by: Jennifer A. Stofer --- import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h | 1 + .../p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_threads.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h index dfad53d7..dcc7355c 100644 --- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h +++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h @@ -308,6 +308,7 @@ typedef struct typedef struct { uint32_t starve_counter; + uint8_t entry_pending; } sgpe_fit_t; /// SGPE Stop Score Board Structure diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_threads.c b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_threads.c index 87b64191..b13c35cb 100644 --- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_threads.c +++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_threads.c @@ -44,8 +44,7 @@ p9_sgpe_stop_exit_thread(void* arg) // The actual exit sequence p9_sgpe_stop_exit(); - if ((!G_sgpe_stop_record.group.core[VECTOR_ENTRY]) && - (!G_sgpe_stop_record.group.qswu[VECTOR_ENTRY])) + if (!G_sgpe_stop_record.fit.entry_pending) { #if !SKIP_IPC @@ -115,6 +114,7 @@ p9_sgpe_stop_enter_thread(void* arg) p9_sgpe_ack_pgpe_ctrl_stop_updates(); } + G_sgpe_stop_record.fit.entry_pending = 0; PK_TRACE_INF("Setup: Entry done. Enable Type2/3/5/6 Interrupt"); g_oimr_override &= ~(BITS64(47, 2) | BITS64(50, 2)); pk_irq_vec_restore(&ctx); -- cgit v1.2.3