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 ...
This commit is contained in:
10
kernel/cpu.c
10
kernel/cpu.c
@@ -9,6 +9,7 @@
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/sched/signal.h>
|
||||
#include <linux/sched/hotplug.h>
|
||||
#include <linux/sched/isolation.h>
|
||||
#include <linux/sched/task.h>
|
||||
#include <linux/sched/smt.h>
|
||||
#include <linux/unistd.h>
|
||||
@@ -1199,8 +1200,15 @@ int freeze_secondary_cpus(int primary)
|
||||
int cpu, error = 0;
|
||||
|
||||
cpu_maps_update_begin();
|
||||
if (!cpu_online(primary))
|
||||
if (primary == -1) {
|
||||
primary = cpumask_first(cpu_online_mask);
|
||||
if (!housekeeping_cpu(primary, HK_FLAG_TIMER))
|
||||
primary = housekeeping_any_cpu(HK_FLAG_TIMER);
|
||||
} else {
|
||||
if (!cpu_online(primary))
|
||||
primary = cpumask_first(cpu_online_mask);
|
||||
}
|
||||
|
||||
/*
|
||||
* We take down all of the non-boot CPUs in one shot to avoid races
|
||||
* with the userspace trying to use the CPU hotplug at the same time
|
||||
|
Reference in New Issue
Block a user