From 57a60d0e9c5a68d82f4bb7ded622cbea1b666aab Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Tue, 9 Dec 2008 18:49:51 +0100 Subject: [PATCH] --- yaml --- r: 121343 b: refs/heads/master c: d65bd5ecb2bd166cea4952a59b7e16cc3ad6ef6c h: refs/heads/master i: 121341: a828c046720479cab7aba7bba0f6e8efd2c5e3b3 121339: 3faf8ac03432ec6af3a34d3922c436031c318cdf 121335: 3b908246e760605c2d2f56f6c92268ae1f28b351 121327: 6ae45db1d27995823d3143aeb3050fda6816792b 121311: 882c8eddb90d556dc8fcf345b46ae6c2676477e0 121279: ae4a5d8a02027aadda7db7553b32d7408ea1ce26 121215: 2883d1d19005e88f1d6a9c3619b304e8c9b1da78 121087: 0d6bdd5e98018ec494cbf84dbca1ca52a2828932 120831: a6e573c8c61348f6c7273e901eb17f4356349edd v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a22b2aaeb57a..a72cfb36cdb0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ee79d1bdb6a10499e53f80b1e8d14110215178ba +refs/heads/master: d65bd5ecb2bd166cea4952a59b7e16cc3ad6ef6c diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index fcfbbd9dbd60..ad7b93be5691 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -7774,17 +7774,21 @@ void partition_sched_domains(int ndoms_new, cpumask_t *doms_new, struct sched_domain_attr *dattr_new) { int i, j, n; + int new_topology; mutex_lock(&sched_domains_mutex); /* always unregister in case we don't destroy any domains */ unregister_sched_domain_sysctl(); + /* Let architecture update cpu core mappings. */ + new_topology = arch_update_cpu_topology(); + n = doms_new ? ndoms_new : 0; /* Destroy deleted domains */ for (i = 0; i < ndoms_cur; i++) { - for (j = 0; j < n; j++) { + for (j = 0; j < n && !new_topology; j++) { if (cpus_equal(doms_cur[i], doms_new[j]) && dattrs_equal(dattr_cur, i, dattr_new, j)) goto match1; @@ -7804,7 +7808,7 @@ void partition_sched_domains(int ndoms_new, cpumask_t *doms_new, /* Build new domains */ for (i = 0; i < ndoms_new; i++) { - for (j = 0; j < ndoms_cur; j++) { + for (j = 0; j < ndoms_cur && !new_topology; j++) { if (cpus_equal(doms_new[i], doms_cur[j]) && dattrs_equal(dattr_new, i, dattr_cur, j)) goto match2;