diff options
Diffstat (limited to 'arch/ia64/mm/discontig.c')
| -rw-r--r-- | arch/ia64/mm/discontig.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index c87d6d1d5813..573d5cc63e2b 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
| @@ -528,12 +528,17 @@ void __init find_memory(void) | |||
| 528 | void *per_cpu_init(void) | 528 | void *per_cpu_init(void) |
| 529 | { | 529 | { |
| 530 | int cpu; | 530 | int cpu; |
| 531 | static int first_time = 1; | ||
| 532 | |||
| 531 | 533 | ||
| 532 | if (smp_processor_id() != 0) | 534 | if (smp_processor_id() != 0) |
| 533 | return __per_cpu_start + __per_cpu_offset[smp_processor_id()]; | 535 | return __per_cpu_start + __per_cpu_offset[smp_processor_id()]; |
| 534 | 536 | ||
| 535 | for (cpu = 0; cpu < NR_CPUS; cpu++) | 537 | if (first_time) { |
| 536 | per_cpu(local_per_cpu_offset, cpu) = __per_cpu_offset[cpu]; | 538 | first_time = 0; |
| 539 | for (cpu = 0; cpu < NR_CPUS; cpu++) | ||
| 540 | per_cpu(local_per_cpu_offset, cpu) = __per_cpu_offset[cpu]; | ||
| 541 | } | ||
| 537 | 542 | ||
| 538 | return __per_cpu_start + __per_cpu_offset[smp_processor_id()]; | 543 | return __per_cpu_start + __per_cpu_offset[smp_processor_id()]; |
| 539 | } | 544 | } |
