From: Hugh Dickins What's the point of bootparam "acpismp=force"? A way to change your mind if you just said "acpi=off"? A hurdle to jump to get CONFIG_ACPI_HT_ONLY to do what you ask? 2.4.18 used to need it to enable HT, but not recent releases. It can't configure in what's not there, and now serves only to confuse: kill it. And you can't enable HyperThreading if you don't call acpi_boot_init in the CONFIG_ACPI_HT_ONLY case. But allow "acpi=off" to disable that; and let acpi_disabled be 1 if CONFIG_ACPI is not defined. Sorry, bootparam "noht" remains broken: it's currently a way of erasing the "ht" flag from cpuinfo, and setting smp_num_siblings to 1 even when it should say 2. Please, someone who knows their way around the ACPI table handling fix it (it should be selecting one from each pair in either acpi_boot_init), or else we just remove it. arch/i386/kernel/setup.c | 15 +++++++-------- drivers/acpi/Kconfig | 3 --- 2 files changed, 7 insertions(+), 11 deletions(-) diff -puN arch/i386/kernel/setup.c~acpismp-fix arch/i386/kernel/setup.c --- 25/arch/i386/kernel/setup.c~acpismp-fix 2003-06-26 18:42:17.000000000 -0700 +++ 25-akpm/arch/i386/kernel/setup.c 2003-06-26 18:42:17.000000000 -0700 @@ -61,10 +61,10 @@ struct cpuinfo_x86 boot_cpu_data = { 0, unsigned long mmu_cr4_features; EXPORT_SYMBOL_GPL(mmu_cr4_features); -#ifdef CONFIG_ACPI_HT_ONLY -int acpi_disabled = 1; -#else +#ifdef CONFIG_ACPI int acpi_disabled = 0; +#else +int acpi_disabled = 1; #endif EXPORT_SYMBOL(acpi_disabled); @@ -519,10 +519,6 @@ static void __init parse_cmdline_early ( if (c == ' ' && !memcmp(from, "acpi=off", 8)) acpi_disabled = 1; - /* "acpismp=force" turns on ACPI again */ - else if (!memcmp(from, "acpismp=force", 14)) - acpi_disabled = 0; - /* * highmem=size forces highmem to be exactly 'size' bytes. * This works even on boxes that have no highmem otherwise. @@ -977,13 +973,16 @@ void __init setup_arch(char **cmdline_p) generic_apic_probe(*cmdline_p); #endif -#ifdef CONFIG_ACPI_BOOT +#if defined(CONFIG_ACPI_BOOT) || defined(CONFIG_ACPI_HT_ONLY) /* * Parse the ACPI tables for possible boot-time SMP configuration. */ if (!acpi_disabled) acpi_boot_init(); #endif +#ifdef CONFIG_ACPI_HT_ONLY + acpi_disabled = 1; +#endif #ifdef CONFIG_X86_LOCAL_APIC if (smp_found_config) get_smp_config(); diff -puN drivers/acpi/Kconfig~acpismp-fix drivers/acpi/Kconfig --- 25/drivers/acpi/Kconfig~acpismp-fix 2003-06-26 18:42:17.000000000 -0700 +++ 25-akpm/drivers/acpi/Kconfig 2003-06-26 18:42:17.000000000 -0700 @@ -49,9 +49,6 @@ config ACPI_HT_ONLY Full ACPI support (CONFIG_ACPI) is preferred. Use this option only if you wish to limit ACPI's role to processor enumeration. - In this configuration, ACPI defaults to off. It must be enabled - on the command-line with the "acpismp=force" option. - config ACPI_BOOT bool depends on IA64 && (!IA64_HP_SIM || IA64_SGI_SN) || X86 && ACPI && !ACPI_HT_ONLY _