diff options
author | Yinghai Lu <yhlu.kernel@gmail.com> | 2008-06-18 17:29:31 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 10:39:07 +0200 |
commit | fcfa146e412023dd55f8855f240b2c2082dc1baa (patch) | |
tree | 76cc7c6a9b9cd1f303f2cc4f4360d9f3ce2123a5 /arch/x86/kernel/mpparse.c | |
parent | 95a71a45c250177854f7c530810c88a8a19a443b (diff) | |
download | op-kernel-dev-fcfa146e412023dd55f8855f240b2c2082dc1baa.zip op-kernel-dev-fcfa146e412023dd55f8855f240b2c2082dc1baa.tar.gz |
x86: update mptable fix with no ioapic v2
if the system doesn't have ioapic, we don't need to store entries for mptable
update
also let mp_config_acpi_gsi not call func in mpparse
so later could decouple mpparse with acpi more easily
Reported-by: Daniel Exner <dex@dragonslave.de>
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Daniel Exner <dex@dragonslave.de>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/mpparse.c')
-rw-r--r-- | arch/x86/kernel/mpparse.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index 014ac5d..8b6b1e0 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c @@ -34,8 +34,6 @@ #include <mach_mpparse.h> #endif -int enable_update_mptable; - /* * Checksum an MP configuration block. */ @@ -246,7 +244,7 @@ static void __init print_mp_irq_info(struct mp_config_intsrc *mp_irq) mp_irq->mp_srcbusirq, mp_irq->mp_dstapic, mp_irq->mp_dstirq); } -static void assign_to_mp_irq(struct mpc_config_intsrc *m, +static void __init assign_to_mp_irq(struct mpc_config_intsrc *m, struct mp_config_intsrc *mp_irq) { mp_irq->mp_dstapic = m->mpc_dstapic; @@ -270,7 +268,7 @@ static void __init assign_to_mpc_intsrc(struct mp_config_intsrc *mp_irq, m->mpc_dstirq = mp_irq->mp_dstirq; } -static int mp_irq_mpc_intsrc_cmp(struct mp_config_intsrc *mp_irq, +static int __init mp_irq_mpc_intsrc_cmp(struct mp_config_intsrc *mp_irq, struct mpc_config_intsrc *m) { if (mp_irq->mp_dstapic != m->mpc_dstapic) @@ -291,17 +289,16 @@ static int mp_irq_mpc_intsrc_cmp(struct mp_config_intsrc *mp_irq, return 0; } -void MP_intsrc_info(struct mpc_config_intsrc *m) +static void __init MP_intsrc_info(struct mpc_config_intsrc *m) { int i; print_MP_intsrc_info(m); - if (enable_update_mptable) - for (i = 0; i < mp_irq_entries; i++) { - if (!mp_irq_mpc_intsrc_cmp(&mp_irqs[i], m)) - return; - } + for (i = 0; i < mp_irq_entries; i++) { + if (!mp_irq_mpc_intsrc_cmp(&mp_irqs[i], m)) + return; + } assign_to_mp_irq(m, &mp_irqs[mp_irq_entries]); if (++mp_irq_entries == MAX_IRQ_SOURCES) @@ -1113,6 +1110,8 @@ out: return 0; } +static int __initdata enable_update_mptable; + static int __init update_mptable_setup(char *str) { enable_update_mptable = 1; |