* [PATCH] 2.5: preemptive kernel on UP
@ 2002-03-05 0:11 Robert Love
2002-03-05 0:43 ` Russell King
2002-03-06 19:17 ` george anzinger
0 siblings, 2 replies; 11+ messages in thread
From: Robert Love @ 2002-03-05 0:11 UTC (permalink / raw)
To: linux-kernel
During 2.5.5-pre, an optimization was made that removed schedule_tail
from UP kernels. This causes the initial preempt_count of a new task,
which starts at 1, to never decrement to zero and thus never become
preemptible.
Thanks to everyone who pointed out the lousy performance - it took
awhile to find but it should be fixed now. Please comment if not.
Patch is against 2.5.6-pre2 and is critical for all UP+preempt users.
Robert Love
diff -urN linux-2.5.6-pre2/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
--- linux-2.5.6-pre2/arch/alpha/kernel/entry.S Fri Mar 1 17:21:14 2002
+++ linux/arch/alpha/kernel/entry.S Mon Mar 4 17:49:27 2002
@@ -495,7 +495,7 @@
ret $31,($26),1
.end alpha_switch_to
-#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP || CONFIG_PREEMPT
.globl ret_from_fork
.align 3
.ent ret_from_fork
diff -urN linux-2.5.6-pre2/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
--- linux-2.5.6-pre2/arch/i386/kernel/entry.S Tue Feb 19 21:10:58 2002
+++ linux/arch/i386/kernel/entry.S Mon Mar 4 17:48:32 2002
@@ -195,7 +195,7 @@
ENTRY(ret_from_fork)
-#if CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
call SYMBOL_NAME(schedule_tail)
#endif
GET_THREAD_INFO(%ebx)
diff -urN linux-2.5.6-pre2/arch/ppc/kernel/entry.S linux/arch/ppc/kernel/entry.S
--- linux-2.5.6-pre2/arch/ppc/kernel/entry.S Tue Feb 19 21:10:59 2002
+++ linux/arch/ppc/kernel/entry.S Mon Mar 4 17:48:41 2002
@@ -343,7 +343,7 @@
.globl ret_from_fork
ret_from_fork:
-#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP || CONFIG_PREEMPT
bl schedule_tail
#endif
rlwinm r3,r1,0,0,18
diff -urN linux-2.5.6-pre2/arch/ppc64/kernel/entry.S linux/arch/ppc64/kernel/entry.S
--- linux-2.5.6-pre2/arch/ppc64/kernel/entry.S Tue Feb 19 21:10:53 2002
+++ linux/arch/ppc64/kernel/entry.S Mon Mar 4 17:52:16 2002
@@ -311,7 +311,7 @@
blr
_GLOBAL(ret_from_fork)
-#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP || CONFIG_PREEMPT
bl .schedule_tail
#endif
clrrdi r4,r1,THREAD_SHIFT
diff -urN linux-2.5.6-pre2/arch/s390/kernel/entry.S linux/arch/s390/kernel/entry.S
--- linux-2.5.6-pre2/arch/s390/kernel/entry.S Tue Feb 19 21:10:57 2002
+++ linux/arch/s390/kernel/entry.S Mon Mar 4 17:48:12 2002
@@ -295,7 +295,7 @@
stosm 24(%r15),0x03 # reenable interrupts
sr %r0,%r0 # child returns 0
st %r0,SP_R2(%r15) # store return value (change R2 on stack)
-#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP || CONFIG_PREEMPT
l %r1,BASED(.Lschedtail)
la %r14,BASED(sysc_return)
br %r1 # call schedule_tail, return to sysc_return
@@ -896,7 +896,7 @@
#error .Ltrace: .long syscall_trace
.Lvfork: .long sys_vfork
-#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP || CONFIG_PREEMPT
.Lschedtail: .long schedule_tail
#endif
diff -urN linux-2.5.6-pre2/arch/s390x/kernel/entry.S linux/arch/s390x/kernel/entry.S
--- linux-2.5.6-pre2/arch/s390x/kernel/entry.S Tue Feb 19 21:10:58 2002
+++ linux/arch/s390x/kernel/entry.S Mon Mar 4 17:53:31 2002
@@ -280,7 +280,7 @@
GET_CURRENT # load pointer to task_struct to R9
stosm 48(%r15),0x03 # reenable interrupts
xc SP_R2(8,%r15),SP_R2(%r15) # child returns 0
-#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP || CONFIG_PREEMPT
larl %r14,sysc_return
jg schedule_tail # return to sysc_return
#else
diff -urN linux-2.5.6-pre2/kernel/sched.c linux/kernel/sched.c
--- linux-2.5.6-pre2/kernel/sched.c Fri Mar 1 17:21:16 2002
+++ linux/kernel/sched.c Mon Mar 4 17:54:00 2002
@@ -397,7 +397,7 @@
p->sleep_avg) / (EXIT_WEIGHT + 1);
}
-#if CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
asmlinkage void schedule_tail(void)
{
spin_unlock_irq(&this_rq()->lock);
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 0:11 [PATCH] 2.5: preemptive kernel on UP Robert Love
@ 2002-03-05 0:43 ` Russell King
2002-03-05 0:51 ` Robert Love
2002-03-06 19:17 ` george anzinger
1 sibling, 1 reply; 11+ messages in thread
From: Russell King @ 2002-03-05 0:43 UTC (permalink / raw)
To: Robert Love; +Cc: linux-kernel
On Mon, Mar 04, 2002 at 07:11:23PM -0500, Robert Love wrote:
> During 2.5.5-pre, an optimization was made that removed schedule_tail
> from UP kernels. This causes the initial preempt_count of a new task,
> which starts at 1, to never decrement to zero and thus never become
> preemptible.
>
> Thanks to everyone who pointed out the lousy performance - it took
> awhile to find but it should be fixed now. Please comment if not.
>
> Patch is against 2.5.6-pre2 and is critical for all UP+preempt users.
>
> Robert Love
>
> diff -urN linux-2.5.6-pre2/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
> --- linux-2.5.6-pre2/arch/alpha/kernel/entry.S Fri Mar 1 17:21:14 2002
> +++ linux/arch/alpha/kernel/entry.S Mon Mar 4 17:49:27 2002
> @@ -495,7 +495,7 @@
> ret $31,($26),1
> .end alpha_switch_to
>
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
Surely you really don't mean this?
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 0:43 ` Russell King
@ 2002-03-05 0:51 ` Robert Love
2002-03-05 0:53 ` Russell King
0 siblings, 1 reply; 11+ messages in thread
From: Robert Love @ 2002-03-05 0:51 UTC (permalink / raw)
To: Russell King; +Cc: linux-kernel
On Mon, 2002-03-04 at 19:43, Russell King wrote:
> > diff -urN linux-2.5.6-pre2/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
> > --- linux-2.5.6-pre2/arch/alpha/kernel/entry.S Fri Mar 1 17:21:14 2002
> > +++ linux/arch/alpha/kernel/entry.S Mon Mar 4 17:49:27 2002
> > @@ -495,7 +495,7 @@
> > ret $31,($26),1
> > .end alpha_switch_to
> >
> > -#ifdef CONFIG_SMP
> > +#ifdef CONFIG_SMP || CONFIG_PREEMPT
>
> Surely you really don't mean this?
Yes, why? We need to call schedule_tail ...
Robert Love
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 0:51 ` Robert Love
@ 2002-03-05 0:53 ` Russell King
2002-03-05 0:58 ` Robert Love
0 siblings, 1 reply; 11+ messages in thread
From: Russell King @ 2002-03-05 0:53 UTC (permalink / raw)
To: Robert Love; +Cc: linux-kernel
On Mon, Mar 04, 2002 at 07:51:33PM -0500, Robert Love wrote:
> On Mon, 2002-03-04 at 19:43, Russell King wrote:
>
> > > diff -urN linux-2.5.6-pre2/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
> > > --- linux-2.5.6-pre2/arch/alpha/kernel/entry.S Fri Mar 1 17:21:14 2002
> > > +++ linux/arch/alpha/kernel/entry.S Mon Mar 4 17:49:27 2002
> > > @@ -495,7 +495,7 @@
> > > ret $31,($26),1
> > > .end alpha_switch_to
> > >
> > > -#ifdef CONFIG_SMP
> > > +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> >
> > Surely you really don't mean this?
>
> Yes, why? We need to call schedule_tail ...
It's a #ifdef, not a #if
Does this compiler message give you a better idea:
warning: extra tokens at end of #ifdef directive
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 0:53 ` Russell King
@ 2002-03-05 0:58 ` Robert Love
2002-03-05 1:55 ` Alan Cox
0 siblings, 1 reply; 11+ messages in thread
From: Robert Love @ 2002-03-05 0:58 UTC (permalink / raw)
To: Russell King; +Cc: linux-kernel
On Mon, 2002-03-04 at 19:53, Russell King wrote:
> It's a #ifdef, not a #if
Better?
Robert Love
diff -urN linux-2.5.6-pre2/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
--- linux-2.5.6-pre2/arch/alpha/kernel/entry.S Fri Mar 1 17:21:14 2002
+++ linux/arch/alpha/kernel/entry.S Mon Mar 4 17:49:27 2002
@@ -495,7 +495,7 @@
ret $31,($26),1
.end alpha_switch_to
-#ifdef CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
.globl ret_from_fork
.align 3
.ent ret_from_fork
diff -urN linux-2.5.6-pre2/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
--- linux-2.5.6-pre2/arch/i386/kernel/entry.S Tue Feb 19 21:10:58 2002
+++ linux/arch/i386/kernel/entry.S Mon Mar 4 17:48:32 2002
@@ -195,7 +195,7 @@
ENTRY(ret_from_fork)
-#if CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
call SYMBOL_NAME(schedule_tail)
#endif
GET_THREAD_INFO(%ebx)
diff -urN linux-2.5.6-pre2/arch/ppc/kernel/entry.S linux/arch/ppc/kernel/entry.S
--- linux-2.5.6-pre2/arch/ppc/kernel/entry.S Tue Feb 19 21:10:59 2002
+++ linux/arch/ppc/kernel/entry.S Mon Mar 4 17:48:41 2002
@@ -343,7 +343,7 @@
.globl ret_from_fork
ret_from_fork:
-#ifdef CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
bl schedule_tail
#endif
rlwinm r3,r1,0,0,18
diff -urN linux-2.5.6-pre2/arch/ppc64/kernel/entry.S linux/arch/ppc64/kernel/entry.S
--- linux-2.5.6-pre2/arch/ppc64/kernel/entry.S Tue Feb 19 21:10:53 2002
+++ linux/arch/ppc64/kernel/entry.S Mon Mar 4 17:52:16 2002
@@ -311,7 +311,7 @@
blr
_GLOBAL(ret_from_fork)
-#ifdef CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
bl .schedule_tail
#endif
clrrdi r4,r1,THREAD_SHIFT
diff -urN linux-2.5.6-pre2/arch/s390/kernel/entry.S linux/arch/s390/kernel/entry.S
--- linux-2.5.6-pre2/arch/s390/kernel/entry.S Tue Feb 19 21:10:57 2002
+++ linux/arch/s390/kernel/entry.S Mon Mar 4 17:48:12 2002
@@ -295,7 +295,7 @@
stosm 24(%r15),0x03 # reenable interrupts
sr %r0,%r0 # child returns 0
st %r0,SP_R2(%r15) # store return value (change R2 on stack)
-#ifdef CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
l %r1,BASED(.Lschedtail)
la %r14,BASED(sysc_return)
br %r1 # call schedule_tail, return to sysc_return
@@ -896,7 +896,7 @@
#error .Ltrace: .long syscall_trace
.Lvfork: .long sys_vfork
-#ifdef CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
.Lschedtail: .long schedule_tail
#endif
diff -urN linux-2.5.6-pre2/arch/s390x/kernel/entry.S linux/arch/s390x/kernel/entry.S
--- linux-2.5.6-pre2/arch/s390x/kernel/entry.S Tue Feb 19 21:10:58 2002
+++ linux/arch/s390x/kernel/entry.S Mon Mar 4 17:53:31 2002
@@ -280,7 +280,7 @@
GET_CURRENT # load pointer to task_struct to R9
stosm 48(%r15),0x03 # reenable interrupts
xc SP_R2(8,%r15),SP_R2(%r15) # child returns 0
-#ifdef CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
larl %r14,sysc_return
jg schedule_tail # return to sysc_return
#else
diff -urN linux-2.5.6-pre2/kernel/sched.c linux/kernel/sched.c
--- linux-2.5.6-pre2/kernel/sched.c Fri Mar 1 17:21:16 2002
+++ linux/kernel/sched.c Mon Mar 4 17:54:00 2002
@@ -397,7 +397,7 @@
p->sleep_avg) / (EXIT_WEIGHT + 1);
}
-#if CONFIG_SMP
+#if CONFIG_SMP || CONFIG_PREEMPT
asmlinkage void schedule_tail(void)
{
spin_unlock_irq(&this_rq()->lock);
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 0:58 ` Robert Love
@ 2002-03-05 1:55 ` Alan Cox
2002-03-05 1:43 ` Robert Love
2002-03-05 1:56 ` yodaiken
0 siblings, 2 replies; 11+ messages in thread
From: Alan Cox @ 2002-03-05 1:55 UTC (permalink / raw)
To: Robert Love; +Cc: Russell King, linux-kernel
> Better?
Not really
> +#if CONFIG_SMP || CONFIG_PREEMPT
#if [expression]
try
#if defined(a) || defined(b)
Interesting that the difference pre-empt makes is so large you didnt notice
you hadn't re-enabled it ;)
Alan
--
"Nothing would please me more than being able to hire ten programmers
and deluge the hobby market with good software." -- Bill Gates 1976
We are still waiting ....
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 1:55 ` Alan Cox
@ 2002-03-05 1:43 ` Robert Love
2002-03-05 4:40 ` Ben Clifford
2002-03-05 1:56 ` yodaiken
1 sibling, 1 reply; 11+ messages in thread
From: Robert Love @ 2002-03-05 1:43 UTC (permalink / raw)
To: Alan Cox; +Cc: Russell King, linux-kernel
On Mon, 2002-03-04 at 20:55, Alan Cox wrote:
> try
>
> #if defined(a) || defined(b)
Is that needed since the .config is defined to 1 and 0 in autoconf.h?
> Interesting that the difference pre-empt makes is so large you didnt notice
> you hadn't re-enabled it ;)
The above fix isn't needed for i386 ... and I noticed the problem in the
first place because performance was odd.
Robert Love
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 1:43 ` Robert Love
@ 2002-03-05 4:40 ` Ben Clifford
0 siblings, 0 replies; 11+ messages in thread
From: Ben Clifford @ 2002-03-05 4:40 UTC (permalink / raw)
To: Robert Love; +Cc: linux-kernel
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Robert,
In one message you wrote:
> Patch [...] is critical for all UP+preempt users.
and in another (in the same thread) you write:
> The above fix isn't needed for i386
I don't understand what to do in the UP i386 case - apply or not apply?
I suspect I'm misunderstanding what you mean by "the above fix".
Ben
- --
Ben Clifford benc@hawaga.org.uk GPG: 30F06950
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE8hEw+sYXoezDwaVARAmByAJ4iW2lVfJO61hRoAYmwige/7fyY3ACfS7Lk
ytnH2rCLgTvKgchWtt3cvVw=
=tb/c
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 1:55 ` Alan Cox
2002-03-05 1:43 ` Robert Love
@ 2002-03-05 1:56 ` yodaiken
1 sibling, 0 replies; 11+ messages in thread
From: yodaiken @ 2002-03-05 1:56 UTC (permalink / raw)
To: Alan Cox; +Cc: Robert Love, Russell King, linux-kernel
On Tue, Mar 05, 2002 at 01:55:05AM +0000, Alan Cox wrote:
> "Nothing would please me more than being able to hire ten programmers
> and deluge the hobby market with good software." -- Bill Gates 1976
>
> We are still waiting ....
After Bill, the deluge.
--
---------------------------------------------------------
Victor Yodaiken
Finite State Machine Labs: The RTLinux Company.
www.fsmlabs.com www.rtlinux.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-05 0:11 [PATCH] 2.5: preemptive kernel on UP Robert Love
2002-03-05 0:43 ` Russell King
@ 2002-03-06 19:17 ` george anzinger
2002-03-06 20:21 ` Robert Love
1 sibling, 1 reply; 11+ messages in thread
From: george anzinger @ 2002-03-06 19:17 UTC (permalink / raw)
To: Robert Love; +Cc: linux-kernel
Robert Love wrote:
>
> During 2.5.5-pre, an optimization was made that removed schedule_tail
> from UP kernels. This causes the initial preempt_count of a new task,
> which starts at 1, to never decrement to zero and thus never become
> preemptible.
>
> Thanks to everyone who pointed out the lousy performance - it took
> awhile to find but it should be fixed now. Please comment if not.
>
> Patch is against 2.5.6-pre2 and is critical for all UP+preempt users.
With out a lot of looking, wouldn't it be easier to just change fork?
-g
>
> Robert Love
>
> diff -urN linux-2.5.6-pre2/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
> --- linux-2.5.6-pre2/arch/alpha/kernel/entry.S Fri Mar 1 17:21:14 2002
> +++ linux/arch/alpha/kernel/entry.S Mon Mar 4 17:49:27 2002
> @@ -495,7 +495,7 @@
> ret $31,($26),1
> .end alpha_switch_to
>
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> .globl ret_from_fork
> .align 3
> .ent ret_from_fork
> diff -urN linux-2.5.6-pre2/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
> --- linux-2.5.6-pre2/arch/i386/kernel/entry.S Tue Feb 19 21:10:58 2002
> +++ linux/arch/i386/kernel/entry.S Mon Mar 4 17:48:32 2002
> @@ -195,7 +195,7 @@
>
>
> ENTRY(ret_from_fork)
> -#if CONFIG_SMP
> +#if CONFIG_SMP || CONFIG_PREEMPT
> call SYMBOL_NAME(schedule_tail)
> #endif
> GET_THREAD_INFO(%ebx)
> diff -urN linux-2.5.6-pre2/arch/ppc/kernel/entry.S linux/arch/ppc/kernel/entry.S
> --- linux-2.5.6-pre2/arch/ppc/kernel/entry.S Tue Feb 19 21:10:59 2002
> +++ linux/arch/ppc/kernel/entry.S Mon Mar 4 17:48:41 2002
> @@ -343,7 +343,7 @@
>
> .globl ret_from_fork
> ret_from_fork:
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> bl schedule_tail
> #endif
> rlwinm r3,r1,0,0,18
> diff -urN linux-2.5.6-pre2/arch/ppc64/kernel/entry.S linux/arch/ppc64/kernel/entry.S
> --- linux-2.5.6-pre2/arch/ppc64/kernel/entry.S Tue Feb 19 21:10:53 2002
> +++ linux/arch/ppc64/kernel/entry.S Mon Mar 4 17:52:16 2002
> @@ -311,7 +311,7 @@
> blr
>
> _GLOBAL(ret_from_fork)
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> bl .schedule_tail
> #endif
> clrrdi r4,r1,THREAD_SHIFT
> diff -urN linux-2.5.6-pre2/arch/s390/kernel/entry.S linux/arch/s390/kernel/entry.S
> --- linux-2.5.6-pre2/arch/s390/kernel/entry.S Tue Feb 19 21:10:57 2002
> +++ linux/arch/s390/kernel/entry.S Mon Mar 4 17:48:12 2002
> @@ -295,7 +295,7 @@
> stosm 24(%r15),0x03 # reenable interrupts
> sr %r0,%r0 # child returns 0
> st %r0,SP_R2(%r15) # store return value (change R2 on stack)
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> l %r1,BASED(.Lschedtail)
> la %r14,BASED(sysc_return)
> br %r1 # call schedule_tail, return to sysc_return
> @@ -896,7 +896,7 @@
> #error .Ltrace: .long syscall_trace
> .Lvfork: .long sys_vfork
>
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> .Lschedtail: .long schedule_tail
> #endif
>
> diff -urN linux-2.5.6-pre2/arch/s390x/kernel/entry.S linux/arch/s390x/kernel/entry.S
> --- linux-2.5.6-pre2/arch/s390x/kernel/entry.S Tue Feb 19 21:10:58 2002
> +++ linux/arch/s390x/kernel/entry.S Mon Mar 4 17:53:31 2002
> @@ -280,7 +280,7 @@
> GET_CURRENT # load pointer to task_struct to R9
> stosm 48(%r15),0x03 # reenable interrupts
> xc SP_R2(8,%r15),SP_R2(%r15) # child returns 0
> -#ifdef CONFIG_SMP
> +#ifdef CONFIG_SMP || CONFIG_PREEMPT
> larl %r14,sysc_return
> jg schedule_tail # return to sysc_return
> #else
> diff -urN linux-2.5.6-pre2/kernel/sched.c linux/kernel/sched.c
> --- linux-2.5.6-pre2/kernel/sched.c Fri Mar 1 17:21:16 2002
> +++ linux/kernel/sched.c Mon Mar 4 17:54:00 2002
> @@ -397,7 +397,7 @@
> p->sleep_avg) / (EXIT_WEIGHT + 1);
> }
>
> -#if CONFIG_SMP
> +#if CONFIG_SMP || CONFIG_PREEMPT
> asmlinkage void schedule_tail(void)
> {
> spin_unlock_irq(&this_rq()->lock);
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
George george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Real time sched: http://sourceforge.net/projects/rtsched/
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] 2.5: preemptive kernel on UP
2002-03-06 19:17 ` george anzinger
@ 2002-03-06 20:21 ` Robert Love
0 siblings, 0 replies; 11+ messages in thread
From: Robert Love @ 2002-03-06 20:21 UTC (permalink / raw)
To: george anzinger; +Cc: linux-kernel
On Wed, 2002-03-06 at 14:17, george anzinger wrote:
> With out a lot of looking, wouldn't it be easier to just change fork?
Don't we need to unlock the rq regardless of what fork does?
Also, the alternative would be to set preempt_count to 0 if
CONFIG_PREEMPT and 1 if CONFIG_PREEMPT && CONFIG_SMP. I figured Linus
would balk at that sort #if/#else in do_fork. And, even then, is it
safe to start the task with a preempt_count of 0?
Robert Love
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2002-03-06 20:21 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-03-05 0:11 [PATCH] 2.5: preemptive kernel on UP Robert Love
2002-03-05 0:43 ` Russell King
2002-03-05 0:51 ` Robert Love
2002-03-05 0:53 ` Russell King
2002-03-05 0:58 ` Robert Love
2002-03-05 1:55 ` Alan Cox
2002-03-05 1:43 ` Robert Love
2002-03-05 4:40 ` Ben Clifford
2002-03-05 1:56 ` yodaiken
2002-03-06 19:17 ` george anzinger
2002-03-06 20:21 ` Robert Love
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox