Skip to content

Commit 388eb4c

Browse files
premsjhasannerd
authored andcommitted
PM: Added core throttle assert and deassert count in PGPE Image Header.
Change-Id: Ie6ba97a29ef109ff3b50ea8ace34701830d876ba RTC: 174995 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41745 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: BRIAN D. VICTOR <brian.d.victor1@ibm.com> Reviewed-by: Adam S. Hale <adam.samuel.hale@ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41952 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com>
1 parent 81ccd55 commit 388eb4c

File tree

2 files changed

+49
-11
lines changed

2 files changed

+49
-11
lines changed

src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,8 @@ HCD_HDR_UINT32(g_pgpe_wof_state_address, 0 ); // SRAM address wher
351351
HCD_HDR_UINT32(g_pgpe_req_active_quad_address, 0 ); // SRAM address where requested quad status is located
352352
HCD_HDR_UINT32(g_wof_table_addr, 0 ); // SRAM address where WOF Table is Located
353353
HCD_HDR_UINT32(g_wof_table_length, 0 ); // WOF Table length in bytes
354+
HCD_HDR_UINT32(g_pgpe_core_throttle_assert_cnt, 0 ); // Core throttle assert count
355+
HCD_HDR_UINT32(g_pgpe_core_throttle_deassert_cnt, 0 ); // Core throttle de-aasert count
354356
#ifdef __ASSEMBLER__
355357
.endm
356358
#else

src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,19 +1805,36 @@ uint32_t layoutSgpeScanOverride( Homerlayout_t* i_pHomer,
18051805

18061806
/**
18071807
* @brief update fields of PGPE image header region with parameter block info.
1808-
* @param i_pHomer points to start of chip's HOMER.
1808+
* @param[in] i_pHomer points to start of chip's HOMER.
1809+
* @param[in] i_procTgt P9 chip target.
1810+
* @return FAPI2 return code.
18091811
*/
18101812

18111813

1812-
void updatePgpeHeader( void* const i_pHomer )
1814+
fapi2::ReturnCode updatePgpeHeader( void* const i_pHomer, CONST_FAPI2_PROC& i_procTgt )
18131815
{
1814-
FAPI_DBG("> updatePgpeHeader");
1816+
FAPI_DBG(">> updatePgpeHeader");
1817+
fapi2::current_err = fapi2::FAPI2_RC_SUCCESS;
18151818
Homerlayout_t* pHomerLayout = (Homerlayout_t*)i_pHomer;
18161819
PgpeHeader_t* pPgpeHdr = (PgpeHeader_t*)&pHomerLayout->ppmrRegion.pgpeSramImage[PGPE_INT_VECTOR_SIZE];
18171820
PpmrHeader_t* pPpmrHdr = ( PpmrHeader_t* ) pHomerLayout->ppmrRegion.ppmrHeader;
1821+
uint32_t attrVal = 0;
18181822

18191823
//Updating PGPE Image Header
1820-
pPgpeHdr->g_pgpe_ivpr_addr = OCC_SRAM_PGPE_BASE_ADDR;
1824+
1825+
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CORE_THROTTLE_ASSERT_COUNT,
1826+
i_procTgt,
1827+
attrVal),
1828+
"Error from FAPI_ATTR_GET for ATTR_CORE_THROTTLE_ASSERT_COUNT");
1829+
pPgpeHdr->g_pgpe_core_throttle_assert_cnt = attrVal;
1830+
1831+
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CORE_THROTTLE_DEASSERT_COUNT,
1832+
i_procTgt,
1833+
attrVal),
1834+
"Error from FAPI_ATTR_GET for ATTR_CORE_THROTTLE_DEASSERT_COUNT");
1835+
pPgpeHdr->g_pgpe_core_throttle_deassert_cnt = attrVal;
1836+
1837+
pPgpeHdr->g_pgpe_ivpr_addr = SWIZZLE_4_BYTE(OCC_SRAM_PGPE_BASE_ADDR);
18211838

18221839
//Global P-State Parameter Block SRAM address
18231840
pPgpeHdr->g_pgpe_gppb_sram_addr = 0; // set by PGPE Hcode
@@ -1866,8 +1883,11 @@ void updatePgpeHeader( void* const i_pHomer )
18661883
pPgpeHdr->g_quad_status_addr = SWIZZLE_4_BYTE(pPgpeHdr->g_quad_status_addr);
18671884
pPgpeHdr->g_wof_table_addr = SWIZZLE_4_BYTE(pPgpeHdr->g_wof_table_addr);
18681885
pPgpeHdr->g_wof_table_length = SWIZZLE_4_BYTE(pPgpeHdr->g_wof_table_length);
1886+
pPgpeHdr->g_pgpe_core_throttle_assert_cnt = SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_core_throttle_assert_cnt);
1887+
pPgpeHdr->g_pgpe_core_throttle_deassert_cnt = SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_core_throttle_deassert_cnt);
18691888

18701889
FAPI_DBG("================================PGPE Image Header==========================================")
1890+
FAPI_DBG("IVPR Address : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_ivpr_addr));
18711891
FAPI_DBG("Hcode Length : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_gppb_length));
18721892
FAPI_DBG("GPPB SRAM : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_gppb_sram_addr));
18731893
FAPI_DBG("GPPB Mem Offset : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_gppb_mem_offset));
@@ -1880,16 +1900,28 @@ void updatePgpeHeader( void* const i_pHomer )
18801900
FAPI_DBG("Quad Status : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_quad_status_addr));
18811901
FAPI_DBG("WOF Addr : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_wof_table_addr));
18821902
FAPI_DBG("WOF Length : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_wof_table_length));
1903+
FAPI_DBG("Core Assert Count : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_core_throttle_assert_cnt));
1904+
FAPI_DBG("Core De - Assert Count : 0x%08x", SWIZZLE_4_BYTE(pPgpeHdr->g_pgpe_core_throttle_deassert_cnt));
1905+
18831906
FAPI_DBG("==============================PGPE Image Header End========================================")
18841907

1885-
FAPI_DBG("< updatePgpeHeader");
1908+
fapi_try_exit:
1909+
FAPI_DBG("<< updatePgpeHeader");
1910+
return fapi2::current_err;
18861911
}
18871912

18881913
//---------------------------------------------------------------------------
18891914

1890-
void updatePpmrHeader( void* const i_pHomer, PpmrHeader_t& io_ppmrHdr )
1915+
/**
1916+
* @brief Updates PPMR and PGPE Image header in P9 HOMER.
1917+
* @param[in] i_pHomer points to P9 HOMER base.
1918+
* @param[in] i_procTgt chip pertaining to P9 chip.
1919+
* @return FAPI2 return code
1920+
*/
1921+
fapi2::ReturnCode updatePpmrHeader( void* const i_pHomer, PpmrHeader_t& io_ppmrHdr, CONST_FAPI2_PROC& i_procTgt )
18911922
{
1892-
FAPI_DBG("> updatePpmrHeader");
1923+
FAPI_DBG(">> updatePpmrHeader");
1924+
fapi2::current_err = fapi2::FAPI2_RC_SUCCESS;
18931925
Homerlayout_t* pHomerLayout = (Homerlayout_t*)i_pHomer;
18941926
PpmrHeader_t* pPpmrHdr = (PpmrHeader_t*) &pHomerLayout->ppmrRegion.ppmrHeader;
18951927
memcpy( pPpmrHdr, &io_ppmrHdr, sizeof(PpmrHeader_t) );
@@ -1913,9 +1945,11 @@ void updatePpmrHeader( void* const i_pHomer, PpmrHeader_t& io_ppmrHdr )
19131945
FAPI_DBG("WOF Table End : 0x%08x", SWIZZLE_4_BYTE(pPpmrHdr->g_ppmr_wof_table_length));
19141946
FAPI_DBG("=========================== PPMR Header ends ==================================" );
19151947

1916-
updatePgpeHeader( i_pHomer );
1917-
1918-
FAPI_DBG("< updatePpmrHeader");
1948+
FAPI_TRY( updatePgpeHeader( i_pHomer, i_procTgt ),
1949+
"PGPE Image Header Update Failed" );
1950+
fapi_try_exit:
1951+
FAPI_DBG("<< updatePpmrHeader");
1952+
return fapi2::current_err;
19191953
}
19201954

19211955
//---------------------------------------------------------------------------
@@ -2065,6 +2099,7 @@ fapi2::ReturnCode buildParameterBlock( void* const i_pHomer, CONST_FAPI2_PROC& i
20652099
// The PPMR offset is from the begining --- which is the ppmrHeader
20662100
io_ppmrHdr.g_ppmr_pstables_offset = pPpmr->pstateTable - pPpmr->ppmrHeader;;
20672101
io_ppmrHdr.g_ppmr_pstables_length = sizeof(GeneratedPstateInfo);
2102+
FAPI_INF( "PPMR GEN PSTABLE 0x%08x", sizeof(GeneratedPstateInfo) );
20682103

20692104
//------------------------------ Copying WOF Table ----------------------------------------------
20702105

@@ -4023,7 +4058,8 @@ fapi2::ReturnCode p9_hcode_image_build( CONST_FAPI2_PROC& i_procTgt,
40234058
updateQpmrHeader( pChipHomer, l_qpmrHdr );
40244059

40254060
//update PPMR Header area in HOMER
4026-
updatePpmrHeader( pChipHomer, l_ppmrHdr );
4061+
FAPI_TRY( updatePpmrHeader( pChipHomer, l_ppmrHdr, i_procTgt ),
4062+
"Failed to update PPMR Header" );
40274063

40284064
//Update L2 Epsilon SCOM Registers
40294065
FAPI_TRY( populateEpsilonL2ScomReg( pChipHomer ),

0 commit comments

Comments
 (0)