On Fri, Nov 06, 2009 at 10:32:00AM +0100, Philippe Gerum wrote:
> On Fri, 2009-11-06 at 10:20 +0100, Richard Cochran wrote:
> > Yes, works fine now. Thanks for your help.

I am working again on PowerPC, and I now notice that I spoke too
soon. I had fixed the problem for myself, in a different way.

The fix you gave is still not quite right.

> diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
> index 8968b24..a4fe229 100644
> --- a/arch/powerpc/kernel/smp.c
> +++ b/arch/powerpc/kernel/smp.c
> @@ -164,16 +164,16 @@ int smp_request_message_ipi(int virq, int msg)
>       if (msg < 0 || msg > PPC_MSG_DEBUGGER_BREAK) {
>               return -EINVAL;
>       }

Even if this block...

> -#if !defined(CONFIG_DEBUGGER) && !defined(CONFIG_KEXEC)
> -     if (msg == PPC_MSG_DEBUGGER_BREAK) {
> -             return 1;
> -     }
> -#endif

>  #ifdef CONFIG_IPIPE
>       if (msg == PPC_MSG_DEBUGGER_BREAK)
>               /* Piggyback the debugger IPI for the I-pipe. */
>               __ipipe_register_ipi(virq);
>  #endif

appears here...

> +#if !defined(CONFIG_DEBUGGER) && !defined(CONFIG_KEXEC)
> +     if (msg == PPC_MSG_DEBUGGER_BREAK) {
> +             return 1;
> +     }
> +#endif

it still prevents the following call...

>       err = request_irq(virq, smp_ipi_action[msg], IRQF_DISABLED|IRQF_PERCPU,
>                         smp_ipi_name[msg], 0);

The function, smp_request_message_ipi(), is called unconditionally
with virq=0,1,2,3, and 3=PPC_MSG_DEBUGGER_BREAK. AFAICT, ipipe needs
the call to request_irq() to go through.

I suggest:

#ifdef CONFIG_IPIPE
        if (msg == PPC_MSG_DEBUGGER_BREAK)
                /* Piggyback the debugger IPI for the I-pipe. */
                __ipipe_register_ipi(virq);
#else
#if !defined(CONFIG_DEBUGGER) && !defined(CONFIG_KEXEC)
        if (msg == PPC_MSG_DEBUGGER_BREAK) {
                return 1;
        }
#endif
#endif

Richard

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

Reply via email to