|
@@ -130,8 +130,8 @@ EXPORT_SYMBOL(ia64_max_iommu_merge_mask);
|
|
/*
|
|
/*
|
|
* We use a special marker for the end of memory and it uses the extra (+1) slot
|
|
* We use a special marker for the end of memory and it uses the extra (+1) slot
|
|
*/
|
|
*/
|
|
-struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1];
|
|
|
|
-int num_rsvd_regions;
|
|
|
|
|
|
+struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1] __initdata;
|
|
|
|
+int num_rsvd_regions __initdata;
|
|
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -140,7 +140,7 @@ int num_rsvd_regions;
|
|
* caller-specified function is called with the memory ranges that remain after filtering.
|
|
* caller-specified function is called with the memory ranges that remain after filtering.
|
|
* This routine does not assume the incoming segments are sorted.
|
|
* This routine does not assume the incoming segments are sorted.
|
|
*/
|
|
*/
|
|
-int
|
|
|
|
|
|
+int __init
|
|
filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
|
|
filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
|
|
{
|
|
{
|
|
unsigned long range_start, range_end, prev_start;
|
|
unsigned long range_start, range_end, prev_start;
|
|
@@ -176,7 +176,7 @@ filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void
|
|
|
|
|
|
+static void __init
|
|
sort_regions (struct rsvd_region *rsvd_region, int max)
|
|
sort_regions (struct rsvd_region *rsvd_region, int max)
|
|
{
|
|
{
|
|
int j;
|
|
int j;
|
|
@@ -217,7 +217,7 @@ __initcall(register_memory);
|
|
* initrd, etc. There are currently %IA64_MAX_RSVD_REGIONS defined,
|
|
* initrd, etc. There are currently %IA64_MAX_RSVD_REGIONS defined,
|
|
* see include/asm-ia64/meminit.h if you need to define more.
|
|
* see include/asm-ia64/meminit.h if you need to define more.
|
|
*/
|
|
*/
|
|
-void
|
|
|
|
|
|
+void __init
|
|
reserve_memory (void)
|
|
reserve_memory (void)
|
|
{
|
|
{
|
|
int n = 0;
|
|
int n = 0;
|
|
@@ -269,7 +269,7 @@ reserve_memory (void)
|
|
* Grab the initrd start and end from the boot parameter struct given us by
|
|
* Grab the initrd start and end from the boot parameter struct given us by
|
|
* the boot loader.
|
|
* the boot loader.
|
|
*/
|
|
*/
|
|
-void
|
|
|
|
|
|
+void __init
|
|
find_initrd (void)
|
|
find_initrd (void)
|
|
{
|
|
{
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
@@ -361,7 +361,7 @@ mark_bsp_online (void)
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
#ifdef CONFIG_SMP
|
|
-static void
|
|
|
|
|
|
+static void __init
|
|
check_for_logical_procs (void)
|
|
check_for_logical_procs (void)
|
|
{
|
|
{
|
|
pal_logical_to_physical_t info;
|
|
pal_logical_to_physical_t info;
|
|
@@ -388,6 +388,14 @@ check_for_logical_procs (void)
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+static __initdata int nomca;
|
|
|
|
+static __init int setup_nomca(char *s)
|
|
|
|
+{
|
|
|
|
+ nomca = 1;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+early_param("nomca", setup_nomca);
|
|
|
|
+
|
|
void __init
|
|
void __init
|
|
setup_arch (char **cmdline_p)
|
|
setup_arch (char **cmdline_p)
|
|
{
|
|
{
|
|
@@ -401,35 +409,15 @@ setup_arch (char **cmdline_p)
|
|
efi_init();
|
|
efi_init();
|
|
io_port_init();
|
|
io_port_init();
|
|
|
|
|
|
|
|
+ parse_early_param();
|
|
|
|
+
|
|
#ifdef CONFIG_IA64_GENERIC
|
|
#ifdef CONFIG_IA64_GENERIC
|
|
- {
|
|
|
|
- const char *mvec_name = strstr (*cmdline_p, "machvec=");
|
|
|
|
- char str[64];
|
|
|
|
-
|
|
|
|
- if (mvec_name) {
|
|
|
|
- const char *end;
|
|
|
|
- size_t len;
|
|
|
|
-
|
|
|
|
- mvec_name += 8;
|
|
|
|
- end = strchr (mvec_name, ' ');
|
|
|
|
- if (end)
|
|
|
|
- len = end - mvec_name;
|
|
|
|
- else
|
|
|
|
- len = strlen (mvec_name);
|
|
|
|
- len = min(len, sizeof (str) - 1);
|
|
|
|
- strncpy (str, mvec_name, len);
|
|
|
|
- str[len] = '\0';
|
|
|
|
- mvec_name = str;
|
|
|
|
- } else
|
|
|
|
- mvec_name = acpi_get_sysname();
|
|
|
|
- machvec_init(mvec_name);
|
|
|
|
- }
|
|
|
|
|
|
+ machvec_init(NULL);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
if (early_console_setup(*cmdline_p) == 0)
|
|
if (early_console_setup(*cmdline_p) == 0)
|
|
mark_bsp_online();
|
|
mark_bsp_online();
|
|
|
|
|
|
- parse_early_param();
|
|
|
|
#ifdef CONFIG_ACPI
|
|
#ifdef CONFIG_ACPI
|
|
/* Initialize the ACPI boot-time table parser */
|
|
/* Initialize the ACPI boot-time table parser */
|
|
acpi_table_init();
|
|
acpi_table_init();
|
|
@@ -492,7 +480,7 @@ setup_arch (char **cmdline_p)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* enable IA-64 Machine Check Abort Handling unless disabled */
|
|
/* enable IA-64 Machine Check Abort Handling unless disabled */
|
|
- if (!strstr(saved_command_line, "nomca"))
|
|
|
|
|
|
+ if (!nomca)
|
|
ia64_mca_init();
|
|
ia64_mca_init();
|
|
|
|
|
|
platform_setup(cmdline_p);
|
|
platform_setup(cmdline_p);
|
|
@@ -622,7 +610,7 @@ struct seq_operations cpuinfo_op = {
|
|
.show = show_cpuinfo
|
|
.show = show_cpuinfo
|
|
};
|
|
};
|
|
|
|
|
|
-void
|
|
|
|
|
|
+static void __cpuinit
|
|
identify_cpu (struct cpuinfo_ia64 *c)
|
|
identify_cpu (struct cpuinfo_ia64 *c)
|
|
{
|
|
{
|
|
union {
|
|
union {
|
|
@@ -699,7 +687,7 @@ setup_per_cpu_areas (void)
|
|
* In addition, the minimum of the i-cache stride sizes is calculated for
|
|
* In addition, the minimum of the i-cache stride sizes is calculated for
|
|
* "flush_icache_range()".
|
|
* "flush_icache_range()".
|
|
*/
|
|
*/
|
|
-static void
|
|
|
|
|
|
+static void __cpuinit
|
|
get_max_cacheline_size (void)
|
|
get_max_cacheline_size (void)
|
|
{
|
|
{
|
|
unsigned long line_size, max = 1;
|
|
unsigned long line_size, max = 1;
|
|
@@ -762,10 +750,10 @@ get_max_cacheline_size (void)
|
|
* cpu_init() initializes state that is per-CPU. This function acts
|
|
* cpu_init() initializes state that is per-CPU. This function acts
|
|
* as a 'CPU state barrier', nothing should get across.
|
|
* as a 'CPU state barrier', nothing should get across.
|
|
*/
|
|
*/
|
|
-void
|
|
|
|
|
|
+void __cpuinit
|
|
cpu_init (void)
|
|
cpu_init (void)
|
|
{
|
|
{
|
|
- extern void __devinit ia64_mmu_init (void *);
|
|
|
|
|
|
+ extern void __cpuinit ia64_mmu_init (void *);
|
|
unsigned long num_phys_stacked;
|
|
unsigned long num_phys_stacked;
|
|
pal_vm_info_2_u_t vmi;
|
|
pal_vm_info_2_u_t vmi;
|
|
unsigned int max_ctx;
|
|
unsigned int max_ctx;
|
|
@@ -893,7 +881,7 @@ void sched_cacheflush(void)
|
|
ia64_sal_cache_flush(3);
|
|
ia64_sal_cache_flush(3);
|
|
}
|
|
}
|
|
|
|
|
|
-void
|
|
|
|
|
|
+void __init
|
|
check_bugs (void)
|
|
check_bugs (void)
|
|
{
|
|
{
|
|
ia64_patch_mckinley_e9((unsigned long) __start___mckinley_e9_bundles,
|
|
ia64_patch_mckinley_e9((unsigned long) __start___mckinley_e9_bundles,
|