Patches contributed by Eötvös Lorand University


commit 6b64ee02da20d6c0d97115e0b1ab47f9fa2f0d8f
Author: Ingo Molnar <mingo@elte.hu>
Date:   Fri Jan 30 23:42:18 2009 +0100

    x86, apic, 32-bit: add self-IPI methods
    
    Impact: fix rare crash on 32-bit
    
    The 32-bit APIC drivers had their send_IPI_self vectors set to NULL,
    but ioapic_retrigger_irq() depends on it being always set. Fix it.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/bigsmp_32.c b/arch/x86/kernel/bigsmp_32.c
index ab645c93a6e7..47a62f46afdb 100644
--- a/arch/x86/kernel/bigsmp_32.c
+++ b/arch/x86/kernel/bigsmp_32.c
@@ -252,7 +252,7 @@ struct genapic apic_bigsmp = {
 	.send_IPI_mask_allbutself	= NULL,
 	.send_IPI_allbutself		= bigsmp_send_IPI_allbutself,
 	.send_IPI_all			= bigsmp_send_IPI_all,
-	.send_IPI_self			= NULL,
+	.send_IPI_self			= default_send_IPI_self,
 
 	.wakeup_cpu			= NULL,
 	.trampoline_phys_low		= DEFAULT_TRAMPOLINE_PHYS_LOW,
diff --git a/arch/x86/kernel/es7000_32.c b/arch/x86/kernel/es7000_32.c
index b5b50e8b94a9..d6184c12a182 100644
--- a/arch/x86/kernel/es7000_32.c
+++ b/arch/x86/kernel/es7000_32.c
@@ -786,7 +786,7 @@ struct genapic apic_es7000 = {
 	.send_IPI_mask_allbutself	= NULL,
 	.send_IPI_allbutself		= es7000_send_IPI_allbutself,
 	.send_IPI_all			= es7000_send_IPI_all,
-	.send_IPI_self			= NULL,
+	.send_IPI_self			= default_send_IPI_self,
 
 	.wakeup_cpu			= NULL,
 
diff --git a/arch/x86/kernel/numaq_32.c b/arch/x86/kernel/numaq_32.c
index c143b3292163..947748e17211 100644
--- a/arch/x86/kernel/numaq_32.c
+++ b/arch/x86/kernel/numaq_32.c
@@ -554,7 +554,7 @@ struct genapic apic_numaq = {
 	.send_IPI_mask_allbutself	= NULL,
 	.send_IPI_allbutself		= numaq_send_IPI_allbutself,
 	.send_IPI_all			= numaq_send_IPI_all,
-	.send_IPI_self			= NULL,
+	.send_IPI_self			= default_send_IPI_self,
 
 	.wakeup_cpu			= NULL,
 	.trampoline_phys_low		= NUMAQ_TRAMPOLINE_PHYS_LOW,
diff --git a/arch/x86/kernel/probe_32.c b/arch/x86/kernel/probe_32.c
index 3f12a4011822..22337b75de62 100644
--- a/arch/x86/kernel/probe_32.c
+++ b/arch/x86/kernel/probe_32.c
@@ -116,7 +116,7 @@ struct genapic apic_default = {
 	.send_IPI_mask_allbutself	= default_send_IPI_mask_allbutself_logical,
 	.send_IPI_allbutself		= default_send_IPI_allbutself,
 	.send_IPI_all			= default_send_IPI_all,
-	.send_IPI_self			= NULL,
+	.send_IPI_self			= default_send_IPI_self,
 
 	.wakeup_cpu			= NULL,
 	.trampoline_phys_low		= DEFAULT_TRAMPOLINE_PHYS_LOW,
diff --git a/arch/x86/kernel/summit_32.c b/arch/x86/kernel/summit_32.c
index ecb41b9d7aa0..1e733eff9b33 100644
--- a/arch/x86/kernel/summit_32.c
+++ b/arch/x86/kernel/summit_32.c
@@ -588,7 +588,7 @@ struct genapic apic_summit = {
 	.send_IPI_mask_allbutself	= NULL,
 	.send_IPI_allbutself		= summit_send_IPI_allbutself,
 	.send_IPI_all			= summit_send_IPI_all,
-	.send_IPI_self			= NULL,
+	.send_IPI_self			= default_send_IPI_self,
 
 	.wakeup_cpu			= NULL,
 	.trampoline_phys_low		= DEFAULT_TRAMPOLINE_PHYS_LOW,

commit c43e0e46adf79c321ed3fbf0351e1005fb8a2413
Merge: dba3d36b2f08 f2257b70b0f9
Author: Ingo Molnar <mingo@elte.hu>
Date:   Fri Jan 30 18:23:30 2009 +0100

    Merge branch 'linus' into core/percpu
    
    Conflicts:
            kernel/irq/handle.c

diff --cc kernel/irq/handle.c
index 375d68cd5bf0,3aba8d12f328..f51eaee921b6
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@@ -133,10 -146,8 +145,12 @@@ int __init early_irq_init(void
  	int legacy_count;
  	int i;
  
+ 	init_irq_default_affinity();
+ 
 +	 /* initialize nr_irqs based on nr_cpu_ids */
 +	arch_probe_nr_irqs();
 +	printk(KERN_INFO "NR_IRQS:%d nr_irqs:%d\n", NR_IRQS, nr_irqs);
 +
  	desc = irq_desc_legacy;
  	legacy_count = ARRAY_SIZE(irq_desc_legacy);
  
@@@ -229,8 -233,8 +243,10 @@@ int __init early_irq_init(void
  	int count;
  	int i;
  
+ 	init_irq_default_affinity();
+ 
 +	printk(KERN_INFO "NR_IRQS:%d\n", NR_IRQS);
 +
  	desc = irq_desc;
  	count = ARRAY_SIZE(irq_desc);
  

commit dba3d36b2f0842ed7f25c33cd3a2ccdb3d0df9db
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 29 17:10:12 2009 +0100

    Revert "generic, x86: fix __per_cpu_load relocation"
    
    This reverts commit 5a611268b69f05262936dd177205acbce4471358.
    
    It is causing occasional boot crashes, caused by certain
    linker versions (GNU ld version 2.18.50.0.6-2 20080403) messing up:
    
     82dcc000 D __per_cpu_load
     c16e6000 A __per_cpu_load_abs
    
    The __per_cpu_load value is out of whack. Hpa noticed the following
    detail:
    
      * (gdb) p/x -(0xc16e6000-0x82dcc000)
      * $2 = 0xc16e6000
      * I.e. one is the other << 1
    
    The two symbols should be equal.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index f3180a85c66a..53e21f36a802 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -451,18 +451,17 @@
  * end offset.
  */
 #define PERCPU_VADDR(vaddr, phdr)					\
-	VMLINUX_SYMBOL(__per_cpu_load_abs) = .;				\
-	.data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load_abs)	\
+	VMLINUX_SYMBOL(__per_cpu_load) = .;				\
+	.data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load)		\
 				- LOAD_OFFSET) {			\
 		VMLINUX_SYMBOL(__per_cpu_start) = .;			\
-		VMLINUX_SYMBOL(__per_cpu_load) = LOADADDR(.data.percpu) + LOAD_OFFSET;\
 		*(.data.percpu.first)					\
 		*(.data.percpu.page_aligned)				\
 		*(.data.percpu)						\
 		*(.data.percpu.shared_aligned)				\
 		VMLINUX_SYMBOL(__per_cpu_end) = .;			\
 	} phdr								\
-	. = VMLINUX_SYMBOL(__per_cpu_load_abs) + SIZEOF(.data.percpu);
+	. = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data.percpu);
 
 /**
  * PERCPU - define output section for percpu area, simple version

commit ce181ebeff398e7d1a9c6cb92eb035a6d2d07489
Merge: 4a66a82be78e 890252823766
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 29 14:27:58 2009 +0100

    Merge branch 'tracing/ftrace' into tracing/core

commit 3769e7b4d8ef113e08221a210f849ba57475aff5
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Jan 27 18:46:23 2009 +0100

    x86/Voyager: move to the X86_32_NON_STANDARD code section
    
    Make Voyager depend on X86_32_NON_STANDARD - it is a non-standard 32-bit
    SMP architecture.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 1427cb1ccd97..5bf0e0c58289 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -331,19 +331,6 @@ config X86_ELAN
 
 	  If unsure, choose "PC-compatible" instead.
 
-config X86_VOYAGER
-	bool "Voyager (NCR)"
-	depends on X86_32 && SMP && !PCI && BROKEN
-	depends on X86_NON_STANDARD
-	help
-	  Voyager is an MCA-based 32-way capable SMP architecture proprietary
-	  to NCR Corp.  Machine classes 345x/35xx/4100/51xx are Voyager-based.
-
-	  *** WARNING ***
-
-	  If you do not specifically know you have a Voyager based machine,
-	  say N here, otherwise the kernel you build will not be bootable.
-
 config X86_32_NON_STANDARD
 	bool "Support non-standard 32-bit SMP architectures"
 	depends on X86_32 && SMP
@@ -354,6 +341,13 @@ config X86_32_NON_STANDARD
 	  if you select them all, kernel will probe it one by one. and will
 	  fallback to default.
 
+config X86_BIGSMP
+	bool "Support for big SMP systems with more than 8 CPUs"
+	depends on X86_32_NON_STANDARD
+	help
+	  This option is needed for the systems that have more than 8 CPUs
+	  and if the system is not of any sub-arch type above.
+
 config X86_NUMAQ
 	bool "NUMAQ (IBM/Sequent)"
 	depends on X86_32_NON_STANDARD
@@ -380,12 +374,18 @@ config X86_ES7000
 	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
 	  supposed to run on an IA32-based Unisys ES7000 system.
 
-config X86_BIGSMP
-	bool "Support for big SMP systems with more than 8 CPUs"
+config X86_VOYAGER
+	bool "Voyager (NCR)"
+	depends on SMP && !PCI && BROKEN
 	depends on X86_32_NON_STANDARD
 	help
-	  This option is needed for the systems that have more than 8 CPUs
-	  and if the system is not of any sub-arch type above.
+	  Voyager is an MCA-based 32-way capable SMP architecture proprietary
+	  to NCR Corp.  Machine classes 345x/35xx/4100/51xx are Voyager-based.
+
+	  *** WARNING ***
+
+	  If you do not specifically know you have a Voyager based machine,
+	  say N here, otherwise the kernel you build will not be bootable.
 
 config SCHED_OMIT_FRAME_POINTER
 	def_bool y

commit e0c7ae376a13fd79a4dad8becab51040d13dfa90
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Jan 27 18:43:09 2009 +0100

    x86: rename X86_GENERICARCH to X86_32_NON_STANDARD
    
    X86_GENERICARCH is a misnomer - it contains non-PC 32-bit architectures
    that are not included in the default build.
    
    Rename it to X86_32_NON_STANDARD.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 4773f1c54fb2..1427cb1ccd97 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -344,7 +344,7 @@ config X86_VOYAGER
 	  If you do not specifically know you have a Voyager based machine,
 	  say N here, otherwise the kernel you build will not be bootable.
 
-config X86_GENERICARCH
+config X86_32_NON_STANDARD
 	bool "Support non-standard 32-bit SMP architectures"
 	depends on X86_32 && SMP
 	depends on X86_NON_STANDARD
@@ -356,7 +356,7 @@ config X86_GENERICARCH
 
 config X86_NUMAQ
 	bool "NUMAQ (IBM/Sequent)"
-	depends on X86_GENERICARCH
+	depends on X86_32_NON_STANDARD
 	select NUMA
 	select X86_MPPARSE
 	help
@@ -368,21 +368,21 @@ config X86_NUMAQ
 
 config X86_SUMMIT
 	bool "Summit/EXA (IBM x440)"
-	depends on X86_GENERICARCH
+	depends on X86_32_NON_STANDARD
 	help
 	  This option is needed for IBM systems that use the Summit/EXA chipset.
 	  In particular, it is needed for the x440.
 
 config X86_ES7000
 	bool "Support for Unisys ES7000 IA32 series"
-	depends on X86_GENERICARCH
+	depends on X86_32_NON_STANDARD
 	help
 	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
 	  supposed to run on an IA32-based Unisys ES7000 system.
 
 config X86_BIGSMP
 	bool "Support for big SMP systems with more than 8 CPUs"
-	depends on X86_GENERICARCH
+	depends on X86_32_NON_STANDARD
 	help
 	  This option is needed for the systems that have more than 8 CPUs
 	  and if the system is not of any sub-arch type above.
@@ -475,11 +475,11 @@ config MEMTEST
 
 config X86_SUMMIT_NUMA
 	def_bool y
-	depends on X86_32 && NUMA && X86_GENERICARCH
+	depends on X86_32 && NUMA && X86_32_NON_STANDARD
 
 config X86_CYCLONE_TIMER
 	def_bool y
-	depends on X86_GENERICARCH
+	depends on X86_32_NON_STANDARD
 
 source "arch/x86/Kconfig.cpu"
 
@@ -651,7 +651,7 @@ source "kernel/Kconfig.preempt"
 
 config X86_UP_APIC
 	bool "Local APIC support on uniprocessors"
-	depends on X86_32 && !SMP && !X86_GENERICARCH
+	depends on X86_32 && !SMP && !X86_32_NON_STANDARD
 	help
 	  A local APIC (Advanced Programmable Interrupt Controller) is an
 	  integrated interrupt controller in the CPU. If you have a single-CPU
@@ -676,11 +676,11 @@ config X86_UP_IOAPIC
 
 config X86_LOCAL_APIC
 	def_bool y
-	depends on X86_64 || SMP || X86_GENERICARCH || X86_UP_APIC
+	depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
 
 config X86_IO_APIC
 	def_bool y
-	depends on X86_64 || SMP || X86_GENERICARCH || X86_UP_APIC
+	depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
 
 config X86_VISWS_APIC
 	def_bool y
@@ -1122,7 +1122,7 @@ config ARCH_SPARSEMEM_DEFAULT
 
 config ARCH_SPARSEMEM_ENABLE
 	def_bool y
-	depends on X86_64 || NUMA || (EXPERIMENTAL && X86_PC) || X86_GENERICARCH
+	depends on X86_64 || NUMA || (EXPERIMENTAL && X86_PC) || X86_32_NON_STANDARD
 	select SPARSEMEM_STATIC if X86_32
 	select SPARSEMEM_VMEMMAP_ENABLE if X86_64
 
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index cb8b52785e37..7352c60f29db 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1335,7 +1335,7 @@ static void __init acpi_process_madt(void)
 		if (!error) {
 			acpi_lapic = 1;
 
-#ifdef CONFIG_X86_GENERICARCH
+#ifdef CONFIG_X86_32_NON_STANDARD
 			generic_bigsmp_probe();
 #endif
 			/*
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index 94fe71029c37..89aaced51bd3 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -372,7 +372,7 @@ static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early)
 			(*x86_quirks->mpc_record)++;
 	}
 
-#ifdef CONFIG_X86_GENERICARCH
+#ifdef CONFIG_X86_32_NON_STANDARD
        generic_bigsmp_probe();
 #endif
 
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 6abce6703c53..f64e1a487c9e 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -936,7 +936,7 @@ void __init setup_arch(char **cmdline_p)
 	map_vsyscall();
 #endif
 
-#ifdef CONFIG_X86_GENERICARCH
+#ifdef CONFIG_X86_32_NON_STANDARD
 	generic_apic_probe();
 #endif
 
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index bc7e220ba0b4..fc80bc18943e 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1007,7 +1007,7 @@ static int __init smp_sanity_check(unsigned max_cpus)
 
 		printk(KERN_WARNING
 		       "More than 8 CPUs detected - skipping them.\n"
-		       "Use CONFIG_X86_GENERICARCH and CONFIG_X86_BIGSMP.\n");
+		       "Use CONFIG_X86_32_NON_STANDARD and CONFIG_X86_BIGSMP.\n");
 
 		nr = 0;
 		for_each_present_cpu(cpu) {
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 8b12e6e109d3..928923665f6c 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -273,7 +273,7 @@ config MTD_NAND_CAFE
 
 config MTD_NAND_CS553X
 	tristate "NAND support for CS5535/CS5536 (AMD Geode companion chip)"
-	depends on X86_32 && (X86_PC || X86_GENERICARCH)
+	depends on X86_32 && (X86_PC || X86_32_NON_STANDARD)
 	help
 	  The CS553x companion chips for the AMD Geode processor
 	  include NAND flash controllers with built-in hardware ECC

commit e2c75d9f54334646b3dcdf1fea0d1afe7bfbf644
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Jan 27 18:31:41 2009 +0100

    x86: remove the subarch menu
    
    Remove the subarch menu and standardize on X86_PC.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index ddddfb8fe091..4773f1c54fb2 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -262,16 +262,8 @@ 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
 
-choice
-	prompt "Subarchitecture Type"
-	default X86_PC
-
 config X86_PC
-	bool "PC-compatible"
-	help
-	  Choose this option if your computer is a standard PC or compatible.
-
-endchoice
+	def_bool y
 
 config X86_NON_STANDARD
 	bool "Support for non-standard x86 platforms"

commit 6a48565ed6ac76f351def25cd5e9f181331065f6
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Jan 27 18:29:13 2009 +0100

    x86: move X86_VSMP from subarch menu
    
    Move X86_VSMP out of the subarch menu - this way it can be enabled
    together with standard PC support as well, in the same kernel.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 2fe298297cee..ddddfb8fe091 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -271,15 +271,6 @@ config X86_PC
 	help
 	  Choose this option if your computer is a standard PC or compatible.
 
-config X86_VSMP
-	bool "Support for ScaleMP vSMP"
-	select PARAVIRT
-	depends on X86_64 && PCI
-	help
-	  Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
-	  supposed to run on these EM64T-based machines.  Only choose this option
-	  if you have one of these machines.
-
 endchoice
 
 config X86_NON_STANDARD
@@ -327,6 +318,16 @@ config X86_UV
 	  This option is needed in order to support SGI Ultraviolet systems.
 	  If you don't have one of these, you should say N here.
 
+config X86_VSMP
+	bool "Support for ScaleMP vSMP"
+	select PARAVIRT
+	depends on X86_64 && PCI
+	depends on X86_NON_STANDARD
+	help
+	  Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
+	  supposed to run on these EM64T-based machines.  Only choose this option
+	  if you have one of these machines.
+
 config X86_ELAN
 	bool "AMD Elan"
 	depends on X86_32

commit 9c39801763ed6e08ea8bc694c5ab936643a2b763
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Jan 27 18:24:57 2009 +0100

    x86: move non-standard 32-bit platform Kconfig entries
    
    - make X86_GENERICARCH depend X86_NON_STANDARD
    
    - move X86_SUMMIT, X86_ES7000 and X86_BIGSMP out of the subarchitecture
      menu and under this option
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 207dc9592d54..2fe298297cee 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -271,51 +271,6 @@ config X86_PC
 	help
 	  Choose this option if your computer is a standard PC or compatible.
 
-config X86_GENERICARCH
-       bool "Generic architecture"
-	depends on X86_32
-       help
-          This option compiles in the NUMAQ, Summit, bigsmp, ES7000, default
-	  subarchitectures.  It is intended for a generic binary kernel.
-	  if you select them all, kernel will probe it one by one. and will
-	  fallback to default.
-
-if X86_GENERICARCH
-
-config X86_NUMAQ
-	bool "NUMAQ (IBM/Sequent)"
-	depends on SMP && X86_32 && PCI && X86_MPPARSE
-	select NUMA
-	help
-	  This option is used for getting Linux to run on a NUMAQ (IBM/Sequent)
-	  NUMA multiquad box. This changes the way that processors are
-	  bootstrapped, and uses Clustered Logical APIC addressing mode instead
-	  of Flat Logical.  You will need a new lynxer.elf file to flash your
-	  firmware with - send email to <Martin.Bligh@us.ibm.com>.
-
-config X86_SUMMIT
-	bool "Summit/EXA (IBM x440)"
-	depends on X86_32 && SMP
-	help
-	  This option is needed for IBM systems that use the Summit/EXA chipset.
-	  In particular, it is needed for the x440.
-
-config X86_ES7000
-	bool "Support for Unisys ES7000 IA32 series"
-	depends on X86_32 && SMP
-	help
-	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
-	  supposed to run on an IA32-based Unisys ES7000 system.
-
-config X86_BIGSMP
-	bool "Support for big SMP systems with more than 8 CPUs"
-	depends on X86_32 && SMP
-	help
-	  This option is needed for the systems that have more than 8 CPUs
-	  and if the system is not of any sub-arch type above.
-
-endif
-
 config X86_VSMP
 	bool "Support for ScaleMP vSMP"
 	select PARAVIRT
@@ -396,6 +351,49 @@ config X86_VOYAGER
 	  If you do not specifically know you have a Voyager based machine,
 	  say N here, otherwise the kernel you build will not be bootable.
 
+config X86_GENERICARCH
+	bool "Support non-standard 32-bit SMP architectures"
+	depends on X86_32 && SMP
+	depends on X86_NON_STANDARD
+	help
+          This option compiles in the NUMAQ, Summit, bigsmp, ES7000, default
+	  subarchitectures.  It is intended for a generic binary kernel.
+	  if you select them all, kernel will probe it one by one. and will
+	  fallback to default.
+
+config X86_NUMAQ
+	bool "NUMAQ (IBM/Sequent)"
+	depends on X86_GENERICARCH
+	select NUMA
+	select X86_MPPARSE
+	help
+	  This option is used for getting Linux to run on a NUMAQ (IBM/Sequent)
+	  NUMA multiquad box. This changes the way that processors are
+	  bootstrapped, and uses Clustered Logical APIC addressing mode instead
+	  of Flat Logical.  You will need a new lynxer.elf file to flash your
+	  firmware with - send email to <Martin.Bligh@us.ibm.com>.
+
+config X86_SUMMIT
+	bool "Summit/EXA (IBM x440)"
+	depends on X86_GENERICARCH
+	help
+	  This option is needed for IBM systems that use the Summit/EXA chipset.
+	  In particular, it is needed for the x440.
+
+config X86_ES7000
+	bool "Support for Unisys ES7000 IA32 series"
+	depends on X86_GENERICARCH
+	help
+	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
+	  supposed to run on an IA32-based Unisys ES7000 system.
+
+config X86_BIGSMP
+	bool "Support for big SMP systems with more than 8 CPUs"
+	depends on X86_GENERICARCH
+	help
+	  This option is needed for the systems that have more than 8 CPUs
+	  and if the system is not of any sub-arch type above.
+
 config SCHED_OMIT_FRAME_POINTER
 	def_bool y
 	prompt "Single-depth WCHAN output"

commit f67ae5c9e52e385492b94c14376e322004701555
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Jan 27 18:20:09 2009 +0100

    x86: move VOYAGER to the NON_STANDARD_PLATFORM section
    
    Move X86_ELAN (old, NCR hw platform built on Intel CPUs) from the
    subarchitecture menu to the non-standard-platform section.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b7617e3781a2..207dc9592d54 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -271,18 +271,6 @@ config X86_PC
 	help
 	  Choose this option if your computer is a standard PC or compatible.
 
-config X86_VOYAGER
-	bool "Voyager (NCR)"
-	depends on X86_32 && SMP && !PCI && BROKEN
-	help
-	  Voyager is an MCA-based 32-way capable SMP architecture proprietary
-	  to NCR Corp.  Machine classes 345x/35xx/4100/51xx are Voyager-based.
-
-	  *** WARNING ***
-
-	  If you do not specifically know you have a Voyager based machine,
-	  say N here, otherwise the kernel you build will not be bootable.
-
 config X86_GENERICARCH
        bool "Generic architecture"
 	depends on X86_32
@@ -395,6 +383,19 @@ config X86_ELAN
 
 	  If unsure, choose "PC-compatible" instead.
 
+config X86_VOYAGER
+	bool "Voyager (NCR)"
+	depends on X86_32 && SMP && !PCI && BROKEN
+	depends on X86_NON_STANDARD
+	help
+	  Voyager is an MCA-based 32-way capable SMP architecture proprietary
+	  to NCR Corp.  Machine classes 345x/35xx/4100/51xx are Voyager-based.
+
+	  *** WARNING ***
+
+	  If you do not specifically know you have a Voyager based machine,
+	  say N here, otherwise the kernel you build will not be bootable.
+
 config SCHED_OMIT_FRAME_POINTER
 	def_bool y
 	prompt "Single-depth WCHAN output"