On Monday 18 May 2009 11:59:57 am Yinghai Lu wrote: > > 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 > > v2: update to make it depends on KEXEC according to Bjorn Wait a minute. I did raise the possibility of a config option, but only in the context of code whose only purpose was to help debug the BIOS. And I suggested that code like that might not belong in the mainline at all. But this code is not like that, since you apparently need it for kexec in general. I don't think you should add an additional config option just for this code. A new option would just add complexity for no benefit. Bjorn > esp system have several cards and there is bridge in those cards > [ Impact: new config option to disable update_mptable ] > > Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> > Cc: Bjorn Helgaas <bjorn.helgaas@xxxxxx> > Cc: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> > Cc: Len Brown <lenb@xxxxxxxxxx> > > --- > arch/x86/Kconfig | 10 ++++++++++ > arch/x86/include/asm/mpspec.h | 6 +++--- > arch/x86/kernel/acpi/boot.c | 3 ++- > arch/x86/kernel/mpparse.c | 4 ++++ > 4 files changed, 19 insertions(+), 4 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" > + default n > + depends on X86_MPPARSE && ACPI && KEXEC > + ---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 compiled in 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]; > > @@ -1080,3 +1082,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,10 +60,8 @@ 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) { } > -static inline void early_reserve_e820_mpc_new(void) { } > #endif > > void __cpuinit generic_processor_info(int apicid, int version); > @@ -87,13 +85,15 @@ static inline int acpi_probe_gsi(void) > } > #endif /* CONFIG_ACPI */ > > -#ifdef CONFIG_X86_MPPARSE > +#ifdef CONFIG_X86_UPDATE_MPTABLE > extern int enable_update_mptable; > +extern void early_reserve_e820_mpc_new(void); > #else > static inline int enable_update_mptable(void) > { > return 0; > } > +static inline void early_reserve_e820_mpc_new(void) { } > #endif > > #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html