summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
Diffstat (limited to 'src/import')
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H3
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_homer.H6
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H2
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H25
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C16
-rw-r--r--src/import/chips/p9/xip/p9_xip_image.h6
6 files changed, 40 insertions, 18 deletions
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H b/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
index 86a8bb070..6e3b54d49 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
@@ -457,6 +457,7 @@ HCD_CONST(PGPE_INSTRUMENTATION_SIZE, (2 * ONE_KB))
/// PGPE Image
+HCD_CONST(PGPE_AUX_TASK_SIZE, (2 * ONE_KB))
HCD_CONST(PGPE_IMAGE_PPMR_OFFSET,
(PGPE_BOOT_LOADER_PPMR_OFFSET + PGPE_BOOT_LOADER_SIZE))
HCD_CONST(PGPE_IMAGE_SIZE, (48 * ONE_KB)) //RTC158543
@@ -516,6 +517,6 @@ HCD_CONST(OCC_WOF_TABLES_SIZE, (256 * ONE_KB))
HCD_CONST(WOF_TABLE_RESERVE,
OCC_WOF_TABLES_PPMR_OFFSET - (PGPE_PSTATE_OUTPUT_TABLES_PPMR_OFFSET + PGPE_PSTATE_OUTPUT_TABLES_REGION_SIZE))
HCD_CONST(PGPE_IMAGE_RESERVE_SIZE,
- (OCC_PSTATE_PARAM_BLOCK_PPMR_OFFSET - PGPE_IMAGE_PPMR_OFFSET - PGPE_IMAGE_SIZE))
+ (OCC_PSTATE_PARAM_BLOCK_PPMR_OFFSET - PGPE_IMAGE_PPMR_OFFSET - PGPE_IMAGE_SIZE - PGPE_AUX_TASK_SIZE))
#endif /* __HCD_MEMMAP_BASE_H__ */
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_homer.H b/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_homer.H
index c6d723444..95a222dfc 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_homer.H
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_homer.H
@@ -82,10 +82,10 @@ HCD_CONST(HOMER_PGPE_BOOT_COPIER_ADDR,
(HOMER_PPMR_HEADER_ADDR + PPMR_HEADER_SIZE))
HCD_CONST(HOMER_OCC_PSTATE_PARAM_BLOCK_ADDR,
- (HOMER_PPMR_BASE_ADDR + OCC_PSTATE_PARAM_BLOCK_PPMR_OFFSET));
+ (HOMER_PPMR_BASE_ADDR + OCC_PSTATE_PARAM_BLOCK_PPMR_OFFSET))
HCD_CONST(HOMER_PGPE_PSTATE_OUTPUT_TABLES_ADDR,
- (HOMER_PPMR_BASE_ADDR + PGPE_PSTATE_OUTPUT_TABLES_PPMR_OFFSET));
+ (HOMER_PPMR_BASE_ADDR + PGPE_PSTATE_OUTPUT_TABLES_PPMR_OFFSET))
HCD_CONST(HOMER_OCC_WOF_TABLES_ADDR,
- (HOMER_PPMR_BASE_ADDR + OCC_WOF_TABLES_PPMR_OFFSET));
+ (HOMER_PPMR_BASE_ADDR + OCC_WOF_TABLES_PPMR_OFFSET))
#endif /* __P9_HCD_MEMMAP_HOMER_H__ */
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H b/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H
index ee2df7372..c1f9cecf8 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H
@@ -82,6 +82,8 @@ HCD_CONST(OCC_SRAM_PGPE_BOOT_LOADER_RESET_ADDR,
(OCC_SRAM_PGPE_BOOT_LOADER_ADDR + PGPE_BOOT_LOADER_RESET_ADDR_VAL))
HCD_CONST(OCC_SRAM_PGPE_PPMR_HEADER_ADDR,
(OCC_SRAM_PGPE_BOOT_LOADER_ADDR - OCC_SRAM_PGPE_COPY_PPMR_HEADER_SIZE))
+HCD_CONST(OCC_SRAM_AUX_TASK_ADDR,
+ (OCC_SRAM_PGPE_PPMR_HEADER_ADDR - PGPE_AUX_TASK_SIZE))
/// PGPE Copy
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H b/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
index ee7f48d33..76954c274 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
@@ -198,6 +198,8 @@ HCD_HDR_UINT32(g_ppmr_pgpe_sram_img_size, 0); // PGPE Actual SRAM Image Size
HCD_HDR_UINT32(g_ppmr_pgpe_boot_prog_code, 0 );// for debug of PGPE booting
HCD_HDR_UINT32(g_ppmr_wof_table_offset, 0 ); // Offset to start of WOF Table
HCD_HDR_UINT32(g_ppmr_wof_table_length, 0 ); // Length of WOF table
+HCD_HDR_UINT32(g_ppmr_aux_task_offset, 0 ); // PGPE Aux Task Offset
+HCD_HDR_UINT32(g_ppmr_aux_task_length, 0 ); // PGPE Aux Task Length
HCD_HDR_PAD(0x200);
#ifdef __ASSEMBLER__
.endm
@@ -327,17 +329,17 @@ typedef struct
{
#endif
HCD_HDR_UINT64(g_pgpe_magic_number, PGPE_MAGIC_NUMBER); // PGPE_1.0
-HCD_HDR_UINT32(g_pgpe_sys_reset_addr, 0 ); // Fully qualified OCC address where pk_init resides
-HCD_HDR_UINT32(g_pgpe_shared_sram_addr, 0 ); // SRAM address where shared SRAM begins
-HCD_HDR_UINT32(g_pgpe_ivpr_addr, 0 ); // Beginning of PGPE region in OCC SRAM
-HCD_HDR_UINT32(g_pgpe_shared_sram_len, 0 ); // Length of shared SRAM area
-HCD_HDR_UINT32(g_pgpe_build_date, 0 ); // Build date for PGPE Image
-HCD_HDR_UINT32(g_pgpe_build_ver, 0 ); // Build Version
-HCD_HDR_UINT16(g_pgpe_flags, 0 ); // PGPE Flags
-HCD_HDR_UINT16(g_pgpe_reserve1, 0 ); // Reserve field
-HCD_HDR_UINT32(g_pgpe_reserve2, 0 ); // Reserve field
-HCD_HDR_UINT32(g_pgpe_gppb_sram_addr, 0 ); // Offset to Global P State Parameter Block
-HCD_HDR_UINT32(g_pgpe_hcode_length, 0 ); // Length of PGPE Hcode
+HCD_HDR_UINT32(g_pgpe_sys_reset_addr, 0 ); // Fully qualified OCC address where pk_init resides
+HCD_HDR_UINT32(g_pgpe_shared_sram_addr, 0 ); // SRAM address where shared SRAM begins
+HCD_HDR_UINT32(g_pgpe_ivpr_addr, 0 ); // Beginning of PGPE region in OCC SRAM
+HCD_HDR_UINT32(g_pgpe_shared_sram_len, 0 ); // Length of shared SRAM area
+HCD_HDR_UINT32(g_pgpe_build_date, 0 ); // Build date for PGPE Image
+HCD_HDR_UINT32(g_pgpe_build_ver, 0 ); // Build Version
+HCD_HDR_UINT16(g_pgpe_flags, 0 ); // PGPE Flags
+HCD_HDR_UINT16(g_pgpe_reserve1, 0 ); // Reserve field
+HCD_HDR_UINT32(g_pgpe_reserve2, 0 ); // Reserve field
+HCD_HDR_UINT32(g_pgpe_gppb_sram_addr, 0 ); // Offset to Global P State Parameter Block
+HCD_HDR_UINT32(g_pgpe_hcode_length, 0 ); // Length of PGPE Hcode
HCD_HDR_UINT32(g_pgpe_gppb_mem_offset,
0 ); // Offset to start of Global PS Param Block wrt start of HOMER.
HCD_HDR_UINT32(g_pgpe_gppb_length, 0 ); // Length of Global P State Parameter Block
@@ -620,6 +622,7 @@ typedef struct
uint8_t l1BootLoader[PGPE_BOOT_COPIER_SIZE];
uint8_t l2BootLoader[PGPE_BOOT_LOADER_SIZE];
uint8_t pgpeSramImage[PGPE_IMAGE_SIZE]; // Includes the Global Pstate Parameter Block
+ uint8_t aux_task[PGPE_AUX_TASK_SIZE];
uint8_t ppmr_reserved0[PGPE_IMAGE_RESERVE_SIZE];
uint8_t occParmBlock[sizeof(OCCPstateParmBlock)]; // PPMR + 128KB
uint8_t occParmBlockReserve[OCC_PSTATE_PARAM_BLOCK_REGION_SIZE - sizeof(OCCPstateParmBlock)];
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
index d0e945946..9b98d7535 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
@@ -288,6 +288,7 @@ ImgSizeBank::ImgSizeBank()
iv_secSize[ImgSec(PLAT_PGPE, P9_XIP_SECTION_PGPE_LVL2_BL, (char*)"PGPE Boot Loader")] = PGPE_BOOT_LOADER_SIZE;;
iv_secSize[ImgSec(PLAT_PGPE, P9_XIP_SECTION_PGPE_HCODE, (char*)"PGPE Hcode")] = PGPE_IMAGE_SIZE;
iv_secSize[ImgSec(PLAT_PGPE, PGPE_SRAM_IMAGE, (char*)"PGPE SRAM Image")] = PGPE_IMAGE_SIZE;
+ iv_secSize[ImgSec(PLAT_PGPE, P9_XIP_SECTION_PGPE_AUX_TASK, (char*)"PGPE Aux Task")] = PGPE_AUX_TASK_SIZE;
}
/**
@@ -1658,13 +1659,24 @@ fapi2::ReturnCode buildPgpeImage( void* const i_pImageIn, Homerlayout_t* i_pChip
io_ppmrHdr.g_ppmr_hcode_offset = io_ppmrHdr.g_ppmr_bl_offset + PGPE_BOOT_LOADER_SIZE;
io_ppmrHdr.g_ppmr_hcode_length = ppeSection.iv_size;
+ rcTemp = copySectionToHomer( i_pChipHomer->ppmrRegion.aux_task,
+ pPgpeImg,
+ P9_XIP_SECTION_PGPE_AUX_TASK,
+ PLAT_PGPE,
+ i_procFuncModel.getChipLevel(),
+ ppeSection );
+
+ io_ppmrHdr.g_ppmr_aux_task_offset = io_ppmrHdr.g_ppmr_aux_task_offset + PGPE_AUX_TASK_SIZE;
+ io_ppmrHdr.g_ppmr_aux_task_length = ppeSection.iv_size;
+
//Finally let us take care of endianess
io_ppmrHdr.g_ppmr_bc_offset = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_bc_offset);
io_ppmrHdr.g_ppmr_bl_offset = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_bl_offset);
io_ppmrHdr.g_ppmr_bl_length = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_bl_length);
io_ppmrHdr.g_ppmr_hcode_offset = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_hcode_offset);
io_ppmrHdr.g_ppmr_hcode_length = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_hcode_length);
-
+ io_ppmrHdr.g_ppmr_aux_task_offset = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_aux_task_offset);
+ io_ppmrHdr.g_ppmr_aux_task_length = SWIZZLE_4_BYTE(io_ppmrHdr.g_ppmr_aux_task_length);
}
fapi_try_exit:
@@ -2038,6 +2050,8 @@ fapi2::ReturnCode updatePpmrHeader( void* const i_pHomer, PpmrHeader_t& io_ppmrH
FAPI_DBG("BC Offset : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_bc_offset));
FAPI_DBG("BL Offset : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_bl_offset));
FAPI_DBG("BL Length : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_bl_length));
+ FAPI_DBG("Char Offset : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_aux_task_offset));
+ FAPI_DBG("Char Length : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_aux_task_length));
FAPI_DBG("Hcode Offset : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_hcode_offset));
FAPI_DBG("Hcode Length : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_hcode_length));
FAPI_DBG("GPPB Offset : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_gppb_offset));
diff --git a/src/import/chips/p9/xip/p9_xip_image.h b/src/import/chips/p9/xip/p9_xip_image.h
index 859cdd89e..838f0276c 100644
--- a/src/import/chips/p9/xip/p9_xip_image.h
+++ b/src/import/chips/p9/xip/p9_xip_image.h
@@ -1948,7 +1948,8 @@ typedef enum
P9_XIP_SECTION_PGPE_LVL1_BL = P9_XIP_SECTIONS_PLUS(1),
P9_XIP_SECTION_PGPE_LVL2_BL = P9_XIP_SECTIONS_PLUS(2),
P9_XIP_SECTION_PGPE_HCODE = P9_XIP_SECTIONS_PLUS(3),
- P9_XIP_SECTIONS_PGPE = P9_XIP_SECTIONS_PLUS(4) // # sections
+ P9_XIP_SECTION_PGPE_AUX_TASK = P9_XIP_SECTIONS_PLUS(4),
+ P9_XIP_SECTIONS_PGPE = P9_XIP_SECTIONS_PLUS(5) // # sections
} p9_xip_section_pgpe_t;
#define P9_XIP_SECTION_NAMES_PGPE(var) \
@@ -1956,7 +1957,8 @@ typedef enum
".ppmr_header", \
".lvl1_bl", \
".lvl2_bl", \
- ".hcode")
+ ".hcode", \
+ ".aux_task")
/**************************************************************************/
/* IOPPE Image */
OpenPOWER on IntegriCloud