From 65fca8bb0a4b7836aa31aeb48fcdbb107f2f5127 Mon Sep 17 00:00:00 2001 From: Yue Du Date: Tue, 28 Feb 2017 13:16:42 -0600 Subject: STOP: add sync before change pcbmux status Change-Id: I329aefa533ca67ac416888f18dcbf0142679e50e Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37204 Reviewed-by: Michael S. Floyd Tested-by: Jenkins Server Reviewed-by: AMIT KUMAR Reviewed-by: Jennifer A. Stofer --- .../p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c index 58381ee2..8235ccb7 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c +++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c @@ -73,7 +73,7 @@ p9_cme_stop_exit_catchup(uint32_t* core, if (core_catchup) { - // pcbmux grant + // request pcbmux grant out32(CME_LCL_SICR_OR, (core_catchup << SHIFT32(11))); // chtm purge done out32(CME_LCL_EISR_CLR, (core_catchup << SHIFT32(25))); @@ -848,6 +848,13 @@ STOP1_EXIT: while((in32(CME_LCL_EINR)) & (core << SHIFT32(21))); +#ifdef USE_PPE_IMPRECISE_MODE + + // execute sync before change pcbmux to prevent queued scom issues + sync(); + +#endif + PK_TRACE_INF("SX0.H: Release PCB Mux back to Core via SICR[10/11]"); out32(CME_LCL_SICR_CLR, core << SHIFT32(11)); -- cgit v1.2.3