Steven Scholz wrote:
> Hi all,
> 
> 
>>I am running 2.6.19 + adeos-ipipe-2.6.19-arm-1.6-02.patch + 
>>xenomai-svn-2007-02-22
>>on an AT91RM9200 (160MHz/80MHz).
>>
>>When starting "latency -p 200" it runs for a while printing
>>
>>RTT|  00:05:37  (periodic user-mode task, 200 us period, priority 99)
>>RTH|-----lat min|-----lat avg|-----lat max|-overrun|----lat best|---lat worst
>>RTD|      11.200|     139.200|     236.800|       1|      10.800|     280.800
>>RTD|      11.200|     146.400|     253.200|       1|      10.800|     280.800
>>RTD|      11.200|     144.400|     240.400|       1|      10.800|     280.800
>>
>>but then hangs. The timer LED stops blinking. No "soft lockup detected" 
>>appears.
> 
> 
> After patching kernel/sched.c
> 
>  #ifdef CONFIG_IPIPE
> -       if (unlikely(!ipipe_root_domain_p))
> -               return;
> +       if (unlikely(!ipipe_root_domain_p)) {
> +               ipipe_set_printk_sync(ipipe_current_domain);
> +               ipipe_trace_panic_freeze();
> +               ipipe_trace_panic_dump();
> +               BUG();
> +       }
>  #endif /* CONFIG_IPIPE */
> 
> ~ # cat /dev/zero > /dev/null &
> ~ # latency -p 400
> == Sampling period: 400 us
> == Test mode: periodic user-mode task
> == All results in microseconds
> warming up...
> RTT|  00:00:01  (periodic user-mode task, 400 us period, priority 99)
> RTH|-----lat min|-----lat avg|-----lat max|-overrun|----lat best|---lat worst
> RTD|     146.000|     187.200|     258.000|       0|     146.000|     258.000
> ...
> RTD|      72.400|     188.800|    3793.600|      97|      68.800|    4746.800
> RTD|      70.800|     188.800|    3256.400|     107|      68.800|    4746.800
> I-pipe tracer log (30 points):
> func                    0 ipipe_trace_panic_freeze+0x10 (schedule+0x54)
> func                   -2 schedule+0x14 (ret_slow_syscall+0x0)
> func                   -6 __ipipe_walk_pipeline+0x10 
> (__ipipe_handle_irq+0x190)
> [  183] display- 0    -11 xnpod_schedule+0x60c (xnintr_irq_handler+0x128)
> [  184] samplin 99    -14 xnpod_schedule+0xb4 (xnpod_suspend_thread+0x178)
> func                  -16 xnpod_schedule+0x14 (xnpod_suspend_thread+0x178)
> func                  -18 xnpod_suspend_thread+0x14 
> (xnpod_wait_thread_period+0xb0)
> func                  -21 xnpod_wait_thread_period+0x14 
> (rt_task_wait_period+0x4c)
> func                  -23 rt_task_wait_period+0x10 
> (__rt_task_wait_period+0x54)
> func                  -25 __rt_task_wait_period+0x14 (hisyscall_event+0x160)
> func                  -27 hisyscall_event+0x14 (__ipipe_dispatch_event+0xc0)
> func                  -29 __ipipe_dispatch_event+0x14 
> (__ipipe_syscall_root+0x88)
> func                  -31 __ipipe_syscall_root+0x10 (vector_swi+0x68)
> func                  -35 rt_timer_tsc+0x10 (__rt_timer_tsc+0x1c)
> func                  -36 __rt_timer_tsc+0x14 (hisyscall_event+0x160)
> func                  -39 hisyscall_event+0x14 (__ipipe_dispatch_event+0xc0)
> func                  -40 __ipipe_dispatch_event+0x14 
> (__ipipe_syscall_root+0x88)
> func                  -42 __ipipe_syscall_root+0x10 (vector_swi+0x68)
> func                  -46 __ipipe_restore_pipeline_head+0x10 
> (xnpod_wait_thread_period+0x1b4)
> [  184] samplin 99    -49 xnpod_schedule+0x60c (xnpod_suspend_thread+0x178)
> [  183] display- 0    -53 xnpod_schedule+0xb4 (xnintr_irq_handler+0x128)
> func                  -55 xnpod_schedule+0x14 (xnintr_irq_handler+0x128)
> func                  -60 __ipipe_mach_set_dec+0x10 
> (xntimer_tick_aperiodic+0x2fc)
> [  184] samplin 99    -69 xnpod_resume_thread+0x5c 
> (xnthread_periodic_handler+0x30)
> func                  -71 xnpod_resume_thread+0x10 
> (xnthread_periodic_handler+0x30)
> func                  -73 xnthread_periodic_handler+0x10 
> (xntimer_tick_aperiodic+0xcc)
> func                  -77 xntimer_tick_aperiodic+0x14 
> (xnpod_announce_tick+0x14)
> func                  -79 xnpod_announce_tick+0x10 (xnintr_irq_handler+0x54)
> func                  -82 xnintr_irq_handler+0x14 (xnintr_clock_handler+0x20)
> func                  -84 xnintr_clock_handler+0x10 
> (__ipipe_dispatch_wired+0xe4)
> kernel BUG at kernel/sched.c:3337!
> Unable to handle kernel NULL pointer dereference at virtual address 00000000
> pgd = c1a44000
> [00000000] *pgd=21a1a031, *pte=00000000, *ppte=00000000
> Internal error: Oops: 817 [#1]
> Modules linked in:
> CPU: 0
> PC is at __bug+0x44/0x58
> LR is at __ipipe_sync_stage+0x10/0x294
> pc : [<c001ed08>]    lr : [<c0051414>]    Not tainted
> sp : c1e8ff64  ip : 00000000  fp : c1e8ff74
> r10: 003a5b10  r9 : c1e8e000  r8 : 00000000
> r7 : 33333333  r6 : 00000000  r5 : c01ba860  r4 : 00000000
> r3 : 00000000  r2 : c01ba880  r1 : 00000000  r0 : 00000001
> Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment user
> Control: C000717F
> Table: 21A44000  DAC: 00000015
> Process display-181 (pid: 183, stack limit = 0xc1e8e250)
> Stack: (0xc1e8ff64 to 0xc1e90000)
> ff60:          ffffffff c1e8ffac c1e8ff78 c0181588 c001ecd4 c1e8ff84 c0020340
> ff80: c002007c ffffffff fefff000 00000000 33333333 00000000 c1e8e000 003a5b10
> ffa0: 00000000 c1e8ffb0 c001ae04 c0181530 0011b333 33000000 07d00000 00000000
> ffc0: 20280000 03200000 00000000 33333333 0000b714 0002e180 003a5b10 00011490
> ffe0: 00800000 be7ffa4c fb500000 0000ace0 80000010 ffffffff d1208a16 010582a6
> Backtrace:
> [<c001ecc4>] (__bug+0x0/0x58) from [<c0181588>] (schedule+0x68/0x86c)
>  r4 = FFFFFFFF
> [<c0181520>] (schedule+0x0/0x86c) from [<c001ae04>] 
> (ret_slow_syscall+0x0/0x10)
> Code: 1b0048fa e59f0014 eb0048f8 e3a03000 (e5833000)
> 
> 
> Hope this helps!!!

A litte more effort: could you set /proc/ipipe/trace/back_trace_points
to a huge value like 16000 points.

-- 
                                                 Gilles Chanteperdrix

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to