diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-06 17:31:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-06 17:31:50 -0400 |
commit | e00d4135751bfe786a9e26b5560b185ce3f9f963 (patch) | |
tree | 6945bd6749aab501000f7084e020aa201971e1ff /include/linux | |
parent | 90489a72fba9529c85e051067ecb41183b8e982e (diff) | |
parent | 08ae95f4fd3b38b257f5dc7e6507e071c27ba0d5 (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.h | 17 | ||||
-rw-r--r-- | include/linux/rcuwait.h | 2 | ||||
-rw-r--r-- | include/linux/sched/topology.h | 4 |
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 | } |
139 | extern void enable_nonboot_cpus(void); | 139 | extern void enable_nonboot_cpus(void); |
140 | |||
141 | static 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 | } | ||
150 | static 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 */ |
141 | static inline int disable_nonboot_cpus(void) { return 0; } | 156 | static inline int disable_nonboot_cpus(void) { return 0; } |
142 | static inline void enable_nonboot_cpus(void) {} | 157 | static inline void enable_nonboot_cpus(void) {} |
158 | static inline int suspend_disable_secondary_cpus(void) { return 0; } | ||
159 | static inline void suspend_enable_secondary_cpus(void) { } | ||
143 | #endif /* !CONFIG_PM_SLEEP_SMP */ | 160 | #endif /* !CONFIG_PM_SLEEP_SMP */ |
144 | 161 | ||
145 | void cpu_startup_entry(enum cpuhp_state state); | 162 | void 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 | */ |
20 | struct rcuwait { | 20 | struct 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 | ||
77 | struct sched_domain { | 77 | struct 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 */ |