Commit 83895147 authored by Ingo Molnar's avatar Ingo Molnar

Merge branch 'sched/urgent' into timers/urgent

Merging it here because an upcoming timers/urgent fix relies on
a change already in sched/urgent and not yet upstream.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parents a6a95406 483b4ee6
...@@ -443,6 +443,7 @@ struct pacct_struct { ...@@ -443,6 +443,7 @@ struct pacct_struct {
* @utime: time spent in user mode, in &cputime_t units * @utime: time spent in user mode, in &cputime_t units
* @stime: time spent in kernel mode, in &cputime_t units * @stime: time spent in kernel mode, in &cputime_t units
* @sum_exec_runtime: total time spent on the CPU, in nanoseconds * @sum_exec_runtime: total time spent on the CPU, in nanoseconds
* @lock: lock for fields in this struct
* *
* This structure groups together three kinds of CPU time that are * This structure groups together three kinds of CPU time that are
* tracked for threads and thread groups. Most things considering * tracked for threads and thread groups. Most things considering
......
...@@ -3890,19 +3890,24 @@ int select_nohz_load_balancer(int stop_tick) ...@@ -3890,19 +3890,24 @@ int select_nohz_load_balancer(int stop_tick)
int cpu = smp_processor_id(); int cpu = smp_processor_id();
if (stop_tick) { if (stop_tick) {
cpumask_set_cpu(cpu, nohz.cpu_mask);
cpu_rq(cpu)->in_nohz_recently = 1; cpu_rq(cpu)->in_nohz_recently = 1;
if (!cpu_active(cpu)) {
if (atomic_read(&nohz.load_balancer) != cpu)
return 0;
/* /*
* If we are going offline and still the leader, give up! * If we are going offline and still the leader,
* give up!
*/ */
if (!cpu_active(cpu) &&
atomic_read(&nohz.load_balancer) == cpu) {
if (atomic_cmpxchg(&nohz.load_balancer, cpu, -1) != cpu) if (atomic_cmpxchg(&nohz.load_balancer, cpu, -1) != cpu)
BUG(); BUG();
return 0; return 0;
} }
cpumask_set_cpu(cpu, nohz.cpu_mask);
/* time for ilb owner also to sleep */ /* time for ilb owner also to sleep */
if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) { if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) {
if (atomic_read(&nohz.load_balancer) == cpu) if (atomic_read(&nohz.load_balancer) == cpu)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment