Hi all,

here is an extension to the latency tracer. It allows to use it in panic
situations where it provides a back-trace with some additional
information. I also attached a Xenomai patch to use this feature on
xnpod_fatal.

I'm currently trying to understand the crash Jeroen reported. For this
purpose I added a few special traces to shadow.c, see third patch. What
I currently get with CONFIG_XENO_OPT_DEBUG switched on is attached as well.

If anyone can tell something about what's happening here, please share
your wisdom! I'm yet lacking a concrete idea. Currently I'm wondering
why a Linux thread (main, pid 843/0x34b) gets scheduled in by the Linux
scheduler although TASK_INTERRUPTIBLE is set (and while it's Xeno mate
is correctly blocking on a RT-sem).

Jan
--- linux-2.6.15.1/include/linux/ipipe_trace.h.orig     2006-01-19 
10:16:43.000000000 +0100
+++ linux-2.6.15.1/include/linux/ipipe_trace.h  2006-01-19 13:13:07.000000000 
+0100
@@ -31,4 +31,7 @@ void ipipe_trace_special(unsigned char s
 int ipipe_trace_max_reset(void);
 int ipipe_trace_frozen_reset(void);
 
+void ipipe_trace_panic_freeze(void);
+void ipipe_trace_panic_dump(void);
+
 #endif /* !__LINUX_IPIPE_H */
--- linux-2.6.15.1/kernel/ipipe/tracer.c.orig   2006-01-19 10:26:31.000000000 
+0100
+++ linux-2.6.15.1/kernel/ipipe/tracer.c        2006-01-20 11:31:58.000000000 
+0100
@@ -107,10 +107,17 @@ static int verbose_trace = 0;
 
 static DECLARE_MUTEX(out_mutex);
 static struct ipipe_trace_path *print_path;
+static struct ipipe_trace_path *panic_path;
 static int print_pre_trace;
 static int print_post_trace;
 
 
+static long __ipipe_signed_tsc2us(long long tsc);
+static void
+__ipipe_trace_point_type(char *buf, struct ipipe_trace_point *point);
+static void __ipipe_print_symname(struct seq_file *m, unsigned long eip);
+
+
 static notrace int __ipipe_get_free_trace_path(int old, int cpu_id)
 {
        int new_active = old;
@@ -498,6 +505,61 @@ int ipipe_trace_frozen_reset(void)
 }
 EXPORT_SYMBOL(ipipe_trace_frozen_reset);
 
+void ipipe_trace_panic_freeze(void)
+{
+       unsigned long flags;
+       int cpu_id;
+
+       ipipe_trace_enable = 0;
+       local_irq_save_hw_notrace(flags);
+
+       cpu_id = raw_smp_processor_id();
+
+       panic_path = &trace_paths[cpu_id][active_path[cpu_id]];
+
+       local_irq_restore_hw(flags);
+}
+EXPORT_SYMBOL(ipipe_trace_panic_freeze);
+
+void ipipe_trace_panic_dump(void)
+{
+       int cnt = back_trace;
+       int start, pos;
+
+       printk("I-pipe tracer log (%d points):\n", cnt);
+
+       start = pos = WRAP_POINT_NO(panic_path->trace_pos-1);
+
+       while (cnt-- > 0) {
+               struct ipipe_trace_point *point = &panic_path->point[pos];
+               long time;
+               char buf[16];
+
+               if (!point->eip)
+                       printk("-<invalid>-\n");
+               else {
+                       __ipipe_trace_point_type(buf, point);
+                       printk(buf);
+
+                       if (point->type != IPIPE_TRACE_FN)
+                               printk("0x%08lx ", point->v);
+                       else
+                               printk("           ");
+
+                       time = __ipipe_signed_tsc2us(point->timestamp -
+                               panic_path->point[start].timestamp);
+                       printk(" %5ld ", time);
+
+                       __ipipe_print_symname(NULL, point->eip);
+                       printk(" (");
+                       __ipipe_print_symname(NULL, point->parent_eip);
+                       printk(")\n");
+               }
+               pos = WRAP_POINT_NO(pos - 1);
+       }
+}
+EXPORT_SYMBOL(ipipe_trace_panic_dump);
+
 
 /* --- /proc output --- */
 
@@ -510,6 +572,46 @@ static notrace int __ipipe_in_critical_t
                  print_post_trace)));
 }
 
+static long __ipipe_signed_tsc2us(long long tsc)
+{
+        unsigned long long abs_tsc;
+        long us;
+
+       /* ipipe_tsc2us works on unsigned => handle sign separately */
+        abs_tsc = (tsc >= 0) ? tsc : -tsc;
+        us = ipipe_tsc2us(abs_tsc);
+        if (tsc < 0)
+                return -us;
+        else
+                return us;
+}
+
+static void
+__ipipe_trace_point_type(char *buf, struct ipipe_trace_point *point)
+{
+       switch (point->type) {
+               case IPIPE_TRACE_FN:
+                       strcpy(buf, "fn     ");
+                       break;
+
+               case IPIPE_TRACE_BEGIN:
+                       strcpy(buf, "begin  ");
+                       break;
+
+               case IPIPE_TRACE_END:
+                       strcpy(buf, "end    ");
+                       break;
+
+               case IPIPE_TRACE_FREEZE:
+                       strcpy(buf, "freeze ");
+                       break;
+
+               default: /* IPIPE_TRACE_SPECIAL */
+                       sprintf(buf, "(0x%02x) ",
+                               point->type - IPIPE_TRACE_SPECIAL);
+       }
+}
+
 static void
 __ipipe_print_pathmark(struct seq_file *m, struct ipipe_trace_point *point)
 {
@@ -562,15 +664,26 @@ static void __ipipe_print_symname(struct
        char *modname;
 
        sym_name = kallsyms_lookup(eip, &size, &offset, &modname, namebuf);
-       if (sym_name) {
-               if (verbose_trace) {
-                       seq_printf(m, "%s+0x%lx", sym_name, offset);
-                       if (modname)
-                               seq_printf(m, " [%s]", modname);
+
+       /* printing to /proc? */
+       if (m) {
+               if (sym_name) {
+                       if (verbose_trace) {
+                               seq_printf(m, "%s+0x%lx", sym_name, offset);
+                               if (modname)
+                                       seq_printf(m, " [%s]", modname);
+                       } else
+                               seq_puts(m, sym_name);
                } else
-                       seq_puts(m, sym_name);
-       } else
-               seq_printf(m, "<%08lx>", eip);
+                       seq_printf(m, "<%08lx>", eip);
+       } else {
+               /* panic dump */
+               if (sym_name) {
+                       printk("%s+0x%lx", sym_name, offset);
+                       if (modname)
+                               printk(" [%s]", modname);
+               }
+       }
 }
 
 #if defined(CONFIG_XENO_OPT_DEBUG) || defined(CONFIG_DEBUG_PREEMPT)
@@ -690,52 +803,28 @@ static void __ipipe_prtrace_stop(struct 
 static int __ipipe_prtrace_show(struct seq_file *m, void *p)
 {
        long time;
-       long long delta;
-       unsigned long long abs_delta;
        struct ipipe_trace_point *point = p;
+       char buf[16];
 
        if (!point->eip) {
                seq_puts(m, "-<invalid>-\n");
                return 0;
        }
 
-       /* ipipe_tsc2us works on unsigned => handle sign separately */
-       delta = point->timestamp -
-               print_path->point[print_path->begin].timestamp;
-       abs_delta = (delta >= 0) ? delta : -delta;
-       time = ipipe_tsc2us(abs_delta);
-       if (delta < 0)
-               time = -time;
-
        __ipipe_print_pathmark(m, point);
-       switch (point->type) {
-               case IPIPE_TRACE_FN:
-                       seq_puts(m, "fn     ");
-                       break;
-
-               case IPIPE_TRACE_BEGIN:
-                       seq_puts(m, "begin  ");
-                       break;
-
-               case IPIPE_TRACE_END:
-                       seq_puts(m, "end    ");
-                       break;
-
-               case IPIPE_TRACE_FREEZE:
-                       seq_puts(m, "freeze ");
-                       break;
-
-               default: /* IPIPE_TRACE_SPECIAL */
-                       seq_printf(m, "(0x%02x) ",
-                                  point->type - IPIPE_TRACE_SPECIAL);
-       }
+       __ipipe_trace_point_type(buf, point);
+       seq_puts(m, buf);
        if (verbose_trace) {
                if (point->type != IPIPE_TRACE_FN)
                        seq_printf(m, "0x%08lx ", point->v);
                else
                        seq_puts(m, "           ");
        }
+
+       time = __ipipe_signed_tsc2us(point->timestamp -
+               print_path->point[print_path->begin].timestamp);
        seq_printf(m, "%5ld", time);
+
        __ipipe_print_delay(m, point);
        __ipipe_print_symname(m, point->eip);
        seq_puts(m, " (");
Index: include/asm-generic/system.h
===================================================================
--- include/asm-generic/system.h        (revision 470)
+++ include/asm-generic/system.h        (working copy)
@@ -39,6 +39,13 @@
 #include <asm/xenomai/atomic.h>
 #include <xenomai/nucleus/shadow.h>
 
+#ifdef CONFIG_IPIPE_TRACE
+#include <linux/ipipe_trace.h>
+#else /* !CONFIG_IPIPE_TRACE */
+#define ipipe_trace_panic_freeze()
+#define ipipe_trace_panic_dump()
+#endif /* CONFIG_IPIPE_TRACE */
+
 #define module_param_value(parm) (parm)
 
 typedef unsigned long spl_t;
@@ -185,6 +192,7 @@
     rthal_emergency_console(); \
     xnarch_logerr("fatal: %s\n",emsg); \
     show_stack(NULL,NULL);                     \
+    ipipe_trace_panic_dump();                  \
     for (;;) cpu_relax();                      \
 } while(0)
 
Index: include/nucleus/types.h
===================================================================
--- include/nucleus/types.h     (revision 470)
+++ include/nucleus/types.h     (working copy)
@@ -106,8 +106,10 @@
 
 #define xnpod_fatal(format,args...) \
 do { \
-   const char *panic = xnpod_fatal_helper(format,##args); \
-   xnarch_halt(panic); \
+    const char *panic; \
+    ipipe_trace_panic_freeze(); \
+    panic = xnpod_fatal_helper(format,##args); \
+    xnarch_halt(panic); \
 } while (0)
 
 #if defined(__XENO_SIM__) || defined(__XENO_UVM__)
Index: ksrc/nucleus/shadow.c
===================================================================
--- ksrc/nucleus/shadow.c       (revision 470)
+++ ksrc/nucleus/shadow.c       (working copy)
@@ -1569,6 +1569,7 @@
            testbits(status,XNSTARTED) &&
            testbits(status,XNTHREAD_BLOCK_BITS))
            {
+           ipipe_trace_panic_freeze();
            show_stack(xnthread_user_task(threadin),NULL);
             xnpod_fatal("blocked thread %s[%d] rescheduled?! (status=0x%lx, 
sig=%d, prev=%s[%d])",
                        threadin->name,
Index: ksrc/nucleus/shadow.c
===================================================================
--- ksrc/nucleus/shadow.c       (revision 470)
+++ ksrc/nucleus/shadow.c       (working copy)
@@ -384,6 +384,7 @@
        xnlock_get_irqsave(&nklock, s);
 
        thread = gk->thread;
+ipipe_trace_special(1, xnthread_archtcb(thread)->user_task->pid);
 
        /* In the very rare case where the requestor has been awaken
           by a signal before we have been able to process the
@@ -459,6 +460,7 @@
     gk->thread = thread;
     set_current_state(TASK_INTERRUPTIBLE);
     wake_up_interruptible_sync(&gk->waitq);
+ipipe_trace_special(2, current->pid);
 
     if (rthal_current_domain == rthal_root_domain) {
 
@@ -575,6 +577,7 @@
        
set_current_state((current->state&~TASK_UNINTERRUPTIBLE)|TASK_INTERRUPTIBLE);
 
     schedule_linux_call(LO_WAKEUP_REQ,current,0);
+ipipe_trace_special(3, current->pid);
 
     splhigh(s);
     xnpod_renice_root(thread->cprio);
@@ -1520,6 +1523,10 @@
 
     prev = current;
     threadin = xnshadow_thread(next);
+ipipe_trace_special(4, prev->pid);
+ipipe_trace_special(4, prev->state);
+ipipe_trace_special(5, next->pid);
+ipipe_trace_special(5, next->state);
 
     rthal_load_cpuid();        /* Linux is running in a migration-safe
                           portion of code. */
I-pipe: Domain Xenomai registered.
Xenomai: hal/x86 started.
Xenomai: real-time nucleus v2.1-rc2 (Champagne) loaded.
Xenomai: starting native API services.
c30ebe98 00000082 c110d070 c30ebe68 c482ad60 00000001 00000001 00200000
       c482ad60 00000002 ffffffff 00000004 ffffffff c482afb8 c482a3b4 c30ebe98
       c110d070 c30c9570 c486ade0 c4850033 00000000 c486c090 c482afa4 c482ad60
Call Trace:
 [<c485590a>] xnpod_suspend_thread+0x7a7/0x7f7 [xeno_nucleus]
 [<c485a033>] xnsynch_sleep_on+0x7e3/0x815 [xeno_nucleus]
 [<c4a0a30f>] rt_sem_p+0xa6/0x10a [xeno_native]
 [<c4a03ed2>] __rt_sem_p+0x5f/0x69 [xeno_native]
 [<c485ee68>] hisyscall_event+0x1d1/0x2d9 [xeno_nucleus]
 [<c01301ed>] __ipipe_dispatch_event+0x5e/0xe5
 [<c010bbbf>] __ipipe_syscall_root+0x58/0xc2
 [<c0102ac0>] system_call+0x20/0x41
Xenomai: fatal: blocked thread main[843] rescheduled?! (status=0x300082, sig=0, 
prev=gatekeeper/0[800])
 CPU  PID    PRI  TIMEOUT  STAT      NAME
>  0  0      30   0        00500080  ROOT
   0  844    30   0        00300180  task0
   0  843    1    0        00300082  main
Timer: oneshot [tickval=1 ns, elapsed=202377277237]

c3155f04 c48645b2 c30ec000 c30c9570 00300082 c02af500 00000286 c02af500
       c3155f58 c01301ed 00000022 c02af500 c110d070 c110d070 00000022 c049bbec
       00000001 c02af500 c110d070 19339e6c 0000002f c3155f94 c02733bc 000035d5
Call Trace:
 [<c01031ae>] show_stack+0x7d/0x88
 [<c485f305>] schedule_event+0x1d4/0x288 [xeno_nucleus]
 [<c01301ed>] __ipipe_dispatch_event+0x5e/0xe5
 [<c02733bc>] schedule+0x3f2/0x5f0
 [<c485dea8>] gatekeeper_thread+0xa1/0x19b [xeno_nucleus]
 [<c01268be>] kthread+0x71/0x9f
 [<c0100dcd>] kernel_thread_helper+0x5/0xb
I-pipe tracer log (300 points):
fn                     0 ipipe_trace_panic_freeze+0x8 (schedule_event+0x16d 
[xeno_nucleus])
(0x05) 0x00000001     -1 schedule_event+0x78 [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x05) 0x0000034b     -2 schedule_event+0x6b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000001     -3 schedule_event+0x5b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000320     -4 schedule_event+0x4e [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                    -5 schedule_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                    -6 __ipipe_dispatch_event+0xe (schedule+0x3f2)
fn                    -9 dequeue_task+0xa (deactivate_task+0x1a)
fn                   -10 deactivate_task+0x9 (schedule+0x1fe)
fn                   -12 __ipipe_stall_root+0x8 (schedule+0x16e)
fn                   -13 sched_clock+0xd (schedule+0xf2)
fn                   -14 profile_hit+0x9 (schedule+0x62)
fn                   -16 schedule+0xe (gatekeeper_thread+0xa1 [xeno_nucleus])
fn                   -21 __switch_to+0xc (xnpod_schedule+0x9be [xeno_nucleus])
fn                   -25 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_suspend_thread+0x7a7 [xeno_nucleus])
fn                   -33 xntimer_do_start_aperiodic+0xe [xeno_nucleus] 
(xntimer_start+0x37 [xeno_nucleus])
fn                   -34 xntimer_start+0x9 [xeno_nucleus] 
(xnpod_suspend_thread+0x797 [xeno_nucleus])
fn                   -38 xnpod_suspend_thread+0xe [xeno_nucleus] 
(rt_task_sleep+0x54 [xeno_native])
fn                   -39 rt_task_sleep+0xa [xeno_native] (__rt_task_sleep+0x25 
[xeno_native])
fn                   -40 __copy_from_user_ll+0xa (__rt_task_sleep+0x1a 
[xeno_native])
fn                   -41 __rt_task_sleep+0xa [xeno_native] 
(hisyscall_event+0x1d1 [xeno_nucleus])
fn                   -44 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                   -46 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                   -47 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                   -58 ipipe_unstall_pipeline_from+0xc (rt_mutex_unlock+0xdf 
[xeno_native])
fn                   -60 xnsynch_wakeup_one_sleeper+0xe [xeno_nucleus] 
(rt_mutex_unlock+0x92 [xeno_native])
fn                   -62 rt_mutex_unlock+0xb [xeno_native] 
(__rt_mutex_unlock+0x43 [xeno_native])
fn                   -63 ipipe_unstall_pipeline_from+0xc 
(rt_registry_fetch+0xa4 [xeno_native])
fn                   -65 rt_registry_fetch+0xa [xeno_native] 
(__rt_mutex_unlock+0x36 [xeno_native])
fn                   -66 __rt_mutex_unlock+0xa [xeno_native] 
(losyscall_event+0xb6 [xeno_nucleus])
fn                   -68 ipipe_unstall_pipeline_from+0xc (xnshadow_harden+0x156 
[xeno_nucleus])
fn                   -70 xnpod_switch_fpu+0xa [xeno_nucleus] 
(xnshadow_harden+0x137 [xeno_nucleus])
fn                   -72 __switch_to+0xc (schedule+0x4de)
fn                   -80 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_schedule_handler+0x17 [xeno_nucleus])
fn                   -81 xnpod_schedule_handler+0x8 [xeno_nucleus] 
(__ipipe_sync_stage+0x113)
fn                   -83 __ipipe_sync_stage+0xe (ipipe_suspend_domain+0x47)
fn                   -84 ipipe_suspend_domain+0xb 
(ipipe_unstall_pipeline_from+0x4e)
fn                   -86 ipipe_unstall_pipeline_from+0xc 
(gatekeeper_thread+0x18c [xeno_nucleus])
fn                   -90 __ipipe_handle_irq+0xe (ipipe_trigger_irq+0x51)
fn                   -91 memcpy+0xb (ipipe_trigger_irq+0x49)
fn                   -92 ipipe_trigger_irq+0xc (xnpod_schedule+0x29 
[xeno_nucleus])
fn                   -93 xnpod_schedule+0xe [xeno_nucleus] 
(gatekeeper_thread+0x15e [xeno_nucleus])
fn                   -99 xnpod_schedule_runnable+0xe [xeno_nucleus] 
(gatekeeper_thread+0x132 [xeno_nucleus])
fn                  -105 xnpod_resume_thread+0xe [xeno_nucleus] 
(gatekeeper_thread+0xf6 [xeno_nucleus])
(0x01) 0x0000034c   -106 gatekeeper_thread+0xde [xeno_nucleus] (kthread+0x71)
fn                  -107 kthread_should_stop+0x8 (gatekeeper_thread+0xa6 
[xeno_nucleus])
fn                  -109 __ipipe_unstall_root+0x8 (schedule+0x516)
fn                  -112 __switch_to+0xc (schedule+0x4de)
(0x05) 0x00000000   -113 schedule_event+0x78 [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x05) 0x00000320   -114 schedule_event+0x6b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000001   -114 schedule_event+0x5b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x0000034c   -115 schedule_event+0x4e [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -116 schedule_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -117 __ipipe_dispatch_event+0xe (schedule+0x3f2)
fn                  -119 dequeue_task+0xa (deactivate_task+0x1a)
fn                  -121 deactivate_task+0x9 (schedule+0x1fe)
fn                  -122 __ipipe_stall_root+0x8 (schedule+0x16e)
fn                  -123 sched_clock+0xd (schedule+0xf2)
fn                  -124 profile_hit+0x9 (schedule+0x62)
fn                  -125 schedule+0xe (xnshadow_harden+0xa6 [xeno_nucleus])
(0x02) 0x0000034c   -126 xnshadow_harden+0x8e [xeno_nucleus] 
(losyscall_event+0x91 [xeno_nucleus])
fn                  -128 __ipipe_unstall_root+0x8 (__ipipe_restore_root+0x2b)
fn                  -129 __ipipe_restore_root+0x8 (__wake_up_sync+0x6b)
fn                  -130 __ipipe_restore_root+0x8 (try_to_wake_up+0xb7)
fn                  -132 enqueue_task+0xa (activate_task+0x5d)
fn                  -133 sched_clock+0xd (activate_task+0x13)
fn                  -134 activate_task+0xb (try_to_wake_up+0x7d)
fn                  -136 __ipipe_test_and_stall_root+0x8 (try_to_wake_up+0x13)
fn                  -136 try_to_wake_up+0xb (default_wake_function+0x19)
fn                  -137 default_wake_function+0x8 (__wake_up_common+0x2a)
fn                  -139 __wake_up_common+0xb (__wake_up_sync+0x5e)
fn                  -141 __ipipe_test_and_stall_root+0x8 (__wake_up_sync+0x2a)
fn                  -142 __wake_up_sync+0xd (xnshadow_harden+0x7f 
[xeno_nucleus])
fn                  -143 __ipipe_test_root+0x8 (__might_sleep+0x1e)
fn                  -144 __might_sleep+0x9 (xnshadow_harden+0x45 [xeno_nucleus])
fn                  -145 xnshadow_harden+0xb [xeno_nucleus] 
(losyscall_event+0x91 [xeno_nucleus])
fn                  -146 losyscall_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -149 ipipe_unstall_pipeline_from+0xc (xnpod_schedule+0xc1b 
[xeno_nucleus])
fn                  -152 xnpod_schedule+0xe [xeno_nucleus] 
(hisyscall_event+0x3e [xeno_nucleus])
fn                  -153 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -155 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                  -156 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                  -163 __ipipe_unstall_iret_root+0x8 (restore_raw+0x0)
fn                  -164 __ipipe_stall_root+0x8 (syscall_exit+0x5)
fn                  -165 fput+0x8 (sys_write+0x5d)
fn                  -166 inotify_inode_queue_event+0xe (vfs_write+0xed)
fn                  -168 inotify_dentry_parent_queue_event+0xa (vfs_write+0xe2)
fn                  -170 dnotify_parent+0xa (vfs_write+0xc9)
fn                  -174 cond_resched+0x9 (generic_file_buffered_write+0x427)
fn                  -176 balance_dirty_pages_ratelimited+0x8 
(generic_file_buffered_write+0x422)
fn                  -177 put_page+0x8 (generic_file_buffered_write+0x415)
fn                  -179 mark_page_accessed+0x9 
(generic_file_buffered_write+0x40f)
fn                  -180 __wake_up_bit+0xb (unlock_page+0x2d)
fn                  -182 page_waitqueue+0x8 (unlock_page+0x23)
fn                  -183 unlock_page+0x9 (generic_file_buffered_write+0x408)
fn                  -185 __mark_inode_dirty+0xd (generic_commit_write+0xb0)
fn                  -187 mark_buffer_dirty+0x8 (__block_commit_write+0x6f)
fn                  -189 __block_commit_write+0xd (generic_commit_write+0x39)
fn                  -189 generic_commit_write+0xc 
(generic_file_buffered_write+0x384)
fn                  -191 __copy_from_user_ll+0xa 
(generic_file_buffered_write+0x2bd)
fn                  -197 __block_prepare_write+0xe (block_prepare_write+0x20)
fn                  -198 block_prepare_write+0x9 (ext2_prepare_write+0x1b)
fn                  -199 ext2_prepare_write+0x8 
(generic_file_buffered_write+0x1e8)
fn                  -202 __ipipe_unstall_root+0x8 (find_lock_page+0xfc)
fn                  -203 radix_tree_lookup+0xb (find_lock_page+0x37)
fn                  -204 __ipipe_stall_root+0x8 (find_lock_page+0x16)
fn                  -205 find_lock_page+0xb (generic_file_buffered_write+0x120)
fn                  -208 generic_file_buffered_write+0xe 
(__generic_file_aio_write_nolock+0x3cf)
fn                  -210 timespec_trunc+0xb (current_fs_time+0x41)
fn                  -212 current_fs_time+0xd (inode_update_time+0x2e)
fn                  -214 inode_update_time+0xc 
(__generic_file_aio_write_nolock+0x37a)
fn                  -215 remove_suid+0xc (__generic_file_aio_write_nolock+0x367)
fn                  -221 __generic_file_aio_write_nolock+0xe 
(__generic_file_write_nolock+0x7d)
fn                  -222 __generic_file_write_nolock+0xc 
(generic_file_write+0x4c)
fn                  -224 __ipipe_test_root+0x8 (__might_sleep+0x1e)
fn                  -224 __might_sleep+0x9 (generic_file_write+0x34)
fn                  -226 generic_file_write+0xe (vfs_write+0x8f)
fn                  -227 rw_verify_area+0xb (vfs_write+0x6f)
fn                  -229 vfs_write+0xc (sys_write+0x3f)
fn                  -232 fget_light+0xb (sys_write+0x1d)
fn                  -233 sys_write+0xd (syscall_call+0x7)
fn                  -235 losyscall_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -238 __ipipe_unstall_root+0x8 (ipipe_reenter_root+0x26)
fn                  -239 ipipe_reenter_root+0xb (xnshadow_relax+0x1cb 
[xeno_nucleus])
fn                  -241 ipipe_unstall_pipeline_from+0xc (xnshadow_relax+0x13e 
[xeno_nucleus])
fn                  -246 __switch_to+0xc (xnpod_schedule+0x9be [xeno_nucleus])
fn                  -249 ipipe_unstall_pipeline_from+0xc (schedule_event+0x265 
[xeno_nucleus])
fn                  -254 xnpod_schedule_runnable+0xe [xeno_nucleus] 
(schedule_event+0x23e [xeno_nucleus])
(0x05) 0x00000000   -256 schedule_event+0x78 [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x05) 0x0000034c   -257 schedule_event+0x6b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000001   -257 schedule_event+0x5b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000320   -258 schedule_event+0x4e [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -259 schedule_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -261 __ipipe_dispatch_event+0xe (schedule+0x3f2)
fn                  -263 dequeue_task+0xa (deactivate_task+0x1a)
fn                  -264 deactivate_task+0x9 (schedule+0x1fe)
fn                  -266 __ipipe_stall_root+0x8 (schedule+0x16e)
fn                  -267 sched_clock+0xd (schedule+0xf2)
fn                  -269 profile_hit+0x9 (schedule+0x62)
fn                  -270 schedule+0xe (gatekeeper_thread+0xa1 [xeno_nucleus])
fn                  -275 __switch_to+0xc (xnpod_schedule+0x9be [xeno_nucleus])
fn                  -278 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_suspend_thread+0x7a7 [xeno_nucleus])
fn                  -282 xnpod_suspend_thread+0xe [xeno_nucleus] 
(xnsynch_sleep_on+0x7e3 [xeno_nucleus])
fn                  -286 xnsynch_sleep_on+0xe [xeno_nucleus] (rt_sem_p+0xa6 
[xeno_native])
fn                  -288 rt_sem_p+0xb [xeno_native] (__rt_sem_p+0x5f 
[xeno_native])
fn                  -290 __copy_from_user_ll+0xa (__rt_sem_p+0x53 [xeno_native])
fn                  -291 ipipe_unstall_pipeline_from+0xc 
(rt_registry_fetch+0xa4 [xeno_native])
fn                  -292 rt_registry_fetch+0xa [xeno_native] (__rt_sem_p+0x39 
[xeno_native])
fn                  -293 __rt_sem_p+0xd [xeno_native] (hisyscall_event+0x1d1 
[xeno_nucleus])
fn                  -296 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -299 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                  -300 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                  -341 ipipe_unstall_pipeline_from+0xc (xnshadow_harden+0x156 
[xeno_nucleus])
fn                  -343 xnpod_switch_fpu+0xa [xeno_nucleus] 
(xnshadow_harden+0x137 [xeno_nucleus])
(0x02) 0x0000034b   -344 xnshadow_harden+0x8e [xeno_nucleus] 
(xnshadow_map+0x139 [xeno_nucleus])
fn                  -347 __switch_to+0xc (schedule+0x4de)
fn                  -353 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_schedule_handler+0x17 [xeno_nucleus])
fn                  -354 xnpod_schedule_handler+0x8 [xeno_nucleus] 
(__ipipe_sync_stage+0x113)
fn                  -356 __ipipe_sync_stage+0xe (ipipe_suspend_domain+0x47)
fn                  -357 ipipe_suspend_domain+0xb 
(ipipe_unstall_pipeline_from+0x4e)
fn                  -358 ipipe_unstall_pipeline_from+0xc 
(gatekeeper_thread+0x18c [xeno_nucleus])
fn                  -362 __ipipe_handle_irq+0xe (ipipe_trigger_irq+0x51)
fn                  -363 memcpy+0xb (ipipe_trigger_irq+0x49)
fn                  -364 ipipe_trigger_irq+0xc (xnpod_schedule+0x29 
[xeno_nucleus])
fn                  -365 xnpod_schedule+0xe [xeno_nucleus] 
(gatekeeper_thread+0x15e [xeno_nucleus])
fn                  -369 xnpod_schedule_runnable+0xe [xeno_nucleus] 
(gatekeeper_thread+0x132 [xeno_nucleus])
fn                  -375 xnpod_resume_thread+0xe [xeno_nucleus] 
(gatekeeper_thread+0xf6 [xeno_nucleus])
(0x01) 0x0000034b   -376 gatekeeper_thread+0xde [xeno_nucleus] (kthread+0x71)
fn                  -377 kthread_should_stop+0x8 (gatekeeper_thread+0xa6 
[xeno_nucleus])
fn                  -379 __ipipe_unstall_root+0x8 (schedule+0x516)
fn                  -381 __switch_to+0xc (schedule+0x4de)
(0x05) 0x00000000   -382 schedule_event+0x78 [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x05) 0x00000320   -383 schedule_event+0x6b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000001   -384 schedule_event+0x5b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x0000034b   -385 schedule_event+0x4e [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -386 schedule_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -388 __ipipe_dispatch_event+0xe (schedule+0x3f2)
fn                  -390 __ipipe_stall_root+0x8 (schedule+0x16e)
fn                  -392 sched_clock+0xd (schedule+0xf2)
fn                  -393 profile_hit+0x9 (schedule+0x62)
fn                  -394 schedule+0xe (preempt_schedule+0x4d)
fn                  -395 __ipipe_test_root+0x8 (preempt_schedule+0x2c)
fn                  -396 preempt_schedule+0xb (__wake_up_sync+0xa5)
fn                  -397 irq_exit+0x8 (__ipipe_sync_stage+0xfe)
fn                  -398 __ipipe_unstall_iret_root+0x8 (restore_raw+0x0)
fn                  -400 __ipipe_stall_root+0x8 (resume_kernel+0x5)
fn                  -402 preempt_schedule+0xb (try_to_wake_up+0xee)
fn                  -403 __ipipe_restore_root+0x8 (try_to_wake_up+0xb7)
fn                  -404 enqueue_task+0xa (activate_task+0x5d)
fn                  -405 sched_clock+0xd (activate_task+0x13)
fn                  -406 activate_task+0xb (try_to_wake_up+0x7d)
fn                  -407 __ipipe_test_and_stall_root+0x8 (try_to_wake_up+0x13)
fn                  -408 try_to_wake_up+0xb (wake_up_process+0x12)
fn                  -409 wake_up_process+0x8 (lostage_handler+0xd2 
[xeno_nucleus])
fn                  -411 lostage_handler+0xa [xeno_nucleus] 
(rthal_apc_handler+0x2c)
fn                  -412 rthal_apc_handler+0x8 (__ipipe_sync_stage+0xf1)
fn                  -414 __ipipe_sync_stage+0xe (__ipipe_unstall_root+0x26)
fn                  -415 __ipipe_unstall_root+0x8 (__ipipe_restore_root+0x2b)
fn                  -416 __ipipe_restore_root+0x8 (__wake_up_sync+0x6b)
fn                  -418 __ipipe_restore_root+0x8 (try_to_wake_up+0xb7)
fn                  -419 enqueue_task+0xa (activate_task+0x5d)
fn                  -421 sched_clock+0xd (activate_task+0x13)
fn                  -422 activate_task+0xb (try_to_wake_up+0x7d)
fn                  -428 __switch_to+0xc (xnpod_schedule+0x9be [xeno_nucleus])
fn                  -431 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_suspend_thread+0x7a7 [xeno_nucleus])
fn                  -436 xnpod_suspend_thread+0xe [xeno_nucleus] 
(xnshadow_relax+0x116 [xeno_nucleus])
fn                  -446 xnpod_schedule_runnable+0xe [xeno_nucleus] 
(xnshadow_relax+0xde [xeno_nucleus])
(0x03) 0x0000034c   -447 xnshadow_relax+0x8f [xeno_nucleus] 
(hisyscall_event+0x289 [xeno_nucleus])
fn                  -450 __ipipe_schedule_irq+0xa (rthal_apc_schedule+0x34)
fn                  -451 rthal_apc_schedule+0x8 (schedule_linux_call+0x7e 
[xeno_nucleus])
fn                  -453 ipipe_unstall_pipeline_from+0xc 
(schedule_linux_call+0x73 [xeno_nucleus])
fn                  -455 schedule_linux_call+0x9 [xeno_nucleus] 
(xnshadow_relax+0x80 [xeno_nucleus])
fn                  -456 xnshadow_relax+0xb [xeno_nucleus] 
(hisyscall_event+0x289 [xeno_nucleus])
fn                  -457 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -458 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                  -459 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                  -463 __copy_to_user_ll+0xa (__rt_mutex_inquire+0x6f 
[xeno_native])
fn                  -465 ipipe_unstall_pipeline_from+0xc (rt_mutex_inquire+0x79 
[xeno_native])
fn                  -466 rt_mutex_inquire+0xb [xeno_native] 
(__rt_mutex_inquire+0x5c [xeno_native])
fn                  -467 ipipe_unstall_pipeline_from+0xc 
(rt_registry_fetch+0xa4 [xeno_native])
fn                  -468 rt_registry_fetch+0xa [xeno_native] 
(__rt_mutex_inquire+0x48 [xeno_native])
fn                  -470 __rt_mutex_inquire+0xe [xeno_native] 
(hisyscall_event+0x1d1 [xeno_nucleus])
fn                  -472 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -472 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                  -473 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                  -477 ipipe_unstall_pipeline_from+0xc (rt_mutex_lock+0x122 
[xeno_native])
fn                  -479 rt_mutex_lock+0xc [xeno_native] (__rt_mutex_lock+0x63 
[xeno_native])
fn                  -480 ipipe_unstall_pipeline_from+0xc 
(rt_registry_fetch+0xa4 [xeno_native])
fn                  -482 rt_registry_fetch+0xa [xeno_native] 
(__rt_mutex_lock+0x49 [xeno_native])
fn                  -483 __copy_from_user_ll+0xa (__rt_mutex_lock+0x41 
[xeno_native])
fn                  -484 __rt_mutex_lock+0xd [xeno_native] 
(hisyscall_event+0x1d1 [xeno_nucleus])
fn                  -487 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -487 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                  -488 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                  -494 ipipe_unstall_pipeline_from+0xc 
(xnpod_suspend_thread+0x7ef [xeno_nucleus])
fn                  -500 __switch_to+0xc (xnpod_schedule+0x9be [xeno_nucleus])
fn                  -507 xnpod_schedule+0xe [xeno_nucleus] 
(xnintr_irq_handler+0x74 [xeno_nucleus])
fn                  -514 xnpod_resume_thread+0xe [xeno_nucleus] 
(xnthread_timeout_handler+0x1d [xeno_nucleus])
fn                  -515 xnthread_timeout_handler+0x8 [xeno_nucleus] 
(xntimer_do_tick_aperiodic+0x1f1 [xeno_nucleus])
fn                  -519 xntimer_do_tick_aperiodic+0xe [xeno_nucleus] 
(xnpod_announce_tick+0xd6 [xeno_nucleus])
fn                  -521 xnpod_announce_tick+0xb [xeno_nucleus] 
(xnintr_irq_handler+0x28 [xeno_nucleus])
fn                  -522 xnintr_irq_handler+0xb [xeno_nucleus] 
(xnintr_clock_handler+0x18 [xeno_nucleus])
fn                  -523 xnintr_clock_handler+0x8 [xeno_nucleus] 
(__ipipe_sync_stage+0x113)
fn                  -525 __ipipe_sync_stage+0xe (ipipe_suspend_domain+0x47)
fn                  -526 ipipe_suspend_domain+0xb (__ipipe_handle_irq+0x15f)
fn                  -528 mask_and_ack_8259A+0xb (__ipipe_ack_common_irq+0x47)
fn                  -530 __ipipe_ack_common_irq+0x9 (__ipipe_handle_irq+0xc0)
fn                  -531 __ipipe_handle_irq+0xe (common_interrupt+0x18)
fn                  -534 __ipipe_test_and_stall_root+0x8 (try_to_wake_up+0x13)
fn                  -535 try_to_wake_up+0xb (default_wake_function+0x19)
fn                  -536 default_wake_function+0x8 (__wake_up_common+0x2a)
fn                  -537 __wake_up_common+0xb (__wake_up_sync+0x5e)
fn                  -537 __ipipe_test_and_stall_root+0x8 (__wake_up_sync+0x2a)
fn                  -538 __wake_up_sync+0xd (xnshadow_harden+0x7f 
[xeno_nucleus])
fn                  -540 __ipipe_test_root+0x8 (__might_sleep+0x1e)
fn                  -540 __might_sleep+0x9 (xnshadow_harden+0x45 [xeno_nucleus])
fn                  -542 xnshadow_harden+0xb [xeno_nucleus] (xnshadow_map+0x139 
[xeno_nucleus])
fn                  -544 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_schedule_handler+0x17 [xeno_nucleus])
fn                  -546 xnpod_schedule_handler+0x8 [xeno_nucleus] 
(__ipipe_sync_stage+0x113)
fn                  -547 __ipipe_sync_stage+0xe (ipipe_suspend_domain+0x47)
fn                  -548 ipipe_suspend_domain+0xb (__ipipe_handle_irq+0x15f)
fn                  -551 __ipipe_handle_irq+0xe (ipipe_trigger_irq+0x51)
fn                  -553 memcpy+0xb (ipipe_trigger_irq+0x49)
fn                  -554 ipipe_trigger_irq+0xc (xnpod_schedule+0x29 
[xeno_nucleus])
fn                  -555 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_start_thread+0x1ea [xeno_nucleus])
fn                  -556 ipipe_unstall_pipeline_from+0xc (xnshadow_start+0x59 
[xeno_nucleus])
fn                  -559 xnpod_resume_thread+0xe [xeno_nucleus] 
(xnshadow_start+0x2c [xeno_nucleus])
fn                  -560 xnshadow_start+0xa [xeno_nucleus] 
(xnpod_start_thread+0x1e3 [xeno_nucleus])
fn                  -561 ipipe_unstall_pipeline_from+0xc 
(xnpod_start_thread+0x1db [xeno_nucleus])
fn                  -564 xnpod_start_thread+0xe [xeno_nucleus] 
(xnshadow_map+0x134 [xeno_nucleus])
fn                  -566 ipipe_unstall_pipeline_from+0xc 
(xnpod_suspend_thread+0x7ef [xeno_nucleus])
fn                  -568 xnpod_suspend_thread+0xe [xeno_nucleus] 
(xnshadow_map+0xf2 [xeno_nucleus])
fn                  -571 __ipipe_unstall_root+0x8 (schedule+0x516)
fn                  -574 __switch_to+0xc (schedule+0x4de)
(0x05) 0x00000000   -576 schedule_event+0x78 [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x05) 0x0000034b   -577 schedule_event+0x6b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000001   -577 schedule_event+0x5b [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
(0x04) 0x00000320   -578 schedule_event+0x4e [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -579 schedule_event+0xd [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -580 __ipipe_dispatch_event+0xe (schedule+0x3f2)
fn                  -583 dequeue_task+0xa (deactivate_task+0x1a)
fn                  -584 deactivate_task+0x9 (schedule+0x1fe)
fn                  -586 __ipipe_stall_root+0x8 (schedule+0x16e)
fn                  -588 sched_clock+0xd (schedule+0xf2)
fn                  -589 profile_hit+0x9 (schedule+0x62)
fn                  -590 schedule+0xe (gatekeeper_thread+0xa1 [xeno_nucleus])
fn                  -596 __switch_to+0xc (xnpod_schedule+0x9be [xeno_nucleus])
fn                  -601 xnpod_schedule+0xe [xeno_nucleus] 
(xnpod_suspend_thread+0x7a7 [xeno_nucleus])
fn                  -609 xntimer_do_start_aperiodic+0xe [xeno_nucleus] 
(xntimer_start+0x37 [xeno_nucleus])
fn                  -611 xntimer_start+0x9 [xeno_nucleus] 
(xnpod_suspend_thread+0x797 [xeno_nucleus])
fn                  -614 xnpod_suspend_thread+0xe [xeno_nucleus] 
(rt_task_sleep+0x54 [xeno_native])
fn                  -615 rt_task_sleep+0xa [xeno_native] (__rt_task_sleep+0x25 
[xeno_native])
fn                  -617 __copy_from_user_ll+0xa (__rt_task_sleep+0x1a 
[xeno_native])
fn                  -618 __rt_task_sleep+0xa [xeno_native] 
(hisyscall_event+0x1d1 [xeno_nucleus])
fn                  -621 hisyscall_event+0xe [xeno_nucleus] 
(__ipipe_dispatch_event+0x5e)
fn                  -622 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x58)
fn                  -623 __ipipe_syscall_root+0x9 (system_call+0x20)
fn                  -637 ipipe_unstall_pipeline_from+0xc (rt_mutex_unlock+0xdf 
[xeno_native])
fn                  -640 xnsynch_wakeup_one_sleeper+0xe [xeno_nucleus] 
(rt_mutex_unlock+0x92 [xeno_native])
fn                  -642 rt_mutex_unlock+0xb [xeno_native] 
(__rt_mutex_unlock+0x43 [xeno_native])

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to