On Tue, 2010-02-09 at 11:46 +0100, Richard Cochran wrote:
> 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.
> 

Could you try a recent patch, say 2.6.32? This issue should have been
fixed there.

> 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


-- 
Philippe.



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

Reply via email to