Jan Kiszka wrote:
> Philippe Gerum wrote:
>> Petr Cervenka wrote:
>>> Hello,
>>> I'm not sure if I'm not off topic.
>>> We use Linux 2.6.24 and Xenomai 2.4.1. Occasionally (once in few days) we
>>> get an kernel panic and I don't know If it's our fault or a problem of
>>> kernel/xenomai/adeos/configuration/hw/...
>>> If you have any questions, i'll try to answer them. Any help is welcome.
>> It is an I-pipe issue, probably. We have to somewhat forge the register frame
>> passed to the Linux tick handler, since we may delay that call. Some register
>> values the profiling code attempts to dereference to find the preempted code
>> may
>> be wrong in our case.
>>
>> Could you 1) send back a disassembly of the profile_tick routine in your
>> kernel
>> image, then apply the following patch to check whether it improves the
>> situation
>> as well? TIA,
>>
>> --- 2.6.24-x86-2.0-03/arch/x86/kernel/ipipe.c~ 2008-02-11
>> 10:48:24.000000000 +0100
>> +++ 2.6.24-x86-2.0-03/arch/x86/kernel/ipipe.c 2008-07-07
>> 17:55:36.000000000 +0200
>> @@ -933,12 +933,7 @@
>> tick_regs->eip = regs.eip;
>> tick_regs->ebp = regs.ebp;
>> #else /* !CONFIG_X86_32 */
>> - tick_regs->ss = regs->ss;
>> - tick_regs->rsp = regs->rsp;
>> - tick_regs->eflags = regs->eflags;
>> - tick_regs->cs = regs->cs;
>> - tick_regs->rip = regs->rip;
>> - tick_regs->rbp = regs->rbp;
>> + *tick_regs = *regs;
>> #endif /* !CONFIG_X86_32 */
>
> I'm fairly sure that this won't make a difference. According to Petr's
> first dump we crash in profile_pc, and there the kernel pokes around on
> the stack of the interrupted context (Petr, you are running SMP,
> right?). The question is if this stack may have vanished or may have
> been swapped out after capturing the registers.
When Xenomai has forwarded the tick to linux, Linux tick handler is
executed upon resume to user-space, so, if the stack had to vanish, it
would have to vanish upon execution of another interrupt handler before
the tick handler. However, I believe that only do_exit can kill a task,
and I am not sure if it can be called from an interrupt handler. As for
the stack being swapped out, it is kmalloced memory, so, it is impossible.
--
Gilles.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help