[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090205195832.GD3129@elte.hu>
Date: Thu, 5 Feb 2009 20:58:32 +0100
From: Ingo Molnar <mingo@...e.hu>
To: Ben Greear <greearb@...delatech.com>,
Yinghai Lu <yinghai@...nel.org>,
"H. Peter Anvin" <hpa@...or.com>,
Thomas Gleixner <tglx@...utronix.de>,
"Maciej W. Rozycki" <macro@...ux-mips.org>
Cc: linux-kernel <linux-kernel@...r.kernel.org>, len.brown@...el.com
Subject: Re: PATCH: Allow over-ride of smp_found_cfg with kernel cmd-line
option.
* Ben Greear <greearb@...delatech.com> 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@...delatech.com>
>
>
> Thanks,
> Ben
>
> --
> Ben Greear <greearb@...delatech.com>
> 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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists