summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-06 17:31:50 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-06 17:31:50 -0400
commite00d4135751bfe786a9e26b5560b185ce3f9f963 (patch)
tree6945bd6749aab501000f7084e020aa201971e1ff /include/linux
parent90489a72fba9529c85e051067ecb41183b8e982e (diff)
parent08ae95f4fd3b38b257f5dc7e6507e071c27ba0d5 (diff)
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler updates from Ingo Molnar: "The main changes in this cycle were: - Make nohz housekeeping processing more permissive and less intrusive to isolated CPUs - Decouple CPU-bound workqueue acconting from the scheduler and move it into the workqueue code. - Optimize topology building - Better handle quota and period overflows - Add more RCU annotations - Comment updates, misc cleanups" * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits) nohz_full: Allow the boot CPU to be nohz_full sched/isolation: Require a present CPU in housekeeping mask kernel/cpu: Allow non-zero CPU to be primary for suspend / kexec freeze power/suspend: Add function to disable secondaries for suspend sched/core: Allow the remote scheduler tick to be started on CPU0 sched/nohz: Run NOHZ idle load balancer on HK_FLAG_MISC CPUs sched/debug: Fix spelling mistake "logaritmic" -> "logarithmic" sched/topology: Update init_sched_domains() comment cgroup/cpuset: Update stale generate_sched_domains() comments sched/core: Check quota and period overflow at usec to nsec conversion sched/core: Handle overflow in cpu_shares_write_u64 sched/rt: Check integer overflow at usec to nsec conversion sched/core: Fix typo in comment sched/core: Make some functions static sched/core: Unify p->on_rq updates sched/core: Remove ttwu_activate() sched/core, workqueues: Distangle worker accounting from rq lock sched/fair: Remove unneeded prototype of capacity_of() sched/topology: Skip duplicate group rewrites in build_sched_groups() sched/topology: Fix build_sched_groups() comment ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/cpu.h17
-rw-r--r--include/linux/rcuwait.h2
-rw-r--r--include/linux/sched/topology.h4
3 files changed, 20 insertions, 3 deletions
diff --git a/include/linux/cpu.h b/include/linux/cpu.h
index 2d9c6f4b78f5..2d62f01108a0 100644
--- a/include/linux/cpu.h
+++ b/include/linux/cpu.h
@@ -137,9 +137,26 @@ static inline int disable_nonboot_cpus(void)
137 return freeze_secondary_cpus(0); 137 return freeze_secondary_cpus(0);
138} 138}
139extern void enable_nonboot_cpus(void); 139extern void enable_nonboot_cpus(void);
140
141static inline int suspend_disable_secondary_cpus(void)
142{
143 int cpu = 0;
144
145 if (IS_ENABLED(CONFIG_PM_SLEEP_SMP_NONZERO_CPU))
146 cpu = -1;
147
148 return freeze_secondary_cpus(cpu);
149}
150static inline void suspend_enable_secondary_cpus(void)
151{
152 return enable_nonboot_cpus();
153}
154
140#else /* !CONFIG_PM_SLEEP_SMP */ 155#else /* !CONFIG_PM_SLEEP_SMP */
141static inline int disable_nonboot_cpus(void) { return 0; } 156static inline int disable_nonboot_cpus(void) { return 0; }
142static inline void enable_nonboot_cpus(void) {} 157static inline void enable_nonboot_cpus(void) {}
158static inline int suspend_disable_secondary_cpus(void) { return 0; }
159static inline void suspend_enable_secondary_cpus(void) { }
143#endif /* !CONFIG_PM_SLEEP_SMP */ 160#endif /* !CONFIG_PM_SLEEP_SMP */
144 161
145void cpu_startup_entry(enum cpuhp_state state); 162void cpu_startup_entry(enum cpuhp_state state);
diff --git a/include/linux/rcuwait.h b/include/linux/rcuwait.h
index 90bfa3279a01..563290fc194f 100644
--- a/include/linux/rcuwait.h
+++ b/include/linux/rcuwait.h
@@ -18,7 +18,7 @@
18 * awoken. 18 * awoken.
19 */ 19 */
20struct rcuwait { 20struct rcuwait {
21 struct task_struct *task; 21 struct task_struct __rcu *task;
22}; 22};
23 23
24#define __RCUWAIT_INITIALIZER(name) \ 24#define __RCUWAIT_INITIALIZER(name) \
diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h
index 57c7ed3fe465..cfc0a89a7159 100644
--- a/include/linux/sched/topology.h
+++ b/include/linux/sched/topology.h
@@ -76,8 +76,8 @@ struct sched_domain_shared {
76 76
77struct sched_domain { 77struct sched_domain {
78 /* These fields must be setup */ 78 /* These fields must be setup */
79 struct sched_domain *parent; /* top domain must be null terminated */ 79 struct sched_domain __rcu *parent; /* top domain must be null terminated */
80 struct sched_domain *child; /* bottom domain must be null terminated */ 80 struct sched_domain __rcu *child; /* bottom domain must be null terminated */
81 struct sched_group *groups; /* the balancing groups of the domain */ 81 struct sched_group *groups; /* the balancing groups of the domain */
82 unsigned long min_interval; /* Minimum balance interval ms */ 82 unsigned long min_interval; /* Minimum balance interval ms */
83 unsigned long max_interval; /* Maximum balance interval ms */ 83 unsigned long max_interval; /* Maximum balance interval ms */