rpms/kernel/devel patch-2.6.22-rc5-git4.bz2.sign, NONE, 1.1 .cvsignore, 1.632, 1.633 kernel-2.6.spec, 1.3229, 1.3230 linux-2.6-sched-cfs.patch, 1.3, 1.4 sources, 1.597, 1.598 upstream, 1.519, 1.520 patch-2.6.22-rc5-git1.bz2.sign, 1.1, NONE
Dave Jones (davej)
fedora-extras-commits at redhat.com
Wed Jun 20 19:45:18 UTC 2007
Author: davej
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv9698
Modified Files:
.cvsignore kernel-2.6.spec linux-2.6-sched-cfs.patch sources
upstream
Added Files:
patch-2.6.22-rc5-git4.bz2.sign
Removed Files:
patch-2.6.22-rc5-git1.bz2.sign
Log Message:
* Wed Jun 20 2007 Dave Jones <davej at redhat.com>
- 2.6.22-rc5-git4.
--- NEW FILE patch-2.6.22-rc5-git4.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info
iD8DBQBGeNDsyGugalF9Dw4RAp8FAJ48EmHnAnLJSM0mVhN9jWeM4sRWPgCeNLwF
5jbM8YcGnYQO8cvS3b917FQ=
=DSTw
-----END PGP SIGNATURE-----
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.632
retrieving revision 1.633
diff -u -r1.632 -r1.633
--- .cvsignore 18 Jun 2007 21:09:33 -0000 1.632
+++ .cvsignore 20 Jun 2007 19:44:43 -0000 1.633
@@ -4,4 +4,4 @@
kernel-2.6.21
linux-2.6.21.tar.bz2
patch-2.6.22-rc5.bz2
-patch-2.6.22-rc5-git1.bz2
+patch-2.6.22-rc5-git4.bz2
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.3229
retrieving revision 1.3230
diff -u -r1.3229 -r1.3230
--- kernel-2.6.spec 19 Jun 2007 18:16:54 -0000 1.3229
+++ kernel-2.6.spec 20 Jun 2007 19:44:43 -0000 1.3230
@@ -414,7 +414,7 @@
%else
# Here should be only the patches up to the upstream canonical Linus tree.
Patch00: patch-2.6.22-rc5.bz2
-Patch01: patch-2.6.22-rc5-git1.bz2
+Patch01: patch-2.6.22-rc5-git4.bz2
%endif
%if !%{nopatches}
@@ -889,6 +889,9 @@
patch_command='patch -p1 -F1 -s'
ApplyPatch()
{
+ if [ ! -f $RPM_SOURCE_DIR/$1 ]; then
+ exit 1;
+ fi
case "$1" in
*.bz2) bunzip2 < "$RPM_SOURCE_DIR/$1" | $patch_command ;;
*.gz) gunzip < "$RPM_SOURCE_DIR/$1" | $patch_command ;;
@@ -902,7 +905,7 @@
# Update to latest upstream.
ApplyPatch patch-2.6.22-rc5.bz2
-ApplyPatch patch-2.6.22-rc5-git1.bz2
+ApplyPatch patch-2.6.22-rc5-git4.bz2
%endif
%if !%{nopatches}
@@ -2081,6 +2084,9 @@
%endif
%changelog
+* Wed Jun 20 2007 Dave Jones <davej at redhat.com>
+- 2.6.22-rc5-git4.
+
* Mon Jun 19 2007 Chuck Ebbert <cebbert at redhat.com>
- enable sound system debugging in -debug kernels
linux-2.6-sched-cfs.patch:
Index: linux-2.6-sched-cfs.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-sched-cfs.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-sched-cfs.patch 18 Jun 2007 21:09:33 -0000 1.3
+++ linux-2.6-sched-cfs.patch 20 Jun 2007 19:44:43 -0000 1.4
@@ -1,7 +1,7 @@
-Index: linux-cfs-2.6.22-rc5.q/Documentation/kernel-parameters.txt
+Index: linux/Documentation/kernel-parameters.txt
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/Documentation/kernel-parameters.txt
-+++ linux-cfs-2.6.22-rc5.q/Documentation/kernel-parameters.txt
+--- linux.orig/Documentation/kernel-parameters.txt
++++ linux/Documentation/kernel-parameters.txt
@@ -1019,49 +1019,6 @@ and is between 256 and 4096 characters.
mga= [HW,DRM]
@@ -52,10 +52,10 @@
mousedev.tap_time=
[MOUSE] Maximum time between finger touching and
leaving touchpad surface for touch to be considered
-Index: linux-cfs-2.6.22-rc5.q/Documentation/sched-design-CFS.txt
+Index: linux/Documentation/sched-design-CFS.txt
===================================================================
--- /dev/null
-+++ linux-cfs-2.6.22-rc5.q/Documentation/sched-design-CFS.txt
++++ linux/Documentation/sched-design-CFS.txt
@@ -0,0 +1,119 @@
+
+This is the CFS scheduler.
@@ -176,10 +176,10 @@
+ iterators of the scheduling modules are used. The balancing code got
+ quite a bit simpler as a result.
+
-Index: linux-cfs-2.6.22-rc5.q/arch/i386/kernel/smpboot.c
+Index: linux/arch/i386/kernel/smpboot.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/i386/kernel/smpboot.c
-+++ linux-cfs-2.6.22-rc5.q/arch/i386/kernel/smpboot.c
+--- linux.orig/arch/i386/kernel/smpboot.c
++++ linux/arch/i386/kernel/smpboot.c
@@ -941,17 +941,6 @@ exit:
}
#endif
@@ -206,19 +206,19 @@
set_cpu_sibling_map(0);
-Index: linux-cfs-2.6.22-rc5.q/arch/i386/kernel/syscall_table.S
+Index: linux/arch/i386/kernel/syscall_table.S
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/i386/kernel/syscall_table.S
-+++ linux-cfs-2.6.22-rc5.q/arch/i386/kernel/syscall_table.S
+--- linux.orig/arch/i386/kernel/syscall_table.S
++++ linux/arch/i386/kernel/syscall_table.S
@@ -323,3 +323,4 @@ ENTRY(sys_call_table)
.long sys_signalfd
.long sys_timerfd
.long sys_eventfd
+ .long sys_sched_yield_to
-Index: linux-cfs-2.6.22-rc5.q/arch/i386/kernel/tsc.c
+Index: linux/arch/i386/kernel/tsc.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/i386/kernel/tsc.c
-+++ linux-cfs-2.6.22-rc5.q/arch/i386/kernel/tsc.c
+--- linux.orig/arch/i386/kernel/tsc.c
++++ linux/arch/i386/kernel/tsc.c
@@ -4,6 +4,7 @@
* See comments there for proper credits.
*/
@@ -250,10 +250,10 @@
if (!tsc_unstable) {
tsc_unstable = 1;
tsc_enabled = 0;
-Index: linux-cfs-2.6.22-rc5.q/arch/ia64/kernel/setup.c
+Index: linux/arch/ia64/kernel/setup.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/ia64/kernel/setup.c
-+++ linux-cfs-2.6.22-rc5.q/arch/ia64/kernel/setup.c
+--- linux.orig/arch/ia64/kernel/setup.c
++++ linux/arch/ia64/kernel/setup.c
@@ -805,7 +805,6 @@ static void __cpuinit
get_max_cacheline_size (void)
{
@@ -281,10 +281,10 @@
if (max > ia64_max_cacheline_size)
ia64_max_cacheline_size = max;
}
-Index: linux-cfs-2.6.22-rc5.q/arch/mips/kernel/smp.c
+Index: linux/arch/mips/kernel/smp.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/mips/kernel/smp.c
-+++ linux-cfs-2.6.22-rc5.q/arch/mips/kernel/smp.c
+--- linux.orig/arch/mips/kernel/smp.c
++++ linux/arch/mips/kernel/smp.c
@@ -51,16 +51,6 @@ int __cpu_logical_map[NR_CPUS]; /* Map
EXPORT_SYMBOL(phys_cpu_present_map);
EXPORT_SYMBOL(cpu_online_map);
@@ -310,10 +310,10 @@
plat_prepare_cpus(max_cpus);
#ifndef CONFIG_HOTPLUG_CPU
cpu_present_map = cpu_possible_map;
-Index: linux-cfs-2.6.22-rc5.q/arch/sparc/kernel/smp.c
+Index: linux/arch/sparc/kernel/smp.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/sparc/kernel/smp.c
-+++ linux-cfs-2.6.22-rc5.q/arch/sparc/kernel/smp.c
+--- linux.orig/arch/sparc/kernel/smp.c
++++ linux/arch/sparc/kernel/smp.c
@@ -68,16 +68,6 @@ void __cpuinit smp_store_cpu_info(int id
cpu_data(id).prom_node = cpu_node;
cpu_data(id).mid = cpu_get_hwmid(cpu_node);
@@ -331,10 +331,10 @@
if (cpu_data(id).mid < 0)
panic("No MID found for CPU%d at node 0x%08d", id, cpu_node);
}
-Index: linux-cfs-2.6.22-rc5.q/arch/sparc64/kernel/smp.c
+Index: linux/arch/sparc64/kernel/smp.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/arch/sparc64/kernel/smp.c
-+++ linux-cfs-2.6.22-rc5.q/arch/sparc64/kernel/smp.c
+--- linux.orig/arch/sparc64/kernel/smp.c
++++ linux/arch/sparc64/kernel/smp.c
@@ -1163,32 +1163,6 @@ int setup_profiling_timer(unsigned int m
return -EINVAL;
}
@@ -376,10 +376,10 @@
}
void __devinit smp_prepare_boot_cpu(void)
-Index: linux-cfs-2.6.22-rc5.q/fs/proc/array.c
+Index: linux/fs/proc/array.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/fs/proc/array.c
-+++ linux-cfs-2.6.22-rc5.q/fs/proc/array.c
+--- linux.orig/fs/proc/array.c
++++ linux/fs/proc/array.c
@@ -165,7 +165,6 @@ static inline char * task_state(struct t
rcu_read_lock();
buffer += sprintf(buffer,
@@ -502,10 +502,10 @@
cputime_to_clock_t(cutime),
cputime_to_clock_t(cstime),
priority,
-Index: linux-cfs-2.6.22-rc5.q/fs/proc/base.c
+Index: linux/fs/proc/base.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/fs/proc/base.c
-+++ linux-cfs-2.6.22-rc5.q/fs/proc/base.c
+--- linux.orig/fs/proc/base.c
++++ linux/fs/proc/base.c
@@ -296,7 +296,7 @@ static int proc_pid_wchan(struct task_st
*/
static int proc_pid_schedstat(struct task_struct *task, char *buffer)
@@ -598,10 +598,10 @@
INF("cmdline", S_IRUGO, pid_cmdline),
INF("stat", S_IRUGO, tid_stat),
INF("statm", S_IRUGO, pid_statm),
-Index: linux-cfs-2.6.22-rc5.q/include/asm-generic/bitops/sched.h
+Index: linux/include/asm-generic/bitops/sched.h
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/include/asm-generic/bitops/sched.h
-+++ linux-cfs-2.6.22-rc5.q/include/asm-generic/bitops/sched.h
+--- linux.orig/include/asm-generic/bitops/sched.h
++++ linux/include/asm-generic/bitops/sched.h
@@ -6,28 +6,23 @@
/*
@@ -639,10 +639,10 @@
#else
#error BITS_PER_LONG not defined
#endif
-Index: linux-cfs-2.6.22-rc5.q/include/asm-i386/unistd.h
+Index: linux/include/asm-i386/unistd.h
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/include/asm-i386/unistd.h
-+++ linux-cfs-2.6.22-rc5.q/include/asm-i386/unistd.h
+--- linux.orig/include/asm-i386/unistd.h
++++ linux/include/asm-i386/unistd.h
@@ -329,10 +329,11 @@
#define __NR_signalfd 321
#define __NR_timerfd 322
@@ -656,10 +656,10 @@
#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
-Index: linux-cfs-2.6.22-rc5.q/include/asm-x86_64/unistd.h
+Index: linux/include/asm-x86_64/unistd.h
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/include/asm-x86_64/unistd.h
-+++ linux-cfs-2.6.22-rc5.q/include/asm-x86_64/unistd.h
+--- linux.orig/include/asm-x86_64/unistd.h
++++ linux/include/asm-x86_64/unistd.h
@@ -630,6 +630,9 @@ __SYSCALL(__NR_signalfd, sys_signalfd)
__SYSCALL(__NR_timerfd, sys_timerfd)
#define __NR_eventfd 283
@@ -670,10 +670,10 @@
#ifndef __NO_STUBS
#define __ARCH_WANT_OLD_READDIR
-Index: linux-cfs-2.6.22-rc5.q/include/linux/hardirq.h
+Index: linux/include/linux/hardirq.h
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/include/linux/hardirq.h
-+++ linux-cfs-2.6.22-rc5.q/include/linux/hardirq.h
+--- linux.orig/include/linux/hardirq.h
++++ linux/include/linux/hardirq.h
@@ -79,6 +79,19 @@
#endif
@@ -694,10 +694,10 @@
# define preemptible() (preempt_count() == 0 && !irqs_disabled())
# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1)
#else
-Index: linux-cfs-2.6.22-rc5.q/include/linux/sched.h
+Index: linux/include/linux/sched.h
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/include/linux/sched.h
-+++ linux-cfs-2.6.22-rc5.q/include/linux/sched.h
+--- linux.orig/include/linux/sched.h
++++ linux/include/linux/sched.h
@@ -2,7 +2,6 @@
#define _LINUX_SCHED_H
@@ -949,10 +949,10 @@
static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
{
}
-Index: linux-cfs-2.6.22-rc5.q/include/linux/topology.h
+Index: linux/include/linux/topology.h
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/include/linux/topology.h
-+++ linux-cfs-2.6.22-rc5.q/include/linux/topology.h
+--- linux.orig/include/linux/topology.h
++++ linux/include/linux/topology.h
@@ -98,7 +98,7 @@
.cache_nice_tries = 0, \
.busy_idx = 0, \
@@ -998,10 +998,10 @@
| BALANCE_FOR_PKG_POWER,\
.last_balance = jiffies, \
.balance_interval = 1, \
-Index: linux-cfs-2.6.22-rc5.q/init/main.c
+Index: linux/init/main.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/init/main.c
-+++ linux-cfs-2.6.22-rc5.q/init/main.c
+--- linux.orig/init/main.c
++++ linux/init/main.c
@@ -436,7 +436,7 @@ static void noinline __init_refok rest_i
/*
@@ -1011,10 +1011,10 @@
*/
preempt_enable_no_resched();
schedule();
-Index: linux-cfs-2.6.22-rc5.q/kernel/delayacct.c
+Index: linux/kernel/delayacct.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/delayacct.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/delayacct.c
+--- linux.orig/kernel/delayacct.c
++++ linux/kernel/delayacct.c
@@ -99,9 +99,10 @@ void __delayacct_blkio_end(void)
int __delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)
{
@@ -1042,10 +1042,10 @@
d->cpu_run_virtual_total =
(tmp < (s64)d->cpu_run_virtual_total) ? 0 : tmp;
-Index: linux-cfs-2.6.22-rc5.q/kernel/exit.c
+Index: linux/kernel/exit.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/exit.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/exit.c
+--- linux.orig/kernel/exit.c
++++ linux/kernel/exit.c
@@ -122,9 +122,9 @@ static void __exit_signal(struct task_st
sig->maj_flt += tsk->maj_flt;
sig->nvcsw += tsk->nvcsw;
@@ -1065,10 +1065,10 @@
write_unlock_irq(&tasklist_lock);
proc_flush_task(p);
release_thread(p);
-Index: linux-cfs-2.6.22-rc5.q/kernel/fork.c
+Index: linux/kernel/fork.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/fork.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/fork.c
+--- linux.orig/kernel/fork.c
++++ linux/kernel/fork.c
@@ -117,6 +117,7 @@ void __put_task_struct(struct task_struc
WARN_ON(!(tsk->exit_state & (EXIT_DEAD | EXIT_ZOMBIE)));
WARN_ON(atomic_read(&tsk->usage));
@@ -1095,10 +1095,10 @@
#ifdef CONFIG_TASK_XACCT
p->rchar = 0; /* I/O counter: bytes read */
p->wchar = 0; /* I/O counter: bytes written */
-Index: linux-cfs-2.6.22-rc5.q/kernel/posix-cpu-timers.c
+Index: linux/kernel/posix-cpu-timers.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/posix-cpu-timers.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/posix-cpu-timers.c
+--- linux.orig/kernel/posix-cpu-timers.c
++++ linux/kernel/posix-cpu-timers.c
@@ -161,7 +161,7 @@ static inline cputime_t virt_ticks(struc
}
static inline unsigned long long sched_ns(struct task_struct *p)
@@ -1239,10 +1239,10 @@
return;
#undef UNEXPIRED
-Index: linux-cfs-2.6.22-rc5.q/kernel/sched.c
+Index: linux/kernel/sched.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/sched.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/sched.c
+--- linux.orig/kernel/sched.c
++++ linux/kernel/sched.c
@@ -16,6 +16,11 @@
* by Davide Libenzi, preemptible kernel bits by Robert Love.
* 2003-09-03 Interactivity tuning by Con Kolivas.
@@ -1926,6 +1926,21 @@
(PRIO_TO_LOAD_WEIGHT(MAX_RT_PRIO) + LOAD_WEIGHT(rp))
-static void set_load_weight(struct task_struct *p)
+-{
+- if (has_rt_policy(p)) {
+-#ifdef CONFIG_SMP
+- if (p == task_rq(p)->migration_thread)
+- /*
+- * The migration thread does the actual balancing.
+- * Giving its load any weight will skew balancing
+- * adversely.
+- */
+- p->load_weight = 0;
+- else
+-#endif
+- p->load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority);
+- } else
+- p->load_weight = PRIO_TO_LOAD_WEIGHT(p->static_prio);
+#define NICE_0_LOAD SCHED_LOAD_SCALE
+#define NICE_0_SHIFT SCHED_LOAD_SHIFT
+
@@ -1949,21 +1964,7 @@
+
+static inline unsigned long
+total_raw_weighted_load(struct rq *rq)
- {
-- if (has_rt_policy(p)) {
--#ifdef CONFIG_SMP
-- if (p == task_rq(p)->migration_thread)
-- /*
-- * The migration thread does the actual balancing.
-- * Giving its load any weight will skew balancing
-- * adversely.
-- */
-- p->load_weight = 0;
-- else
--#endif
-- p->load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority);
-- } else
-- p->load_weight = PRIO_TO_LOAD_WEIGHT(p->static_prio);
++{
+ return rq->rt.raw_weighted_load + rq->cfs.raw_weighted_load;
}
@@ -2360,16 +2361,36 @@
set_task_cpu(p, dest_cpu);
return 0;
}
-@@ -1164,7 +865,7 @@ void wait_task_inactive(struct task_stru
+@@ -1158,9 +859,8 @@ migrate_task(struct task_struct *p, int
+ void wait_task_inactive(struct task_struct *p)
+ {
+ unsigned long flags;
++ int running, on_rq;
+ struct rq *rq;
+- struct prio_array *array;
+- int running;
+
repeat:
+ /*
+@@ -1192,7 +892,7 @@ repeat:
+ */
rq = task_rq_lock(p, &flags);
- /* Must be off runqueue entirely, not preempted. */
-- if (unlikely(p->array || task_running(rq, p))) {
-+ if (unlikely(p->se.on_rq || task_running(rq, p))) {
- /* If it's preempted, we yield. It could be a while. */
- preempted = !task_running(rq, p);
- task_rq_unlock(rq, &flags);
-@@ -1210,11 +911,12 @@ void kick_process(struct task_struct *p)
+ running = task_running(rq, p);
+- array = p->array;
++ on_rq = p->se.on_rq;
+ task_rq_unlock(rq, &flags);
+
+ /*
+@@ -1215,7 +915,7 @@ repeat:
+ * running right now), it's preempted, and we should
+ * yield - it could be a while.
+ */
+- if (unlikely(array)) {
++ if (unlikely(on_rq)) {
+ yield();
+ goto repeat;
+ }
+@@ -1261,11 +961,12 @@ void kick_process(struct task_struct *p)
static inline unsigned long source_load(int cpu, int type)
{
struct rq *rq = cpu_rq(cpu);
@@ -2384,7 +2405,7 @@
}
/*
-@@ -1224,11 +926,12 @@ static inline unsigned long source_load(
+@@ -1275,11 +976,12 @@ static inline unsigned long source_load(
static inline unsigned long target_load(int cpu, int type)
{
struct rq *rq = cpu_rq(cpu);
@@ -2399,7 +2420,7 @@
}
/*
-@@ -1237,9 +940,10 @@ static inline unsigned long target_load(
+@@ -1288,9 +990,10 @@ static inline unsigned long target_load(
static inline unsigned long cpu_avg_load_per_task(int cpu)
{
struct rq *rq = cpu_rq(cpu);
@@ -2411,7 +2432,7 @@
}
/*
-@@ -1341,9 +1045,9 @@ static int sched_balance_self(int cpu, i
+@@ -1392,9 +1095,9 @@ static int sched_balance_self(int cpu, i
struct sched_domain *tmp, *sd = NULL;
for_each_domain(cpu, tmp) {
@@ -2424,7 +2445,7 @@
if (tmp->flags & SD_POWERSAVINGS_BALANCE)
break;
if (tmp->flags & flag)
-@@ -1470,7 +1174,7 @@ static int try_to_wake_up(struct task_st
+@@ -1521,7 +1224,7 @@ static int try_to_wake_up(struct task_st
if (!(old_state & state))
goto out;
@@ -2433,7 +2454,7 @@
goto out_running;
cpu = task_cpu(p);
-@@ -1525,11 +1229,11 @@ static int try_to_wake_up(struct task_st
+@@ -1576,11 +1279,11 @@ static int try_to_wake_up(struct task_st
* of the current CPU:
*/
if (sync)
@@ -2447,7 +2468,7 @@
/*
* This domain has SD_WAKE_AFFINE and
* p is cache cold in this domain, and
-@@ -1563,7 +1267,7 @@ out_set_cpu:
+@@ -1614,7 +1317,7 @@ out_set_cpu:
old_state = p->state;
if (!(old_state & state))
goto out;
@@ -2456,7 +2477,7 @@
goto out_running;
this_cpu = smp_processor_id();
-@@ -1572,25 +1276,10 @@ out_set_cpu:
+@@ -1623,25 +1326,10 @@ out_set_cpu:
out_activate:
#endif /* CONFIG_SMP */
@@ -2469,7 +2490,7 @@
- */
- p->sleep_type = SLEEP_NONINTERACTIVE;
- } else
-
+-
- /*
- * Tasks that have marked their sleep as noninteractive get
- * woken up with their sleep average not weighted in an
@@ -2477,14 +2498,14 @@
- */
- if (old_state & TASK_NONINTERACTIVE)
- p->sleep_type = SLEEP_NONINTERACTIVE;
--
+
-
- activate_task(p, rq, cpu == this_cpu);
+ activate_task(rq, p, 1);
/*
* Sync wakeups (i.e. those types of wakeups where the waker
* has indicated that it will leave the CPU in short order)
-@@ -1599,10 +1288,8 @@ out_activate:
+@@ -1650,10 +1338,8 @@ out_activate:
* the waker guarantees that the freshly woken up task is going
* to be considered on this CPU.)
*/
@@ -2497,7 +2518,7 @@
success = 1;
out_running:
-@@ -1625,19 +1312,27 @@ int fastcall wake_up_state(struct task_s
+@@ -1676,19 +1362,27 @@ int fastcall wake_up_state(struct task_s
return try_to_wake_up(p, state, 0);
}
@@ -2532,7 +2553,7 @@
/*
* We mark the process as running here, but have not actually
-@@ -1646,16 +1341,29 @@ void fastcall sched_fork(struct task_str
+@@ -1697,16 +1391,29 @@ void fastcall sched_fork(struct task_str
* event cannot wake it up and insert it on the runqueue either.
*/
p->state = TASK_RUNNING;
@@ -2565,7 +2586,7 @@
memset(&p->sched_info, 0, sizeof(p->sched_info));
#endif
#if defined(CONFIG_SMP) && defined(__ARCH_WANT_UNLOCKED_CTXSW)
-@@ -1665,34 +1373,16 @@ void fastcall sched_fork(struct task_str
+@@ -1716,34 +1423,16 @@ void fastcall sched_fork(struct task_str
/* Want to start with kernel preemption disabled. */
task_thread_info(p)->preempt_count = 1;
#endif
@@ -2606,7 +2627,7 @@
* wake_up_new_task - wake up a newly created task for the first time.
*
* This function will do some initial scheduler statistics housekeeping
-@@ -1701,110 +1391,35 @@ void fastcall sched_fork(struct task_str
+@@ -1752,108 +1441,33 @@ void fastcall sched_fork(struct task_str
*/
void fastcall wake_up_new_task(struct task_struct *p, unsigned long clone_flags)
{
@@ -2632,7 +2653,7 @@
+ this_cpu = smp_processor_id(); /* parent's CPU */
p->prio = effective_prio(p);
--
+
- if (likely(cpu == this_cpu)) {
- if (!(clone_flags & CLONE_VM)) {
- /*
@@ -2661,7 +2682,10 @@
- * this_rq = task_rq_lock(current, &flags);
- */
- this_rq = rq;
-- } else {
++ if (!sysctl_sched_child_runs_first || (clone_flags & CLONE_VM) ||
++ task_cpu(p) != this_cpu || !current->se.on_rq) {
++ activate_task(rq, p, 0);
+ } else {
- this_rq = cpu_rq(this_cpu);
-
- /*
@@ -2674,18 +2698,23 @@
- if (TASK_PREEMPTS_CURR(p, rq))
- resched_task(rq->curr);
-
-- /*
+ /*
- * Parent and child are on different CPUs, now get the
- * parent runqueue to update the parent's ->sleep_avg:
-- */
++ * Let the scheduling class do new task startup
++ * management (if any):
+ */
- task_rq_unlock(rq, &flags);
- this_rq = task_rq_lock(current, &flags);
-- }
++ p->sched_class->task_new(rq, p);
+ }
- current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) *
- PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
- task_rq_unlock(this_rq, &flags);
--}
--
++ check_preempt_curr(rq, p);
++ task_rq_unlock(rq, &flags);
+ }
+
-/*
- * Potentially available exiting-child timeslices are
- * retrieved here - this way the parent does not get
@@ -2696,7 +2725,8 @@
- * was given away by the parent in the first place.)
- */
-void fastcall sched_exit(struct task_struct *p)
--{
++void sched_dead(struct task_struct *p)
+ {
- unsigned long flags;
- struct rq *rq;
-
@@ -2714,43 +2744,32 @@
- p->parent->sleep_avg = p->parent->sleep_avg /
- (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg /
- (EXIT_WEIGHT + 1);
-+
-+ if (!sysctl_sched_child_runs_first || (clone_flags & CLONE_VM) ||
-+ task_cpu(p) != this_cpu || !current->se.on_rq) {
-+ activate_task(rq, p, 0);
-+ } else {
-+ /*
-+ * Let the scheduling class do new task startup
-+ * management (if any):
-+ */
-+ p->sched_class->task_new(rq, p);
-+ }
-+ check_preempt_curr(rq, p);
- task_rq_unlock(rq, &flags);
+- task_rq_unlock(rq, &flags);
++ WARN_ON_ONCE(p->se.on_rq);
}
-+void sched_dead(struct task_struct *p)
-+{
-+ WARN_ON_ONCE(p->se.on_rq);
-+}
-+
/**
- * prepare_task_switch - prepare to switch tasks
- * @rq: the runqueue preparing to switch
-@@ -2006,17 +1621,34 @@ unsigned long nr_active(void)
- return running + uninterruptible;
- }
+@@ -2046,29 +1660,46 @@ unsigned long nr_active(void)
+ {
+ unsigned long i, running = 0, uninterruptible = 0;
--#ifdef CONFIG_SMP
--
--/*
-- * Is this task likely cache-hot:
-- */
--static inline int
--task_hot(struct task_struct *p, unsigned long long now, struct sched_domain *sd)
+- for_each_online_cpu(i) {
+- running += cpu_rq(i)->nr_running;
+- uninterruptible += cpu_rq(i)->nr_uninterruptible;
+- }
++ for_each_online_cpu(i) {
++ running += cpu_rq(i)->nr_running;
++ uninterruptible += cpu_rq(i)->nr_uninterruptible;
++ }
++
++ if (unlikely((long)uninterruptible < 0))
++ uninterruptible = 0;
++
++ return running + uninterruptible;
++}
++
+static void update_load(struct rq *this_rq)
- {
-- return (long long)(now - p->last_ran) < (long long)sd->cache_hot_time;
++{
+ struct sched_class *class = sched_class_highest;
+ unsigned long this_load = 0;
+ int i, scale;
@@ -2767,20 +2786,33 @@
+ unsigned long old_load, new_load;
+
+ /* scale is effectively 1 << i now, and >> i divides by scale */
-+
+
+- if (unlikely((long)uninterruptible < 0))
+- uninterruptible = 0;
+ old_load = this_rq->cpu_load[i];
+ new_load = this_load;
-+
+
+- return running + uninterruptible;
+ this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) >> i;
+ }
}
-+#ifdef CONFIG_SMP
-+
+ #ifdef CONFIG_SMP
+
/*
+- * Is this task likely cache-hot:
+- */
+-static inline int
+-task_hot(struct task_struct *p, unsigned long long now, struct sched_domain *sd)
+-{
+- return (long long)(now - p->last_ran) < (long long)sd->cache_hot_time;
+-}
+-
+-/*
* double_rq_lock - safely lock two runqueues
*
-@@ -2133,23 +1765,17 @@ void sched_exec(void)
+ * Note this does not disable interrupts like task_rq_lock,
+@@ -2184,23 +1815,17 @@ void sched_exec(void)
* pull_task - move a task from a remote runqueue to the local runqueue.
* Both runqueues must be locked.
*/
@@ -2809,7 +2841,7 @@
}
/*
-@@ -2174,25 +1800,59 @@ int can_migrate_task(struct task_struct
+@@ -2225,25 +1850,59 @@ int can_migrate_task(struct task_struct
return 0;
/*
@@ -2882,7 +2914,7 @@
/*
* move_tasks tries to move up to max_nr_move tasks and max_load_move weighted
-@@ -2206,11 +1866,9 @@ static int move_tasks(struct rq *this_rq
+@@ -2257,11 +1916,9 @@ static int move_tasks(struct rq *this_rq
struct sched_domain *sd, enum idle_type idle,
int *all_pinned)
{
@@ -2896,7 +2928,7 @@
long rem_load_move;
if (max_nr_move == 0 || max_load_move == 0)
-@@ -2230,76 +1888,42 @@ static int move_tasks(struct rq *this_rq
+@@ -2281,76 +1938,42 @@ static int move_tasks(struct rq *this_rq
best_prio_seen = best_prio == busiest->curr->prio;
/*
@@ -2992,7 +3024,7 @@
}
out:
/*
-@@ -2386,7 +2010,7 @@ find_busiest_group(struct sched_domain *
+@@ -2437,7 +2060,7 @@ find_busiest_group(struct sched_domain *
avg_load += load;
sum_nr_running += rq->nr_running;
@@ -3001,7 +3033,7 @@
}
/*
-@@ -2426,8 +2050,8 @@ find_busiest_group(struct sched_domain *
+@@ -2477,8 +2100,8 @@ find_busiest_group(struct sched_domain *
* Busy processors will not participate in power savings
* balance.
*/
@@ -3012,7 +3044,7 @@
/*
* If the local group is idle or completely loaded
-@@ -2437,42 +2061,42 @@ find_busiest_group(struct sched_domain *
+@@ -2488,42 +2111,42 @@ find_busiest_group(struct sched_domain *
!this_nr_running))
power_savings_balance = 0;
@@ -3080,7 +3112,7 @@
}
group_next:
#endif
-@@ -2527,7 +2151,7 @@ group_next:
+@@ -2578,7 +2201,7 @@ group_next:
* a think about bumping its value to force at least one task to be
* moved
*/
@@ -3089,7 +3121,7 @@
unsigned long tmp, pwr_now, pwr_move;
unsigned int imbn;
-@@ -2541,7 +2165,8 @@ small_imbalance:
+@@ -2592,7 +2215,8 @@ small_imbalance:
} else
this_load_per_task = SCHED_LOAD_SCALE;
@@ -3099,7 +3131,7 @@
*imbalance = busiest_load_per_task;
return busiest;
}
-@@ -2619,11 +2244,12 @@ find_busiest_queue(struct sched_group *g
+@@ -2670,11 +2294,12 @@ find_busiest_queue(struct sched_group *g
rq = cpu_rq(i);
@@ -3115,7 +3147,38 @@
busiest = rq;
}
}
-@@ -2957,32 +2583,6 @@ static void active_load_balance(struct r
+@@ -2938,17 +2563,21 @@ static void idle_balance(int this_cpu, s
+ unsigned long next_balance = jiffies + 60 * HZ;
+
+ for_each_domain(this_cpu, sd) {
+- if (sd->flags & SD_BALANCE_NEWIDLE) {
++ unsigned long interval;
++
++ if (!(sd->flags & SD_LOAD_BALANCE))
++ continue;
++
++ if (sd->flags & SD_BALANCE_NEWIDLE)
+ /* If we've pulled tasks over stop searching: */
+ pulled_task = load_balance_newidle(this_cpu,
+- this_rq, sd);
+- if (time_after(next_balance,
+- sd->last_balance + sd->balance_interval))
+- next_balance = sd->last_balance
+- + sd->balance_interval;
+- if (pulled_task)
+- break;
+- }
++ this_rq, sd);
++
++ interval = msecs_to_jiffies(sd->balance_interval);
++ if (time_after(next_balance, sd->last_balance + interval))
++ next_balance = sd->last_balance + interval;
++ if (pulled_task)
++ break;
+ }
+ if (!pulled_task)
+ /*
+@@ -3008,32 +2637,6 @@ static void active_load_balance(struct r
spin_unlock(&target_rq->lock);
}
@@ -3148,7 +3211,7 @@
#ifdef CONFIG_NO_HZ
static struct {
atomic_t load_balancer;
-@@ -3086,6 +2686,9 @@ static inline void rebalance_domains(int
+@@ -3137,6 +2740,9 @@ static inline void rebalance_domains(int
interval = msecs_to_jiffies(interval);
if (unlikely(!interval))
interval = 1;
@@ -3158,7 +3221,7 @@
if (sd->flags & SD_SERIALIZE) {
if (!spin_trylock(&balancing))
-@@ -3240,54 +2843,28 @@ DEFINE_PER_CPU(struct kernel_stat, kstat
+@@ -3291,54 +2897,28 @@ DEFINE_PER_CPU(struct kernel_stat, kstat
EXPORT_PER_CPU_SYMBOL(kstat);
/*
@@ -3226,7 +3289,7 @@
* Account user cpu time to a process.
* @p: the process that the cpu time gets accounted to
* @hardirq_offset: the offset to subtract from hardirq_count()
-@@ -3360,81 +2937,6 @@ void account_steal_time(struct task_stru
+@@ -3411,81 +2991,6 @@ void account_steal_time(struct task_stru
cpustat->steal = cputime64_add(cpustat->steal, tmp);
}
@@ -3308,7 +3371,7 @@
/*
* This function gets called by the timer code, with HZ frequency.
* We call it with interrupts disabled.
-@@ -3444,18 +2946,19 @@ out_unlock:
+@@ -3495,18 +3000,19 @@ out_unlock:
*/
void scheduler_tick(void)
{
@@ -3334,7 +3397,7 @@
rq->idle_at_tick = idle_at_tick;
trigger_load_balance(cpu);
#endif
-@@ -3499,49 +3002,27 @@ EXPORT_SYMBOL(sub_preempt_count);
+@@ -3550,49 +3056,27 @@ EXPORT_SYMBOL(sub_preempt_count);
#endif
@@ -3390,7 +3453,7 @@
/*
* The idle thread is not allowed to schedule!
* Remove this check after it has been exercised a bit.
-@@ -3552,19 +3033,45 @@ need_resched_nonpreemptible:
+@@ -3603,19 +3087,45 @@ need_resched_nonpreemptible:
}
schedstat_inc(rq, sched_cnt);
@@ -3448,7 +3511,7 @@
spin_lock_irq(&rq->lock);
-@@ -3577,7 +3084,7 @@ need_resched_nonpreemptible:
+@@ -3628,7 +3138,7 @@ need_resched_nonpreemptible:
else {
if (prev->state == TASK_UNINTERRUPTIBLE)
rq->nr_uninterruptible++;
@@ -3457,7 +3520,7 @@
}
}
-@@ -3585,65 +3092,25 @@ need_resched_nonpreemptible:
+@@ -3636,65 +3146,25 @@ need_resched_nonpreemptible:
if (unlikely(!rq->nr_running)) {
idle_balance(cpu, rq);
if (!rq->nr_running) {
@@ -3494,12 +3557,12 @@
-
- if (next->sleep_type == SLEEP_INTERACTIVE)
- delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128;
+-
+- array = next->array;
+- new_prio = recalc_task_prio(next, next->timestamp + delta);
+ next = pick_next_task(rq, prev);
+ next->se.nr_switches++;
-- array = next->array;
-- new_prio = recalc_task_prio(next, next->timestamp + delta);
--
- if (unlikely(next->prio != new_prio)) {
- dequeue_task(next, array);
- next->prio = new_prio;
@@ -3528,7 +3591,7 @@
rq->nr_switches++;
rq->curr = next;
++*switch_count;
-@@ -4074,29 +3541,28 @@ EXPORT_SYMBOL(sleep_on_timeout);
+@@ -4125,29 +3595,28 @@ EXPORT_SYMBOL(sleep_on_timeout);
*/
void rt_mutex_setprio(struct task_struct *p, int prio)
{
@@ -3570,7 +3633,7 @@
/*
* Reschedule if we are currently running on this runqueue and
* our priority decreased, or if we are not currently running on
-@@ -4105,8 +3571,9 @@ void rt_mutex_setprio(struct task_struct
+@@ -4156,8 +3625,9 @@ void rt_mutex_setprio(struct task_struct
if (task_running(rq, p)) {
if (p->prio > oldprio)
resched_task(rq->curr);
@@ -3582,7 +3645,7 @@
}
task_rq_unlock(rq, &flags);
}
-@@ -4115,8 +3582,7 @@ void rt_mutex_setprio(struct task_struct
+@@ -4166,8 +3636,7 @@ void rt_mutex_setprio(struct task_struct
void set_user_nice(struct task_struct *p, long nice)
{
@@ -3592,7 +3655,7 @@
unsigned long flags;
struct rq *rq;
-@@ -4131,15 +3597,15 @@ void set_user_nice(struct task_struct *p
+@@ -4182,15 +3651,15 @@ void set_user_nice(struct task_struct *p
* The RT priorities are set via sched_setscheduler(), but we still
* allow the 'normal' nice value to be set - but as expected
* it wont have any effect on scheduling until the task is
@@ -3612,7 +3675,7 @@
dec_raw_weighted_load(rq, p);
}
-@@ -4149,8 +3615,8 @@ void set_user_nice(struct task_struct *p
+@@ -4200,8 +3669,8 @@ void set_user_nice(struct task_struct *p
p->prio = effective_prio(p);
delta = p->prio - old_prio;
@@ -3623,7 +3686,7 @@
inc_raw_weighted_load(rq, p);
/*
* If the task increased its priority or is running and
-@@ -4271,20 +3737,29 @@ static inline struct task_struct *find_p
+@@ -4322,20 +3791,29 @@ static inline struct task_struct *find_p
}
/* Actually do priority change: must hold rq lock. */
@@ -3660,7 +3723,7 @@
set_load_weight(p);
}
-@@ -4299,8 +3774,7 @@ static void __setscheduler(struct task_s
+@@ -4350,8 +3828,7 @@ static void __setscheduler(struct task_s
int sched_setscheduler(struct task_struct *p, int policy,
struct sched_param *param)
{
@@ -3670,7 +3733,7 @@
unsigned long flags;
struct rq *rq;
-@@ -4311,12 +3785,13 @@ recheck:
+@@ -4362,12 +3839,13 @@ recheck:
if (policy < 0)
policy = oldpolicy = p->policy;
else if (policy != SCHED_FIFO && policy != SCHED_RR &&
@@ -3687,7 +3750,7 @@
*/
if (param->sched_priority < 0 ||
(p->mm && param->sched_priority > MAX_USER_RT_PRIO-1) ||
-@@ -4347,6 +3822,12 @@ recheck:
+@@ -4398,6 +3876,12 @@ recheck:
param->sched_priority > rlim_rtprio)
return -EPERM;
}
@@ -3700,7 +3763,7 @@
/* can't change other user's priorities */
if ((current->euid != p->euid) &&
-@@ -4374,13 +3855,13 @@ recheck:
+@@ -4425,13 +3909,13 @@ recheck:
spin_unlock_irqrestore(&p->pi_lock, flags);
goto recheck;
}
@@ -3720,7 +3783,7 @@
/*
* Reschedule if we are currently running on this runqueue and
* our priority decreased, or if we are not currently running on
-@@ -4389,8 +3870,9 @@ recheck:
+@@ -4440,8 +3924,9 @@ recheck:
if (task_running(rq, p)) {
if (p->prio > oldprio)
resched_task(rq->curr);
@@ -3732,7 +3795,7 @@
}
__task_rq_unlock(rq);
spin_unlock_irqrestore(&p->pi_lock, flags);
-@@ -4653,50 +4135,66 @@ asmlinkage long sys_sched_getaffinity(pi
+@@ -4704,50 +4189,66 @@ asmlinkage long sys_sched_getaffinity(pi
if (ret < 0)
return ret;
@@ -3805,10 +3868,10 @@
+ p_to = find_task_by_pid(pid);
+ if (!p_to)
+ goto out_unlock;
++
++ rq = this_rq_lock();
- if (array->nr_active == 1) {
-+ rq = this_rq_lock();
-+
+ schedstat_inc(rq, yld_cnt);
+ if (rq->nr_running == 1)
schedstat_inc(rq, yld_act_empty);
@@ -3830,7 +3893,7 @@
/*
* Since we are going to call schedule() anyway, there's
-@@ -4705,13 +4203,19 @@ asmlinkage long sys_sched_yield(void)
+@@ -4756,13 +4257,19 @@ asmlinkage long sys_sched_yield(void)
__release(rq->lock);
spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
_raw_spin_unlock(&rq->lock);
@@ -3850,7 +3913,7 @@
static void __cond_resched(void)
{
#ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
-@@ -4847,6 +4351,8 @@ asmlinkage long sys_sched_get_priority_m
+@@ -4898,6 +4405,8 @@ asmlinkage long sys_sched_get_priority_m
break;
case SCHED_NORMAL:
case SCHED_BATCH:
@@ -3859,7 +3922,7 @@
ret = 0;
break;
}
-@@ -4871,6 +4377,8 @@ asmlinkage long sys_sched_get_priority_m
+@@ -4922,6 +4431,8 @@ asmlinkage long sys_sched_get_priority_m
break;
case SCHED_NORMAL:
case SCHED_BATCH:
@@ -3868,7 +3931,7 @@
ret = 0;
}
return ret;
-@@ -4905,7 +4413,7 @@ long sys_sched_rr_get_interval(pid_t pid
+@@ -4956,7 +4467,7 @@ long sys_sched_rr_get_interval(pid_t pid
goto out_unlock;
jiffies_to_timespec(p->policy == SCHED_FIFO ?
@@ -3877,7 +3940,7 @@
read_unlock(&tasklist_lock);
retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0;
out_nounlock:
-@@ -4986,6 +4494,7 @@ void show_state_filter(unsigned long sta
+@@ -5037,6 +4548,7 @@ void show_state_filter(unsigned long sta
*/
if (state_filter == -1)
debug_show_all_locks();
@@ -3885,7 +3948,7 @@
}
/**
-@@ -5001,13 +4510,12 @@ void __cpuinit init_idle(struct task_str
+@@ -5052,13 +4564,12 @@ void __cpuinit init_idle(struct task_str
struct rq *rq = cpu_rq(cpu);
unsigned long flags;
@@ -3903,7 +3966,7 @@
spin_lock_irqsave(&rq->lock, flags);
rq->curr = rq->idle = idle;
-@@ -5033,6 +4541,27 @@ void __cpuinit init_idle(struct task_str
+@@ -5084,6 +4595,27 @@ void __cpuinit init_idle(struct task_str
*/
cpumask_t nohz_cpu_mask = CPU_MASK_NONE;
@@ -3931,7 +3994,7 @@
#ifdef CONFIG_SMP
/*
* This is how migration works:
-@@ -5106,7 +4635,7 @@ EXPORT_SYMBOL_GPL(set_cpus_allowed);
+@@ -5157,7 +4689,7 @@ EXPORT_SYMBOL_GPL(set_cpus_allowed);
static int __migrate_task(struct task_struct *p, int src_cpu, int dest_cpu)
{
struct rq *rq_dest, *rq_src;
@@ -3940,7 +4003,7 @@
if (unlikely(cpu_is_offline(dest_cpu)))
return ret;
-@@ -5122,20 +4651,13 @@ static int __migrate_task(struct task_st
+@@ -5173,20 +4705,13 @@ static int __migrate_task(struct task_st
if (!cpu_isset(dest_cpu, p->cpus_allowed))
goto out;
@@ -3967,7 +4030,7 @@
}
ret = 1;
out:
-@@ -5307,10 +4829,10 @@ void sched_idle_next(void)
+@@ -5358,10 +4883,10 @@ void sched_idle_next(void)
*/
spin_lock_irqsave(&rq->lock, flags);
@@ -3980,7 +4043,7 @@
spin_unlock_irqrestore(&rq->lock, flags);
}
-@@ -5360,16 +4882,15 @@ static void migrate_dead(unsigned int de
+@@ -5411,16 +4936,15 @@ static void migrate_dead(unsigned int de
static void migrate_dead_tasks(unsigned int dead_cpu)
{
struct rq *rq = cpu_rq(dead_cpu);
@@ -4005,7 +4068,7 @@
}
}
#endif /* CONFIG_HOTPLUG_CPU */
-@@ -5400,7 +4921,7 @@ migration_call(struct notifier_block *nf
+@@ -5451,7 +4975,7 @@ migration_call(struct notifier_block *nf
kthread_bind(p, cpu);
/* Must be high prio: stop_machine expects to yield to it. */
rq = task_rq_lock(p, &flags);
@@ -4014,7 +4077,7 @@
task_rq_unlock(rq, &flags);
cpu_rq(cpu)->migration_thread = p;
break;
-@@ -5431,9 +4952,9 @@ migration_call(struct notifier_block *nf
+@@ -5482,9 +5006,9 @@ migration_call(struct notifier_block *nf
rq->migration_thread = NULL;
/* Idle task back to normal (off runqueue, low prio) */
rq = task_rq_lock(rq->idle, &flags);
@@ -4026,7 +4089,7 @@
migrate_dead_tasks(cpu);
task_rq_unlock(rq, &flags);
migrate_nr_uninterruptible(rq);
-@@ -5742,483 +5263,6 @@ init_sched_build_groups(cpumask_t span,
+@@ -5793,483 +5317,6 @@ init_sched_build_groups(cpumask_t span,
#define SD_NODES_PER_DOMAIN 16
@@ -4510,7 +4573,7 @@
#ifdef CONFIG_NUMA
/**
-@@ -6748,10 +5792,6 @@ static int build_sched_domains(const cpu
+@@ -6799,10 +5846,6 @@ static int build_sched_domains(const cpu
#endif
cpu_attach_domain(sd, i);
}
@@ -4521,7 +4584,7 @@
return 0;
-@@ -6958,10 +5998,12 @@ void __init sched_init_smp(void)
+@@ -7009,10 +6052,12 @@ void __init sched_init_smp(void)
/* Move init over to a non-isolated CPU */
if (set_cpus_allowed(current, non_isolated_cpus) < 0)
BUG();
@@ -4534,7 +4597,7 @@
}
#endif /* CONFIG_SMP */
-@@ -6977,8 +6019,15 @@ int in_sched_functions(unsigned long add
+@@ -7028,8 +6073,15 @@ int in_sched_functions(unsigned long add
void __init sched_init(void)
{
@@ -4551,7 +4614,7 @@
for_each_possible_cpu(i) {
struct prio_array *array;
-@@ -6988,14 +6037,14 @@ void __init sched_init(void)
+@@ -7039,14 +6091,14 @@ void __init sched_init(void)
spin_lock_init(&rq->lock);
lockdep_set_class(&rq->lock, &rq->rq_lock_key);
rq->nr_running = 0;
@@ -4571,7 +4634,7 @@
rq->active_balance = 0;
rq->push_cpu = 0;
rq->cpu = i;
-@@ -7004,16 +6053,14 @@ void __init sched_init(void)
+@@ -7055,16 +6107,14 @@ void __init sched_init(void)
#endif
atomic_set(&rq->nr_iowait, 0);
@@ -4594,18 +4657,19 @@
}
set_load_weight(&init_task);
-@@ -7070,28 +6117,55 @@ EXPORT_SYMBOL(__might_sleep);
+@@ -7121,29 +6171,55 @@ EXPORT_SYMBOL(__might_sleep);
#ifdef CONFIG_MAGIC_SYSRQ
void normalize_rt_tasks(void)
{
- struct prio_array *array;
- struct task_struct *p;
+ struct task_struct *g, *p;
unsigned long flags;
struct rq *rq;
+ int on_rq;
read_lock_irq(&tasklist_lock);
- for_each_process(p) {
+-
+ do_each_thread(g, p) {
- if (!rt_task(p))
+ p->se.fair_key = 0;
+ p->se.wait_runtime = 0;
@@ -4658,12 +4722,12 @@
+#endif
__task_rq_unlock(rq);
spin_unlock_irqrestore(&p->pi_lock, flags);
- }
-Index: linux-cfs-2.6.22-rc5.q/kernel/sched_debug.c
+ } while_each_thread(g, p);
+Index: linux/kernel/sched_debug.c
===================================================================
--- /dev/null
-+++ linux-cfs-2.6.22-rc5.q/kernel/sched_debug.c
-@@ -0,0 +1,250 @@
++++ linux/kernel/sched_debug.c
+@@ -0,0 +1,258 @@
+/*
+ * kernel/time/sched_debug.c
+ *
@@ -4770,10 +4834,18 @@
+static void print_cpu(struct seq_file *m, int cpu, u64 now)
+{
+ struct rq *rq = &per_cpu(runqueues, cpu);
-+ unsigned int freq = cpu_khz ? : 1;
+
-+ SEQ_printf(m, "\ncpu#%d, %u.%03u MHz\n",
-+ cpu, freq / 1000, (freq % 1000));
++#ifdef CONFIG_X86
++ {
++ unsigned int freq = cpu_khz ? : 1;
++
++ SEQ_printf(m, "\ncpu#%d, %u.%03u MHz\n",
++ cpu, freq / 1000, (freq % 1000));
++ }
++#else
++ SEQ_printf(m, "\ncpu#%d\n", cpu);
++#endif
++
+#define P(x) \
+ SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rq->x))
+
@@ -4914,10 +4986,10 @@
+ p->se.wait_runtime_overruns = p->se.wait_runtime_underruns = 0;
+ p->se.sum_exec_runtime = 0;
+}
-Index: linux-cfs-2.6.22-rc5.q/kernel/sched_fair.c
+Index: linux/kernel/sched_fair.c
===================================================================
--- /dev/null
-+++ linux-cfs-2.6.22-rc5.q/kernel/sched_fair.c
++++ linux/kernel/sched_fair.c
@@ -0,0 +1,888 @@
+/*
+ * Completely Fair Scheduling (CFS) Class (SCHED_NORMAL/SCHED_BATCH)
@@ -5807,10 +5879,10 @@
+ .task_tick = task_tick_fair,
+ .task_new = task_new_fair,
+};
-Index: linux-cfs-2.6.22-rc5.q/kernel/sched_rt.c
+Index: linux/kernel/sched_rt.c
===================================================================
--- /dev/null
-+++ linux-cfs-2.6.22-rc5.q/kernel/sched_rt.c
++++ linux/kernel/sched_rt.c
@@ -0,0 +1,219 @@
+/*
+ * Real-Time Scheduling Class (mapped to the SCHED_FIFO and SCHED_RR
@@ -6031,10 +6103,10 @@
+ .task_tick = task_tick_rt,
+ .task_new = task_new_rt,
+};
-Index: linux-cfs-2.6.22-rc5.q/kernel/sched_stats.h
+Index: linux/kernel/sched_stats.h
===================================================================
--- /dev/null
-+++ linux-cfs-2.6.22-rc5.q/kernel/sched_stats.h
++++ linux/kernel/sched_stats.h
@@ -0,0 +1,235 @@
+
+#ifdef CONFIG_SCHEDSTATS
@@ -6271,10 +6343,10 @@
+#define sched_info_switch(t, next) do { } while (0)
+#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */
+
-Index: linux-cfs-2.6.22-rc5.q/kernel/softirq.c
+Index: linux/kernel/softirq.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/softirq.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/softirq.c
+--- linux.orig/kernel/softirq.c
++++ linux/kernel/softirq.c
@@ -488,7 +488,6 @@ void __init softirq_init(void)
static int ksoftirqd(void * __bind_cpu)
@@ -6283,10 +6355,10 @@
current->flags |= PF_NOFREEZE;
set_current_state(TASK_INTERRUPTIBLE);
-Index: linux-cfs-2.6.22-rc5.q/kernel/sysctl.c
+Index: linux/kernel/sysctl.c
===================================================================
---- linux-cfs-2.6.22-rc5.q.orig/kernel/sysctl.c
-+++ linux-cfs-2.6.22-rc5.q/kernel/sysctl.c
+--- linux.orig/kernel/sysctl.c
++++ linux/kernel/sysctl.c
@@ -206,8 +206,60 @@ static ctl_table root_table[] = {
{ .ctl_name = 0 }
};
@@ -6348,30 +6420,3 @@
.ctl_name = KERN_PANIC,
.procname = "panic",
.data = &panic_timeout,
-Index: linux/kernel/sched_debug.c
-===================================================================
---- linux.orig/kernel/sched_debug.c
-+++ linux/kernel/sched_debug.c
-@@ -104,10 +104,18 @@ static void print_rq_runtime_sum(struct
- static void print_cpu(struct seq_file *m, int cpu, u64 now)
- {
- struct rq *rq = &per_cpu(runqueues, cpu);
-- unsigned int freq = cpu_khz ? : 1;
-
-- SEQ_printf(m, "\ncpu#%d, %u.%03u MHz\n",
-- cpu, freq / 1000, (freq % 1000));
-+#ifdef CONFIG_X86
-+ {
-+ unsigned int freq = cpu_khz ? : 1;
-+
-+ SEQ_printf(m, "\ncpu#%d, %u.%03u MHz\n",
-+ cpu, freq / 1000, (freq % 1000));
-+ }
-+#else
-+ SEQ_printf(m, "\ncpu#%d\n", cpu);
-+#endif
-+
- #define P(x) \
- SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rq->x))
-
-
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.597
retrieving revision 1.598
diff -u -r1.597 -r1.598
--- sources 18 Jun 2007 21:09:33 -0000 1.597
+++ sources 20 Jun 2007 19:44:43 -0000 1.598
@@ -1,3 +1,3 @@
1b515f588078dfa7f4bab2634bd17e80 linux-2.6.21.tar.bz2
807de5a9464e23dfc6336ddc1c07c24f patch-2.6.22-rc5.bz2
-1f0669d2c8a94005030b212b08c87689 patch-2.6.22-rc5-git1.bz2
+48865b9c116be0d425a567395e9981b3 patch-2.6.22-rc5-git4.bz2
Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.519
retrieving revision 1.520
diff -u -r1.519 -r1.520
--- upstream 18 Jun 2007 21:09:33 -0000 1.519
+++ upstream 20 Jun 2007 19:44:43 -0000 1.520
@@ -1,3 +1,3 @@
linux-2.6.21.tar.bz2
patch-2.6.22-rc5.bz2
-patch-2.6.22-rc5-git1.bz2
+patch-2.6.22-rc5-git4.bz2
--- patch-2.6.22-rc5-git1.bz2.sign DELETED ---
More information about the fedora-extras-commits
mailing list