/* 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))
* 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
/*
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;
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;
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;
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);
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;
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