diff options
author | Yinghai Lu <yinghai@kernel.org> | 2009-05-15 16:05:16 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-05-18 03:33:29 -0400 |
commit | f1bdb523880c7f6990e9e8e50b0fc972ca475e84 (patch) | |
tree | bf46a5a0f06b5b1a28cc392ee0aab0d454951915 /arch | |
parent | 629e15d245f46bef9d26199b450f882f9437a8fe (diff) |
x86, irq: don't call mp_config_acpi_gsi() if update_mptable is not enabled
Len expressed concern that the update_mptable feature has
side-effects on the ACPI code.
Make it sure explicitly that the code only ever gets called if
the (default disabled) update_mptable boot quirk option is
disabled.
[ Impact: isolate the update_mptable feature from ACPI code more ]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Len Brown <lenb@kernel.org>
LKML-Reference: <4A0DC832.5090200@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/mpspec.h | 9 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/mpparse.c | 2 |
3 files changed, 13 insertions, 2 deletions
diff --git a/arch/x86/include/asm/mpspec.h b/arch/x86/include/asm/mpspec.h index c34961a45ec0..3dcbaaaa363e 100644 --- a/arch/x86/include/asm/mpspec.h +++ b/arch/x86/include/asm/mpspec.h | |||
@@ -87,6 +87,15 @@ static inline int acpi_probe_gsi(void) | |||
87 | } | 87 | } |
88 | #endif /* CONFIG_ACPI */ | 88 | #endif /* CONFIG_ACPI */ |
89 | 89 | ||
90 | #ifdef CONFIG_X86_MPPARSE | ||
91 | extern int enable_update_mptable; | ||
92 | #else | ||
93 | static inline int enable_update_mptable(void) | ||
94 | { | ||
95 | return 0; | ||
96 | } | ||
97 | #endif | ||
98 | |||
90 | #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) | 99 | #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) |
91 | 100 | ||
92 | struct physid_mask { | 101 | struct physid_mask { |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 4af63dfb0f06..844e5e25213b 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -1226,7 +1226,9 @@ int mp_register_gsi(struct device *dev, u32 gsi, int trigger, int polarity) | |||
1226 | ioapic_pin); | 1226 | ioapic_pin); |
1227 | return gsi; | 1227 | return gsi; |
1228 | } | 1228 | } |
1229 | mp_config_acpi_gsi(dev, gsi, trigger, polarity); | 1229 | |
1230 | if (enable_update_mptable) | ||
1231 | mp_config_acpi_gsi(dev, gsi, trigger, polarity); | ||
1230 | 1232 | ||
1231 | set_io_apic_irq_attr(&irq_attr, ioapic, ioapic_pin, | 1233 | set_io_apic_irq_attr(&irq_attr, ioapic, ioapic_pin, |
1232 | trigger == ACPI_EDGE_SENSITIVE ? 0 : 1, | 1234 | trigger == ACPI_EDGE_SENSITIVE ? 0 : 1, |
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index e6bf9d08e503..651c93b28862 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c | |||
@@ -957,7 +957,7 @@ out: | |||
957 | return 0; | 957 | return 0; |
958 | } | 958 | } |
959 | 959 | ||
960 | static int __initdata enable_update_mptable; | 960 | int enable_update_mptable; |
961 | 961 | ||
962 | static int __init update_mptable_setup(char *str) | 962 | static int __init update_mptable_setup(char *str) |
963 | { | 963 | { |