I have built a 2.6.23-rc7 kernel (from Denx git) with Xenomai
2.4-rc3. Architecture is powerpc, processor is a 405GP.
I had to make some additions to arch/powerpc/kernel/head_40x.S, and I
can submit a patch if someone tells me where to post it.
However, while the kernel boots and runs, the xenomai user apps do not
work correctly. Specifically, when running cyclictest, I get the
following:
# ./cyclictest
0.00 0.00 0.00 1/18 668
T: 0 ( 668) P:99 I: ------------[ cut here ]------------ 0
Avg: 0 Max:-1000000
1000 C: 5kernel BUG at
/n/maytag/home/sfalco/linux/embedded/ppc3/linux/linux-2.6-denx/kernel/ipipe/core.c:314!
Min: 24 AcOops: Exception in kernel mode, sig: 5 [#1]
Netdec
Modules linked in:
NIP: c0045dd0 LR: c0015750 CTR: c00121fc
REGS: c0dbde00 TRAP: 0700 Not tainted (2.6.23-rc7)
MSR: 00021030 <ME,IR,DR> CR: 22000422 XER: 20000000
TASK = c0fe7420[668] 'cyclictest' THREAD: c0dbc000
GPR00: 00004900 c0dbdeb0 c0fe7420 00000000 003f0000 c00115dc
00000000 00000000
GPR08: 00000000 000048ff c0296090 00000001 00010000 1001c23c
00ff9900 00000001
GPR16: 7fbabcb0 10015090 10015068 00000000 0ff81940 00000000
0000029a 0ff815d0
GPR24: c02a2fcc 00000280 00000000 c030c200 0000001f 003f0000
00000010 c028e3bc
NIP [c0045dd0] __ipipe_restore_root+0x1c/0x50
LR [c0015750] uic_mask_irq+0x84/0x98
Call Trace:
[c0dbdeb0] [c0054cdc] hisyscall_event+0x1fc/0x310 (unreliable)
[c0dbded0] [c00439fc] __ipipe_ack_level_irq+0x50/0x78
[c0dbdee0] [c0007b2c] __ipipe_ack_irq+0x28/0x3c
[c0dbdef0] [c0007e68] __ipipe_handle_irq+0x12c/0x148
[c0dbdf20] [c00080f8] __ipipe_grab_irq+0x3c/0xc0
[c0dbdf40] [c000e338] __ipipe_ret_from_except+0x0/0xc
Instruction dump:
0.00 0.00 0.00 2/18 66Xenomai: POSIX: destroyed thread
c0f803203d20c02c
8 004a78 3120ffff 7d690110 <0f0b0000> 2f830000
3d60c029 392b6050
t: 39 Avg: 29 Max: 39
T: 0 ( 668) P:99 I: 1000 C: 8 Min: 24 Act: 24
Avg: 29 Max: 39
Trace/breakpoint trap
The bug is coming from ipipe/core.c:314, which is
the BUG_ON here:
void __ipipe_restore_root(unsigned long x)
{
BUG_ON(!ipipe_root_domain_p);
if (x)
__ipipe_stall_root();
else
__ipipe_unstall_root();
}
How do I debug this? I have done a little kernel hacking, but I am
a noob when it comes to Xenomai...
Steve