diff --git a/[refs] b/[refs] index 6b8b87f7e089..0cb3d6983132 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 394e3902c55e667945f6f1c2bdbc59842cce70f7 +refs/heads/master: b73b459f72f746a031d1ef4cc7659b20a1f1acb9 diff --git a/trunk/init/main.c b/trunk/init/main.c index 9cf6b307bfd7..2714e0e7cfec 100644 --- a/trunk/init/main.c +++ b/trunk/init/main.c @@ -325,7 +325,7 @@ static inline void smp_prepare_cpus(unsigned int maxcpus) { } #else #ifdef __GENERIC_PER_CPU -unsigned long __per_cpu_offset[NR_CPUS]; +unsigned long __per_cpu_offset[NR_CPUS] __read_mostly; EXPORT_SYMBOL(__per_cpu_offset); @@ -343,11 +343,7 @@ static void __init setup_per_cpu_areas(void) #endif ptr = alloc_bootmem(size * nr_possible_cpus); - for (i = 0; i < NR_CPUS; i++) { - if (!cpu_possible(i)) { - __per_cpu_offset[i] = (char*)0 - __per_cpu_start; - continue; - } + for_each_cpu(i) { __per_cpu_offset[i] = ptr - __per_cpu_start; memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start); ptr += size;