From: Yinghai Lu <yinghai@kernel.org>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-pci@vger.kernel.org
Subject: [PATCH] x86: add X86_UPDATE_MPTABLE option
Date: Sat, 16 May 2009 09:44:59 -0700 [thread overview]
Message-ID: <4A0EED8B.6040704@kernel.org> (raw)
In-Reply-To: <4A0DC7DC.7000204@kernel.org>
so could enable it for special purpose.
1. for acpi enabled kernel kexec kernel without acpi
2. for crossing check mptable or have correct mptable
even with this option enabled, user still need to use
update_mpatble or alloc_mptable in command line
[ Impact: new config option to disable update_mptable ]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
arch/x86/Kconfig | 10 ++++++++++
arch/x86/include/asm/mpspec.h | 9 +++++++--
arch/x86/kernel/acpi/boot.c | 3 ++-
arch/x86/kernel/mpparse.c | 4 ++++
4 files changed, 23 insertions(+), 3 deletions(-)
Index: linux-2.6/arch/x86/Kconfig
===================================================================
--- linux-2.6.orig/arch/x86/Kconfig
+++ linux-2.6/arch/x86/Kconfig
@@ -292,6 +292,16 @@ config X86_MPPARSE
For old smp systems that do not have proper acpi support. Newer systems
(esp with 64bit cpus) with acpi support, MADT and DSDT will override it
+config X86_UPDATE_MPTABLE
+ bool "Enable update mptable according to acpi" if ACPI
+ default n
+ depends on X86_MPPARSE && ACPI
+ ---help---
+ some systems do not have correct mptable. with "update_mptable" or
+ "alloc_mptable" kernel could try to update mptable according to DSDT.
+ Then could use kexec to start second kernel (even old) without acpi
+ support or "acpi=off"
+
config X86_BIGSMP
bool "Support for big SMP systems with more than 8 CPUs"
depends on X86_32 && SMP
Index: linux-2.6/arch/x86/kernel/acpi/boot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/boot.c
+++ linux-2.6/arch/x86/kernel/acpi/boot.c
@@ -1159,7 +1159,7 @@ void __init mp_config_acpi_legacy_irqs(v
static int mp_config_acpi_gsi(struct device *dev, u32 gsi, int trigger,
int polarity)
{
-#ifdef CONFIG_X86_MPPARSE
+#ifdef CONFIG_X86_UPDATE_MPTABLE
struct mpc_intsrc mp_irq;
struct pci_dev *pdev;
unsigned char number;
@@ -1191,6 +1191,7 @@ static int mp_config_acpi_gsi(struct dev
save_mp_irq(&mp_irq);
#endif
+
return 0;
}
Index: linux-2.6/arch/x86/kernel/mpparse.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/mpparse.c
+++ linux-2.6/arch/x86/kernel/mpparse.c
@@ -797,6 +797,8 @@ void __init find_smp_config(void)
__find_smp_config(1);
}
+#ifdef CONFIG_X86_UPDATE_MPTABLE
+
#ifdef CONFIG_X86_IO_APIC
static u8 __initdata irq_used[MAX_IRQ_SOURCES];
@@ -1086,3 +1088,5 @@ static int __init update_mp_table(void)
}
late_initcall(update_mp_table);
+
+#endif /* CONFIG_X86_UPDATE_MPTABLE */
Index: linux-2.6/arch/x86/include/asm/mpspec.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/mpspec.h
+++ linux-2.6/arch/x86/include/asm/mpspec.h
@@ -60,9 +60,15 @@ extern void get_smp_config(void);
#ifdef CONFIG_X86_MPPARSE
extern void find_smp_config(void);
-extern void early_reserve_e820_mpc_new(void);
#else
static inline void find_smp_config(void) { }
+#endif
+
+#ifdef CONFIG_X86_UPDATE_MPTABLE
+extern int enable_update_mptable;
+extern void early_reserve_e820_mpc_new(void);
+#else
+#define enable_update_mptable (0)
static inline void early_reserve_e820_mpc_new(void) { }
#endif
@@ -72,7 +78,6 @@ extern void mp_register_ioapic(int id, u
extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger,
u32 gsi);
extern void mp_config_acpi_legacy_irqs(void);
-extern int enable_update_mptable;
struct device;
extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level,
int active_high_low);
next prev parent reply other threads:[~2009-05-16 16:45 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-15 19:51 [PATCH] x86: update_mptable need pci_routeirq Yinghai Lu
2009-05-15 19:53 ` [PATCH] x86/acpi: don't call mp_config_acpi_gsi if update_mptable is not used Yinghai Lu
2009-05-18 7:40 ` [tip:irq/numa] x86, irq: don't call mp_config_acpi_gsi() if update_mptable is not enabled tip-bot for Yinghai Lu
2009-05-15 21:07 ` [PATCH] x86: update_mptable need pci_routeirq Bjorn Helgaas
2009-05-15 21:13 ` Yinghai Lu
2009-05-15 21:52 ` Bjorn Helgaas
2009-05-15 22:03 ` Yinghai Lu
2009-05-15 22:08 ` Bjorn Helgaas
2009-05-16 10:25 ` Ingo Molnar
2009-05-16 16:44 ` Yinghai Lu [this message]
2009-05-18 15:41 ` [PATCH] x86: add X86_UPDATE_MPTABLE option Bjorn Helgaas
2009-05-18 17:39 ` Yinghai Lu
2009-05-18 17:59 ` [PATCH, v2] " Yinghai Lu
2009-05-18 20:58 ` Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A0EED8B.6040704@kernel.org \
--to=yinghai@kernel.org \
--cc=hpa@zytor.com \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox