patch-2.4.19 linux-2.4.19/arch/ia64/kernel/setup.c
Next file: linux-2.4.19/arch/ia64/kernel/signal.c
Previous file: linux-2.4.19/arch/ia64/kernel/sal.c
Back to the patch index
Back to the overall index
- Lines: 138
- Date:
Fri Aug 2 17:39:42 2002
- Orig file:
linux-2.4.18/arch/ia64/kernel/setup.c
- Orig date:
Tue Nov 13 09:01:16 2001
diff -urN linux-2.4.18/arch/ia64/kernel/setup.c linux-2.4.19/arch/ia64/kernel/setup.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1998-2001 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
- * Copyright (C) 1998, 1999, 2001 Stephane Eranian <eranian@hpl.hp.com>
+ * Stephane Eranian <eranian@hpl.hp.com>
* Copyright (C) 2000, Rohit Seth <rohit.seth@intel.com>
* Copyright (C) 1999 VA Linux Systems
* Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
@@ -147,6 +147,10 @@
}
+/*
+ * Find a place to put the bootmap and return its starting address in bootmap_start.
+ * This address must be page-aligned.
+ */
static int
find_bootmap_location (unsigned long start, unsigned long end, void *arg)
{
@@ -165,7 +169,7 @@
for (i = 0; i < num_rsvd_regions; i++) {
range_start = MAX(start, free_start);
- range_end = MIN(end, rsvd_region[i].start);
+ range_end = MIN(end, rsvd_region[i].start & PAGE_MASK);
if (range_end <= range_start) continue; /* skip over empty range */
@@ -177,7 +181,7 @@
/* nothing more available in this segment */
if (range_end == end) return 0;
- free_start = rsvd_region[i].end;
+ free_start = PAGE_ALIGN(rsvd_region[i].end);
}
return 0;
}
@@ -306,6 +310,10 @@
/* process SAL system table: */
ia64_sal_init(efi.sal_systab);
+#ifdef CONFIG_IA64_GENERIC
+ machvec_init(acpi_get_sysname());
+#endif
+
/*
* Set `iobase' to the appropriate address in region 6
* (uncached access range)
@@ -332,10 +340,6 @@
cpu_init(); /* initialize the bootstrap CPU */
-#ifdef CONFIG_IA64_GENERIC
- machvec_init(acpi_get_sysname());
-#endif
-
if (efi.acpi20) {
/* Parse the ACPI 2.0 tables */
acpi20_parse(efi.acpi20);
@@ -343,6 +347,10 @@
/* Parse the ACPI tables */
acpi_parse(efi.acpi);
}
+ if (efi.hcdp) {
+ /* Setup the serial ports described by HCDP */
+ setup_serial_hcdp(efi.hcdp);
+ }
#ifdef CONFIG_VT
# if defined(CONFIG_VGA_CONSOLE)
@@ -371,17 +379,14 @@
{
#ifdef CONFIG_SMP
# define lpj c->loops_per_jiffy
+# define cpu c->processor
#else
# define lpj loops_per_jiffy
+# define cpu 0
#endif
char family[32], features[128], *cp;
struct cpuinfo_ia64 *c = v;
- unsigned long mask, cpu = c - cpu_data(0);
-
-#ifdef CONFIG_SMP
- if (!(cpu_online_map & (1 << cpu)))
- return 0;
-#endif
+ unsigned long mask;
mask = c->features;
@@ -403,7 +408,7 @@
sprintf(cp, " 0x%lx", mask);
seq_printf(m,
- "processor : %lu\n"
+ "processor : %d\n"
"vendor : %s\n"
"arch : IA-64\n"
"family : %s\n"
@@ -427,6 +432,10 @@
static void *
c_start (struct seq_file *m, loff_t *pos)
{
+#ifdef CONFIG_SMP
+ while (*pos < NR_CPUS && !(cpu_online_map & (1 << *pos)))
+ ++*pos;
+#endif
return *pos < NR_CPUS ? cpu_data(*pos) : NULL;
}
@@ -483,6 +492,9 @@
cpuid.bits[i] = ia64_get_cpuid(i);
memcpy(c->vendor, cpuid.field.vendor, 16);
+#ifdef CONFIG_SMP
+ c->processor = smp_processor_id();
+#endif
c->ppn = cpuid.field.ppn;
c->number = cpuid.field.number;
c->revision = cpuid.field.revision;
@@ -534,7 +546,7 @@
= alloc_bootmem_pages_node(NODE_DATA(numa_node_id()),
sizeof(struct cpuinfo_ia64));
for (cpu = 1; cpu < NR_CPUS; ++cpu)
- memcpy(my_cpu_data->cpu_data[cpu]->cpu_data_ptrs,
+ memcpy(my_cpu_data->cpu_data[cpu]->cpu_data,
my_cpu_data->cpu_data, sizeof(my_cpu_data->cpu_data));
} else {
order = get_order(sizeof(struct cpuinfo_ia64));
@@ -616,4 +628,6 @@
num_phys_stacked = 96;
}
local_cpu_data->phys_stacked_size_p8 = num_phys_stacked*8 + 8;
+
+ platform_cpu_init();
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)