aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched/cpudeadline.h
diff options
context:
space:
mode:
authorXunlei Pang <pang.xunlei@linaro.org>2015-01-19 04:49:36 +0000
committerIngo Molnar <mingo@kernel.org>2015-01-30 19:39:16 +0100
commit16b269436b7213ebc01dcfcc9dafa8535b676ccb (patch)
tree430aa2ee5f76f7de1bfa393cd8ad36e4a09e5f45 /kernel/sched/cpudeadline.h
parentsched/idle: Add missing checks to the exit condition of cpu_idle_poll() (diff)
downloadlinux-dev-16b269436b7213ebc01dcfcc9dafa8535b676ccb.tar.xz
linux-dev-16b269436b7213ebc01dcfcc9dafa8535b676ccb.zip
sched/deadline: Modify cpudl::free_cpus to reflect rd->online
Currently, cpudl::free_cpus contains all CPUs during init, see cpudl_init(). When calling cpudl_find(), we have to add rd->span to avoid selecting the cpu outside the current root domain, because cpus_allowed cannot be depended on when performing clustered scheduling using the cpuset, see find_later_rq(). This patch adds cpudl_set_freecpu() and cpudl_clear_freecpu() for changing cpudl::free_cpus when doing rq_online_dl()/rq_offline_dl(), so we can avoid the rd->span operation when calling cpudl_find() in find_later_rq(). Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Juri Lelli <juri.lelli@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/1421642980-10045-1-git-send-email-pang.xunlei@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/sched/cpudeadline.h')
-rw-r--r--kernel/sched/cpudeadline.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/sched/cpudeadline.h b/kernel/sched/cpudeadline.h
index 020039bd1326..1a0a6ef2fbe1 100644
--- a/kernel/sched/cpudeadline.h
+++ b/kernel/sched/cpudeadline.h
@@ -24,6 +24,8 @@ int cpudl_find(struct cpudl *cp, struct task_struct *p,
struct cpumask *later_mask);
void cpudl_set(struct cpudl *cp, int cpu, u64 dl, int is_valid);
int cpudl_init(struct cpudl *cp);
+void cpudl_set_freecpu(struct cpudl *cp, int cpu);
+void cpudl_clear_freecpu(struct cpudl *cp, int cpu);
void cpudl_cleanup(struct cpudl *cp);
#endif /* CONFIG_SMP */