summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2018-05-31 16:31:01 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-06-06 13:59:44 -0400
commit27bf395be2cd9025abc1a48ad74a0b3bc5da97f8 (patch)
tree29bb599328e3ab98e1e105a285c9f213cf040871 /src/include
parent1db54dcc27d4061114c9466ec5fb72121420c5eb (diff)
downloadtalos-hostboot-27bf395be2cd9025abc1a48ad74a0b3bc5da97f8.tar.gz
talos-hostboot-27bf395be2cd9025abc1a48ad74a0b3bc5da97f8.zip
missing memory: istep 7 and 14 changes
There are two cases where hostboot's attention is required in istep7: - If HRMOR we booted with doesn't fall in the range of proc_mem_to_use's memory, then the SBE is old. HB will do an sbe update and request re-ipl - If HB deconfigured a bunch of dimms in istep7 and ran out of memory, then we will request a reconfig loop Then, in istep14, we added another sanity check to make sure we have memory as expected to prevent unexpected failure after exiting cache contained mode. Change-Id: I018f4ce862cc79b5d7bacbe01cc28d1d2b4fc788 CQ:SW430015 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59696 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> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/hwas/common/hwas.H33
-rw-r--r--src/include/usr/isteps/istep_reasoncodes.H1
-rw-r--r--src/include/usr/targeting/common/util.H18
3 files changed, 50 insertions, 2 deletions
diff --git a/src/include/usr/hwas/common/hwas.H b/src/include/usr/hwas/common/hwas.H
index 06304c29c..120ba0b7d 100644
--- a/src/include/usr/hwas/common/hwas.H
+++ b/src/include/usr/hwas/common/hwas.H
@@ -258,6 +258,39 @@ errlHndl_t check_for_missing_memory (const TARGETING::Target* i_node,
uint8_t & io_proc_mem_to_use,
bool & o_found_missing_mem);
+/*
+ * @brief This function takes in proc target and returns group/chip id
+ * in the following bit format: GGGG CCC
+ * where G = Group Id and C = Chip Id
+ *
+ * @param[in] i_proc: proc target
+ * @retval: chip info including group and chip id
+ */
+uint64_t getGroupChipIdInfo (TARGETING::TargetHandle_t i_proc);
+
+/*
+ * @brief This function takes in the value of ATTR_PROC_MEM_TO_USE
+ * and extract out group and chip id
+ * in the following bit format: GGGG CCC
+ * where G = Group Id and C = Chip Id
+ *
+ * @param[in] i_proc_mem_to_use: Value of ATTR_PROC_MEM_TO_USE
+ * @param[out] o_grp_id: group id
+ * @param[out] o_chip_id: chip id
+ */
+void parseProcMemToUseIntoGrpChipId (uint8_t i_proc_mem_to_use,
+ uint8_t & o_grp_id,
+ uint8_t & o_chip_id);
+
+/*
+ * @brief This function computes whether current value of
+ * PROC_MEM_TO_USE matches with the expected value.
+ * The expected value can change through the IPL because
+ * we might end up deconfiguring dimms.
+ *
+ * @param[out] o_valid: true, if current and expected values are the same
+ */
+errlHndl_t check_current_proc_mem_to_use_is_still_valid (bool o_valid);
}; // end namespace
diff --git a/src/include/usr/isteps/istep_reasoncodes.H b/src/include/usr/isteps/istep_reasoncodes.H
index aa63ce0d8..31bb8a7bb 100644
--- a/src/include/usr/isteps/istep_reasoncodes.H
+++ b/src/include/usr/isteps/istep_reasoncodes.H
@@ -126,6 +126,7 @@ namespace ISTEP
RC_TURBO_FREQ_MISMATCH = ISTEP_COMP_ID | 0x44,
RC_ULTRA_TURBO_FREQ_MISMATCH = ISTEP_COMP_ID | 0x45,
RC_NEST_FREQ_MISMATCH = ISTEP_COMP_ID | 0x46,
+ RC_NO_VALID_MEM_CONFIG = ISTEP_COMP_ID | 0x47,
};
};
diff --git a/src/include/usr/targeting/common/util.H b/src/include/usr/targeting/common/util.H
index edc67b79e..479cdfa75 100644
--- a/src/include/usr/targeting/common/util.H
+++ b/src/include/usr/targeting/common/util.H
@@ -158,12 +158,26 @@ bool is_avp_load(void);
/**
* @brief Utility function to obtain the highest known address in the system
*/
-uint64_t get_top_mem_addr(void);
+uint64_t get_top_mem_addr();
+
+/**
+ * @brief Utility function to obtain the highest known address in a given proc
+ *
+ * @param[in] i_proc: Proc that we want to calculate the top address for
+ */
+uint64_t get_top_mem_addr(Target* i_proc);
/**
* @brief Utility function to obtain the lowest known address in the system
*/
-uint64_t get_bottom_mem_addr(void);
+uint64_t get_bottom_mem_addr();
+
+/**
+ * @brief Utility function to obtain the lowest known address in a given proc
+ *
+ * @param[in] i_proc: Proc that we want to calculate the bottom address for
+ */
+uint64_t get_bottom_mem_addr(Target* i_proc);
/**
* Order two processor targets by NODE_ID then CHIP_ID.
OpenPOWER on IntegriCloud