Philippe Gerum wrote:
> Wolfgang Grandegger wrote:
>> Philippe Gerum wrote:
>>> Wolfgang Grandegger wrote:
>>>> Wolfgang Grandegger wrote:
>>>>> Philippe Gerum wrote:
>>>>>> Wolfgang Grandegger wrote:
>>>>>>> Hello,
>>>>>>>
>>>>>>> I want to use a Xenomai task overtaking the duties of a watchdog running
>>>>>>> under Linux as soon as the Xenomai layer is available during boot up. Is
>>>>>>>   there a function or variable I could inspect? With 2.3.x, I called
>>>>>>> rtdm_init_task() until it returned without error but with 2.4.x it
>>>>>>> results in a kernel crash :-(.
>>>>>>>
>>>>>> What is the value of CONFIG_XENO_OPT_SYS_STACKPOOLSZ?
>>>>>   #
>>>>>   # Nucleus options
>>>>>   #
>>>>>   CONFIG_XENO_OPT_PERVASIVE=y
>>>>>   CONFIG_XENO_OPT_SYS_STACKPOOLSZ=32
>>>>>   # CONFIG_XENO_OPT_PRIOCPL is not set
>>>>>   CONFIG_XENO_OPT_PIPE=y
>>>> Some more input on that issue. Here is the oops and the NIP location:
>>>>
>>>> XLB Arb cnf: 8000a006
>>>> mpc5xxx_ide: Setting up IDE interface ide0...
>>>> Probing IDE interface ide0...
>>>> Oops: kernel access of bad area, sig: 11
>>>> NIP: C0113364 XER: 20000000 LR: C0113320 SP: C047DB30 REGS: c047da80 TRAP: 
>>>> 0300    Not tainted
>>>> MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
>>>> DAR: 0000003C, DSISR: 20000000
>>>> TASK = c047c000[1] 'swapper' Last syscall: 120
>>>> last math 00000000 last altivec 00000000
>>>> GPR00: 00000003 C047DB30 C047C000 00000009 FFFFFFF7 C01CF395 C0220000 
>>>> 00000000
>>>> GPR08: 00000038 C01ECC00 C02445F4 00000000 00000000 100803B0 07FCF000 
>>>> 08099000
>>>> GPR16: C0220000 FFFFFF7F C0230000 FFF75F97 C022B3C0 00000000 C01ECC0C 
>>>> C0230000
>>>> GPR24: 00000000 00000000 00000010 C02446F4 3B9A0000 00000000 00000000 
>>>> C0244590
>>>> Call backtrace:
>>>> C0113320 C0111F00 C010DD0C C013D810 C00DA48C C001EAB4 C001A70C
>>>> C001A598 C001A254 C00079C0 C000D63C C0024C50 C00243AC C000D298
>>>> C000D508 C0005CF4 0039FBC0 C00F0A4C C00F0EA0 C00F15C0 C00F210C
>>>> C02149C8 C0214A14 C020A64C C00039A0 C0008678
>>>> Kernel panic: Aiee, killing interrupt handler!
>>>> In interrupt handler - not syncing
>>>>  <0>Rebooting in 180 seconds..
>>>>
>>>> $ ppc_6xx-gdb vmlinux:
>>>> ...
>>>> (gdb) l *0xC0113364
>>>> 0xc0113364 is in __xntimer_init (queue.h:51).
>>>> 46              holder->last = holder;
>>>> 47              holder->next = holder;
>>>> 48      }
>>>> 49
>>>> 50      static inline void ath(xnholder_t *head, xnholder_t *holder)
>>>> 51      {
>>>> 52              /* Inserts the new element right after the heading one  */
>>>> 53              holder->last = head;
>>>> 54              holder->next = head->next;
>>>> 55              holder->next->last = holder;
>>>>
>>>> Wolfgang.
>>>>
>>> Thanks. Could you send me the full boot log until the oops occurs as well? 
>>> TIA,
>> Ses below. As mentioned earlier, rtdm_task_init() is called early before the
>> Xenomai sub-system gets initialized.
>>
> 
> The point is, how much earlier, and as a matter of fact, at least one skin
> should have initialized before any service creating a Xenomai task could be
> invoked, like rtdm_task_init(). As you mentioned and from your boot log, not
> even the nucleus was started, so I don't understand how this could have ever
> worked with any Xenomai version actually (the gist of the matter is that we

Maybe just pure luck ;-). At least rtdm_task_init() did not crash and
even return an error under Xenomai 2.3.5 and Linux 2.4.25.

> don't have the internal allocator set up for grabbing stack memory for the new
> task at that point). You may want to make your task creation routine a
> late_initcall to fix this.

It's actually called from the watchdog driver, which needs to be trigger
early. Is there a function or variable telling that the Xenomai layer is
initialized.

Wolfgang.

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

Reply via email to