
From: Hugh Dickins <hugh@veritas.com>

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

_
