diff options
author | Frederic Weisbecker <frederic@kernel.org> | 2017-10-26 22:42:31 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-10-27 03:55:26 -0400 |
commit | 7e56a1cf4b28f5739526877b8dbad623fae2e4e7 (patch) | |
tree | 5f540ce0a22d30caed0fb1e54f865ea65373ff38 | |
parent | 9f0ca2d97ef0b5e966be2cfef26c7c094ec14e41 (diff) |
sched/isolation: Make the housekeeping cpumask private
Nobody needs to access this detail. housekeeping_cpumask() already
takes care of it.
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Wanpeng Li <kernellwp@gmail.com>
Link: http://lkml.kernel.org/r/1509072159-31808-5-git-send-email-frederic@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | include/linux/sched/isolation.h | 31 | ||||
-rw-r--r-- | kernel/sched/isolation.c | 36 |
2 files changed, 45 insertions, 22 deletions
diff --git a/include/linux/sched/isolation.h b/include/linux/sched/isolation.h index 040df04fa78a..ed935ffc6ffa 100644 --- a/include/linux/sched/isolation.h +++ b/include/linux/sched/isolation.h | |||
@@ -6,46 +6,35 @@ | |||
6 | #include <linux/tick.h> | 6 | #include <linux/tick.h> |
7 | 7 | ||
8 | #ifdef CONFIG_NO_HZ_FULL | 8 | #ifdef CONFIG_NO_HZ_FULL |
9 | extern cpumask_var_t housekeeping_mask; | 9 | extern int housekeeping_any_cpu(void); |
10 | extern const struct cpumask *housekeeping_cpumask(void); | ||
11 | extern void housekeeping_affine(struct task_struct *t); | ||
12 | extern bool housekeeping_test_cpu(int cpu); | ||
10 | extern void __init housekeeping_init(void); | 13 | extern void __init housekeeping_init(void); |
14 | |||
11 | #else | 15 | #else |
12 | static inline void housekeeping_init(void) { } | ||
13 | #endif /* CONFIG_NO_HZ_FULL */ | ||
14 | 16 | ||
15 | static inline int housekeeping_any_cpu(void) | 17 | static inline int housekeeping_any_cpu(void) |
16 | { | 18 | { |
17 | #ifdef CONFIG_NO_HZ_FULL | ||
18 | if (tick_nohz_full_enabled()) | ||
19 | return cpumask_any_and(housekeeping_mask, cpu_online_mask); | ||
20 | #endif | ||
21 | return smp_processor_id(); | 19 | return smp_processor_id(); |
22 | } | 20 | } |
23 | 21 | ||
24 | static inline const struct cpumask *housekeeping_cpumask(void) | 22 | static inline const struct cpumask *housekeeping_cpumask(void) |
25 | { | 23 | { |
26 | #ifdef CONFIG_NO_HZ_FULL | ||
27 | if (tick_nohz_full_enabled()) | ||
28 | return housekeeping_mask; | ||
29 | #endif | ||
30 | return cpu_possible_mask; | 24 | return cpu_possible_mask; |
31 | } | 25 | } |
32 | 26 | ||
27 | static inline void housekeeping_affine(struct task_struct *t) { } | ||
28 | static inline void housekeeping_init(void) { } | ||
29 | #endif /* CONFIG_NO_HZ_FULL */ | ||
30 | |||
33 | static inline bool is_housekeeping_cpu(int cpu) | 31 | static inline bool is_housekeeping_cpu(int cpu) |
34 | { | 32 | { |
35 | #ifdef CONFIG_NO_HZ_FULL | 33 | #ifdef CONFIG_NO_HZ_FULL |
36 | if (tick_nohz_full_enabled()) | 34 | if (tick_nohz_full_enabled()) |
37 | return cpumask_test_cpu(cpu, housekeeping_mask); | 35 | return housekeeping_test_cpu(cpu); |
38 | #endif | 36 | #endif |
39 | return true; | 37 | return true; |
40 | } | 38 | } |
41 | 39 | ||
42 | static inline void housekeeping_affine(struct task_struct *t) | ||
43 | { | ||
44 | #ifdef CONFIG_NO_HZ_FULL | ||
45 | if (tick_nohz_full_enabled()) | ||
46 | set_cpus_allowed_ptr(t, housekeeping_mask); | ||
47 | |||
48 | #endif | ||
49 | } | ||
50 | |||
51 | #endif /* _LINUX_SCHED_ISOLATION_H */ | 40 | #endif /* _LINUX_SCHED_ISOLATION_H */ |
diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index 3589252ed476..16445097eb25 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c | |||
@@ -11,7 +11,41 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | 13 | ||
14 | cpumask_var_t housekeeping_mask; | 14 | static cpumask_var_t housekeeping_mask; |
15 | |||
16 | int housekeeping_any_cpu(void) | ||
17 | { | ||
18 | if (tick_nohz_full_enabled()) | ||
19 | return cpumask_any_and(housekeeping_mask, cpu_online_mask); | ||
20 | |||
21 | return smp_processor_id(); | ||
22 | } | ||
23 | EXPORT_SYMBOL_GPL(housekeeping_any_cpu); | ||
24 | |||
25 | const struct cpumask *housekeeping_cpumask(void) | ||
26 | { | ||
27 | if (tick_nohz_full_enabled()) | ||
28 | return housekeeping_mask; | ||
29 | |||
30 | return cpu_possible_mask; | ||
31 | } | ||
32 | EXPORT_SYMBOL_GPL(housekeeping_cpumask); | ||
33 | |||
34 | void housekeeping_affine(struct task_struct *t) | ||
35 | { | ||
36 | if (tick_nohz_full_enabled()) | ||
37 | set_cpus_allowed_ptr(t, housekeeping_mask); | ||
38 | } | ||
39 | EXPORT_SYMBOL_GPL(housekeeping_affine); | ||
40 | |||
41 | bool housekeeping_test_cpu(int cpu) | ||
42 | { | ||
43 | if (tick_nohz_full_enabled()) | ||
44 | return cpumask_test_cpu(cpu, housekeeping_mask); | ||
45 | |||
46 | return true; | ||
47 | } | ||
48 | EXPORT_SYMBOL_GPL(housekeeping_test_cpu); | ||
15 | 49 | ||
16 | void __init housekeeping_init(void) | 50 | void __init housekeeping_init(void) |
17 | { | 51 | { |