From 2dbabc07d2a21044395874b2664d326507512fdc Mon Sep 17 00:00:00 2001 From: Yue Du Date: Tue, 21 Feb 2017 21:42:59 -0600 Subject: STOP: Change ring_save structure to 0xfff3fc00 PDA location z .pda_ptrs 0x00000000fff3fc00 0x180 z 0x00000000fff3fc00 G_ring_save z z uint64_t G_ring_save[MAX_QUADS][8] z __attribute__((section(".pda_ptrs"))) = z { z {0, 0, 0, 0, 0, 0, 0, 0}, z {0, 0, 0, 0, 0, 0, 0, 0}, z {0, 0, 0, 0, 0, 0, 0, 0}, z {0, 0, 0, 0, 0, 0, 0, 0}, z {0, 0, 0, 0, 0, 0, 0, 0}, z {0, 0, 0, 0, 0, 0, 0, 0} z }; Change-Id: Ie48971ffaaa0d342d4091e0884cf1ae27a0265d6 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36837 Tested-by: Jenkins Server Reviewed-by: AMIT KUMAR Reviewed-by: Michael S. Floyd Reviewed-by: Gregory S. Still --- .../ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h | 8 ++++++ .../ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c | 31 ++++------------------ .../ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c | 14 +++++----- 3 files changed, 20 insertions(+), 33 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 99c01148..e4accf1c 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 @@ -303,6 +303,14 @@ typedef struct uint64_t data; } SgpeScomRestore; +#if HW386311_DD1_PBIE_RW_PTR_STOP11_FIX +// Types for PB EQ asynch work-around +struct ring_save +{ + uint64_t element[MAX_QUADS][8]; +}; +#endif + #if HW405292_NDD1_PCBMUX_FENCE_FIX void p9_sgpe_set_slvcfg_pm_disable(uint32_t); void p9_sgpe_clear_slvcfg_pm_disable(uint32_t); diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c index 1d6cd011..868fb6a6 100644 --- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c +++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c @@ -39,29 +39,8 @@ extern SgpeStopRecord G_sgpe_stop_record; #if HW386311_DD1_PBIE_RW_PTR_STOP11_FIX -uint64_t G_ring_save[MAX_QUADS][8] = -{ - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0} -}; - -uint64_t G_ring_spin[10][2] = -{ - {0, 0}, - {5039, 0xE000000000000000}, //3 - {5100, 0xC1E061FFED5F0000}, //29 - {5664, 0xE000000000000000}, //3 - {5725, 0xC1E061FFED5F0000}, //29 - {5973, 0xE000000000000000}, //3 - {6034, 0xC1E061FFED5F0000}, //29 - {6282, 0xE000000000000000}, //3 - {6343, 0xC1E061FFED5F0000}, //29 - {17871, 0} //128 -}; + extern struct ring_save* G_ring_save; + extern uint64_t G_ring_spin[10][2]; #endif @@ -929,7 +908,7 @@ p9_sgpe_stop_entry() PK_TRACE("FCMS: save pbie read ptr"); GPE_GETSCOM(GPE_SCOM_ADDR_QUAD(0x1003E000, qloop), scom_data.value); EXTRACT_RING_BITS(G_ring_spin[spin][1], scom_data.value, - G_ring_save[qloop][spin - 1]); + G_ring_save->element[qloop][spin - 1]); PK_TRACE("FCMS: mask: %8x %8x", UPPER32(G_ring_spin[spin][1]), LOWER32(G_ring_spin[spin][1])); @@ -937,8 +916,8 @@ p9_sgpe_stop_entry() scom_data.words.upper, scom_data.words.lower); PK_TRACE("FCMS: save: %8x %8x", - UPPER32(G_ring_save[qloop][spin - 1]), - LOWER32(G_ring_save[qloop][spin - 1])); + UPPER32(G_ring_save->element[qloop][spin - 1]), + LOWER32(G_ring_save->element[qloop][spin - 1])); } GPE_PUTSCOM(GPE_SCOM_ADDR_QUAD(0x10030005, qloop), 0); diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c index 14cb08db..f1b2fe74 100644 --- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c +++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c @@ -41,8 +41,8 @@ extern SgpeStopRecord G_sgpe_stop_record; #if HW386311_DD1_PBIE_RW_PTR_STOP11_FIX - extern uint64_t G_ring_save[MAX_QUADS][8]; - extern uint64_t G_ring_spin[10][2]; + extern struct ring_save* G_ring_save; + extern uint64_t G_ring_spin[10][2]; #endif @@ -559,10 +559,10 @@ p9_sgpe_stop_exit() scom_data.words.upper, scom_data.words.lower); PK_TRACE("PBRW: save: %8x %8x", - UPPER32(G_ring_save[qloop][spin - 1]), - LOWER32(G_ring_save[qloop][spin - 1])); + UPPER32(G_ring_save->element[qloop][spin - 1]), + LOWER32(G_ring_save->element[qloop][spin - 1])); RESTORE_RING_BITS(G_ring_spin[spin][1], scom_data.value, - G_ring_save[qloop][spin - 1]); + G_ring_save->element[qloop][spin - 1]); GPE_PUTSCOM(GPE_SCOM_ADDR_QUAD(0x1003E000, qloop), scom_data.value); PK_TRACE("PBRW: mask: %8x %8x", UPPER32(G_ring_spin[spin][1]), @@ -571,8 +571,8 @@ p9_sgpe_stop_exit() scom_data.words.upper, scom_data.words.lower); PK_TRACE("PBRW: save: %8x %8x", - UPPER32(G_ring_save[qloop][spin - 1]), - LOWER32(G_ring_save[qloop][spin - 1])); + UPPER32(G_ring_save->element[qloop][spin - 1]), + LOWER32(G_ring_save->element[qloop][spin - 1])); } -- cgit v1.2.3