-ck
---
- Documentation/scheduler/sched-BFS.txt | 2
include/linux/sched.h | 4
kernel/sched_bfs.c | 466 +++++++++++++++++++++-------------
kernel/sysctl.c | 4
4 files changed, 293 insertions(+), 183 deletions(-)
-Index: linux-2.6.35-bfs/Documentation/scheduler/sched-BFS.txt
-===================================================================
---- linux-2.6.35-bfs.orig/Documentation/scheduler/sched-BFS.txt 2010-09-25 08:18:30.134360792 +1000
-+++ linux-2.6.35-bfs/Documentation/scheduler/sched-BFS.txt 2010-09-25 08:20:25.830887001 +1000
-@@ -257,7 +257,7 @@ uniprocessor machine, and automatically
- multiprocessor machines. The reasoning behind increasing the value on more CPUs
- is that the effective latency is decreased by virtue of there being more CPUs on
- BFS (for reasons explained above), and increasing the value allows for less
--cache contention and more throughput. Valid values are from 1 to 5000
-+cache contention and more throughput. Valid values are from 1 to 1000
- Decreasing the value will decrease latencies at the cost of decreasing
- throughput, while increasing it will improve throughput, but at the cost of
- worsening latencies. The accuracy of the rr interval is limited by HZ resolution
Index: linux-2.6.35-bfs/include/linux/sched.h
===================================================================
--- linux-2.6.35-bfs.orig/include/linux/sched.h 2010-09-25 08:18:08.792894602 +1000
+++ linux-2.6.35-bfs/include/linux/sched.h 2010-09-25 08:20:25.822886826 +1000
-@@ -1197,7 +1197,7 @@ struct task_struct {
+@@ -1118,7 +1118,7 @@ struct task_struct {
int prio, static_prio, normal_prio;
unsigned int rt_priority;
#ifdef CONFIG_SCHED_BFS
- int time_slice, first_time_slice;
+- unsigned long deadline;
+ int time_slice;
- u64 deadline;
++ u64 deadline;
struct list_head run_list;
u64 last_ran;
@@ -1547,7 +1547,7 @@ static inline void tsk_cpus_current(stru
static inline void print_scheduler_version(void)
{
-- printk(KERN_INFO"BFS CPU scheduler v0.330 by Con Kolivas.\n");
-+ printk(KERN_INFO"BFS CPU scheduler v0.350 by Con Kolivas.\n");
+- printk(KERN_INFO"BFS CPU scheduler v0.330 by Con Kolivas ported by ToAsTcfh.\n");
++ printk(KERN_INFO"BFS CPU scheduler v0.350 by Con Kolivas ported by ToAsTcfh.\n");
}
static inline int iso_task(struct task_struct *p)
#ifdef CONFIG_SCHEDSTATS
/* latency stats */
-@@ -286,15 +298,6 @@ struct root_domain {
+@@ -290,12 +290,4 @@ struct root_domain {
static struct root_domain def_root_domain;
#endif
- return 0;
-#endif
-}
--
- #define rcu_dereference_check_sched_domain(p) \
- rcu_dereference_check((p), \
- rcu_read_lock_sched_held() || \
+
@@ -310,17 +313,65 @@ static inline int cpu_of(struct rq *rq)
#define for_each_domain(cpu, __sd) \
for (__sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd); __sd; __sd = __sd->parent)
+ * when we're not updating niffies.
+ * Looking up task_rq must be done under grq.lock to be safe.
*/
--inline void update_rq_clock(struct rq *rq)
+-static inline void update_rq_clock(struct rq *rq)
+static inline void update_rq_clock(struct rq *rq)
{
- if (!rq->skip_clock_update)