Rob Stocks wrote: > We have a problem with Xenomai v2.4.9.1, kernel 2.6.31, x86 SMP in that we > get a kernel panic on reboot: > > swapper[0]: segfault at 15aba ip 0000e6ba sp 00000189 error 4 > no vm86_info: BAD > Kernel panic - not syncing: Attempted to kill the idle task! > Pis: 0, comm.: swapper Not tainted 2.6.31-CROCUS #1 > Call Trace: > [<810280cb>] panic+0x49/0xed > [<8102a6f6>] do_exit+0x55/0xdc4 > [<81028fec>] ? printk+0x9f/0x104 > [<810031ec>] ? reboot_interrupt+0x0/0x38 > [<81014af7>] save_v86_state+0xa6/0x168 > [<810031ec>] ? reboot_interrupt+0x0/0x38 > [<81002ac6>] work_notifysig_v86+0x06/0x18 > [<810031ec>] ? reboot_interrupt+0x0/0x38 > reboot[1781]: segfault at 15aba ip 0000e6ba sp 00000189 error 4 > no vm86_info: BAD > > Other than this, it seems to work fine. > > We had previously been using v2.4.7, kernel 2.6.28.7 which does not have > this issue but for development, we would like to use X and we find that some > X applications (e.g. Netbeans & eclipse) hang the system (with no indication > of cause i.e. no console messages & nothing in the logs - the system just > stops). However, when we use v2.4.9.1 with kernel 2.6.31, we can use X apps > perfectly but we can't reboot! > > Anyone have any ideas/suggestions?
Patch below fixes it for me. There seems to be another gremlin like this, but it needs a second check. I will post official patches once that is done. Jan -----------> x86: Fix reboot for SMP So far I-pipe called reboot_interrupt recursively as it virtualized the wrong entry call. Signed-off-by: Jan Kiszka <[email protected]> --- arch/x86/include/asm/hw_irq.h | 1 + arch/x86/kernel/ipipe.c | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h index d523a86..6a7c6bc 100644 --- a/arch/x86/include/asm/hw_irq.h +++ b/arch/x86/include/asm/hw_irq.h @@ -122,6 +122,7 @@ extern void smp_invalidate_interrupt(struct pt_regs *); #else extern asmlinkage void smp_invalidate_interrupt(struct pt_regs *); #endif +extern asmlinkage void smp_reboot_interrupt(void); #endif extern void (*__initconst interrupt[NR_VECTORS-FIRST_EXTERNAL_VECTOR])(void); diff --git a/arch/x86/kernel/ipipe.c b/arch/x86/kernel/ipipe.c index af902c6..b8f9139 100644 --- a/arch/x86/kernel/ipipe.c +++ b/arch/x86/kernel/ipipe.c @@ -297,7 +297,7 @@ void __init __ipipe_enable_pipeline(void) ipipe_virtualize_irq(ipipe_root_domain, ipipe_apic_vector_irq(REBOOT_VECTOR), - (ipipe_irq_handler_t)&reboot_interrupt, + (ipipe_irq_handler_t)&smp_reboot_interrupt, NULL, &__ipipe_ack_apic, IPIPE_STDROOT_MASK);
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
