summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJayashankar Padath <jayashankar.padath@in.ibm.com>2018-04-10 06:02:53 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-05-02 16:01:55 -0400
commit18cd3bf4c1eb67ddf2ebef3bcba88761c7618c9e (patch)
tree4867e09648f39105043dedadf29119c46ac34821
parent9add45f9ebcec629c99d462cca1d755090ff4157 (diff)
downloadtalos-hostboot-18cd3bf4c1eb67ddf2ebef3bcba88761c7618c9e.tar.gz
talos-hostboot-18cd3bf4c1eb67ddf2ebef3bcba88761c7618c9e.zip
HDAT : Change in feature flag structures for Rugby
Change-Id: I5862bdaeda8ff2e13d14a80b209b4beef8361e0d Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56996 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com> Reviewed-by: Sampa Misra <sampmisr@in.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rwxr-xr-xsrc/usr/hdat/hdatiplparms.C125
-rwxr-xr-xsrc/usr/hdat/hdatiplparms.H225
2 files changed, 246 insertions, 104 deletions
diff --git a/src/usr/hdat/hdatiplparms.C b/src/usr/hdat/hdatiplparms.C
index da20aaa41..d67795de7 100755
--- a/src/usr/hdat/hdatiplparms.C
+++ b/src/usr/hdat/hdatiplparms.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016,2017 */
+/* Contributors Listed Below - COPYRIGHT 2016,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -523,81 +523,81 @@ static errlHndl_t hdatGetPortInfo(HDAT::hdatHDIFDataArray_t &o_portArrayHdr,
}
/**
- * @brief This routine gets the feature flag array based on processor type/DD
- * level
+ * @brief This routine fetches the information on feature flags
*
* @pre None
*
* @post None
*
- * @param o_featureFlagArr - output parameter - array of feature flags
+ * @param o_featureFlagArrayHdr - output parameter - Array header
+ * @param o_featureFlagSettings - output parameter - The structure to update
+ * with Feature flag information
+ * @param o_featFlagArrSize - output parameter - Feature flag array size
*
+ * @retval None
*/
-static void hdatGetFeatureFlagArray(const hdatIplpFeatureFlagSetting_t * o_featureFlagArr[],
- uint32_t & o_size)
+static void hdatGetFeatureFlagInfo(
+ hdatHDIFVersionedDataArray_t &o_featureFlagArrayHdr,
+ hdatIplpFeatureFlagSetting_t o_featureFlagSettings[],
+ uint32_t & o_featFlagArrSize)
{
- //Default to Nimbus DD2.2 settings (DD1.0 doesn't matter) and these are current
- //settings for cumulus
- *o_featureFlagArr = hdatIplpFeatureFlagSettingsArray_22;
- o_size = sizeof(hdatIplpFeatureFlagSettingsArray_22);
+ TARGETING::Target *l_pSysTarget = NULL;
+ (void) TARGETING::targetService().getTopLevelTarget(l_pSysTarget);
- //Modify for Nimubs DD2.0 and DD2.1
- PVR_t l_pvr( mmio_pvr_read() & 0xFFFFFFFF );
- if(l_pvr.chipType == PVR_t::NIMBUS_CHIP)
+ if(l_pSysTarget == NULL)
{
- if(l_pvr.getDDLevel() == 0x20)
- {
- *o_featureFlagArr = hdatIplpFeatureFlagSettingsArray_20;
- o_size = sizeof(hdatIplpFeatureFlagSettingsArray_20);
+ HDAT_ERR("hdatGetFeatureFlagInfo::Top Level Target not found");
+ assert(l_pSysTarget != NULL);
+ }
- }
- else if (l_pvr.getDDLevel() == 0x21)
- {
- *o_featureFlagArr = hdatIplpFeatureFlagSettingsArray_21;
- o_size = sizeof(hdatIplpFeatureFlagSettingsArray_21);
+ // Default the dd level to 2.2
+ uint8_t l_ddLevel = HDAT_PROC_NIMBUS_DD_22;
+ const hdatIplpFeatureFlagSetting_t * l_featFlagArr;
+ uint32_t l_featFlagArrSize = 0;
+ uint8_t l_riskLvl = 0;
- }
- }
-}
+ // Risk level is set
+ l_riskLvl = l_pSysTarget->getAttr<ATTR_RISK_LEVEL>();
+ PVR_t l_pvr( mmio_pvr_read() & 0xFFFFFFFF );
+ // DD level is set
+ l_ddLevel = l_pvr.getDDLevel();
+
+ // Default to Nimbus DD2.2 settings (DD1.0 doesn't matter) and these are
+ // current settings for cumulus
+ // Default to DD2 flag struct index.
+ uint8_t l_idx = 2;
+ l_featFlagArr = hdatIplpFeatureFlagSettingsArray[l_riskLvl][l_idx];
+ l_featFlagArrSize =
+ sizeof(hdatIplpFeatureFlagSettingsArray[l_riskLvl][l_idx]);
+
+ // Modify for Nimubs DD2.0 and DD2.1
+ if (l_pvr.chipType == PVR_t::NIMBUS_CHIP)
+ {
+ if (l_ddLevel == HDAT_PROC_NIMBUS_DD_20) {l_idx = 0;}
+ else if (l_ddLevel == HDAT_PROC_NIMBUS_DD_21) {l_idx = 1;}
+ else if (l_ddLevel == HDAT_PROC_NIMBUS_DD_22) {l_idx = 2;}
-/**
- * @brief This routine gets the information on feature flags
- *
- * @pre None
- *
- * @post None
- *
- * @param o_featureFlagArrayHdr - output parameter - Array header
- * @param o_featureFlagSettings - output parameter - The structure to update with
- * Feature flag information
- *
- * @return A null error log handle if successful, else the return code pointed
- * to by errlHndl_t contains one of:
- *
- * @retval HDAT_OTHER_COMP_ERROR
- */
-static errlHndl_t hdatGetFeatureFlagInfo(HDAT::hdatHDIFVersionedDataArray_t &o_featureFlagArrayHdr,
- hdatIplpFeatureFlagSetting_t o_featureFlagSettings[])
-{
- errlHndl_t l_errlHndl = NULL;
- const hdatIplpFeatureFlagSetting_t * l_arr = NULL;
- uint32_t l_arrSize = 0;
- hdatGetFeatureFlagArray(&l_arr, l_arrSize);
+ l_featFlagArr = hdatIplpFeatureFlagSettingsArray[l_riskLvl][l_idx];
+ l_featFlagArrSize =
+ sizeof(hdatIplpFeatureFlagSettingsArray[l_riskLvl][l_idx]);
+ }
+
+ HDAT_DBG("Feature flag array size:0x%x, Model:0x%x, DD Level:0x%x "
+ "Risk Level:0x%x", l_featFlagArrSize, l_pvr.chipType,
+ l_ddLevel, l_riskLvl);
- o_featureFlagArrayHdr.hdatOffset = sizeof(HDAT::hdatHDIFVersionedDataArray_t);
+ o_featFlagArrSize = l_featFlagArrSize;
+ o_featureFlagArrayHdr.hdatOffset = sizeof(hdatHDIFVersionedDataArray_t);
o_featureFlagArrayHdr.hdatAllocSize = sizeof(hdatIplpFeatureFlagSetting_t);
o_featureFlagArrayHdr.hdatActSize = sizeof(hdatIplpFeatureFlagSetting_t);
- o_featureFlagArrayHdr.hdatArrayCnt =
- l_arrSize/sizeof(hdatIplpFeatureFlagSetting_t);
+ o_featureFlagArrayHdr.hdatArrayCnt =
+ l_featFlagArrSize/sizeof(hdatIplpFeatureFlagSetting_t);
o_featureFlagArrayHdr.hdatVersion = HDAT_FEATURE_FLAG_VERSION::V1;
-
- memcpy(o_featureFlagSettings , l_arr,
- l_arrSize);
- return l_errlHndl;
+
+ memcpy(o_featureFlagSettings , l_featFlagArr, l_featFlagArrSize);
}
-
/**
* @brief This routine gets the information for System Parameters
*
@@ -986,9 +986,10 @@ static void hdatSetIPLParamsHdrs(hdatIPLParameters_t *o_iplparams)
o_iplparams->hdatHdr.hdatDataPtrCnt = HDAT_IPL_PARAMS_DA_CNT;
o_iplparams->hdatHdr.hdatChildStrCnt = 0;
o_iplparams->hdatHdr.hdatChildStrOffset = 0;
- const hdatIplpFeatureFlagSetting_t * l_arr = NULL;
- uint32_t l_arrSize = 0;
- hdatGetFeatureFlagArray(&l_arr, l_arrSize);
+
+ // Set the feature flag array size
+ uint32_t l_featureFlagArrSize = 0;
+ l_featureFlagArrSize = sizeof(hdatIplpFeatureFlagSettingsArray[0][0]);
memcpy(o_iplparams->hdatHdr.hdatStructName, HDAT_IPLP_STRUCT_NAME,
sizeof(o_iplparams->hdatHdr.hdatStructName));
@@ -1051,7 +1052,7 @@ static void hdatSetIPLParamsHdrs(hdatIPLParameters_t *o_iplparams)
offsetof(hdatIPLParameters_t, iv_featureFlagArrayHdr);
o_iplparams->hdatIPLParamsIntData[HDAT_IPL_PARAMS_FEATURE_FLAGS].hdatSize =
- sizeof(hdatHDIFVersionedDataArray_t) + l_arrSize;
+ sizeof(hdatHDIFVersionedDataArray_t) + l_featureFlagArrSize;
}
@@ -1167,8 +1168,10 @@ errlHndl_t HdatIplParms::hdatLoadIplParams(uint32_t &o_size, uint32_t &o_count)
sizeof(HDAT::hdatHDIFVersionedDataArray_t));
memset(&this->iv_hdatIPLParams->iv_featureFlagSettings, 0x00,
sizeof(hdatIplpFeatureFlagSetting_t) * MAX_FEATURE_FLAGS);
+ this->iv_hdatIPLParams->iv_featureFlagArrSize = 0x00;
hdatGetFeatureFlagInfo(this->iv_hdatIPLParams->iv_featureFlagArrayHdr,
- this->iv_hdatIPLParams->iv_featureFlagSettings);
+ this->iv_hdatIPLParams->iv_featureFlagSettings,
+ this->iv_hdatIPLParams->iv_featureFlagArrSize);
HDAT_DBG("HDAT:: IPL Parameters Loaded :: Size : 0x%X",
sizeof(hdatIPLParameters_t));
diff --git a/src/usr/hdat/hdatiplparms.H b/src/usr/hdat/hdatiplparms.H
index 1a24f44eb..4f674b366 100755
--- a/src/usr/hdat/hdatiplparms.H
+++ b/src/usr/hdat/hdatiplparms.H
@@ -265,11 +265,19 @@ struct hdatPortCodes_t
} __attribute__ ((packed));
#define MAX_FEATURE_FLAGS 64 // Maximum number of feature flags
+#define NUM_RISK_LEVELS 3 // 0,1,2
+#define NUM_OF_DD_LVLS 3 // DD2.0,2.1,2.2
+#define NUM_FF_FLAGS 15
enum HDAT_FEATURE_FLAG_VERSION : uint32_t
{
V1 = 0x00000001
};
+
+const uint8_t HDAT_PROC_NIMBUS_DD_20 = 0x20;
+const uint8_t HDAT_PROC_NIMBUS_DD_21 = 0x21;
+const uint8_t HDAT_PROC_NIMBUS_DD_22 = 0x22;
+
struct hdatIplpFeatureFlagSetting_t
{
char hdatIplpFeatureFlagString[64]; // Feature flag null terminated string
@@ -277,52 +285,179 @@ struct hdatIplpFeatureFlagSetting_t
}__attribute__ ((packed));
// Agreed strings and settings of different feature flags
-const hdatIplpFeatureFlagSetting_t hdatIplpFeatureFlagSettingsArray_20[]=
+// based on risk level and DD levels.
+
+const hdatIplpFeatureFlagSetting_t hdatIplpFeatureFlagSettingsArray[NUM_RISK_LEVELS][NUM_OF_DD_LVLS][NUM_FF_FLAGS]=
{
-{"tm-suspend-mode", 0x8000000000000000},
-{"inst-thread-reconfig-control-trig0-1", 0x8000000000000000},
-{"inst-l1d-flush-trig2", 0x8000000000000000},
-{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
-{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
-{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
-{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
-{"needs-spec-barrier-for-bound-checks", 0x8000000000000000},
-{"fw-l1d-thread-split", 0x8000000000000000},
-{"fw-bcctrl-serialized", 0x0000000000000000},
-{"fw-count-cache-disabled", 0x8000000000000000},
-{"speculation-policy-favor-security", 0x8000000000000000}};
-
-const hdatIplpFeatureFlagSetting_t hdatIplpFeatureFlagSettingsArray_21[]=
{
-{"tm-suspend-mode", 0x0000000000000000},
-{"inst-thread-reconfig-control-trig0-1", 0x8000000000000000},
-{"inst-l1d-flush-trig2", 0x8000000000000000},
-{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
-{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
-{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
-{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
-{"needs-spec-barrier-for-bound-checks", 0x8000000000000000},
-{"fw-l1d-thread-split", 0x8000000000000000},
-{"fw-bcctrl-serialized", 0x0000000000000000},
-{"fw-count-cache-disabled", 0x8000000000000000},
-{"speculation-policy-favor-security", 0x8000000000000000}};
-
-const hdatIplpFeatureFlagSetting_t hdatIplpFeatureFlagSettingsArray_22[]=
+//RISK 0 (AIX/Linux/IBMi)
{
-{"tm-suspend-mode", 0x8000000000000000},
-{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
-{"inst-l1d-flush-trig2", 0x8000000000000000},
-{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
-{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
-{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
-{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
-{"needs-spec-barrier-for-bound-checks", 0x8000000000000000},
-{"fw-l1d-thread-split", 0x8000000000000000},
-{"fw-bcctrl-serialized", 0x8000000000000000},
-{"fw-count-cache-disabled", 0x8000000000000000},
-{"speculation-policy-favor-security", 0x8000000000000000}};
-
-
+// Risk Level 0 , DD2.0
+{"tm-suspend-mode", 0x0000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
+{"fw-bcctrl-serialized", 0x8000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x8000000000000000},
+{"fw-branch-hints-honored", 0x8000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x8000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x8000000000000000}},
+
+// Risk Level 0 , DD2.1
+{
+{"tm-suspend-mode", 0x0000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
+{"fw-bcctrl-serialized", 0x8000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x8000000000000000},
+{"fw-branch-hints-honored", 0x8000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x8000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x8000000000000000}},
+
+// Risk Level 0 , DD2.2
+{
+{"tm-suspend-mode", 0x8000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
+{"fw-bcctrl-serialized", 0x0000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x8000000000000000},
+{"fw-l1d-thread-split", 0x8000000000000000},
+{"fw-branch-hints-honored", 0x8000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x8000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x8000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x8000000000000000}}
+},
+
+//RISK 1 (AIX/Linux)
+{
+// Risk Level 1 , DD2.0
+{
+{"tm-suspend-mode", 0x0000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
+{"fw-bcctrl-serialized", 0x8000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x8000000000000000},
+{"fw-branch-hints-honored", 0x8000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x8000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x8000000000000000}},
+
+// Risk Level 1 , DD2.1
+{
+{"tm-suspend-mode", 0x0000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
+{"fw-bcctrl-serialized", 0x8000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x8000000000000000},
+{"fw-branch-hints-honored", 0x8000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x8000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x8000000000000000}},
+
+// Risk Level 1 , DD2.2
+{
+{"tm-suspend-mode", 0x8000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x8000000000000000},
+{"fw-bcctrl-serialized", 0x8000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x8000000000000000},
+{"fw-l1d-thread-split", 0x8000000000000000},
+{"fw-branch-hints-honored", 0x8000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x8000000000000000},
+{"user-mode-branch-speculation", 0x8000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x8000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x8000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x8000000000000000}}
+},
+
+//RISK 2 (No Security)
+{
+// Risk Level 2, DD2.0
+{
+{"tm-suspend-mode", 0x0000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x0000000000000000},
+{"fw-bcctrl-serialized", 0x0000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x0000000000000000},
+{"fw-branch-hints-honored", 0x0000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x0000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x0000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x0000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x0000000000000000}},
+
+// Risk Level 2, DD2.1
+{
+{"tm-suspend-mode", 0x0000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x0000000000000000},
+{"fw-bcctrl-serialized", 0x0000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x0000000000000000},
+{"fw-branch-hints-honored", 0x0000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x0000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x0000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x0000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x0000000000000000}},
+
+// Risk Level 2, DD2.2
+{
+{"tm-suspend-mode", 0x8000000000000000},
+{"inst-spec-barrier-ori31,31,0", 0x0000000000000000},
+{"fw-bcctrl-serialized", 0x0000000000000000},
+{"inst-l1d-flush-ori30,30,0", 0x0000000000000000},
+{"inst-l1d-flush-trig2", 0x0000000000000000},
+{"fw-l1d-thread-split", 0x0000000000000000},
+{"fw-branch-hints-honored", 0x0000000000000000},
+{"inst-thread-reconfig-control-trig0-1", 0x0000000000000000},
+{"fw-count-cache-disabled", 0x0000000000000000},
+{"fw-ltptr-serialized", 0x0000000000000000},
+{"speculation-policy-favor-security", 0x0000000000000000},
+{"user-mode-branch-speculation", 0x0000000000000000},
+{"needs-l1d-flush-msr-hv-1-to-0", 0x0000000000000000},
+{"needs-l1d-flush-msr-pr-0-to-1", 0x0000000000000000},
+{"needs-spec-barrier-for-bound-checks", 0x0000000000000000}}}};
#define HDAT_CHIP_TYPE_MURANO "MURANO"
#define HDAT_CHIP_TYPE_VENICE "VENICE"
@@ -406,6 +541,9 @@ struct hdatIPLParameters_t{
* @li iv_manf - manufacturing flags
* @li iv_portArrayHdr - serial port array header
* @li iv_ports - serial port location codes and resource ids
+ * @li iv_featureFlagArrayHdr - feature flag array header
+ * @li iv_featureFlagSettings - feature flag settings
+ * @li iv_featureFlagArrSize - feature flag array size
*/
hdatHDIF_t hdatHdr;
hdatHDIFDataHdr_t hdatIPLParamsIntData[HDAT_IPL_PARAMS_DA_LAST];
@@ -421,6 +559,7 @@ struct hdatIPLParameters_t{
hdatPortCodes_t iv_ports[hdatMaxPorts];
hdatHDIFVersionedDataArray_t iv_featureFlagArrayHdr;
hdatIplpFeatureFlagSetting_t iv_featureFlagSettings[MAX_FEATURE_FLAGS];
+ uint32_t iv_featureFlagArrSize;
};
/*----------------------------------------------------------------------------*/
OpenPOWER on IntegriCloud