aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/setup.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-03-25 11:49:25 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-25 11:49:25 -0500
commit7d14f145f839b5d0d221ea209b4998f93267e2ec (patch)
tree669d09ad53c9de9ef2e6cef06d256a811d509d65 /arch/ia64/kernel/setup.c
parent2e1ca21d46aaef95101723fa402f39d3a95aba59 (diff)
parent4129a953ad4db379d8e07b0dd2157998653a1325 (diff)
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] New IA64 core/thread detection patch [IA64] Increase max node count on SN platforms [IA64] Increase max node count on SN platforms [IA64] Increase max node count on SN platforms [IA64] Increase max node count on SN platforms [IA64] Tollhouse HP: IA64 arch changes [IA64] cleanup dig_irq_init [IA64] MCA recovery: kernel context recovery table IA64: Use early_parm to handle mvec_name and nomca [IA64] move patchlist and machvec into init section [IA64] add init declaration - nolwsys [IA64] add init declaration - gate page functions [IA64] add init declaration to memory initialization functions [IA64] add init declaration to cpu initialization functions [IA64] add __init declaration to mca functions [IA64] Ignore disabled Local SAPIC Affinity Structure in SRAT [IA64] sn_check_intr: use ia64_get_irr() [IA64] fix ia64 is_hugepage_only_range
Diffstat (limited to 'arch/ia64/kernel/setup.c')
-rw-r--r--arch/ia64/kernel/setup.c60
1 files changed, 24 insertions, 36 deletions
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 958c1508036f..eb388e271b2b 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -130,8 +130,8 @@ EXPORT_SYMBOL(ia64_max_iommu_merge_mask);
130/* 130/*
131 * We use a special marker for the end of memory and it uses the extra (+1) slot 131 * We use a special marker for the end of memory and it uses the extra (+1) slot
132 */ 132 */
133struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1]; 133struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1] __initdata;
134int num_rsvd_regions; 134int num_rsvd_regions __initdata;
135 135
136 136
137/* 137/*
@@ -140,7 +140,7 @@ int num_rsvd_regions;
140 * caller-specified function is called with the memory ranges that remain after filtering. 140 * caller-specified function is called with the memory ranges that remain after filtering.
141 * This routine does not assume the incoming segments are sorted. 141 * This routine does not assume the incoming segments are sorted.
142 */ 142 */
143int 143int __init
144filter_rsvd_memory (unsigned long start, unsigned long end, void *arg) 144filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
145{ 145{
146 unsigned long range_start, range_end, prev_start; 146 unsigned long range_start, range_end, prev_start;
@@ -176,7 +176,7 @@ filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
176 return 0; 176 return 0;
177} 177}
178 178
179static void 179static void __init
180sort_regions (struct rsvd_region *rsvd_region, int max) 180sort_regions (struct rsvd_region *rsvd_region, int max)
181{ 181{
182 int j; 182 int j;
@@ -217,7 +217,7 @@ __initcall(register_memory);
217 * initrd, etc. There are currently %IA64_MAX_RSVD_REGIONS defined, 217 * initrd, etc. There are currently %IA64_MAX_RSVD_REGIONS defined,
218 * see include/asm-ia64/meminit.h if you need to define more. 218 * see include/asm-ia64/meminit.h if you need to define more.
219 */ 219 */
220void 220void __init
221reserve_memory (void) 221reserve_memory (void)
222{ 222{
223 int n = 0; 223 int n = 0;
@@ -269,7 +269,7 @@ reserve_memory (void)
269 * Grab the initrd start and end from the boot parameter struct given us by 269 * Grab the initrd start and end from the boot parameter struct given us by
270 * the boot loader. 270 * the boot loader.
271 */ 271 */
272void 272void __init
273find_initrd (void) 273find_initrd (void)
274{ 274{
275#ifdef CONFIG_BLK_DEV_INITRD 275#ifdef CONFIG_BLK_DEV_INITRD
@@ -361,7 +361,7 @@ mark_bsp_online (void)
361} 361}
362 362
363#ifdef CONFIG_SMP 363#ifdef CONFIG_SMP
364static void 364static void __init
365check_for_logical_procs (void) 365check_for_logical_procs (void)
366{ 366{
367 pal_logical_to_physical_t info; 367 pal_logical_to_physical_t info;
@@ -388,6 +388,14 @@ check_for_logical_procs (void)
388} 388}
389#endif 389#endif
390 390
391static __initdata int nomca;
392static __init int setup_nomca(char *s)
393{
394 nomca = 1;
395 return 0;
396}
397early_param("nomca", setup_nomca);
398
391void __init 399void __init
392setup_arch (char **cmdline_p) 400setup_arch (char **cmdline_p)
393{ 401{
@@ -401,35 +409,15 @@ setup_arch (char **cmdline_p)
401 efi_init(); 409 efi_init();
402 io_port_init(); 410 io_port_init();
403 411
412 parse_early_param();
413
404#ifdef CONFIG_IA64_GENERIC 414#ifdef CONFIG_IA64_GENERIC
405 { 415 machvec_init(NULL);
406 const char *mvec_name = strstr (*cmdline_p, "machvec=");
407 char str[64];
408
409 if (mvec_name) {
410 const char *end;
411 size_t len;
412
413 mvec_name += 8;
414 end = strchr (mvec_name, ' ');
415 if (end)
416 len = end - mvec_name;
417 else
418 len = strlen (mvec_name);
419 len = min(len, sizeof (str) - 1);
420 strncpy (str, mvec_name, len);
421 str[len] = '\0';
422 mvec_name = str;
423 } else
424 mvec_name = acpi_get_sysname();
425 machvec_init(mvec_name);
426 }
427#endif 416#endif
428 417
429 if (early_console_setup(*cmdline_p) == 0) 418 if (early_console_setup(*cmdline_p) == 0)
430 mark_bsp_online(); 419 mark_bsp_online();
431 420
432 parse_early_param();
433#ifdef CONFIG_ACPI 421#ifdef CONFIG_ACPI
434 /* Initialize the ACPI boot-time table parser */ 422 /* Initialize the ACPI boot-time table parser */
435 acpi_table_init(); 423 acpi_table_init();
@@ -492,7 +480,7 @@ setup_arch (char **cmdline_p)
492#endif 480#endif
493 481
494 /* enable IA-64 Machine Check Abort Handling unless disabled */ 482 /* enable IA-64 Machine Check Abort Handling unless disabled */
495 if (!strstr(saved_command_line, "nomca")) 483 if (!nomca)
496 ia64_mca_init(); 484 ia64_mca_init();
497 485
498 platform_setup(cmdline_p); 486 platform_setup(cmdline_p);
@@ -622,7 +610,7 @@ struct seq_operations cpuinfo_op = {
622 .show = show_cpuinfo 610 .show = show_cpuinfo
623}; 611};
624 612
625void 613static void __cpuinit
626identify_cpu (struct cpuinfo_ia64 *c) 614identify_cpu (struct cpuinfo_ia64 *c)
627{ 615{
628 union { 616 union {
@@ -699,7 +687,7 @@ setup_per_cpu_areas (void)
699 * In addition, the minimum of the i-cache stride sizes is calculated for 687 * In addition, the minimum of the i-cache stride sizes is calculated for
700 * "flush_icache_range()". 688 * "flush_icache_range()".
701 */ 689 */
702static void 690static void __cpuinit
703get_max_cacheline_size (void) 691get_max_cacheline_size (void)
704{ 692{
705 unsigned long line_size, max = 1; 693 unsigned long line_size, max = 1;
@@ -762,10 +750,10 @@ get_max_cacheline_size (void)
762 * cpu_init() initializes state that is per-CPU. This function acts 750 * cpu_init() initializes state that is per-CPU. This function acts
763 * as a 'CPU state barrier', nothing should get across. 751 * as a 'CPU state barrier', nothing should get across.
764 */ 752 */
765void 753void __cpuinit
766cpu_init (void) 754cpu_init (void)
767{ 755{
768 extern void __devinit ia64_mmu_init (void *); 756 extern void __cpuinit ia64_mmu_init (void *);
769 unsigned long num_phys_stacked; 757 unsigned long num_phys_stacked;
770 pal_vm_info_2_u_t vmi; 758 pal_vm_info_2_u_t vmi;
771 unsigned int max_ctx; 759 unsigned int max_ctx;
@@ -893,7 +881,7 @@ void sched_cacheflush(void)
893 ia64_sal_cache_flush(3); 881 ia64_sal_cache_flush(3);
894} 882}
895 883
896void 884void __init
897check_bugs (void) 885check_bugs (void)
898{ 886{
899 ia64_patch_mckinley_e9((unsigned long) __start___mckinley_e9_bundles, 887 ia64_patch_mckinley_e9((unsigned long) __start___mckinley_e9_bundles,