@@ -1805,19 +1805,36 @@ uint32_t layoutSgpeScanOverride( Homerlayout_t* i_pHomer,
1805
1805
1806
1806
/**
1807
1807
* @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.
1809
1811
*/
1810
1812
1811
1813
1812
- void updatePgpeHeader ( void * const i_pHomer )
1814
+ fapi2 :: ReturnCode updatePgpeHeader ( void * const i_pHomer , CONST_FAPI2_PROC & i_procTgt )
1813
1815
{
1814
- FAPI_DBG ("> updatePgpeHeader" );
1816
+ FAPI_DBG (">> updatePgpeHeader" );
1817
+ fapi2 ::current_err = fapi2 ::FAPI2_RC_SUCCESS ;
1815
1818
Homerlayout_t * pHomerLayout = (Homerlayout_t * )i_pHomer ;
1816
1819
PgpeHeader_t * pPgpeHdr = (PgpeHeader_t * )& pHomerLayout -> ppmrRegion .pgpeSramImage [PGPE_INT_VECTOR_SIZE ];
1817
1820
PpmrHeader_t * pPpmrHdr = ( PpmrHeader_t * ) pHomerLayout -> ppmrRegion .ppmrHeader ;
1821
+ uint32_t attrVal = 0 ;
1818
1822
1819
1823
//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 );
1821
1838
1822
1839
//Global P-State Parameter Block SRAM address
1823
1840
pPgpeHdr -> g_pgpe_gppb_sram_addr = 0 ; // set by PGPE Hcode
@@ -1866,8 +1883,11 @@ void updatePgpeHeader( void* const i_pHomer )
1866
1883
pPgpeHdr -> g_quad_status_addr = SWIZZLE_4_BYTE (pPgpeHdr -> g_quad_status_addr );
1867
1884
pPgpeHdr -> g_wof_table_addr = SWIZZLE_4_BYTE (pPgpeHdr -> g_wof_table_addr );
1868
1885
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 );
1869
1888
1870
1889
FAPI_DBG ("================================PGPE Image Header==========================================" )
1890
+ FAPI_DBG ("IVPR Address : 0x%08x" , SWIZZLE_4_BYTE (pPgpeHdr -> g_pgpe_ivpr_addr ));
1871
1891
FAPI_DBG ("Hcode Length : 0x%08x" , SWIZZLE_4_BYTE (pPgpeHdr -> g_pgpe_gppb_length ));
1872
1892
FAPI_DBG ("GPPB SRAM : 0x%08x" , SWIZZLE_4_BYTE (pPgpeHdr -> g_pgpe_gppb_sram_addr ));
1873
1893
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 )
1880
1900
FAPI_DBG ("Quad Status : 0x%08x" , SWIZZLE_4_BYTE (pPgpeHdr -> g_quad_status_addr ));
1881
1901
FAPI_DBG ("WOF Addr : 0x%08x" , SWIZZLE_4_BYTE (pPgpeHdr -> g_wof_table_addr ));
1882
1902
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
+
1883
1906
FAPI_DBG ("==============================PGPE Image Header End========================================" )
1884
1907
1885
- FAPI_DBG ("< updatePgpeHeader" );
1908
+ fapi_try_exit :
1909
+ FAPI_DBG ("<< updatePgpeHeader" );
1910
+ return fapi2 ::current_err ;
1886
1911
}
1887
1912
1888
1913
//---------------------------------------------------------------------------
1889
1914
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 )
1891
1922
{
1892
- FAPI_DBG ("> updatePpmrHeader" );
1923
+ FAPI_DBG (">> updatePpmrHeader" );
1924
+ fapi2 ::current_err = fapi2 ::FAPI2_RC_SUCCESS ;
1893
1925
Homerlayout_t * pHomerLayout = (Homerlayout_t * )i_pHomer ;
1894
1926
PpmrHeader_t * pPpmrHdr = (PpmrHeader_t * ) & pHomerLayout -> ppmrRegion .ppmrHeader ;
1895
1927
memcpy ( pPpmrHdr , & io_ppmrHdr , sizeof (PpmrHeader_t ) );
@@ -1913,9 +1945,11 @@ void updatePpmrHeader( void* const i_pHomer, PpmrHeader_t& io_ppmrHdr )
1913
1945
FAPI_DBG ("WOF Table End : 0x%08x" , SWIZZLE_4_BYTE (pPpmrHdr -> g_ppmr_wof_table_length ));
1914
1946
FAPI_DBG ("=========================== PPMR Header ends ==================================" );
1915
1947
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 ;
1919
1953
}
1920
1954
1921
1955
//---------------------------------------------------------------------------
@@ -2065,6 +2099,7 @@ fapi2::ReturnCode buildParameterBlock( void* const i_pHomer, CONST_FAPI2_PROC& i
2065
2099
// The PPMR offset is from the begining --- which is the ppmrHeader
2066
2100
io_ppmrHdr .g_ppmr_pstables_offset = pPpmr -> pstateTable - pPpmr -> ppmrHeader ;;
2067
2101
io_ppmrHdr .g_ppmr_pstables_length = sizeof (GeneratedPstateInfo );
2102
+ FAPI_INF ( "PPMR GEN PSTABLE 0x%08x" , sizeof (GeneratedPstateInfo ) );
2068
2103
2069
2104
//------------------------------ Copying WOF Table ----------------------------------------------
2070
2105
@@ -4023,7 +4058,8 @@ fapi2::ReturnCode p9_hcode_image_build( CONST_FAPI2_PROC& i_procTgt,
4023
4058
updateQpmrHeader ( pChipHomer , l_qpmrHdr );
4024
4059
4025
4060
//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" );
4027
4063
4028
4064
//Update L2 Epsilon SCOM Registers
4029
4065
FAPI_TRY ( populateEpsilonL2ScomReg ( pChipHomer ),
0 commit comments