Re: PATCH: (v2) Allow over-ride of smp_found_cfg with kernel cmd-lineoption.

From: Ben Greear
Date: Fri Feb 06 2009 - 14:22:00 EST


Ingo Molnar wrote:
* Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote:

Allow user to keep smp_found_cfg set to 1 even if MADT
cannot be parsed. This works around funky BIOS on FWA-7304
(VIA CN700 chipset) system, and possibly other systems as well.
Without this override, performance drops by around 15% on
network throughput tests on this system.

I'd _much_ rather have a warning message printed and have a default, unconditional fallback to mptable parsing in this case.

I.e. same end result just no ugly and inconvenient force_smp_found_cfg.

The mptable works fine in most such cases to enumerate apic details. (as it does in your case, evidently)

And if both the ACPI and the MPTABLE is hosed on a box, it cannot be of much use on other OSs either, right?

So please do a patch that removes the 'smp_found_config' and which changes the warning message to warn about no ACPI table in the MADT table. Ok?

An updated patch is attached. It's also inline below, but I'm sure the
inline version is white-space corrupted.

Do not disable mptable parsing just because there is no ACPI table
in the MADT table. This effectively backs out changeset
7b37b5fd9ba32c0c5afc3537eed7e7466f2173e2

Signed-Off-By: Ben Greear<greearb@xxxxxxxxxxxxxxx>

Thanks,
Ben


diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index d37593c..74a50b6 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1379,12 +1379,14 @@ static void __init acpi_process_madt(void)
* ACPI found no MADT, and so ACPI wants UP PIC mode.
* In the event an MPS table was found, forget it.
* Boot with "acpi=off" to use MPS on such a system.
+ *
+ * NOTE: This assumption seems wrong in at least some cases, perhaps
+ * when ACPI is off in the BIOS. Changing to a warning without
+ * setting smp_found_config to zero.
*/
- if (smp_found_config) {
+ if (smp_found_config)
printk(KERN_WARNING PREFIX
- "No APIC-table, disabling MPS\n");
- smp_found_config = 0;
- }
+ "WARNING: No ACPI-table found in the MADT\n");
}

/*



--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index d37593c..74a50b6 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1379,12 +1379,14 @@ static void __init acpi_process_madt(void)
* ACPI found no MADT, and so ACPI wants UP PIC mode.
* In the event an MPS table was found, forget it.
* Boot with "acpi=off" to use MPS on such a system.
+ *
+ * NOTE: This assumption seems wrong in at least some cases, perhaps
+ * when ACPI is off in the BIOS. Changing to a warning without
+ * setting smp_found_config to zero.
*/
- if (smp_found_config) {
+ if (smp_found_config)
printk(KERN_WARNING PREFIX
- "No APIC-table, disabling MPS\n");
- smp_found_config = 0;
- }
+ "WARNING: No ACPI-table found in the MADT\n");
}

/*