diff options
Diffstat (limited to 'arch/ia64/kernel/setup.c')
-rw-r--r-- | arch/ia64/kernel/setup.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 4aa9eaea76c3..5015ca1275ca 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -59,6 +59,7 @@ | |||
59 | #include <asm/setup.h> | 59 | #include <asm/setup.h> |
60 | #include <asm/smp.h> | 60 | #include <asm/smp.h> |
61 | #include <asm/system.h> | 61 | #include <asm/system.h> |
62 | #include <asm/tlbflush.h> | ||
62 | #include <asm/unistd.h> | 63 | #include <asm/unistd.h> |
63 | #include <asm/hpsim.h> | 64 | #include <asm/hpsim.h> |
64 | 65 | ||
@@ -176,6 +177,29 @@ filter_rsvd_memory (unsigned long start, unsigned long end, void *arg) | |||
176 | return 0; | 177 | return 0; |
177 | } | 178 | } |
178 | 179 | ||
180 | /* | ||
181 | * Similar to "filter_rsvd_memory()", but the reserved memory ranges | ||
182 | * are not filtered out. | ||
183 | */ | ||
184 | int __init | ||
185 | filter_memory(unsigned long start, unsigned long end, void *arg) | ||
186 | { | ||
187 | void (*func)(unsigned long, unsigned long, int); | ||
188 | |||
189 | #if IGNORE_PFN0 | ||
190 | if (start == PAGE_OFFSET) { | ||
191 | printk(KERN_WARNING "warning: skipping physical page 0\n"); | ||
192 | start += PAGE_SIZE; | ||
193 | if (start >= end) | ||
194 | return 0; | ||
195 | } | ||
196 | #endif | ||
197 | func = arg; | ||
198 | if (start < end) | ||
199 | call_pernode_memory(__pa(start), end - start, func); | ||
200 | return 0; | ||
201 | } | ||
202 | |||
179 | static void __init | 203 | static void __init |
180 | sort_regions (struct rsvd_region *rsvd_region, int max) | 204 | sort_regions (struct rsvd_region *rsvd_region, int max) |
181 | { | 205 | { |
@@ -493,6 +517,8 @@ setup_arch (char **cmdline_p) | |||
493 | acpi_table_init(); | 517 | acpi_table_init(); |
494 | # ifdef CONFIG_ACPI_NUMA | 518 | # ifdef CONFIG_ACPI_NUMA |
495 | acpi_numa_init(); | 519 | acpi_numa_init(); |
520 | per_cpu_scan_finalize((cpus_weight(early_cpu_possible_map) == 0 ? | ||
521 | 32 : cpus_weight(early_cpu_possible_map)), additional_cpus); | ||
496 | # endif | 522 | # endif |
497 | #else | 523 | #else |
498 | # ifdef CONFIG_SMP | 524 | # ifdef CONFIG_SMP |
@@ -946,9 +972,10 @@ cpu_init (void) | |||
946 | #endif | 972 | #endif |
947 | 973 | ||
948 | /* set ia64_ctx.max_rid to the maximum RID that is supported by all CPUs: */ | 974 | /* set ia64_ctx.max_rid to the maximum RID that is supported by all CPUs: */ |
949 | if (ia64_pal_vm_summary(NULL, &vmi) == 0) | 975 | if (ia64_pal_vm_summary(NULL, &vmi) == 0) { |
950 | max_ctx = (1U << (vmi.pal_vm_info_2_s.rid_size - 3)) - 1; | 976 | max_ctx = (1U << (vmi.pal_vm_info_2_s.rid_size - 3)) - 1; |
951 | else { | 977 | setup_ptcg_sem(vmi.pal_vm_info_2_s.max_purges, NPTCG_FROM_PAL); |
978 | } else { | ||
952 | printk(KERN_WARNING "cpu_init: PAL VM summary failed, assuming 18 RID bits\n"); | 979 | printk(KERN_WARNING "cpu_init: PAL VM summary failed, assuming 18 RID bits\n"); |
953 | max_ctx = (1U << 15) - 1; /* use architected minimum */ | 980 | max_ctx = (1U << 15) - 1; /* use architected minimum */ |
954 | } | 981 | } |