X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fx86_64%2Fkernel%2Fsetup.c;h=14a25720fe4da3d830752666148f26f032b85c65;hb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;hp=6a21a609455212ac43ad648b8eb3a6f1f77525e4;hpb=c449269f45c2cdf53af08c8d0af37472f66539d9;p=linux-2.6.git diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index 6a21a6094..14a25720f 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c @@ -253,6 +253,8 @@ static __init void parse_cmdline_early (char ** cmdline_p) /* acpi=ht just means: do ACPI MADT parsing at bootup, but don't enable the full ACPI interpreter */ if (!memcmp(from, "acpi=ht", 7)) { + /* if (!acpi_force) */ + disable_acpi(); acpi_ht = 1; } else if (!memcmp(from, "pci=noacpi", 10)) @@ -535,8 +537,7 @@ void __init setup_arch(char **cmdline_p) * the bootmem allocator) but before get_smp_config (to allow parsing * of MADT). */ - if (!acpi_disabled) - acpi_boot_init(); + acpi_boot_init(); #endif #ifdef CONFIG_X86_LOCAL_APIC /* @@ -663,7 +664,7 @@ static int __init init_amd(struct cpuinfo_x86 *c) return r; } -static void __init detect_ht(void) +static void __init detect_ht(struct cpuinfo_x86 *c) { #ifdef CONFIG_SMP u32 eax, ebx, ecx, edx; @@ -671,6 +672,9 @@ static void __init detect_ht(void) int initial_apic_id; int cpu = smp_processor_id(); + if (!cpu_has(c, X86_FEATURE_HT)) + return; + cpuid(1, &eax, &ebx, &ecx, &edx); smp_num_siblings = (ebx & 0xff0000) >> 16; @@ -768,7 +772,6 @@ static void __init init_intel(struct cpuinfo_x86 *c) unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; unsigned n; - select_idle_routine(c); if (c->cpuid_level > 1) { /* supports eax=2 call */ int i, j, n; @@ -837,9 +840,6 @@ static void __init init_intel(struct cpuinfo_x86 *c) c->x86_cache_size = l2 ? l2 : (l1i+l1d); } - if (cpu_has(c, X86_FEATURE_HT)) - detect_ht(); - n = cpuid_eax(0x80000000); if (n >= 0x80000008) { unsigned eax = cpuid_eax(0x80000008); @@ -910,7 +910,7 @@ void __init early_identify_cpu(struct cpuinfo_x86 *c) c->x86_model += ((tfms >> 16) & 0xF) << 4; } if (c->x86_capability[0] & (1<<19)) - c->x86_clflush_size = ((misc >> 8) & 0xff) * 8; + c->x86_clflush_size = ((misc >> 8) & 0xff) * 8; } else { /* Have CPUID level 0 only - unheard of */ c->x86 = 4; @@ -968,7 +968,10 @@ void __init identify_cpu(struct cpuinfo_x86 *c) display_cacheinfo(c); break; } - + + select_idle_routine(c); + detect_ht(c); + /* * On SMP, boot_cpu_data holds the common feature set between * all CPUs; so make sure that we indicate which features are