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);
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Adeos-main mailing list [email protected] https://mail.gna.org/listinfo/adeos-main
