summaryrefslogtreecommitdiffstats
path: root/import/chips
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2018-10-17 14:31:13 -0500
committerhostboot <hostboot@us.ibm.com>2018-10-23 10:43:21 -0500
commit0c9db2e5070a24ca81af66af1986b735bf0ad13a (patch)
treee6565ebeec25429ebe0f727f690bdd44418d3c67 /import/chips
parent875b828fcde4b1f7427f2d3d10c4f0a5cfa8898d (diff)
downloadtalos-hcode-0c9db2e5070a24ca81af66af1986b735bf0ad13a.tar.gz
talos-hcode-0c9db2e5070a24ca81af66af1986b735bf0ad13a.zip
PM: Add Fields in OCC Comp. Shr SRAM (1/4)
1st commit in series of 4 commits which combined moves SGPE/PGPE SRAM regions, and also allows to do so easily in future. Commit 1(Hcode): Adds fields to OCC Complex Shared SRAM for storing SGPE and PGPE region addresses/size, image header and debug header. Commit 2(Hostboot): Moves around SGPE/PGPE regions, and adds fields to QPMR/PPMR for storing SGPE/PGPE region info Commit 3(Hcode): Populates the newly added SGPE/PGPE region info fields in QPMR/PPMR Commit 4(Hostboot): Adds check for QPMR and PPMR fields in the Hostboot Code Key_Cronus_Test=PM_REGRESS Change-Id: Ie117a780d11bfb9f272a17300ba4f12d3926c758 CQ: SW447651 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67640 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'import/chips')
-rw-r--r--import/chips/p9/common/pmlib/occlib/occhw_shared_data.h45
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_main.c7
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c4
-rw-r--r--import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_main.C7
4 files changed, 59 insertions, 4 deletions
diff --git a/import/chips/p9/common/pmlib/occlib/occhw_shared_data.h b/import/chips/p9/common/pmlib/occlib/occhw_shared_data.h
index 433f602d..817a55ef 100644
--- a/import/chips/p9/common/pmlib/occlib/occhw_shared_data.h
+++ b/import/chips/p9/common/pmlib/occlib/occhw_shared_data.h
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
-/* COPYRIGHT 2015,2017 */
+/* COPYRIGHT 2015,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -52,7 +52,41 @@
#define OSD_GPE_SCOM_RESERVED_BYTES 32
+#define OSD_RESERVED_BYTES 1184
+
+#define OSD_OCC_COMPLEX_SHARED_DATA_RESERVED_BYTES 320
+
+#define OSD_OCC_COMPLEX_SHARED_DATA_ADDR (OSD_ADDR + OSD_TOTAL_SHARED_DATA_BYTES - OSD_OCC_COMPLEX_SHARED_DATA_RESERVED_BYTES)
+
#ifndef __ASSEMBLER__
+
+//GPE2 knowledge of OCC SRAM region for GPE2
+typedef struct gpe2_occ_sram_region_data
+{
+ uint32_t gpe2_sram_region_start; //GPE2 sram region starting address
+ uint32_t gpe2_image_header_addr;
+ uint32_t gpe2_debug_header_addr;
+ uint8_t reserved[52];
+} gpe2_occ_sram_region_data_t;
+
+//GPE3 knowledge of OCC SRAM region for GPE3
+typedef struct gpe3_occ_sram_region_data
+{
+ uint32_t gpe3_sram_region_start; //GPE3 sram region starting address
+ uint32_t gpe3_image_header_addr;
+ uint32_t gpe3_debug_header_addr;
+ uint8_t reserved[52];
+} gpe3_occ_sram_region_data_t;
+
+//OCC Complex Shared Data.
+typedef struct occ_comp_shr_data
+{
+ uint8_t reserved[128]; //reserved
+ gpe2_occ_sram_region_data_t gpe2_data; //written by GPE2
+ gpe3_occ_sram_region_data_t gpe3_data; //written by GPE3
+ uint8_t reserved1[64]; //reserved
+} occ_comp_shr_data_t;
+
typedef union
{
struct
@@ -73,6 +107,15 @@ typedef union
uint8_t gpe_scom_reserved[OSD_GPE_SCOM_RESERVED_BYTES];
};
+ union
+ {
+ uint8_t reserved[OSD_RESERVED_BYTES];
+ };
+ union
+ {
+ occ_comp_shr_data_t occ_comp_shr_data;
+ uint8_t occ_comp_shr_sram[OSD_OCC_COMPLEX_SHARED_DATA_RESERVED_BYTES];
+ };
};
uint8_t total_reserved[OSD_TOTAL_SHARED_DATA_BYTES];
} occhw_osd_t;
diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_main.c b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_main.c
index 6c4c0b26..e53c1432 100644
--- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_main.c
+++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_main.c
@@ -29,6 +29,9 @@
#include "p9_pgpe_boot_temp.h"
#include "p9_pgpe_pstate.h"
#include "p9_pgpe_optrace.h"
+#include "occhw_shared_data.h"
+#include "p9_hcd_memmap_occ_sram.H"
+#include "p9_hcd_memmap_base.H"
extern TraceData_t G_pgpe_optrace_data;
@@ -311,7 +314,9 @@ main(int argc, char** argv)
p9_pgpe_optrace_init();
- PK_TRACE_DBG("Start PK Threads");
+ OSD_PTR->occ_comp_shr_data.gpe2_data.gpe2_sram_region_start = OCC_SRAM_PGPE_BASE_ADDR;
+ OSD_PTR->occ_comp_shr_data.gpe2_data.gpe2_image_header_addr = OCC_SRAM_PGPE_BASE_ADDR + PGPE_HEADER_IMAGE_OFFSET;
+ OSD_PTR->occ_comp_shr_data.gpe2_data.gpe2_debug_header_addr = OCC_SRAM_PGPE_BASE_ADDR + SGPE_DEBUG_PTRS_OFFSET;
// Start running the highest priority thread.
// This function never returns
diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
index 3f6a5ffe..560c4f25 100644
--- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
+++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
@@ -781,7 +781,7 @@ void p9_pgpe_pstate_start(uint32_t pstate_start_origin)
}
}
- PK_TRACE_INF("PST: LowestDPLL:0x%x DPLL_PS0=0x%x", lowestDpll, G_gppb->dpll_pstate0_value);
+ //PK_TRACE_INF("PST: LowestDPLL:0x%x DPLL_PS0=0x%x", lowestDpll, G_gppb->dpll_pstate0_value);
//2. Determine Sync Pstate
if (lowestDpll > G_gppb->dpll_pstate0_value)
@@ -898,7 +898,7 @@ void p9_pgpe_pstate_start(uint32_t pstate_start_origin)
//to PMCR, and then switching the owner to CHAR which enables PCB_TYPE1 interrupts
//and allows CME to forward Pstate Requests
p9_pgpe_pstate_set_pmcr_owner(PMCR_OWNER_OCC);
- PK_TRACE_INF("PST: OWNER_CHAR");
+ //PK_TRACE_INF("PST: OWNER_CHAR");
G_pgpe_pstate_record.pmcrOwner = PMCR_OWNER_CHAR;
g_oimr_override &= ~(BIT64(46));
out32(G_OCB_OIMR1_CLR, BIT32(14)); //Enable PCB_INTR_TYPE1
diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_main.C b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_main.C
index 792ffbc9..dce81d17 100644
--- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_main.C
+++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_main.C
@@ -25,6 +25,9 @@
#include "p9_sgpe_stop.h"
#include <fapi2.H>
+#include "occhw_shared_data.h"
+#include "p9_hcd_memmap_occ_sram.H"
+#include "p9_hcd_memmap_base.H"
//We define a global literal for these register addresses
@@ -251,6 +254,10 @@ main(int argc, char** argv)
// Make G_p9_sgpe_stop_exit_thread runnable
pk_thread_resume(&G_p9_sgpe_stop_exit_thread);
+ OSD_PTR->occ_comp_shr_data.gpe3_data.gpe3_sram_region_start = OCC_SRAM_SGPE_BASE_ADDR;
+ OSD_PTR->occ_comp_shr_data.gpe3_data.gpe3_image_header_addr = OCC_SRAM_SGPE_BASE_ADDR + SGPE_HEADER_IMAGE_OFFSET;
+ OSD_PTR->occ_comp_shr_data.gpe3_data.gpe3_debug_header_addr = OCC_SRAM_SGPE_BASE_ADDR + SGPE_DEBUG_PTRS_OFFSET;
+
// Start running the highest priority thread.
// This function never returns
pk_start_threads();
OpenPOWER on IntegriCloud