summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2017-09-23 22:24:28 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-06-15 13:44:39 -0400
commit7cc8294252577238eb99bad42c3bc7dd92f4794d (patch)
tree09a73519b9565693ca699a73ec1a21fd17153350 /src/include
parent5090c197292cdd0ec4ad8e416020e5229812cb65 (diff)
downloadtalos-hostboot-7cc8294252577238eb99bad42c3bc7dd92f4794d.tar.gz
talos-hostboot-7cc8294252577238eb99bad42c3bc7dd92f4794d.zip
Debug improvements for exceptions and OOM hangs
There are two main changes in this commit: 1) Forcing an assert if we cannot allocate pages after 10,000 attempts to yield. 2) Adding a backtrace for a lot of exception paths. Change-Id: I755ada753b78abed56e553f7c669f0f98ae68700 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58224 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: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/arch/ppc.H3
-rw-r--r--src/include/kernel/misc.H16
2 files changed, 16 insertions, 3 deletions
diff --git a/src/include/arch/ppc.H b/src/include/arch/ppc.H
index f63b5db2f..053661e1d 100644
--- a/src/include/arch/ppc.H
+++ b/src/include/arch/ppc.H
@@ -434,10 +434,11 @@ ALWAYS_INLINE
inline void MAGIC_INSTRUCTION(int _n)
{
register int n = _n;
+ isync();
asm volatile("rlwimi %0,%0,0,%1,%2" \
:: "i" (((n) >> 8) & 0x1f), \
"i" (((n) >> 4) & 0xf), \
- "i" ((((n) >> 0) & 0xf) | 16));
+ "i" ((((n) >> 0) & 0xf) | 16)); \
}
// Arguments to MAGIC_INSTRUCTION().
diff --git a/src/include/kernel/misc.H b/src/include/kernel/misc.H
index 4c570423a..26fde6528 100644
--- a/src/include/kernel/misc.H
+++ b/src/include/kernel/misc.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2017 */
+/* Contributors Listed Below - COPYRIGHT 2011,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -178,7 +178,7 @@ namespace KernelMisc
*/
void populate_cache_lines(uint64_t* i_start, uint64_t* i_end);
- /** @fn set
+ /** @fn set scratch reg
*
* @brief Update value of scratch register to specified data.
*
@@ -195,5 +195,17 @@ namespace KernelMisc
*/
void updateScratchReg(MMIO_Scratch_Register scratch_addr, uint64_t data);
+ /** @fn Log backtrace to printk
+ *
+ * @brief Collect the backtrace for the given task and print an
+ * abbreviated version to the printk buffer.
+ *
+ * This can be used in task-crash paths for FFDC
+ *
+ * @param[in] task_t i_task - Task to operate against,
+ * if i_task==nullptr then call will use user-space interfaces
+ */
+ void printkBacktrace(task_t* i_task);
+
};
#endif
OpenPOWER on IntegriCloud