mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
[IA64] Add CONFIG_STACKTRACE_SUPPORT
Several Linux features are dependent on stack trace support. Add it so they can be enabled. Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
57aebd7739
commit
85718fae2a
3 changed files with 43 additions and 0 deletions
|
@ -62,6 +62,9 @@ config NEED_SG_DMA_LENGTH
|
||||||
config SWIOTLB
|
config SWIOTLB
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config STACKTRACE_SUPPORT
|
||||||
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_LOCKBREAK
|
config GENERIC_LOCKBREAK
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ obj-$(CONFIG_AUDIT) += audit.o
|
||||||
obj-$(CONFIG_PCI_MSI) += msi_ia64.o
|
obj-$(CONFIG_PCI_MSI) += msi_ia64.o
|
||||||
mca_recovery-y += mca_drv.o mca_drv_asm.o
|
mca_recovery-y += mca_drv.o mca_drv_asm.o
|
||||||
obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o
|
obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o
|
||||||
|
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||||
|
|
||||||
obj-$(CONFIG_PARAVIRT) += paravirt.o paravirtentry.o \
|
obj-$(CONFIG_PARAVIRT) += paravirt.o paravirtentry.o \
|
||||||
paravirt_patch.o
|
paravirt_patch.o
|
||||||
|
|
39
arch/ia64/kernel/stacktrace.c
Normal file
39
arch/ia64/kernel/stacktrace.c
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* arch/ia64/kernel/stacktrace.c
|
||||||
|
*
|
||||||
|
* Stack trace management functions
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <linux/sched.h>
|
||||||
|
#include <linux/stacktrace.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
static void
|
||||||
|
ia64_do_save_stack(struct unw_frame_info *info, void *arg)
|
||||||
|
{
|
||||||
|
struct stack_trace *trace = arg;
|
||||||
|
unsigned long ip;
|
||||||
|
int skip = trace->skip;
|
||||||
|
|
||||||
|
trace->nr_entries = 0;
|
||||||
|
do {
|
||||||
|
unw_get_ip(info, &ip);
|
||||||
|
if (ip == 0)
|
||||||
|
break;
|
||||||
|
if (skip == 0) {
|
||||||
|
trace->entries[trace->nr_entries++] = ip;
|
||||||
|
if (trace->nr_entries == trace->max_entries)
|
||||||
|
break;
|
||||||
|
} else
|
||||||
|
skip--;
|
||||||
|
} while (unw_unwind(info) >= 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save stack-backtrace addresses into a stack_trace buffer.
|
||||||
|
*/
|
||||||
|
void save_stack_trace(struct stack_trace *trace)
|
||||||
|
{
|
||||||
|
unw_init_running(ia64_do_save_stack, trace);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(save_stack_trace);
|
Loading…
Reference in a new issue