aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorGregory Haskins <ghaskins@novell.com>2008-06-04 15:04:05 -0400
committerIngo Molnar <mingo@elte.hu>2008-06-06 09:19:42 -0400
commit1f11eb6a8bc92536d9e93ead48fa3ffbd1478571 (patch)
tree40a123bd566bab8ddc726303e2725bae55b1a499 /include/linux
parent099f98c8a1f13501a98afbfff4756395a610581c (diff)
sched: fix cpupri hotplug support
The RT folks over at RedHat found an issue w.r.t. hotplug support which was traced to problems with the cpupri infrastructure in the scheduler: https://bugzilla.redhat.com/show_bug.cgi?id=449676 This bug affects 23-rt12+, 24-rtX, 25-rtX, and sched-devel. This patch applies to 25.4-rt4, though it should trivially apply to most cpupri enabled kernels mentioned above. It turned out that the issue was that offline cpus could get inadvertently registered with cpupri so that they were erroneously selected during migration decisions. The end result would be an OOPS as the offline cpu had tasks routed to it. This patch generalizes the old join/leave domain interface into an online/offline interface, and adjusts the root-domain/hotplug code to utilize it. I was able to easily reproduce the issue prior to this patch, and am no longer able to reproduce it after this patch. I can offline cpus indefinately and everything seems to be in working order. Thanks to Arnaldo (acme), Thomas, and Peter for doing the legwork to point me in the right direction. Also thank you to Peter for reviewing the early iterations of this patch. Signed-off-by: Gregory Haskins <ghaskins@novell.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/sched.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index ea2857b99596..d25acf600a32 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -903,8 +903,8 @@ struct sched_class {
903 void (*set_cpus_allowed)(struct task_struct *p, 903 void (*set_cpus_allowed)(struct task_struct *p,
904 const cpumask_t *newmask); 904 const cpumask_t *newmask);
905 905
906 void (*join_domain)(struct rq *rq); 906 void (*rq_online)(struct rq *rq);
907 void (*leave_domain)(struct rq *rq); 907 void (*rq_offline)(struct rq *rq);
908 908
909 void (*switched_from) (struct rq *this_rq, struct task_struct *task, 909 void (*switched_from) (struct rq *this_rq, struct task_struct *task,
910 int running); 910 int running);