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

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to