Is the preemptive kernel patch unsafe for 8xx/PPC?

Joakim Tjernlund joakim.tjernlund at lumentis.se
Fri Dec 13 18:47:31 EST 2002


Hi Eugene

> From: Eugene Surovegin [mailto:ebs at innocent.com]
> Joakim,
>
> At 12:35 PM 12/12/2002, you wrote:
> >Was that the 2.4.19-2 patch? What were the bugs and have you fixed them?
>
> I had the following issues with 2.4.19-2 (2.4.20-1 is identical in this
> regard):
>
> 1) arch/ppc/kernel.entry.S
>
> diff -urN linux-2.4.20/arch/ppc/kernel/entry.S linux/arch/ppc/kernel/entry.S
> --- linux-2.4.20/arch/ppc/kernel/entry.S        2002-11-28
> 18:53:11.000000000 -0500
> +++ linux/arch/ppc/kernel/entry.S       2002-12-11 02:34:47.000000000 -0500
> @@ -278,6 +278,41 @@
>           */
>          cmpi    0,r3,0
>          beq     restore
> +#ifdef CONFIG_PREEMPT
> +       lwz     r3,PREEMPT_COUNT(r2)
> +       cmpi    0,r3,1
> +       bge     ret_from_except
> +       lwz     r5,_MSR(r1)
> +       andi.   r5,r5,MSR_PR
> +       bne     do_signal_ret
>
>      <rest of the diff is skipped>
>
> I had to change the last command to "bne ret_from_except".
> I checked MontaVista tree, and they have "ret_from_except" there also.

This I can not comment on, but my 8xx runs fine with it.

>
> Without this change trivial code:
>
>    while (true) ;
>
> locked the box completely.
>
> 2) include/asm-ppc/pgalloc.h  There are curly brackets missing in
> get_pgd_fast()

Yes, they are missing in the else part.

>
> 3) to support 440GP you have to modify arc/ppc/kernel/irc.c:preempt_intercept:
>
> #if !defined(CONFIG_4xx) || defined(CONFIG_440)
>          case 0x900:
> #else
>          case 0x1000:
> #endif

OK, this does not affect 8xx so this I can not test.

>
> With these changes (an maybe some others I forgot to mention here :),
> I have pretty stable preemptable kernel (2.4.19, PPC440GP & 405GP, also
> with rtsched patch by George Anzinger)
>
Can you run the above changes by Robert Love so he can comment/update the patch?

 Jocke

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list