summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Ploetz <maploetz@us.ibm.com>2013-11-04 22:33:33 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-08 15:24:20 -0600
commitfaf38f7f226c87186bcee34e57fbd93fd1cfdc66 (patch)
tree12a5aa7034de774aca8e0075227c3dbf753b42f3
parentf993373dac7e69fd8cfc54c105f0a793f6f362f5 (diff)
downloadtalos-hostboot-faf38f7f226c87186bcee34e57fbd93fd1cfdc66.tar.gz
talos-hostboot-faf38f7f226c87186bcee34e57fbd93fd1cfdc66.zip
INITPROC: Hostboot - SW232092 support for perv_ rings from VPD
Change-Id: I3d0103487fba5862c1c299351cd476cdebcc28c0 COREQ: 905382 CQ: SW232092 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7053 Tested-by: Jenkins Server Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h3
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C95
2 files changed, 96 insertions, 2 deletions
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h
index 18ec3f5ba..37445f28a 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_delta_scan_rw.h,v 1.45 2013/09/06 18:18:37 dcrowell Exp $
+// $Id: p8_delta_scan_rw.h,v 1.46 2013/09/20 15:38:53 bgass Exp $
#define OVERRIDE_OFFSET 8 // Byte offset of forward pointer's addr relative
// to base forward pointer's addr.
#define SIZE_IMAGE_BUF_MAX 5000000 // Max ~5MB image buffer size.
@@ -50,6 +50,7 @@
#define STANDALONE_MBOX1_VALUE_TOC_NAME "standalone_mbox1_value"
#define STANDALONE_MBOX2_VALUE_TOC_NAME "standalone_mbox2_value"
#define STANDALONE_MBOX3_VALUE_TOC_NAME "standalone_mbox3_value"
+#define UNTRUSTED_BAR_TOC_NAME "fabric_config"
/***** Scan setting *****/
#define OPCG_SCAN_RATIO 4
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C
index 0beb1b125..5d983fc39 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_xip_customize.C,v 1.56 2013/09/18 17:28:34 dcrowell Exp $
+// $Id: p8_xip_customize.C,v 1.58 2013/10/29 16:51:57 jeshua Exp $
/*------------------------------------------------------------------------------*/
/* *! TITLE : p8_xip_customize */
/* *! DESCRIPTION : Obtains repair rings from VPD and adds them to either */
@@ -546,6 +546,9 @@ ReturnCode p8_xip_customize( const fapi::Target &i_target,
FAPI_ERR("FAPI_ATTR_GET(ATTR_CHIP_REGIONS_TO_ENABLE) returned error.\n");
return rc;
}
+ //Make sure we always enable the pervasive chiplet
+ attrCombGoodVec[0] = 0x0f18000000000000ull;
+ attrCombGoodVec[1] = 0x0f18000000000000ull;
rcLoc = sbe_xip_find( o_imageOut, COMBINED_GOOD_VECTORS_TOC_NAME, &xipTocItem);
if (rcLoc) {
FAPI_ERR("sbe_xip_find() failed w/rc=%i and %s", rcLoc, SBE_XIP_ERROR_STRING(errorStrings, rcLoc));
@@ -627,6 +630,95 @@ ReturnCode p8_xip_customize( const fapi::Target &i_target,
FAPI_DBG(" After =0x%016llX\n",myRev64(*(uint64_t*)hostSecuritySetupVec));
}
+ // ==========================================================================
+ // CUSTOMIZE item: Untrusted bar settings
+ // Retrieval method: Attribute.
+ // System phase: IPL sysPhase.
+ // Note: TBD
+ // ==========================================================================
+
+ if (i_sysPhase==0) {
+ uint64_t attrAduUntrustedBarBase;
+ uint64_t attrAduUntrustedBarSize;
+
+ uint64_t attrPsiUntrustedBar0Base;
+ uint64_t attrPsiUntrustedBar0Size;
+
+ uint64_t attrPsiUntrustedBar1Base;
+ uint64_t attrPsiUntrustedBar1Size;
+
+ void *hostAduUntrustedBar;
+ uint64_t *untrustbar_field;
+
+ //-------------------------------------------------------------------------------------------
+ // ADU BAR
+ rc = FAPI_ATTR_GET(ATTR_PROC_ADU_UNTRUSTED_BAR_BASE_ADDR, &i_target, attrAduUntrustedBarBase);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_ADU_UNTRUSTED_BAR_BASE_ADDR) returned error.\n");
+ return rc;
+ }
+
+ rc = FAPI_ATTR_GET(ATTR_PROC_ADU_UNTRUSTED_BAR_SIZE, &i_target, attrAduUntrustedBarSize);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_ADU_UNTRUSTED_BAR_SIZE) returned error.\n");
+ return rc;
+ }
+
+ //-------------------------------------------------------------------------------------------
+ // PSI BAR0
+ rc = FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR0_BASE_ADDR, &i_target, attrPsiUntrustedBar0Base);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR0_BASE_ADDR) returned error.\n");
+ return rc;
+ }
+
+ rc = FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR0_SIZE, &i_target, attrPsiUntrustedBar0Size);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR0_SIZE) returned error.\n");
+ return rc;
+ }
+
+ //-------------------------------------------------------------------------------------------
+ // PSI BAR1
+ rc = FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR1_BASE_ADDR, &i_target, attrPsiUntrustedBar1Base);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR1_BASE_ADDR) returned error.\n");
+ return rc;
+ }
+
+ rc = FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR1_SIZE, &i_target, attrPsiUntrustedBar1Size);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_PSI_UNTRUSTED_BAR1_SIZE) returned error.\n");
+ return rc;
+ }
+
+ //------------------------------------------------------------------------------------------
+ //Look up fabric_config location
+ rcLoc = sbe_xip_find( o_imageOut, UNTRUSTED_BAR_TOC_NAME, &xipTocItem);
+ if (rcLoc) {
+ FAPI_ERR("sbe_xip_find() failed w/rc=%i and %s", rcLoc, SBE_XIP_ERROR_STRING(errorStrings, rcLoc));
+ FAPI_ERR("Probable cause:");
+ FAPI_ERR("\tThe keyword (=%s) was not found.",UNTRUSTED_BAR_TOC_NAME);
+ uint32_t & RC_LOCAL = rcLoc;
+ FAPI_SET_HWP_ERROR(rc, RC_PROC_XIPC_KEYWORD_NOT_FOUND_ERROR);
+ return rc;
+ }
+ sbe_xip_pore2host( o_imageOut, xipTocItem.iv_address, &hostAduUntrustedBar);
+ untrustbar_field = (uint64_t*)hostAduUntrustedBar;
+ FAPI_DBG("Dumping [initial] global variable content of %s, and then the updated value:\n",
+ UNTRUSTED_BAR_TOC_NAME);
+
+ *(untrustbar_field + 0) = myRev64(attrAduUntrustedBarBase);
+ *(untrustbar_field + 1) = myRev64(attrAduUntrustedBarSize);
+
+ *(untrustbar_field + 2) = myRev64(attrPsiUntrustedBar0Base);
+ *(untrustbar_field + 3) = myRev64(attrPsiUntrustedBar0Size);
+
+ *(untrustbar_field + 4) = myRev64(attrPsiUntrustedBar1Base);
+ *(untrustbar_field + 5) = myRev64(attrPsiUntrustedBar1Size);
+
+ }
+
#ifndef IMGBUILD_PPD_IGNORE_VPD_FIELD
void *hostPibmemRepairVec, *hostNestSkewAdjVec;
@@ -1096,6 +1188,7 @@ ReturnCode p8_xip_customize( const fapi::Target &i_target,
i_buf2,
i_sizeBuf2,
attrDdLevel,
+
sizeImageMax,
0xFF,
xipSectionDcrings
OpenPOWER on IntegriCloud