From e86a2bc722c755f5d04dcd6c7258f5ceb41ba6e2 Mon Sep 17 00:00:00 2001 From: Yue Du Date: Thu, 17 Nov 2016 21:00:10 -0600 Subject: STOP: DD2 - scom hrmor instead of RAM Change-Id: I5243f4940ef98952752171a3411f3bd4360a7cbb Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32798 Tested-by: Jenkins Server Reviewed-by: AMIT KUMAR Reviewed-by: ADAM S. HALE Dev-Ready: ADAM S. HALE Reviewed-by: Jennifer A. Stofer --- .../ppe_closed/cme/stop_cme/p9_cme_stop.h | 1 + .../ppe_closed/cme/stop_cme/p9_cme_stop_exit.c | 25 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop.h b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop.h index 74f20016..12e7e9d9 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop.h +++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop.h @@ -81,6 +81,7 @@ #define SCRACTH1 0x20010A87 #define THREAD_INFO 0x20010A9B #define DIRECT_CONTROLS 0x20010A9C +#define HRMOR 0x20010AB9 #define C_SYNC_CONFIG 0x20030000 #define C_OPCG_ALIGN 0x20030001 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 022779ac..8ca64670 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 @@ -636,10 +636,14 @@ p9_cme_stop_exit() while((in32(CME_LCL_EINR)) & (core << SHIFT32(21))); - PK_TRACE_INF("SX4.O: Core Wakes Up, Ramming HRMOR with HOMER address"); + cmeHeader_t* pCmeImgHdr = (cmeHeader_t*)(CME_SRAM_BASE + CME_HEADER_IMAGE_OFFSET); + scom_data.value = pCmeImgHdr->g_cme_cpmr_PhyAddr & BITS64(13, 30); //HRMOR[13:42] +#if NIMBUS_DD_LEVEL == 1 #if !SKIP_RAM_HRMOR + PK_TRACE_INF("SX4.O: Core Wakes Up, Ramming HRMOR with HOMER address"); + PK_TRACE("Activate thread0 for RAM via THREAD_INFO[18]"); CME_PUTSCOM(THREAD_INFO, core, BIT64(18)); @@ -649,9 +653,6 @@ p9_cme_stop_exit() PK_TRACE("Set SPR mode to LT0-7 via SPR_MODE[20-27]"); CME_PUTSCOM(SPR_MODE, core, BITS64(20, 8)); - cmeHeader_t* pCmeImgHdr = (cmeHeader_t*)(CME_SRAM_BASE + CME_HEADER_IMAGE_OFFSET); - scom_data.value = pCmeImgHdr->g_cme_cpmr_PhyAddr & BITS64(13, 30); //HRMOR[13:42] - if (core & CME_MASK_C0) { PK_TRACE("Set SPRC to scratch0 for core0 via SCOM_SPRC"); @@ -702,6 +703,22 @@ p9_cme_stop_exit() PK_TRACE("Disable RAM mode via RAM_MODEREG"); CME_PUTSCOM(RAM_MODEREG, core, 0); +#endif +// Nimbus DD2+ +#else + + PK_TRACE_INF("SX4.O: Core Wakes Up, Write HRMOR with HOMER address"); + +#if EPM_P9_TUNING + + CME_PUTSCOM(HRMOR, core, 0x200000); + +#else + + CME_PUTSCOM(HRMOR, core, scom_data.value); + +#endif + #endif PK_TRACE_INF("SX4.P: S-Reset All Core Threads to Run Self Restore Image"); -- cgit v1.2.3