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

From: Ingo Molnar
Date: Thu Feb 05 2009 - 14:59:21 EST



* 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.
>
> This is based on 2.6.29-rc3
>
> Signed-Off-By: Ben Greear <greearb@xxxxxxxxxxxxxxx>
>
>
> Thanks,
> Ben
>
> --
> 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..e96bf19 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -87,6 +87,7 @@ u8 acpi_sci_flags __initdata;
> int acpi_sci_override_gsi __initdata;
> int acpi_skip_timer_override __initdata;
> int acpi_use_timer_override __initdata;
> +int force_smp_found_cfg __initdata;
>
> #ifdef CONFIG_X86_LOCAL_APIC
> static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
> @@ -1335,6 +1336,14 @@ static void __init early_acpi_process_madt(void)
> #endif
> }
>
> +static int __init parse_force_smp_found_cfg(char *arg)
> +{
> + force_smp_found_cfg = 1;
> + return 0;
> +}
> +early_param("force_smp_found_cfg", parse_force_smp_found_cfg);
> +
> +
> static void __init acpi_process_madt(void)
> {
> #ifdef CONFIG_X86_LOCAL_APIC
> @@ -1381,9 +1390,14 @@ static void __init acpi_process_madt(void)
> * Boot with "acpi=off" to use MPS on such a system.
> */
> if (smp_found_config) {
> - printk(KERN_WARNING PREFIX
> - "No APIC-table, disabling MPS\n");
> - smp_found_config = 0;
> + if (force_smp_found_cfg)
> + printk(KERN_WARNING PREFIX
> + "No APIC-table, wanted to disable MPS, but will not\n due to force_smp_found_cfg=1\n");
> + else {
> + printk(KERN_WARNING PREFIX
> + "No APIC-table, disabling MPS. Use force_smp_found_cfg=1 to override\n");
> + smp_found_config = 0;
> + }
> }
> }
>

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?

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/