diff options
author | Shelton Leung <sleung@us.ibm.com> | 2016-08-05 15:22:57 -0500 |
---|---|---|
committer | Stephen M. Cprek <smcprek@us.ibm.com> | 2016-08-18 15:12:25 -0400 |
commit | 0cf8b613c8c1e89b053e320fb8119979553aebd3 (patch) | |
tree | 48b775c8d93d5c03c56690d535c17784421ae010 /src | |
parent | 22f871c5f297dbfadfc0cade037937c0783fef7a (diff) | |
download | blackbird-hostboot-0cf8b613c8c1e89b053e320fb8119979553aebd3.tar.gz blackbird-hostboot-0cf8b613c8c1e89b053e320fb8119979553aebd3.zip |
added 2nd round of mc inits
Change-Id: I46729be578c3e9e1dddbee5fec0467e4aae95813
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28064
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Brian R. Silver <bsilver@us.ibm.com>
Reviewed-by: Jenny Huynh <jhuynh@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28067
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com>
Diffstat (limited to 'src')
6 files changed, 142 insertions, 36 deletions
diff --git a/src/import/chips/p9/initfiles/p9.mc.scan.initfile b/src/import/chips/p9/initfiles/p9.mc.scan.initfile index 92e34a968..4a9a9cce5 100644 --- a/src/import/chips/p9/initfiles/p9.mc.scan.initfile +++ b/src/import/chips/p9/initfiles/p9.mc.scan.initfile @@ -11,7 +11,7 @@ target_type 0 TARGET_TYPE_MCBIST; # } ########################## -# MC TEAM DICTATED INITS # +# DD1 WORKAROUNDS ########################## # FOR DD1 Prefetch Limit needs to be scan init to 0 because SCOM is broken (HW366248) @@ -33,4 +33,23 @@ ispy MC01.PORT3.ATCL.CL.CLSCOM.MCPERF0_PREFETCH_LIMIT [when=L] { 0b000000; } +# Static hpc_wr/ig_wr CL reservation +# Complicated order dependent sequence to do with SCOMs, easier with scans +ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT [when=L] { + spyv; + 8; +} +ispy MC01.PORT1.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT [when=L] { + spyv; + 8; +} +ispy MC01.PORT2.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT [when=L] { + spyv; + 8; +} +ispy MC01.PORT3.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT [when=L] { + spyv; + 8; +} + diff --git a/src/import/chips/p9/initfiles/p9.mca.scom.initfile b/src/import/chips/p9/initfiles/p9.mca.scom.initfile index 55ec941c8..3b2ec7707 100644 --- a/src/import/chips/p9/initfiles/p9.mca.scom.initfile +++ b/src/import/chips/p9/initfiles/p9.mca.scom.initfile @@ -39,27 +39,27 @@ #-- REFERENCES FOR FILE #--****************************************************************************** # Files used to check what target type attributes are -# /gsa/ausgsa/home/s/l/sleung/ekb/ekb/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml -# /gsa/ausgsa/home/s/l/sleung/ekb/ekb/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml +# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml +# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml # Example: # <id>ATTR_EFF_NUM_RANKS_PER_DIMM</id> # <targetType>TARGET_TYPE_MCS</targetType> # File used to see if attribute is 1D or 2D array -# /gsa/ausgsa/home/s/l/sleung/ekb/ekb/output/gen/attribute_ids.H +# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/output/gen/attribute_ids.H # Example: # typedef uint8_t ATTR_EFF_DIMM_TYPE_Type[2][2]; # File for finding correct spydef name # 1st find the spydef file this ekb build is looking at by finding SPYDEF_FILE_LOCATION in file below -# /gsa/ausgsa/home/s/l/sleung/ekb/ekb/tools/ifCompiler/scan_procedures.mk +# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/tools/ifCompiler/scan_procedures.mk # 2nd open *.spydef in that dir and search for spy names -# /afs/awd/projects/eclipz/lab/p9/vbu_models/n10_e9050_tp046_ec150u01a_soa_sc_u138_01/edc/*.spydef +# /afs/awd/projects/eclipz/lab/p9/vbu_models/n10_e9067_tp058_ec163uXXa_soa_sq_u190_01/edc/*.spydef # (File comes from actually building a vbu file and looking at the spydef) # Example: # idial MCP.PORT1.SRQ.PC.MBAREF0Q_CFG_TRFC { # Wrapper file calling this -# /gsa/ausgsa/home/s/l/sleung/ekb/ekb/chips/p9/procedures/hwp/memory/p9_mss_scominit.C +# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/hwp/memory/p9_mss_scominit.C # Output file generated -# /gsa/ausgsa/home/s/l/sleung/ekb/ekb/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C +# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C # # COMMON DEBUG # -debug5.16.i6.d @@ -434,19 +434,17 @@ ispy MCP.PORT0.SRQ.PC.MBASTR0Q_CFG_TXSDLL [when=S] { #################################################### -# Force clock enable high DD1 Periodics Issue +# DD1 WORKAROUNDS #################################################### +# Force clock enable high DD1 Periodics Issue + espy MCP.PORT0.SRQ.MBA_FARB0Q_CFG_OE_ALWAYS_ON [when=S]{ spyv; ON; } - - -#################################################### -# MCS SCOMS MOVED HERE (USING BEN GASS DLL OVERRIDE) -#################################################### +# Epsilon Settings per Power Bus Spreadsheet ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_JITTER_EPSILON [when=S] { spyv; @@ -478,17 +476,32 @@ ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_VECTOR_GROUP_EPSILON [when=S] { SYS.ATTR_PROC_EPS_READ_CYCLES_T2 / 4; } -# MC TEAM DICTATED INITS # +# HW366164 - SRQ Fullness Control -# HW366164 ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_SQ_LFSR_CNTL [when=S] { spyv; 0b0100; } +# Number of RMW buffers available -espy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_EN_ALT_CR [when=S] { +ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_NUM_RMW_BUF [when=S] { spyv; - OFF; + 0b11100; } +# All rctrl ops through tag FIFO (bit 0) +# Serialize CMDLIST pf drop through rctrl (bit 1) +# (bit 0 keep at 0) +ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_RCTRL_CONFIG [when=S] { + spyv; + 0b110; +} + +# Max 24 64-byte read buffers (HW375534) +ispy MCP.PORT0.SRQ.MBA_RRQ0Q_CFG_RDBUFF_CAPACITY_LIMIT [when=S] { + spyv; + 0b011000; +} + + diff --git a/src/import/chips/p9/initfiles/p9.mcs.scom.initfile b/src/import/chips/p9/initfiles/p9.mcs.scom.initfile index f6a3639be..f1fb2db0b 100644 --- a/src/import/chips/p9/initfiles/p9.mcs.scom.initfile +++ b/src/import/chips/p9/initfiles/p9.mcs.scom.initfile @@ -71,9 +71,10 @@ target_type 0 TARGET_TYPE_MCS; ########################## -# MC TEAM DICTATED INITS # +# DD1 WORKAROUNDS ########################## +# If cache scope prediciton logic is active, must disable fp_m bit, so fp ops will go fetch 128 bytes (for potential mdi update) espy MC01.PBI01.SCOMFIR.MCMODE1_DISABLE_FP_M_BIT [when=S] { spyv; ON; @@ -85,18 +86,9 @@ ispy MC01.PBI01.SCOMFIR.MCPERF1_MERGE_CAPACITY_LIMIT [when=S] { 0b0111; } -# MOVED MC01.PORT... TO MCA PER BEN GASS'S DLL OVERRIDE -# -#ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_SQ_LFSR_CNTL [when=S] { -# spyv; -# 0b0100; -# -#espy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_EN_ALT_CR [when=S] { -# spyv; -# OFF; -#} -# -#ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF0_PREFETCH_LIMIT [when=S] { -# spyv; -# 0b000000; -#} +# Turns off SRQ pf drop +ispy MC01.PBI01.SCOMFIR.MCPERF1_ENABLE_PF_DROP_SRQ [when=S] { + spyv; + 0; +} + diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_mc_scan.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_mc_scan.C index dee6f31ee..6f709d4e6 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_mc_scan.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_mc_scan.C @@ -30,6 +30,7 @@ using namespace fapi2; constexpr auto literal_0b000000 = 0b000000; +constexpr auto literal_8 = 8; fapi2::ReturnCode p9_mc_scan(const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& TGT0) { @@ -85,6 +86,54 @@ fapi2::ReturnCode p9_mc_scan(const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& TGT break; } } + { + fapi2::variable_buffer l_MC01_PORT0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT(6); + l_MC01_PORT0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT.insertFromRight<uint64_t>(literal_8, 0, 6); + l_rc = fapi2::putSpy(TGT0, "MC01.PORT0.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_PORT0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putSpy (MC01.PORT0.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT)"); + break; + } + } + { + fapi2::variable_buffer l_MC01_PORT1_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT(6); + l_MC01_PORT1_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT.insertFromRight<uint64_t>(literal_8, 0, 6); + l_rc = fapi2::putSpy(TGT0, "MC01.PORT1.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_PORT1_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putSpy (MC01.PORT1.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT)"); + break; + } + } + { + fapi2::variable_buffer l_MC01_PORT2_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT(6); + l_MC01_PORT2_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT.insertFromRight<uint64_t>(literal_8, 0, 6); + l_rc = fapi2::putSpy(TGT0, "MC01.PORT2.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_PORT2_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putSpy (MC01.PORT2.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT)"); + break; + } + } + { + fapi2::variable_buffer l_MC01_PORT3_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT(6); + l_MC01_PORT3_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT.insertFromRight<uint64_t>(literal_8, 0, 6); + l_rc = fapi2::putSpy(TGT0, "MC01.PORT3.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_PORT3_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putSpy (MC01.PORT3.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT)"); + break; + } + } } while (0); diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C index d2dff9b70..e6b7cf6af 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C @@ -30,6 +30,8 @@ using namespace fapi2; constexpr auto literal_0b0100 = 0b0100; +constexpr auto literal_0b11100 = 0b11100; +constexpr auto literal_0b110 = 0b110; constexpr auto literal_0x1 = 0x1; constexpr auto literal_4 = 4; constexpr auto literal_1 = 1; @@ -62,6 +64,7 @@ constexpr auto literal_11 = 11; constexpr auto literal_12 = 12; constexpr auto literal_267 = 267; constexpr auto literal_1866 = 1866; +constexpr auto literal_0b011000 = 0b011000; constexpr auto literal_597 = 597; constexpr auto literal_768 = 768; constexpr auto literal_939 = 939; @@ -89,8 +92,11 @@ fapi2::ReturnCode p9_mca_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& TGT0, } { - constexpr auto l_MC01_PORT0_ATCL_CL_CLSCOM_MCPERF2_EN_ALT_CR_OFF = 0x0; - l_scom_buffer.insert<uint64_t> (l_MC01_PORT0_ATCL_CL_CLSCOM_MCPERF2_EN_ALT_CR_OFF, 62, 1, 63 ); + l_scom_buffer.insert<uint64_t> (literal_0b11100, 50, 5, 59 ); + } + + { + l_scom_buffer.insert<uint64_t> (literal_0b110, 37, 3, 61 ); } l_rc = fapi2::putScom(TGT0, 0x5010824ull, l_scom_buffer); @@ -782,6 +788,28 @@ fapi2::ReturnCode p9_mca_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& TGT0, } { + l_rc = fapi2::getScom( TGT0, 0x701090eull, l_scom_buffer ); + + if (l_rc) + { + FAPI_ERR("ERROR executing: getScom (0x701090eull)"); + break; + } + + { + l_scom_buffer.insert<uint64_t> (literal_0b011000, 24, 6, 58 ); + } + + l_rc = fapi2::putScom(TGT0, 0x701090eull, l_scom_buffer); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putScom (0x701090eull)"); + break; + } + } + + { l_rc = fapi2::getScom( TGT0, 0x7010913ull, l_scom_buffer ); if (l_rc) diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_mcs_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_mcs_scom.C index c827e3bf5..532ecd965 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_mcs_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_mcs_scom.C @@ -30,6 +30,7 @@ using namespace fapi2; constexpr auto literal_0b0111 = 0b0111; +constexpr auto literal_0 = 0; fapi2::ReturnCode p9_mcs_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& TGT0) { @@ -51,6 +52,10 @@ fapi2::ReturnCode p9_mcs_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& TGT0) l_scom_buffer.insert<uint64_t> (literal_0b0111, 46, 4, 60 ); } + { + l_scom_buffer.insert<uint64_t> (literal_0, 62, 1, 63 ); + } + l_rc = fapi2::putScom(TGT0, 0x5010810ull, l_scom_buffer); if (l_rc) |