From bbc4d07a7e20b1bed0d920518a776e4e530d382e Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Tue, 12 Aug 2008 00:07:02 +0200 Subject: [PATCH] --- yaml --- r: 108213 b: refs/heads/master c: e26b33e9552c29c1d3fe67dc602c6264c29f5dc7 h: refs/heads/master i: 108211: 80cd875b5139b7f1fc3976e4e2d2c4b68794c2a4 v: v3 --- [refs] | 2 +- trunk/kernel/cpu.c | 5 ++--- trunk/kernel/sched_fair.c | 19 ++++++++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 3bf0fc4216e8..9ef9b70fbd74 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cf206bffbb7542df54043fad9898113172af99d8 +refs/heads/master: e26b33e9552c29c1d3fe67dc602c6264c29f5dc7 diff --git a/trunk/kernel/cpu.c b/trunk/kernel/cpu.c index e202a68d1cc1..c977c339f559 100644 --- a/trunk/kernel/cpu.c +++ b/trunk/kernel/cpu.c @@ -349,6 +349,8 @@ static int __cpuinit _cpu_up(unsigned int cpu, int tasks_frozen) goto out_notify; BUG_ON(!cpu_online(cpu)); + cpu_set(cpu, cpu_active_map); + /* Now call notifier in preparation. */ raw_notifier_call_chain(&cpu_chain, CPU_ONLINE | mod, hcpu); @@ -383,9 +385,6 @@ int __cpuinit cpu_up(unsigned int cpu) err = _cpu_up(cpu, 0); - if (cpu_online(cpu)) - cpu_set(cpu, cpu_active_map); - out: cpu_maps_update_done(); return err; diff --git a/trunk/kernel/sched_fair.c b/trunk/kernel/sched_fair.c index 0fe94ea43f32..fb8994c6d4bb 100644 --- a/trunk/kernel/sched_fair.c +++ b/trunk/kernel/sched_fair.c @@ -1442,18 +1442,23 @@ __load_balance_iterator(struct cfs_rq *cfs_rq, struct list_head *next) struct task_struct *p = NULL; struct sched_entity *se; - while (next != &cfs_rq->tasks) { + if (next == &cfs_rq->tasks) + return NULL; + + /* Skip over entities that are not tasks */ + do { se = list_entry(next, struct sched_entity, group_node); next = next->next; + } while (next != &cfs_rq->tasks && !entity_is_task(se)); - /* Skip over entities that are not tasks */ - if (entity_is_task(se)) { - p = task_of(se); - break; - } - } + if (next == &cfs_rq->tasks) + return NULL; cfs_rq->balance_iterator = next; + + if (entity_is_task(se)) + p = task_of(se); + return p; }