diff options
author | Xunlei Pang <pang.xunlei@linaro.org> | 2015-01-19 05:49:36 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-01-30 19:39:16 +0100 |
commit | 16b269436b7213ebc01dcfcc9dafa8535b676ccb (patch) | |
tree | 430aa2ee5f76f7de1bfa393cd8ad36e4a09e5f45 /kernel/sched/cpudeadline.h | |
parent | sched/idle: Add missing checks to the exit condition of cpu_idle_poll() (diff) | |
download | linux-16b269436b7213ebc01dcfcc9dafa8535b676ccb.tar.xz linux-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.h | 2 |
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 */ |