M. Koehrer wrote: > Hi Philippe, > > I have extracted that part. However this very address is not available. > I have placed a couple of lines before and after that address. > > Regards > > Mathias > PS: I will continue on Monday with the tests.... >
If you happen to do so, please give this patch a try. It's an experiment
to include I-pipe tracer information in kernel oops reports. For this
purpose, enable CONFIG_IPIPE_TRACE_MCOUNT, CONFIG_IPIPE_TRACE_ENABLE,
and CONFIG_IPIPE_TRACE_IRQSOFF. Then trigger the oops. Maybe we get more
information about the function call history.
Thanks,
Jan
---
arch/i386/mm/fault.c | 5 +++++
include/linux/ipipe_trace.h | 7 ++++++-
kernel/ipipe/tracer.c | 8 ++++++++
lib/bust_spinlocks.c | 5 +++++
4 files changed, 24 insertions(+), 1 deletion(-)
Index: linux-2.6.20/arch/i386/mm/fault.c
===================================================================
--- linux-2.6.20.orig/arch/i386/mm/fault.c
+++ linux-2.6.20/arch/i386/mm/fault.c
@@ -23,6 +23,7 @@
#include <linux/module.h>
#include <linux/kprobes.h>
#include <linux/uaccess.h>
+#include <linux/ipipe_trace.h>
#include <asm/system.h>
#include <asm/desc.h>
@@ -68,9 +69,13 @@ void bust_spinlocks(int yes)
int loglevel_save = console_loglevel;
if (yes) {
+ ipipe_trace_panic_freeze();
oops_in_progress = 1;
return;
}
+
+ ipipe_trace_panic_dump();
+
#ifdef CONFIG_VT
unblank_screen();
#endif
Index: linux-2.6.20/include/linux/ipipe_trace.h
===================================================================
--- linux-2.6.20.orig/include/linux/ipipe_trace.h
+++ linux-2.6.20/include/linux/ipipe_trace.h
@@ -39,6 +39,11 @@ int ipipe_trace_frozen_reset(void);
void ipipe_trace_panic_freeze(void);
void ipipe_trace_panic_dump(void);
-#endif /* CONFIG_IPIPE_TRACE */
+#else /* !CONFIG_IPIPE_TRACE */
+
+static inline void ipipe_trace_panic_freeze(void) { }
+static inline void ipipe_trace_panic_dump(void) { }
+
+#endif /* !CONFIG_IPIPE_TRACE */
#endif /* !__LINUX_IPIPE_H */
Index: linux-2.6.20/kernel/ipipe/tracer.c
===================================================================
--- linux-2.6.20.orig/kernel/ipipe/tracer.c
+++ linux-2.6.20/kernel/ipipe/tracer.c
@@ -565,6 +565,9 @@ void ipipe_trace_panic_freeze(void)
unsigned long flags;
int cpu_id;
+ if (!ipipe_trace_enable)
+ return;
+
ipipe_trace_enable = 0;
local_irq_save_hw_notrace(flags);
@@ -614,6 +617,9 @@ void ipipe_trace_panic_dump(void)
int start, pos;
char task_info[12];
+ if (!panic_path)
+ return;
+
printk("I-pipe tracer log (%d points):\n", cnt);
start = pos = WRAP_POINT_NO(panic_path->trace_pos-1);
@@ -667,6 +673,8 @@ void ipipe_trace_panic_dump(void)
}
pos = WRAP_POINT_NO(pos - 1);
}
+
+ panic_path = NULL;
}
EXPORT_SYMBOL(ipipe_trace_panic_dump);
Index: linux-2.6.20/lib/bust_spinlocks.c
===================================================================
--- linux-2.6.20.orig/lib/bust_spinlocks.c
+++ linux-2.6.20/lib/bust_spinlocks.c
@@ -12,14 +12,19 @@
#include <linux/tty.h>
#include <linux/wait.h>
#include <linux/vt_kern.h>
+#include <linux/ipipe_trace.h>
void bust_spinlocks(int yes)
{
if (yes) {
+ ipipe_trace_panic_freeze();
oops_in_progress = 1;
} else {
int loglevel_save = console_loglevel;
+
+ ipipe_trace_panic_dump();
+
#ifdef CONFIG_VT
unblank_screen();
#endif
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
