Peter Williams
0a565f7919
[PATCH] sched: fix bug in __migrate_task()
...
Problem:
In the function __migrate_task(), deactivate_task() followed by
activate_task() is used to move the task from one run queue to
another. This has two undesirable effects:
1. The task's priority is recalculated. (Nowhere else in the
scheduler code is the priority recalculated for a change of CPU.)
2. The task's time stamp is set to the current time. At the very least,
this makes the adjustment of the time stamp before the call to
deactivate_task() redundant but I believe the problem is more serious
as the time stamp now holds the time of the queue change instead of
the time at which the task was woken. In addition, unless dest_rq is
the same queue as "current" is on the time stamp could be inaccurate
due to inter CPU drift.
Solution:
Replace the call to activate_task() with one to __activate_task().
Signed-off-by: Peter Williams <pwil3058@bigpond.net.au>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-10 13:24:13 -07:00
..
irq
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
2006-07-03 15:28:34 -07:00
power
remove obsolete swsusp_encrypt
2006-06-30 18:59:59 +02:00
time
[PATCH] time: rename clocksource functions
2006-06-26 09:58:21 -07:00
.gitignore
acct.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
audit.c
[NETLINK]: Encapsulate eff_cap usage within security framework.
2006-06-29 16:57:55 -07:00
audit.h
[PATCH] add rule filterkey
2006-07-01 05:43:06 -04:00
auditfilter.c
[PATCH] audit syscall classes
2006-07-01 07:44:10 -04:00
auditsc.c
[PATCH] audit: support for object context filters
2006-07-01 05:44:19 -04:00
capability.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
compat.c
[PATCH] N32 sigset and __COMPAT_ENDIAN_SWAP__
2006-06-25 10:01:15 -07:00
configs.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
cpu.c
[PATCH] cpu hotplug: make [un]register_cpu_notifier init time only
2006-06-27 17:32:41 -07:00
cpuset.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
dma.c
exec_domain.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
exit.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
extable.c
[PATCH] symbol_put_addr() locks kernel
2006-05-15 11:20:55 -07:00
fork.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
futex.c
[PATCH] lockdep: annotate futex
2006-07-03 15:27:06 -07:00
futex_compat.c
[PATCH] pi-futex: futex_lock_pi/futex_unlock_pi support
2006-06-27 17:32:47 -07:00
hrtimer.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
itimer.c
kallsyms.c
Kconfig.hz
Kconfig.preempt
kexec.c
[POWERPC] Add the use of the firmware soft-reset-nmi to kdump.
2006-06-28 15:18:52 +10:00
kfifo.c
kmod.c
[PATCH] lockdep: annotate on-stack completions
2006-07-03 15:27:09 -07:00
kprobes.c
[PATCH] Notify page fault call chain
2006-06-26 09:58:22 -07:00
ksysfs.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
kthread.c
[PATCH] kthread: move kernel-doc and put it into DocBook
2006-06-25 10:01:24 -07:00
lockdep.c
[PATCH] lockdep: allow read_lock() recursion of same class
2006-07-03 15:27:04 -07:00
lockdep_internals.h
[PATCH] lockdep: core
2006-07-03 15:27:03 -07:00
lockdep_proc.c
[PATCH] lockdep: procfs
2006-07-03 15:27:04 -07:00
Makefile
[PATCH] lockdep: prove spinlock rwlock locking correctness
2006-07-03 15:27:04 -07:00
module.c
[PATCH] lockdep: core
2006-07-03 15:27:03 -07:00
mutex-debug.c
[PATCH] lockdep: prove mutex locking correctness
2006-07-03 15:27:04 -07:00
mutex-debug.h
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
mutex.c
[PATCH] lockdep: prove mutex locking correctness
2006-07-03 15:27:04 -07:00
mutex.h
[PATCH] lockdep: prove mutex locking correctness
2006-07-03 15:27:04 -07:00
panic.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
params.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
pid.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
posix-cpu-timers.c
[PATCH] arm_timer: remove a racy and obsolete PF_EXITING check
2006-06-17 10:52:13 -07:00
posix-timers.c
printk.c
[PATCH] lockdep: do not recurse in printk
2006-07-03 15:27:05 -07:00
profile.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
ptrace.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
rcupdate.c
[PATCH] lockdep: locking init debugging improvement
2006-07-03 15:27:02 -07:00
rcutorture.c
[PATCH] rcutorture: add call_rcu_bh() operations
2006-06-27 17:32:40 -07:00
relay.c
resource.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
rtmutex-debug.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
rtmutex-debug.h
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
rtmutex-tester.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
rtmutex.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
rtmutex.h
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
rtmutex_common.h
[PATCH] pi-futex: futex_lock_pi/futex_unlock_pi support
2006-06-27 17:32:47 -07:00
rwsem.c
[PATCH] lockdep: prove rwsem locking correctness
2006-07-03 15:27:04 -07:00
sched.c
[PATCH] sched: fix bug in __migrate_task()
2006-07-10 13:24:13 -07:00
seccomp.c
signal.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial
2006-06-30 15:39:30 -07:00
softirq.c
[PATCH] lockdep: irqtrace subsystem, move account_system_vtime() calls into kernel/softirq.c
2006-07-03 15:27:10 -07:00
softlockup.c
[PATCH] cpu hotplug: revert initdata patch submitted for 2.6.17
2006-06-27 17:32:41 -07:00
spinlock.c
[PATCH] lockdep: prove spinlock rwlock locking correctness
2006-07-03 15:27:04 -07:00
stacktrace.c
[PATCH] lockdep: stacktrace subsystem, core
2006-07-03 15:27:02 -07:00
stop_machine.c
[PATCH] revert "kthread: convert stop_machine into a kthread"
2006-07-03 21:25:20 -07:00
sys.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
sys_ni.c
[PATCH] sys_move_pages: 32bit support (i386, x86_64)
2006-06-23 07:42:53 -07:00
sysctl.c
[PATCH] ZVC/zone_reclaim: Leave 1% of unmapped pagecache pages for file I/O
2006-07-03 15:26:59 -07:00
time.c
[PATCH] Time: Introduce arch generic time accessors
2006-06-26 09:58:20 -07:00
timer.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
uid16.c
[PATCH] Add more prevent_tail_call()
2006-04-19 16:27:18 -07:00
unwind.c
[PATCH] x86_64: allow unwinder to build without module support
2006-06-26 10:48:18 -07:00
user.c
[PATCH] selinux: add hooks for key subsystem
2006-06-22 15:05:55 -07:00
wait.c
[PATCH] lockdep: annotate waitqueues
2006-07-03 15:27:07 -07:00
workqueue.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq
2006-07-04 14:00:26 -07:00