diff options
Diffstat (limited to 'arch/ia64/mm/contig.c')
| -rw-r--r-- | arch/ia64/mm/contig.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c index acaaec4e4681..9855ba318094 100644 --- a/arch/ia64/mm/contig.c +++ b/arch/ia64/mm/contig.c | |||
| @@ -181,13 +181,15 @@ per_cpu_init (void) | |||
| 181 | { | 181 | { |
| 182 | void *cpu_data; | 182 | void *cpu_data; |
| 183 | int cpu; | 183 | int cpu; |
| 184 | static int first_time=1; | ||
| 184 | 185 | ||
| 185 | /* | 186 | /* |
| 186 | * get_free_pages() cannot be used before cpu_init() done. BSP | 187 | * get_free_pages() cannot be used before cpu_init() done. BSP |
| 187 | * allocates "NR_CPUS" pages for all CPUs to avoid that AP calls | 188 | * allocates "NR_CPUS" pages for all CPUs to avoid that AP calls |
| 188 | * get_zeroed_page(). | 189 | * get_zeroed_page(). |
| 189 | */ | 190 | */ |
| 190 | if (smp_processor_id() == 0) { | 191 | if (first_time) { |
| 192 | first_time=0; | ||
| 191 | cpu_data = __alloc_bootmem(PERCPU_PAGE_SIZE * NR_CPUS, | 193 | cpu_data = __alloc_bootmem(PERCPU_PAGE_SIZE * NR_CPUS, |
| 192 | PERCPU_PAGE_SIZE, __pa(MAX_DMA_ADDRESS)); | 194 | PERCPU_PAGE_SIZE, __pa(MAX_DMA_ADDRESS)); |
| 193 | for (cpu = 0; cpu < NR_CPUS; cpu++) { | 195 | for (cpu = 0; cpu < NR_CPUS; cpu++) { |
