Introduce ipipe_disable_check_context and use it when dumping panic
traces. This avoids triggering the alarm while actually dumping a
different fault.

Jan
---
 include/linux/ipipe_base.h |   11 +++++++++++
 kernel/ipipe/core.c        |    9 +++++----
 kernel/ipipe/tracer.c      |    2 ++
 3 files changed, 18 insertions(+), 4 deletions(-)

Index: linux-2.6.20/include/linux/ipipe_base.h
===================================================================
--- linux-2.6.20.orig/include/linux/ipipe_base.h
+++ linux-2.6.20/include/linux/ipipe_base.h
@@ -76,9 +76,20 @@ void __ipipe_unstall_root(void);
 void __ipipe_restore_root(unsigned long x);
 
 #ifdef CONFIG_IPIPE_DEBUG_CONTEXT
+
 void ipipe_check_context(struct ipipe_domain *border_ipd);
+
+static inline void ipipe_disable_context_check(void)
+{
+       extern int __ipipe_context_check_enabled;
+       __ipipe_context_check_enabled = 0;
+}
+
 #else /* !CONFIG_IPIPE_DEBUG_CONTEXT */
+
 static inline void ipipe_check_context(struct ipipe_domain *border_ipd) { }
+static inline void ipipe_disable_context_check(void) { }
+
 #endif /* !CONFIG_IPIPE_DEBUG_CONTEXT */
 
 #else /* !CONFIG_IPIPE */
Index: linux-2.6.20/kernel/ipipe/core.c
===================================================================
--- linux-2.6.20.orig/kernel/ipipe/core.c
+++ linux-2.6.20/kernel/ipipe/core.c
@@ -1385,15 +1385,16 @@ void __init ipipe_init_proc(void)
 #endif /* CONFIG_PROC_FS */
 
 #ifdef CONFIG_IPIPE_DEBUG_CONTEXT
+
+int __ipipe_context_check_enabled = 1;
+
 void ipipe_check_context(struct ipipe_domain *border_ipd)
 {
-       static int check_hit;
-
        if (likely(ipipe_current_domain->priority <= border_ipd->priority) ||
-           check_hit)
+           !__ipipe_context_check_enabled)
                return;
 
-       check_hit = 1;
+       __ipipe_context_check_enabled = 0;
 
        ipipe_trace_panic_freeze();
        ipipe_set_printk_sync(ipipe_current_domain);
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
@@ -625,6 +625,8 @@ void ipipe_trace_panic_dump(void)
        if (!panic_path)
                return;
 
+       ipipe_disable_context_check();
+
        printk("I-pipe tracer log (%d points):\n", cnt);
 
        start = pos = WRAP_POINT_NO(panic_path->trace_pos-1);

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to