summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-09-26 10:52:32 +0200
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 10:52:32 +0200
commit9ca33eb6981549c0d1b7aea7f99f1ba602161356 (patch)
tree9b74231b83fdf834f40fac40b95b0b6656835b9b
parent[PATCH] remove lock prefix from is_at_popf() tests (diff)
downloadlinux-9ca33eb6981549c0d1b7aea7f99f1ba602161356.tar.xz
linux-9ca33eb6981549c0d1b7aea7f99f1ba602161356.zip
[PATCH] Use early CPU identify before early command line parsing
This makes it possible to modify CPU flags in command line options without hacks. And remove another copy in head64.c Signed-off-by: Andi Kleen <ak@suse.de>
-rw-r--r--arch/x86_64/kernel/head64.c19
-rw-r--r--arch/x86_64/kernel/setup.c4
2 files changed, 2 insertions, 21 deletions
diff --git a/arch/x86_64/kernel/head64.c b/arch/x86_64/kernel/head64.c
index bacbd75c63ad..f2461fde9f8f 100644
--- a/arch/x86_64/kernel/head64.c
+++ b/arch/x86_64/kernel/head64.c
@@ -56,24 +56,6 @@ static void __init copy_bootdata(char *real_mode_data)
printk("Bootdata ok (command line is %s)\n", saved_command_line);
}
-static void __init setup_boot_cpu_data(void)
-{
- unsigned int dummy, eax;
-
- /* get vendor info */
- cpuid(0, (unsigned int *)&boot_cpu_data.cpuid_level,
- (unsigned int *)&boot_cpu_data.x86_vendor_id[0],
- (unsigned int *)&boot_cpu_data.x86_vendor_id[8],
- (unsigned int *)&boot_cpu_data.x86_vendor_id[4]);
-
- /* get cpu type */
- cpuid(1, &eax, &dummy, &dummy,
- (unsigned int *) &boot_cpu_data.x86_capability);
- boot_cpu_data.x86 = (eax >> 8) & 0xf;
- boot_cpu_data.x86_model = (eax >> 4) & 0xf;
- boot_cpu_data.x86_mask = eax & 0xf;
-}
-
void __init x86_64_start_kernel(char * real_mode_data)
{
char *s;
@@ -117,6 +99,5 @@ void __init x86_64_start_kernel(char * real_mode_data)
if (__pa_symbol(&_end) >= KERNEL_TEXT_SIZE)
panic("Kernel too big for kernel mapping\n");
- setup_boot_cpu_data();
start_kernel();
}
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index ddc3b2d9a165..73f1cdd140fe 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -545,10 +545,10 @@ void __init setup_arch(char **cmdline_p)
data_resource.start = virt_to_phys(&_etext);
data_resource.end = virt_to_phys(&_edata)-1;
- parse_cmdline_early(cmdline_p);
-
early_identify_cpu(&boot_cpu_data);
+ parse_cmdline_early(cmdline_p);
+
/*
* partially used pages are not usable - thus
* we are rounding upwards: