Skip to content

Commit

Permalink
Merge branch 'sched/urgent' into timers/urgent
Browse files Browse the repository at this point in the history
Merging it here because an upcoming timers/urgent fix relies on
a change already in sched/urgent and not yet upstream.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Ingo Molnar committed Feb 5, 2009
2 parents a6a9540 + 483b4ee commit 8389514
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
1 change: 1 addition & 0 deletions include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,7 @@ struct pacct_struct {
* @utime: time spent in user 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
* @lock: lock for fields in this struct
*
* This structure groups together three kinds of CPU time that are
* tracked for threads and thread groups. Most things considering
Expand Down
17 changes: 11 additions & 6 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -3890,19 +3890,24 @@ int select_nohz_load_balancer(int stop_tick)
int cpu = smp_processor_id();

if (stop_tick) {
cpumask_set_cpu(cpu, nohz.cpu_mask);
cpu_rq(cpu)->in_nohz_recently = 1;

/*
* If we are going offline and still the leader, give up!
*/
if (!cpu_active(cpu) &&
atomic_read(&nohz.load_balancer) == cpu) {
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 (atomic_cmpxchg(&nohz.load_balancer, cpu, -1) != cpu)
BUG();

return 0;
}

cpumask_set_cpu(cpu, nohz.cpu_mask);

/* time for ilb owner also to sleep */
if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) {
if (atomic_read(&nohz.load_balancer) == cpu)
Expand Down

0 comments on commit 8389514

Please sign in to comment.